📖 Classes Principais das DLLs

Referência detalhada das classes mais importantes para modding.

🌍

World Class

📊 Informações

Namespace: ScriptCore
Linhas: 3.312
Base: CallbackObject, IWorld

Métodos Mais Usados

// Obter todos os objetos de um tipo
Sim[] sims = World.GetObjects<Sim>();
GameObject[] objects = World.GetObjects<GameObject>();

// Eventos
World.sOnWorldLoadFinishedEventHandler += EventHandler;

// Terreno
float height = World.GetTerrainHeight(x, z);
float seaLevel = World.GetSeaLevel();

// Lots
World.SetActiveLot(lotId);
bool isEmpty = World.LotIsEmpty(lotId);

// Posicionamento
bool canPlace = World.TestObjectPlacementPQ(objId, options, ref position, ref orientation);
Vector3 inside = World.LotGetPtInside(lotId);
👤

Sim Class

📊 Informações

Namespace: Sims3.Gameplay.Actors
Linhas: 62.662
Base: GameObject, IActor, ISharedObject

Propriedades Principais

PropriedadeTipoDescrição
SimDescriptionSimDescriptionDados persistentes (CAS, traits)
BuffManagerBuffManagerGerenciador de buffs
SocialComponentSocialComponentEstado social
InteractionManagerInteractionManagerFila de interações
NeedManagerNeedManagerNecessidades
SkillManagerSkillManagerSkills
InventorySimInventoryInventário
OccultManagerOccultManagerEstado ocultista

Métodos de Interação

// Adicionar interação
sim.AddInteraction(interaction);

// Postura social
sim.EnterSocializingPosture(target);

// Trocar roupa
SwitchOutfitHelper outfit = new SwitchOutfitHelper(sim, ClothesChangeReason.GoingToSwim);
outfit.Start();
❤️

Relationship Class

📊 Informações

Namespace: Sims3.Gameplay.Socializing
Linhas: 2.550
Tunable Fields: 13+

Uso Principal

// Obter relacionamento
Relationship rel = Relationship.Get(simA, simB, false);

// Modificar LTR
rel.LTR.UpdateLikingAndShowLikingVFX(25.0f, actor, target);
rel.LTR.UpdateLiking(15.0f, actor, target);

// Verificar atração
bool isAttracted = rel.IsAttracted();

// Interaction bits
rel.LTR.AddInteractionBit(LongTermRelationship.InteractionBits.FirstKiss);
bool hasWooHoo = rel.LTR.HasInteractionBit(LongTermRelationship.InteractionBits.WooHoo);

Fórmula de Atração

Atração = Base[-50,50] + Trait[10] + Career[1/lvl] + Skill[0.5/lvl] 
         + Occult[15] + Celebrity[2/lvl] + Astro[20] + Money[5-20] + Buffs[10]
😊

Buff Class

📊 Informações

Namespace: Sims3.Gameplay.ActorSystems
Linhas: 444
BuffData: 20+ campos

BuffData Fields

CampoTipoDescrição
mBuffGuidBuffNamesGUID único
mBuffNamestringNome exibido
mDescriptionstringDescrição
mMoodletColorMoodColorCor do moodlet
mAxisEffectedMoodAxisEixo afetado
mEffectValueintValor (-40 a +40)
mTimeoutSimMinutesfloatDuração
mFacialIdlesstring[]Animações faciais

BuffManager Methods

// Adicionar
sim.BuffManager.AddElement(BuffNames.Happy, Origin.FromCustomSource);

// Verificar
bool hasBuff = sim.BuffManager.HasElement(BuffNames.Happy);

// Remover
sim.BuffManager.RemoveElement(BuffNames.Happy);

// Listar
List<BuffInstance> buffs = sim.BuffManager.GetAllBuffs();
📡

EventTracker Class

📊 Informações

Namespace: Sims3.Gameplay.EventSystem
Eventos: 120+ tipos
Pattern: Publish/Subscribe

EventListener Template

public class MeuListener : EventListener
{
    public override ListenerAction ProcessEvent(Event e)
    {
        if (e.Id == EventTypeId.kRelationshipLTRChanged)
        {
            // Sua lógica
            return ListenerAction.KeepListening;
        }
        return ListenerAction.KeepListening;
    }
    
    public override bool DoesEventApply(Event e)
    {
        return e.Id == EventTypeId.kRelationshipLTRChanged;
    }
}

Principais Eventos

kSimCreated
kSimDeath
kAgedUp
kCareerChanged
kSkillGained
kBuffAdded
kRelationshipLTRChanged
kWooHoo
kMarriage
kInteractionSuccess
💬

SocialInteraction Class

📊 Informações

Namespace: Sims3.Gameplay.Socializing
Linhas: 1.686
Base: SocialInteractionBase

Template de Interação

public class MinhaInteracao : SocialInteraction
{
    public static readonly InteractionDefinition Singleton;
    
    static MinhaInteracao()
    {
        Singleton = new Definition();
    }
    
    public override bool Run()
    {
        Actor.EnterSocializingPosture(Target);
        Actor.SocialComponent.StartSocializingWith(Target);
        
        if (BeginSocialInteraction(...))
        {
            EnterStateMachine("social_generic", "Enter", "x", "y");
            SetActor("x", Actor);
            SetActor("y", Target);
            
            Relationship rel = Relationship.Get(Actor, Target, true);
            rel.LTR.UpdateLikingAndShowLikingVFX(25.0f, Actor, Target);
            
            EndCommodityUpdates(true);
        }
        return true;
    }
    
    public class Definition : InteractionDefinition<Sim, Sim, MinhaInteracao>
    {
        public override string GetInteractionName(Sim actor, Sim target, InteractionObjectPair iop)
        {
            return "Nome da Interação";
        }
        
        public override string[] GetPath(bool isFemale)
        {
            return new string[] { "Amigável..." };
        }
        
        protected override bool Test(Sim actor, Sim target, bool isAutonomous, ref GreyedOutTooltipCallback callback)
        {
            if (target == actor) return false;
            if (!target.SimDescription.TeenOrAbove) return false;
            return true;
        }
    }
}