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.

1️⃣

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)
2️⃣

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)
        {
        }
    }
}
3️⃣

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);
4️⃣

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>
CampoDescrição
buff_nameNome exibido
buff_descriptionDescrição
mood_changeValor do humor (-40 a +40)
timeoutDuração em minutos
mood_colorCor do moodlet
5️⃣

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;
}