Exemple #1
0
        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);
                        }
                    }
                }
            }
        }