public static void Apply(Sim actor, Sim target, bool risky) { if (!Woohooer.Settings.mApplyBuffs) { return; } bool useTraitScoring = Woohooer.Settings.UsingTraitScoring; if ((actor == null) || (target == null)) { return; } Relationship relation = Relationship.Get(actor, target, false); if (relation == null) { return; } bool witnessed = false; if (useTraitScoring) { string reason; foreach (Sim sim in actor.LotCurrent.GetAllActors()) { if (!sim.IsHuman) { continue; } if ((sim == actor) || (sim == target)) { continue; } if (sim.RoomId != actor.RoomId) { continue; } if ((!CommonSocials.CanGetRomantic(sim.SimDescription, actor.SimDescription, out reason)) && (!CommonSocials.CanGetRomantic(sim.SimDescription, target.SimDescription, out reason))) { continue; } if (ScoringLookup.GetScore("LikeWatching", sim.SimDescription) > 0) { sim.BuffManager.AddElement(sVoyeur, sWoohooOrigin); witnessed = true; } else { sim.BuffManager.AddElement(BuffNames.Embarrassed, sWoohooOrigin); } } } Sim[] sims = new Sim[] { actor, target }; foreach (Sim sim in sims) { if (!sim.IsHuman) { continue; } if (useTraitScoring) { if (KamaSimtra.GetSkillLevel(sim.SimDescription) < 4) { if (ScoringLookup.GetScore("WorryAboutWoohoo", sim.SimDescription) > 0) { sim.BuffManager.AddElement(sWorryAboutWoohoo, sWoohooOrigin); } } } if (witnessed) { sim.BuffManager.AddElement(sWitnessed, sWoohooOrigin); } if (useTraitScoring) { if ((risky) && (!Woohooer.Settings.ReplaceWithRisky)) { int score = ScoringLookup.GetScore("LikeRisky", sim.SimDescription); if (score > 0) { sim.BuffManager.RemoveElement(sDislikeRisky); sim.BuffManager.AddElement(sLikeRisky, sWoohooOrigin); } else if (score < 0) { sim.BuffManager.RemoveElement(sLikeRisky); sim.BuffManager.AddElement(sDislikeRisky, sWoohooOrigin); } } } if (actor.Partner == target.SimDescription) { sim.BuffManager.AddElement(sLikePartner, sWoohooOrigin); } else if (sim.Partner != null) { if (useTraitScoring) { int score = ScoringLookup.GetScore("Monogamous", sim.SimDescription); if (score > 0) { sim.BuffManager.RemoveElement(sLikeAdultery); sim.BuffManager.AddElement(sDislikeAdultery, sWoohooOrigin); } else if (score < 0) { sim.BuffManager.RemoveElement(sDislikeAdultery); sim.BuffManager.AddElement(sLikeAdultery, sWoohooOrigin); } } } if ((useTraitScoring) && (!relation.AreRomantic())) { if (relation.LTR.Liking > 75) { int score = ScoringLookup.GetScore("LikeFriendWithBenefits", sim.SimDescription); if (score > 0) { sim.BuffManager.RemoveElement(sDislikeFriendWithBenefits); sim.BuffManager.AddElement(sLikeFriendWithBenefits, sWoohooOrigin); } else if (score < 0) { sim.BuffManager.RemoveElement(sLikeFriendWithBenefits); sim.BuffManager.AddElement(sDislikeFriendWithBenefits, sWoohooOrigin); } } else { int score = ScoringLookup.GetScore("LikeOneNightStand", sim.SimDescription); if (score > 0) { sim.BuffManager.RemoveElement(sDislikeOneNightStand); sim.BuffManager.AddElement(sLikeOneNightStand, sWoohooOrigin); } else if (score < 0) { sim.BuffManager.RemoveElement(sLikeOneNightStand); sim.BuffManager.AddElement(sDislikeOneNightStand, sWoohooOrigin); } } } } }