Iniciante
😊 Moodlets
Criando Buffs e Efeitos
Crie buffs personalizados que afetam o humor e comportamento dos Sims.
⏱️ 40 minutos
📊 Nível: Iniciante
🎯 Objetivo
Criar um buff personalizado que pode ser adicionado a Sims através de interações, eventos ou condições específicas.
O Que São Buffs?
Buffs (também chamados de Moodlets) são efeitos temporários que afetam:
- Humor do Sim (+10 a +40 ou -10 a -40)
- Comportamento (autonomia de interações)
- Aparência (efeitos visuais, animações faciais)
- Habilidades (bônus de skill)
Criando uma Classe de Buff
using Sims3.Gameplay.ActorSystems;
namespace SeuMod.Buffs
{
public class BuffPersonalizado : Buff
{
// GUID único do buff (gere um!)
private const ulong kBuffGuid = 0x1234567890ABCDEF;
public static ulong StaticGuid
{
get { return 0x1234567890ABCDEF; }
}
public BuffPersonalizado(BuffData data) : base(data)
{
}
}
}
Adicionando Buffs a Sims
// Adicionar buff simples
sim.BuffManager.AddElement(
BuffNames.Happy, // Nome do buff
Origin.FromCustomSource // Origem
);
// Adicionar buff customizado
sim.BuffManager.AddElement(
SeuMod.Buffs.BuffPersonalizado.StaticGuid,
Origin.FromCustomSource
);
// Adicionar com duração específica
BuffInstance instance = sim.BuffManager.AddElement(...);
instance.SetTimeout(120f); // 120 minutos no jogo
// Verificar se tem buff
if (sim.BuffManager.HasElement(BuffNames.Happy))
{
// Sim tem o buff
}
// Remover buff
sim.BuffManager.RemoveElement(BuffNames.Happy);
BuffData - Configurando Buffs
Para buffs customizados, você precisa definir os dados do buff via XML tuning:
<?xml version="1.0" encoding="utf-8"?>
<C>
<T n="SeuBuff" s="0x1234567890ABCDEF">
<L n="buff_name"><T n="Seu Buff"></T></L>
<L n="buff_description"><T n="Descrição do buff"></T></L>
<T n="mood_change" type="Int32">25</T>
<T n="timeout" type="Single">120</T>
<T n="mood_color" type="Int64">0x00FF00FF</T>
</T>
</C>
| Campo | Descrição |
|---|---|
buff_name | Nome exibido |
buff_description | Descrição |
mood_change | Valor do humor (-40 a +40) |
timeout | Duração em minutos |
mood_color | Cor do moodlet |
Exemplo: Buff de Amizade
public class BuffMelhorAmigo : Buff
{
private const ulong kGuid = 0xABCDEF1234567890;
public static ulong StaticGuid => 0xABCDEF1234567890;
public BuffMelhorAmigo(BuffData data) : base(data)
{
}
}
// Uso em uma interação:
public override bool Run()
{
// Adicionar buff de melhor amigo
Target.BuffManager.AddElement(
BuffMelhorAmigo.StaticGuid,
Origin.FromCustomSource
);
// Duração: 24 horas (1440 minutos)
var instance = Target.BuffManager.AddElement(...);
instance.SetTimeout(1440f);
return true;
}