🔬Avançado

Sistema de Relacionamentos

Sistema completo: LTR, STC, atração, fórmulas de cálculo e exemplos práticos baseados nas 2.550 linhas de Relationship.cs

100
Máximo LTR
-100
Mínimo LTR
70f
Threshold Atração
13+
Tunable Fields
1️⃣

Estrutura da Relationship

Uma Relationship é composta por:

  • LTR (Long Term Relationship) - Sentimentos de longo prazo (-100 a +100)
  • STC (Short Term Context) - Contexto social atual
  • AttractionScore - Pontuação de atração
  • RomanceVisibilityState - Estado romântico
  • Gossip - Segredos e informações
2️⃣

Fórmula de Atração

Atração = Base + Trait + Career + Skill + Occult + Celebrity + Astro + Money + Buffs

// Valores das DLLs decompiladas:
kBaseRandomAttraction[] = [-50, 50]
kTraitModifier = 10f          // Traits compatíveis/opostas
kCareerBonusPerLevel = 1f     // Por nível de carreira
kSkillBonusPerLevel = 0.5f    // Por nível de skill
kBonusForMatchingOccult = 15f // Mesmo tipo ocultista
kCelebrityBonusPerLevel = 2f  // Níveis de celebridade
kMatchingSignsBonus = 20f     // Mesmo signo
kPerBuffModifier = 10f        // Buffs positivos/negativos

// Threshold para "atraídos"
kAttractionThreshold = 70f
3️⃣

Manipulando Relacionamentos

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

// Adicionar LTR com VFX
rel.LTR.UpdateLikingAndShowLikingVFX(25.0f, simA, simB);

// Adicionar LTR sem VFX
rel.LTR.UpdateLiking(15.0f, simA, simB);

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

// Adicionar interaction bit
rel.LTR.AddInteractionBit(LongTermRelationship.InteractionBits.FirstKiss);

// Verificar bits
if (rel.LTR.HasInteractionBit(LongTermRelationship.InteractionBits.WooHoo))
{
    // Já tiveram WooHoo
}
4️⃣

Exemplo: Sistema de Alma Gêmea

public class SoulMateSystem
{
    public static bool AreSoulMates(Sim simA, Sim simB)
    {
        Relationship rel = Relationship.Get(simA, simB, false);
        if (rel == null) return false;
        
        // Critérios:
        // 1. LTR >= 90
        // 2. Atração >= 70
        // 3. Todos interaction bits românticos
        
        if (rel.LTR.Liking < 90f) return false;
        if (!rel.IsAttracted()) return false;
        
        if (!rel.LTR.HasInteractionBit(LongTermRelationship.InteractionBits.FirstKiss))
            return false;
        if (!rel.LTR.HasInteractionBit(LongTermRelationship.InteractionBits.WooHoo))
            return false;
        if (!rel.LTR.HasInteractionBit(LongTermRelationship.InteractionBits.Married))
            return false;
        
        return true;
    }
    
    public static void ApplySoulMateBuff(Sim simA, Sim simB)
    {
        if (AreSoulMates(simA, simB))
        {
            simA.BuffManager.AddElement(BuffNames.SoulMateBliss, Origin.FromCustomSource);
            simB.BuffManager.AddElement(BuffNames.SoulMateBliss, Origin.FromCustomSource);
        }
    }
}
5️⃣

Tunable Fields de Relationship

CampoValorDescrição
kAttractionThreshold70fThreshold de atração
kTraitModifier10fModificador por trait
kCareerBonusPerLevel1fBonus por carreira
kSkillBonusPerLevel0.5fBonus por skill
kBonusForMatchingOccult15fBonus occult
kMatchingSignsBonus20fBonus signo
kAttractedLTRChangeMultiplier1.5fMultiplicador LTR