100
Máximo LTR
-100
Mínimo LTR
70f
Threshold Atração
13+
Tunable Fields
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
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
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
}
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);
}
}
}
Tunable Fields de Relationship
| Campo | Valor | Descrição |
|---|---|---|
kAttractionThreshold | 70f | Threshold de atração |
kTraitModifier | 10f | Modificador por trait |
kCareerBonusPerLevel | 1f | Bonus por carreira |
kSkillBonusPerLevel | 0.5f | Bonus por skill |
kBonusForMatchingOccult | 15f | Bonus occult |
kMatchingSignsBonus | 20f | Bonus signo |
kAttractedLTRChangeMultiplier | 1.5f | Multiplicador LTR |