Ejemplo n.º 1
0
        public static bool SatisfiesMaximumOccupants(Sim sim, bool autonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback)
        {
            if (autonomous)
            {
                return(true);
            }

            int count = 0;

            if (sim.IsHuman)
            {
                count = Households.NumHumansIncludingPregnancy(sim.Household);
            }
            else
            {
                count = Households.NumPetsIncludingPregnancy(sim.Household);
            }

            int maximum = Woohooer.Settings.mTryForBabyUserMaximum[PersistedSettings.GetSpeciesIndex(sim)];

            if ((maximum > 0) && (count > maximum))
            {
                greyedOutTooltipCallback = delegate { return(Common.Localize("TryForBaby:UserMaximum", sim.IsFemale)); };
                return(false);
            }

            return(true);
        }
Ejemplo n.º 2
0
        public static bool Satisfies(Sim actor, Sim target, bool resultOnDefault)
        {
            switch (NRaas.Woohooer.Settings.mWoohooInteractionLevelV2[PersistedSettings.GetSpeciesIndex(actor)])
            {
            case MyLoveBuffLevel.AnyRomantic:
                Relationship relation = Relationship.Get(actor, target, false);
                if (relation == null)
                {
                    return(false);
                }

                if (relation.AreRomantic())
                {
                    return(true);
                }

                return(actor.Partner == target.SimDescription);

            case MyLoveBuffLevel.Partner:
                return(actor.Partner == target.SimDescription);

            case MyLoveBuffLevel.Spouse:
                return(actor.Genealogy.Spouse == target.Genealogy);
            }

            return(resultOnDefault);
        }
Ejemplo n.º 3
0
        public static void ResetSettings()
        {
            sSettings = null;

            KamaSimtra.ResetSettings();

            AdjustAttractionTuning();
        }
Ejemplo n.º 4
0
        public static void ResetSettings()
        {
            sSettings = null;

            ApplyDefaultProfiles();

            ReapplySettings();
        }
Ejemplo n.º 5
0
        public static void ResetSettings()
        {
            foreach (KeyValuePair <OccupationNames, PersistedSettings.CareerSettings> settings in Careers.Settings.mCareerSettings)
            {
                settings.Value.RevertToDefault();
            }

            sSettings = null;
        }
Ejemplo n.º 6
0
        protected override bool Allow(GameHitParameters <GameObject> parameters)
        {
            if (NRaas.Woohooer.Settings.mRiskyBabyMadeChanceV2[PersistedSettings.GetSpeciesIndex(CASAgeGenderFlags.Human)] <= 0)
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 7
0
        protected override OptionResult Run(GameHitParameters <GameObject> parameters)
        {
            OptionResult result = base.Run(parameters);

            if (result != OptionResult.Failure)
            {
                PersistedSettings.ResetSpeeds();
            }
            return(result);
        }
Ejemplo n.º 8
0
        public static void ResetSettings()
        {
            sSettings = null;

            PersistedSettings.ResetSpeeds();

            PriorValues.sFactorChanged = true;

            Settings.ParseIntervals();
        }
Ejemplo n.º 9
0
 public override int Score(SimScoringParameters parameters)
 {
     if ((parameters.Actor.IsHuman) && (parameters.Actor.Teen))
     {
         return(Woohooer.Settings.mTryForBabyTeenBaseChanceScoring);
     }
     else
     {
         return(Woohooer.Settings.mTryForBabyBaseChanceScoringV2[PersistedSettings.GetSpeciesIndex(parameters.Actor)]);
     }
 }
Ejemplo n.º 10
0
        public static void ResetSettings()
        {
            ApplyDefaultSettings();

            sSettings = null;

            FunFactor.ApplyFunFactor();

            ApplySettings();

            StartAlarms();
        }
Ejemplo n.º 11
0
        public static void ResetSettings()
        {
            foreach (Service service in Services.AllServices)
            {
                ServiceSettingKey key;
                if (Register.Settings.serviceSettings.TryGetValue(service.ServiceType, out key))
                {
                    if (key.tuningDefault == null)
                    {
                        ServiceSettingKey def = new ServiceSettingKey(service);
                        key.tuningDefault = def;
                    }
                    SetServiceTuningFromKey(service, key.tuningDefault);
                }
            }

            sSettings = null;
        }
        protected override bool Allow(GameHitParameters <GameObject> parameters)
        {
            if (!NRaas.Woohooer.Settings.mAllowTeenWoohoo)
            {
                return(false);
            }

            if (NRaas.Woohooer.Settings.mTryForBabyMadeChanceV2[PersistedSettings.GetSpeciesIndex(CASAgeGenderFlags.Human)] <= 0)
            {
                return(false);
            }

            if (!NRaas.Woohooer.Settings.mTryForBabyAutonomousV2[PersistedSettings.GetSpeciesIndex(CASAgeGenderFlags.Human)])
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 13
0
        public override Phone.Call.ConversationBehavior OnCallConnected()
        {
            Phone.Call.ConversationBehavior behavior = this.onCallConnectedBase();
            base.mProceed = false;

            float gate = 0;

            if (base.Autonomous || Woohooer.Settings.mLikingGateForUserDirected)
            {
                gate = Woohooer.Settings.mLikingGatingForAutonomousWoohoo[PersistedSettings.GetSpeciesIndex(base.Actor)];

                if (gate > Phone.kLTRThresholdForInviteOverMax)
                {
                    gate = Phone.kLTRThresholdForInviteOverMax;
                }
            }

            return(this.DetermineOutcomeForInvitationEx("InviteOver", gate, Phone.kLTRThresholdForInviteOverMax, (gate == 0 ? 100f : Phone.kChanceAtMinForInviteOver), 100f, Phone.kLTRHitForFailedInviteOver, new Phone.Call.CustomAcceptanceTestDelegate(this.CustomAcceptanceTest), base.mOtherSimDesc as SimDescription, out base.mProceed));
        }
Ejemplo n.º 14
0
        protected override OptionResult Run(GameHitParameters <GameObject> parameters)
        {
            OptionResult result = base.Run(parameters);

            if (result != OptionResult.Failure)
            {
                if (Value < 0)
                {
                    Value = 0;
                }
                else if (Value > 24)
                {
                    Value = 24;
                }

                PersistedSettings.ResetSpeeds();
            }
            return(result);
        }
Ejemplo n.º 15
0
 public override string[] GetPath(bool isFemale)
 {
     return(new string[] { Common.LocalizeEAString(isFemale, "Gameplay/Excel/Socializing/Action:NRaasRiskyWooHoo", new object[0]) + Common.LocalizeEAString(false, "NRaas.Woohooer:RiskyChance", new object[] { Woohooer.Settings.mRiskyBabyMadeChanceV2[PersistedSettings.GetSpeciesIndex(CASAgeGenderFlags.Human)] }) });
 }
Ejemplo n.º 16
0
        public override string GetInteractionName()
        {
            if (IsGettingItOn)
            {
                switch (mStyle)
                {
                case CommonWoohoo.WoohooStyle.Safe:
                    return(Common.LocalizeEAString(Actor.IsFemale, "Gameplay/Excel/Socializing/Action:NRaasWooHoo", new object[0]));

                case CommonWoohoo.WoohooStyle.Risky:
                    return(Common.LocalizeEAString(Actor.IsFemale, "Gameplay/Excel/Socializing/Action:NRaasRiskyWooHoo", new object[0]) + Common.LocalizeEAString(false, "NRaas.Woohooer:RiskyChance", new object[] { Woohooer.Settings.mRiskyBabyMadeChanceV2[PersistedSettings.GetSpeciesIndex(Actor)] }));

                case CommonWoohoo.WoohooStyle.TryForBaby:
                    return(Common.LocalizeEAString(Actor.IsFemale, "Gameplay/Excel/Socializing/Action:NRaasTryForBaby", new object[0]));
                }
            }

            Definition definition = InteractionDefinition as Definition;

            if (definition != null)
            {
                if (definition is ElevatorDefinition)
                {
                    return((definition as ElevatorDefinition).GetInteractionName(Actor, Target, InteractionObjectPair));
                }
                return((definition as StairsDefinition).GetInteractionName(Actor, Target, InteractionObjectPair));
            }
            return(base.GetInteractionName());
        }
Ejemplo n.º 17
0
 public uint GetActualEnd(Season season)
 {
     return(PersistedSettings.GetActualDay(mEnd, season));
 }
Ejemplo n.º 18
0
        public void OnWorldLoadFinished()
        {
            kDebugging = Settings.Debugging;

            new Common.ImmediateEventListener(EventTypeId.kBuiltIgloo, OnNewObject);
            new Common.ImmediateEventListener(EventTypeId.kRakeLeafPile, OnNewObject);

            MustBeRomanticForAutonomousSetting.AdjustVisitorPrivilege(!Settings.mMustBeRomanticForAutonomousV2[PersistedSettings.GetSpeciesIndex(CASAgeGenderFlags.Human)]);

            sWasAffectBroadcasterRoomOnly = Conversation.ReactToSocialParams.AffectBroadcasterRoomOnly;

            Conversation.ReactToSocialParams.AffectBroadcasterRoomOnly = true;

            AdjustAttractionTuning();

            FixupProfessionalServices();
        }
Ejemplo n.º 19
0
 public override int Score(SimScoringParameters parameters)
 {
     return(Woohooer.Settings.GetCount(parameters.Actor) * Woohooer.Settings.mWoohooCountScoreFactor[PersistedSettings.GetSpeciesIndex(parameters.Actor)]);
 }
Ejemplo n.º 20
0
        public static float OnGetChanceOfSuccess(Sim a, Sim b, CommonWoohoo.WoohooStyle style)
        {
            float chance = 0;

            bool useFertility = true;

            int speciesIndex = PersistedSettings.GetSpeciesIndex(a);

            switch (style)
            {
            case CommonWoohoo.WoohooStyle.Risky:
                if ((a.SimDescription.Teen) || (b.SimDescription.Teen))
                {
                    chance = Woohooer.Settings.mRiskyTeenBabyMadeChance;
                }
                else
                {
                    chance = Woohooer.Settings.mRiskyBabyMadeChanceV2[speciesIndex];
                }

                useFertility = Woohooer.Settings.mRiskyFertility[speciesIndex];
                break;

            case CommonWoohoo.WoohooStyle.TryForBaby:
                if ((a.SimDescription.Teen) || (b.SimDescription.Teen))
                {
                    chance = Woohooer.Settings.mTryForBabyTeenBabyMadeChance;
                }
                else
                {
                    chance = Woohooer.Settings.mTryForBabyMadeChanceV2[speciesIndex];
                }

                useFertility = Woohooer.Settings.mTryForBabyFertility[speciesIndex];
                break;
            }

            if (chance <= 0)
            {
                Common.DebugNotify("Pregnancy: No Chance");
                return(0);
            }

            if (useFertility)
            {
                if (a.IsHuman)
                {
                    if ((a.BuffManager != null) && a.BuffManager.HasTransformBuff())
                    {
                        return(0);
                    }

                    if ((b.BuffManager == null) && b.BuffManager.HasTransformBuff())
                    {
                        return(0);
                    }

                    if ((a.TraitManager.HasElement(TraitNames.FertilityTreatment)) || ((a.BuffManager != null) && a.BuffManager.HasElement(BuffNames.ATwinkleInTheEye)))
                    {
                        chance += TraitTuning.kFertilityBabyMakingChanceIncrease;
                    }

                    if ((b.TraitManager.HasElement(TraitNames.FertilityTreatment)) || ((b.BuffManager != null) && b.BuffManager.HasElement(BuffNames.ATwinkleInTheEye)))
                    {
                        chance += TraitTuning.kFertilityBabyMakingChanceIncrease;
                    }
                }
                else
                {
                    if (a.TraitManager.HasElement(TraitNames.FertilityTreatmentPet))
                    {
                        chance += TraitTuning.kFertilityLitterMakingChanceIncrease;
                    }

                    if (b.TraitManager.HasElement(TraitNames.FertilityTreatmentPet))
                    {
                        chance += TraitTuning.kFertilityLitterMakingChanceIncrease;
                    }
                }

                if (a.TraitManager.HasElement(TraitNames.WishedForLargeFamily))
                {
                    chance += 100f;
                    a.BuffManager.RemoveElement(BuffNames.WishForLargeFamily);
                }

                if (b.TraitManager.HasElement(TraitNames.WishedForLargeFamily))
                {
                    chance += 100f;
                    b.BuffManager.RemoveElement(BuffNames.WishForLargeFamily);
                }

                if ((a.BuffManager != null) && a.BuffManager.HasElement(BuffNames.MagicInTheAir))
                {
                    chance += BuffMagicInTheAir.kBabyMakingChanceIncrease * 100f;
                }

                if ((b.BuffManager != null) && b.BuffManager.HasElement(BuffNames.MagicInTheAir))
                {
                    chance += BuffMagicInTheAir.kBabyMakingChanceIncrease * 100f;
                }

                if ((GameUtils.IsInstalled(ProductVersion.EP7)) && (SimClock.IsNightTime()) && (SimClock.IsFullMoon()))
                {
                    chance += Pregnancy.kFullMoonImprovedBabyChance * 100f;
                }
            }

            return(chance);
        }
Ejemplo n.º 21
0
 public static void ResetSettings()
 {
     sSettings = null;
 }
Ejemplo n.º 22
0
 public static void ResetSettings()
 {
     sSettings = null;
 }
Ejemplo n.º 23
0
		public override void onCreate()
		{
			base.onCreate();
			mSettings = new PersistedSettings(this, ApplicationContext);
		}
Ejemplo n.º 24
0
        public static bool CanTryForBaby(Sim a, Sim target, bool autonomous, CommonWoohoo.WoohooStyle style, ref GreyedOutTooltipCallback greyedOutTooltipCallback, out string reason)
        {
            using (Common.TestSpan span = new Common.TestSpan(ScoringLookup.Stats, "Duration CanTryForBaby", Common.DebugLevel.Stats))
            {
                int  chance     = 0;
                bool teenCanTry = false;

                int speciesIndex = PersistedSettings.GetSpeciesIndex(a);

                PregnancyChoice pregnancyChoice = PregnancyChoice.Either;

                switch (style)
                {
                case CommonWoohoo.WoohooStyle.Risky:
                    if ((a.SimDescription.Teen) || (target.SimDescription.Teen))
                    {
                        chance = Woohooer.Settings.mRiskyTeenBabyMadeChance;
                    }
                    else
                    {
                        chance = Woohooer.Settings.mRiskyBabyMadeChanceV2[speciesIndex];
                    }

                    teenCanTry      = Woohooer.Settings.mTeenRiskyAutonomous;
                    pregnancyChoice = Woohooer.Settings.mRiskyPregnancyChoice;
                    break;

                case CommonWoohoo.WoohooStyle.TryForBaby:
                    if ((a.SimDescription.Teen) || (target.SimDescription.Teen))
                    {
                        chance = Woohooer.Settings.mTryForBabyTeenBabyMadeChance;
                    }
                    else
                    {
                        chance = Woohooer.Settings.mTryForBabyMadeChanceV2[speciesIndex];
                    }

                    teenCanTry      = Woohooer.Settings.mTeenTryForBabyAutonomous;
                    pregnancyChoice = Woohooer.Settings.mTryForBabyPregnancyChoice;
                    break;
                }

                if (chance <= 0)
                {
                    greyedOutTooltipCallback = Common.DebugTooltip("Chance Fail");
                    reason = "Chance Fail";
                    return(false);
                }

                if (!CommonSocials.CanGetRomantic(a, target, autonomous, true, true, ref greyedOutTooltipCallback, out reason))
                {
                    return(false);
                }

                if (autonomous)
                {
                    if ((sStoryProgressionAllowPregnancy.Valid) && (Woohooer.Settings.TestStoryProgression(autonomous)))
                    {
                        reason = sStoryProgressionAllowPregnancy.Invoke <string>(new object[] { a.SimDescription, target.SimDescription, autonomous });
                        if (reason != null)
                        {
                            greyedOutTooltipCallback = Woohooer.StoryProgressionTooltip(reason, false);
                            return(false);
                        }
                    }
                }

                if (a.SimDescription.Gender == target.SimDescription.Gender)
                {
                    if (!Woohooer.Settings.mAllowSameSexTryForBabyV2[speciesIndex])
                    {
                        greyedOutTooltipCallback = Common.DebugTooltip("Same Sex Fail");
                        reason = "Same Sex Fail";
                        return(false);
                    }

                    if ((!CanGetPreggers(a, autonomous, ref greyedOutTooltipCallback, out reason)) && (!CanGetPreggers(target, autonomous, ref greyedOutTooltipCallback, out reason)))
                    {
                        return(false);
                    }
                }
                else
                {
                    if (a.IsFemale)
                    {
                        if (!CanGetPreggers(a, autonomous, ref greyedOutTooltipCallback, out reason))
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        if (!CanGetPreggers(target, autonomous, ref greyedOutTooltipCallback, out reason))
                        {
                            return(false);
                        }
                    }
                }

                if ((autonomous) || (Woohooer.Settings.mTestAllConditionsForUserDirected[speciesIndex]))
                {
                    if (HasBlockingBuff(a))
                    {
                        greyedOutTooltipCallback = delegate { return(Common.Localize("TryForBaby:BuffBlock")); };
                        reason = "BuffBlock";
                        return(false);
                    }

                    if (HasBlockingBuff(target))
                    {
                        greyedOutTooltipCallback = delegate { return(Common.Localize("TryForBaby:BuffBlock")); };
                        reason = "BuffBlock";
                        return(false);
                    }

                    if ((a.SimDescription.Gender != target.SimDescription.Gender) || (pregnancyChoice != PregnancyChoice.Either))
                    {
                        if (autonomous)
                        {
                            if (a.SimDescription.IsPregnant)
                            {
                                greyedOutTooltipCallback = delegate { return(Common.Localize("TryForBaby:Pregnant")); };
                                reason = "Pregnant";
                                return(false);
                            }

                            if (target.SimDescription.IsPregnant)
                            {
                                greyedOutTooltipCallback = delegate { return(Common.Localize("TryForBaby:Pregnant")); };
                                reason = "Pregnant";
                                return(false);
                            }
                        }
                        else
                        {
                            if (a.SimDescription.IsVisuallyPregnant)
                            {
                                greyedOutTooltipCallback = delegate { return(Common.Localize("TryForBaby:Pregnant")); };
                                reason = "Pregnant";
                                return(false);
                            }

                            if (target.SimDescription.IsVisuallyPregnant)
                            {
                                greyedOutTooltipCallback = delegate { return(Common.Localize("TryForBaby:Pregnant")); };
                                reason = "Pregnant";
                                return(false);
                            }
                        }
                    }

                    if ((a.SimDescription.IsMale) && (target.SimDescription.IsMale))
                    {
                        if (!Woohooer.Settings.mAutonomousMaleMaleTryForBabyV2[speciesIndex])
                        {
                            greyedOutTooltipCallback = delegate { return(Common.Localize("TryForBaby:SameSexDenied")); };
                            reason = "SameSexDenied";
                            return(false);
                        }

                        if (a.SimDescription.Elder)
                        {
                            greyedOutTooltipCallback = delegate { return(Common.Localize("TryForBaby:Elder")); };
                            reason = "Elder";
                            return(false);
                        }

                        if (target.SimDescription.Elder)
                        {
                            greyedOutTooltipCallback = delegate { return(Common.Localize("TryForBaby:Elder")); };
                            return(false);
                        }
                    }

                    if ((a.SimDescription.IsFemale) && (target.SimDescription.IsFemale))
                    {
                        if (!Woohooer.Settings.mAutonomousFemaleFemaleTryForBabyV2[speciesIndex])
                        {
                            greyedOutTooltipCallback = delegate { return(Common.Localize("TryForBaby:SameSexDenied")); };
                            reason = "SameSexDenied";
                            return(false);
                        }
                    }

                    if ((a.SimDescription.Elder) && (a.SimDescription.IsFemale))
                    {
                        greyedOutTooltipCallback = delegate { return(Common.Localize("TryForBaby:Elder")); };
                        reason = "Elder";
                        return(false);
                    }

                    if ((target.SimDescription.Elder) && (target.SimDescription.IsFemale))
                    {
                        greyedOutTooltipCallback = delegate { return(Common.Localize("TryForBaby:Elder")); };
                        reason = "Elder";
                        return(false);
                    }

                    if ((a.SimDescription.Teen) || (target.SimDescription.Teen))
                    {
                        if ((!teenCanTry) && (autonomous))
                        {
                            greyedOutTooltipCallback = delegate
                            {
                                return(Common.LocalizeEAString("NRaas.Woohooer:Teenagers"));
                            };
                            reason = "Teenagers";
                            return(false);
                        }
                    }

                    if ((SimTypes.IsSkinJob(a.SimDescription)) || (SimTypes.IsSkinJob(target.SimDescription)))
                    {
                        greyedOutTooltipCallback = delegate { return(Common.Localize("TryForBaby:SkinJob")); };
                        reason = "SkinJob";
                        return(false);
                    }
                }

                return(true);
            }
        }
Ejemplo n.º 25
0
        public static float OnGetChanceOfSuccess(Sim simA, Sim simB, bool isAutonomous, CommonWoohoo.WoohooStyle style)
        {
            float chance       = 0;
            bool  useFertility = true;
            int   speciesIndex = PersistedSettings.GetSpeciesIndex(simA);

            switch (style)
            {
            case CommonWoohoo.WoohooStyle.Risky:
            case CommonWoohoo.WoohooStyle.TryForBaby:
                if (simA.SimDescription.Teen || simB.SimDescription.Teen)
                {
                    chance = Woohooer.Settings.mTryForBabyTeenBabyMadeChance;
                }
                else
                {
                    chance = Woohooer.Settings.mTryForBabyMadeChanceV2[speciesIndex];
                }

                useFertility = Woohooer.Settings.mTryForBabyFertility[speciesIndex];
                break;
            }

            if (chance <= 0)
            {
                Common.DebugNotify("Surrogate: No Chance");
                return(0);
            }

            if (useFertility)
            {
                if (simA.IsHuman)
                {
                    if (simA.BuffManager != null && simA.BuffManager.HasTransformBuff())
                    {
                        return(0);
                    }

                    if (simB.BuffManager != null && simB.BuffManager.HasTransformBuff())
                    {
                        return(0);
                    }

                    if (simA.TraitManager.HasElement(TraitNames.FertilityTreatment) ||
                        (simA.BuffManager != null && simA.BuffManager.HasElement(BuffNames.ATwinkleInTheEye)))
                    {
                        chance += TraitTuning.kFertilityBabyMakingChanceIncrease;
                    }

                    if (simB.TraitManager.HasElement(TraitNames.FertilityTreatment) ||
                        (simB.BuffManager != null && simB.BuffManager.HasElement(BuffNames.ATwinkleInTheEye)))
                    {
                        chance += TraitTuning.kFertilityBabyMakingChanceIncrease;
                    }
                }
                else
                {
                    Common.DebugNotify("Surrogate: No Pets - How did you even get here?");
                }

                if (simA.TraitManager.HasElement(TraitNames.WishedForLargeFamily))
                {
                    chance += 100f;
                    simA.BuffManager.RemoveElement(BuffNames.WishForLargeFamily);
                }

                if (simB.TraitManager.HasElement(TraitNames.WishedForLargeFamily))
                {
                    chance += 100f;
                    simB.BuffManager.RemoveElement(BuffNames.WishForLargeFamily);
                }

                if (simA.BuffManager != null && simA.BuffManager.HasElement(BuffNames.MagicInTheAir))
                {
                    chance += BuffMagicInTheAir.kBabyMakingChanceIncrease * 100f;
                }

                if (simB.BuffManager != null && simB.BuffManager.HasElement(BuffNames.MagicInTheAir))
                {
                    chance += BuffMagicInTheAir.kBabyMakingChanceIncrease * 100f;
                }
            }

            return(chance);
        }
Ejemplo n.º 26
0
        private static bool CanGetPreggers(Sim sim, bool isAutonomous, ref GreyedOutTooltipCallback callback, out string reason)
        {
            using (Common.TestSpan span = new Common.TestSpan(ScoringLookup.Stats, "Duration CanGetPreggers", Common.DebugLevel.Stats))
            {
                if (SimTypes.IsPassporter(sim.SimDescription))
                {
                    reason   = "Passport";
                    callback = Common.DebugTooltip(reason);
                    return(false);
                }

                if (isAutonomous)
                {
                    if (!sim.IsRobot && sim.SimDescription.Elder)
                    {
                        reason   = "Elder";
                        callback = Common.DebugTooltip(reason);
                        return(false);
                    }
                    else if (Households.IsFull(sim.Household, sim.IsPet, Woohooer.Settings.mMaximumHouseholdSizeForAutonomousV2[PersistedSettings.GetSpeciesIndex(sim)]))
                    {
                        reason   = "House Full";
                        callback = Common.DebugTooltip(reason);
                        return(false);
                    }
                }
                else
                {
                    if (!CommonPregnancy.SatisfiesMaximumOccupants(sim, isAutonomous, ref callback))
                    {
                        reason = "Maximum Occupants";
                        return(false);
                    }
                }

                if (!sim.IsRobot && SimTypes.IsSkinJob(sim.SimDescription))
                {
                    reason   = "Non-Robot Skin Job Fail";
                    callback = Common.DebugTooltip(reason);
                    return(false);
                }
                else if (sim.BuffManager.HasTransformBuff())
                {
                    reason   = "Transform Buff";
                    callback = Common.DebugTooltip(reason);
                    return(false);
                }
                else if (!sim.IsRobot && sim.SimDescription.IsVisuallyPregnant)
                {
                    reason   = "Already Pregnant";
                    callback = Common.DebugTooltip(reason);
                    return(false);
                }
                else if (sim.IsRobot && sim.SimDescription.IsPregnant)
                {
                    reason   = "Already Pregnant";
                    callback = Common.DebugTooltip(reason);
                    return(false);
                }

                if (sim.Household != null && sim.Household.IsTouristHousehold)
                {
                    MiniSimDescription description = MiniSimDescription.Find(sim.SimDescription.SimDescriptionId);

                    if (description == null)
                    {
                        reason   = "Too Many Sims";
                        callback = delegate
                        {
                            return(Common.LocalizeEAString(sim.IsFemale, "Gameplay/Actors/Sim/TryForBaby:TooManySims", new object[] { sim }));
                        };
                        return(false);
                    }
                }
                else if (sim.LotHome == null)
                {
                    reason   = "Too Many Sims";
                    callback = delegate
                    {
                        if (sim.Household.IsAlienHousehold)
                        {
                            return(Common.LocalizeEAString(sim.IsFemale, "Gameplay/Actors/Sim/TryForBaby:AlienNPCs", new object[] { sim }));
                        }
                        else
                        {
                            return(Common.LocalizeEAString(sim.IsFemale, "Gameplay/Actors/Sim/TryForBaby:TooManySims", new object[] { sim }));
                        }
                    };
                    return(false);
                }
                else if (sim.SimDescription.IsDueToAgeUp() || (sim.SimDescription.AgingState != null && sim.SimDescription.AgingState.IsAgingInProgress()))
                {
                    reason   = "Aging Up Fail";
                    callback = Common.DebugTooltip(reason);
                    return(false);
                }
                else if (SimTypes.IsLampGenie(sim.SimDescription))
                {
                    reason   = "Lamp Genie";
                    callback = Common.DebugTooltip(reason);
                    return(false);
                }

                if (sStoryProgressionAllowImpregnation.Valid && Woohooer.Settings.TestStoryProgression(isAutonomous))
                {
                    reason = sStoryProgressionAllowImpregnation.Invoke <string>(new object[] { sim.SimDescription, isAutonomous });

                    if (reason != null)
                    {
                        callback = Woohooer.StoryProgressionTooltip(reason, false);
                        return(false);
                    }
                }

                reason = null;

                return(true);
            }
        }
Ejemplo n.º 27
0
        public static bool CanTryForBaby(Sim actor, Sim target, bool autonomous, CommonWoohoo.WoohooStyle style, ref GreyedOutTooltipCallback callback, out string reason)
        {
            using (Common.TestSpan span = new Common.TestSpan(ScoringLookup.Stats, "Duration CanTryForBaby", Common.DebugLevel.Stats))
            {
                int  chance       = 0;
                bool teenCanTry   = false;
                int  speciesIndex = PersistedSettings.GetSpeciesIndex(actor);

                switch (style)
                {
                case CommonWoohoo.WoohooStyle.Risky:
                case CommonWoohoo.WoohooStyle.TryForBaby:
                    if (actor.SimDescription.Teen || target.SimDescription.Teen)
                    {
                        chance = Woohooer.Settings.mTryForBabyTeenBabyMadeChance;
                    }
                    else
                    {
                        chance = Woohooer.Settings.mTryForBabyMadeChanceV2[speciesIndex];
                    }

                    teenCanTry = Woohooer.Settings.mTeenTryForBabyAutonomous;
                    break;
                }

                if (chance <= 0)
                {
                    reason   = "Chance Fail";
                    callback = Common.DebugTooltip(reason);
                    return(false);
                }

                if (!CommonSocials.CanGetRomantic(actor, target, autonomous, true, true, ref callback, out reason))
                {
                    return(false);
                }

                if (autonomous || Woohooer.Settings.TestStoryProgression(autonomous))
                {
                    if (sStoryProgressionAllowPregnancy.Valid && Woohooer.Settings.TestStoryProgression(autonomous))
                    {
                        if (actor.SimDescription.Gender == target.SimDescription.Gender)
                        {
                            reason   = "Surrogate: Same Sex Fail";
                            callback = Common.DebugTooltip(reason);
                            return(false);
                        }
                        else
                        {
                            SimDescription male, female;

                            if (actor.IsFemale)
                            {
                                female = actor.SimDescription;
                                male   = target.SimDescription;
                            }
                            else
                            {
                                male   = actor.SimDescription;
                                female = target.SimDescription;
                            }

                            reason = sStoryProgressionAllowPregnancy.Invoke <string>(new object[] { female, male, autonomous });

                            if (reason != null)
                            {
                                callback = Woohooer.StoryProgressionTooltip(reason, false);
                                return(false);
                            }
                        }
                    }
                }

                if (actor.SimDescription.Gender == target.SimDescription.Gender)
                {
                    reason   = "Surrogate: Same Sex Fail";
                    callback = Common.DebugTooltip(reason);
                    return(false);
                }
                else
                {
                    if (actor.IsFemale && !CanGetPreggers(actor, autonomous, ref callback, out reason))
                    {
                        return(false);
                    }
                    else if (!CanGetPreggers(target, autonomous, ref callback, out reason))
                    {
                        return(false);
                    }
                }

                if (autonomous || Woohooer.Settings.mTestAllConditionsForUserDirected[speciesIndex])
                {
                    if (HasBlockingBuff(actor))
                    {
                        reason   = "Actor Buff Block";
                        callback = delegate { return(Common.Localize("TryForBaby:BuffBlock")); };
                        return(false);
                    }

                    if (HasBlockingBuff(target))
                    {
                        reason   = "Target Buff Block";
                        callback = delegate { return(Common.Localize("TryForBaby:BuffBlock")); };
                        return(false);
                    }

                    if (autonomous)
                    {
                        if (actor.SimDescription.IsPregnant || target.SimDescription.IsPregnant)
                        {
                            reason   = "Pregnant";
                            callback = delegate { return(Common.Localize("TryForBaby:Pregnant")); };
                            return(false);
                        }
                    }
                    else
                    {
                        if ((actor.IsRobot && actor.SimDescription.IsPregnant) || actor.SimDescription.IsVisuallyPregnant)
                        {
                            reason   = "Pregnant";
                            callback = delegate { return(Common.Localize("TryForBaby:Pregnant")); };
                            return(false);
                        }

                        if ((target.IsRobot && target.SimDescription.IsPregnant) || target.SimDescription.IsVisuallyPregnant)
                        {
                            if (actor.SimDescription.IsVisuallyPregnant || target.SimDescription.IsVisuallyPregnant)
                            {
                                reason   = "Pregnant";
                                callback = delegate { return(Common.Localize("TryForBaby:Pregnant")); };
                                return(false);
                            }
                        }
                    }
                }

                if (actor.IsFemale && !actor.IsRobot && actor.SimDescription.Elder)
                {
                    reason   = "Elder";
                    callback = delegate { return(Common.Localize("TryForBaby:Elder")); };
                    return(false);
                }

                if (target.IsFemale && !target.IsRobot && target.SimDescription.Elder)
                {
                    reason   = "Elder";
                    callback = delegate { return(Common.Localize("TryForBaby:Elder")); };
                    return(false);
                }

                if (actor.SimDescription.Teen || target.SimDescription.Teen)
                {
                    if (!teenCanTry && autonomous)
                    {
                        reason   = "Teenagers";
                        callback = delegate { return(Common.LocalizeEAString("NRaas.Woohooer:Teenagers")); };
                        return(false);
                    }
                }

                if ((!actor.IsRobot && SimTypes.IsSkinJob(actor.SimDescription)) || (!target.IsRobot && SimTypes.IsSkinJob(target.SimDescription)))
                {
                    reason   = "Skin Job";
                    callback = delegate { return(Common.Localize("TryForBaby:SkinJob")); };
                    return(false);
                }

                return(true);
            }
        }
Ejemplo n.º 28
0
        public static void ResetSettings()
        {
            sSettings = null;

            Tagger.RemoveTags();
        }
Ejemplo n.º 29
0
 public override int Score(SimScoringParameters parameters)
 {
     return(Woohooer.Settings.mAttractionBaseChanceScoringV3[PersistedSettings.GetSpeciesIndex(parameters.Actor)]);
 }
Ejemplo n.º 30
0
        public static void CalculateAttractionScore(Relationship ths, bool displayNotice)
        {
            if (ths == null)
            {
                return;
            }

            ths.AttractionScore = 0;

            //if (ths.AttractionScore == float.PositiveInfinity)
            {
                SimDescription simA = ths.SimDescriptionA;
                SimDescription simB = ths.SimDescriptionB;
                if ((simA != null) && (simB != null) && (simA.IsHuman) && (simB.IsHuman))
                {
                    string reason;
                    GreyedOutTooltipCallback greyedOutTooltipCallback = null;
                    if (CommonSocials.CanGetRomantic(simA, simB, true, false, true, ref greyedOutTooltipCallback, out reason))
                    {
                        float score = RandomUtil.GetFloat(Relationship.kBaseRandomAttraction[0x0], Relationship.kBaseRandomAttraction[0x1]);

                        score += Woohooer.Settings.mAttractionBaseChanceScoringV3[PersistedSettings.GetSpeciesIndex(simA)];

                        float origScore = score;
                        float highScore = 0f;
                        float newScore  = 0f;

                        switch (ths.LTR.CurrentLTR)
                        {
                        case LongTermRelationshipTypes.Spouse:
                        case LongTermRelationshipTypes.Fiancee:
                            if (score > 0)
                            {
                                score *= 2;
                            }
                            else
                            {
                                score = 0;
                            }
                            break;
                        }

                        newScore  = score - origScore;
                        origScore = score;

                        Relationship.AttractionType attractionType = Relationship.AttractionType.None;
                        foreach (Trait traitA in simA.TraitManager.List)
                        {
                            if (traitA.IsReward)
                            {
                                continue;
                            }

                            foreach (Trait traitB in simB.TraitManager.List)
                            {
                                if (traitB.IsReward)
                                {
                                    continue;
                                }

                                if (traitA.TraitGuid == traitB.TraitGuid)
                                {
                                    score += Relationship.kTraitModifier;
                                }
                                else if (TraitManager.DoTraitsConflict(traitA.Guid, traitB.Guid))
                                {
                                    score -= Relationship.kTraitModifier;
                                }
                            }
                        }

                        newScore  = score - origScore;
                        origScore = score;

                        if (ths.TestWasNewHighScore(Relationship.AttractionType.Trait, newScore, ref highScore))
                        {
                            attractionType = Relationship.AttractionType.Trait;
                        }

                        Occupation occupation = simA.Occupation;
                        if (occupation != null)
                        {
                            score += occupation.CareerLevel * Relationship.kCareerBonusPerLevel;
                        }

                        Occupation occupation2 = simB.Occupation;
                        if (occupation2 != null)
                        {
                            score += occupation2.CareerLevel * Relationship.kCareerBonusPerLevel;
                        }

                        newScore  = score - origScore;
                        origScore = score;

                        if (ths.TestWasNewHighScore(Relationship.AttractionType.Career, newScore, ref highScore))
                        {
                            attractionType = Relationship.AttractionType.Career;
                        }

                        foreach (Skill skill in simA.SkillManager.List)
                        {
                            score += skill.SkillLevel * Relationship.kSkillBonusPerLevel;
                        }

                        foreach (Skill skill2 in simB.SkillManager.List)
                        {
                            score += skill2.SkillLevel * Relationship.kSkillBonusPerLevel;
                        }

                        newScore  = score - origScore;
                        origScore = score;

                        if (ths.TestWasNewHighScore(Relationship.AttractionType.Skill, newScore, ref highScore))
                        {
                            attractionType = Relationship.AttractionType.Skill;
                        }

                        List <OccultTypes> listA = OccultTypeHelper.CreateList(simA);
                        List <OccultTypes> listB = OccultTypeHelper.CreateList(simB);

                        foreach (OccultTypes typeA in listA)
                        {
                            if (listB.Contains(typeA))
                            {
                                score += Relationship.kBonusForMatchingOccult;
                            }
                        }

                        newScore  = score - origScore;
                        origScore = score;

                        if (ths.TestWasNewHighScore(Relationship.AttractionType.Occult, newScore, ref highScore))
                        {
                            attractionType = Relationship.AttractionType.Occult;
                        }

                        CelebrityManager celebrityManagerA = simA.CelebrityManager;
                        if (celebrityManagerA != null)
                        {
                            score += celebrityManagerA.Level * Relationship.kCelebrityBonusPerLevel;
                        }

                        CelebrityManager celebrityManagerB = simB.CelebrityManager;
                        if (celebrityManagerB != null)
                        {
                            score += celebrityManagerB.Level * Relationship.kCelebrityBonusPerLevel;
                        }

                        newScore  = score - origScore;
                        origScore = score;

                        if (ths.TestWasNewHighScore(Relationship.AttractionType.Celebrity, newScore, ref highScore))
                        {
                            attractionType = Relationship.AttractionType.Celebrity;
                        }

                        if (simA.Zodiac == simB.Zodiac)
                        {
                            score += Relationship.kMatchingSignsBonus;
                        }

                        if (simA.FavoriteColor == simB.FavoriteColor)
                        {
                            score += Relationship.kMatchingSignsBonus / 2;
                        }

                        if (simA.FavoriteFood == simB.FavoriteFood)
                        {
                            score += Relationship.kMatchingSignsBonus / 2;
                        }

                        if (simA.FavoriteMusic == simB.FavoriteMusic)
                        {
                            score += Relationship.kMatchingSignsBonus / 2;
                        }

                        newScore  = score - origScore;
                        origScore = score;

                        if (ths.TestWasNewHighScore(Relationship.AttractionType.Astro, newScore, ref highScore))
                        {
                            attractionType = Relationship.AttractionType.Astro;
                        }

                        int familyFundsA = 0;

                        Household house = simA.Household;
                        if (house != null)
                        {
                            familyFundsA = house.FamilyFunds;
                        }

                        if (familyFundsA >= Relationship.kAttractedMoneyAmounts[0x2])
                        {
                            score += Relationship.kAttractedMoneyBonuses[0x2];
                        }
                        else if (familyFundsA >= Relationship.kAttractedMoneyAmounts[0x1])
                        {
                            score += Relationship.kAttractedMoneyBonuses[0x1];
                        }
                        else if (familyFundsA >= Relationship.kAttractedMoneyAmounts[0x0])
                        {
                            score += Relationship.kAttractedMoneyBonuses[0x0];
                        }

                        int familyFundsB = 0;

                        house = simB.Household;
                        if (house != null)
                        {
                            familyFundsB = house.FamilyFunds;
                        }
                        if (familyFundsB >= Relationship.kAttractedMoneyAmounts[0x2])
                        {
                            score += Relationship.kAttractedMoneyBonuses[0x2];
                        }
                        else if (familyFundsB >= Relationship.kAttractedMoneyAmounts[0x1])
                        {
                            score += Relationship.kAttractedMoneyBonuses[0x1];
                        }
                        else if (familyFundsB >= Relationship.kAttractedMoneyAmounts[0x0])
                        {
                            score += Relationship.kAttractedMoneyBonuses[0x0];
                        }

                        newScore  = score - origScore;
                        origScore = score;

                        if (ths.TestWasNewHighScore(Relationship.AttractionType.Money, newScore, ref highScore))
                        {
                            attractionType = Relationship.AttractionType.Money;
                        }

                        foreach (TraitNames trait in sAttractionTraits)
                        {
                            if (simA.HasTrait(trait))
                            {
                                score += Relationship.kAttractionLifetimeRewardBonus;
                            }

                            if (simB.HasTrait(trait))
                            {
                                score += Relationship.kAttractionLifetimeRewardBonus;
                            }
                        }

                        newScore  = score - origScore;
                        origScore = score;

                        if (ths.TestWasNewHighScore(Relationship.AttractionType.Attractive, newScore, ref highScore))
                        {
                            attractionType = Relationship.AttractionType.Attractive;
                        }

                        BuffManager buffManagerA = null;
                        if (simA.CreatedSim != null)
                        {
                            buffManagerA = simA.CreatedSim.BuffManager;
                        }

                        BuffManager buffManagerB = null;
                        if (simB.CreatedSim != null)
                        {
                            buffManagerB = simB.CreatedSim.BuffManager;
                        }

                        foreach (BuffNames posBuff in Relationship.kPositiveBuffList)
                        {
                            if ((buffManagerA != null) && (buffManagerA.HasElement(posBuff)))
                            {
                                score += Relationship.kPerBuffModifier;
                            }
                            if ((buffManagerB != null) && (buffManagerB.HasElement(posBuff)))
                            {
                                score += Relationship.kPerBuffModifier;
                            }
                        }

                        foreach (BuffNames negBuff in Relationship.kNegativeBuffList)
                        {
                            if ((buffManagerA != null) && (buffManagerA.HasElement(negBuff)))
                            {
                                score -= Relationship.kPerBuffModifier;
                            }
                            if ((buffManagerB != null) && (buffManagerB.HasElement(negBuff)))
                            {
                                score -= Relationship.kPerBuffModifier;
                            }
                        }

                        newScore  = score - origScore;
                        origScore = score;

                        if (ths.TestWasNewHighScore(Relationship.AttractionType.Buffs, newScore, ref highScore))
                        {
                            attractionType = Relationship.AttractionType.Buffs;
                        }

                        score += simA.Fitness * 25;
                        score += simB.Fitness * 25;

                        if (simA.Weight < 0)
                        {
                            score += 25 - simA.Weight * -25;
                        }
                        else
                        {
                            score += 25 - simA.Weight * 25;
                        }

                        if (simB.Weight < 0)
                        {
                            score += 25 - simB.Weight * -25;
                        }
                        else
                        {
                            score += 25 - simB.Weight * 25;
                        }

                        int ageA = 0;
                        switch (simA.Age)
                        {
                        case CASAgeGenderFlags.Teen:
                            ageA = 1;
                            break;

                        case CASAgeGenderFlags.YoungAdult:
                            ageA = 2;
                            break;

                        case CASAgeGenderFlags.Adult:
                            ageA = 3;
                            break;

                        case CASAgeGenderFlags.Elder:
                            ageA = 4;
                            break;
                        }

                        int ageB = 0;
                        switch (simB.Age)
                        {
                        case CASAgeGenderFlags.Teen:
                            ageB = 1;
                            break;

                        case CASAgeGenderFlags.YoungAdult:
                            ageB = 2;
                            break;

                        case CASAgeGenderFlags.Adult:
                            ageB = 3;
                            break;

                        case CASAgeGenderFlags.Elder:
                            ageB = 4;
                            break;
                        }

                        score -= Math.Abs(ageA - ageB) * 25;

                        newScore  = score - origScore;
                        origScore = score;

                        if (ths.TestWasNewHighScore(Relationship.AttractionType.Physical, newScore, ref highScore))
                        {
                            attractionType = Relationship.AttractionType.Physical;
                        }

                        ths.AttractionScore = score;

                        if (Common.kDebugging)
                        {
                            Common.DebugNotify(simA.FullName + Common.NewLine + simB.FullName + Common.NewLine + "Attraction: " + score + Common.NewLine + attractionType);
                        }

                        if ((ths.AreAttracted) && ((SimTypes.IsSelectable(simA)) || (SimTypes.IsSelectable(simB))))
                        {
                            if (AttractionHelper.TestEnableAttractionNPCController(ths))
                            {
                                if (ths.AttractionNPCController == null)
                                {
                                    ths.AttractionNPCController = new AttractionNPCBehaviorController(ths);
                                }
                            }
                            else
                            {
                                if (ths.AttractionNPCController != null)
                                {
                                    ths.AttractionNPCController.Dispose();
                                }
                            }

                            switch (ths.LTR.CurrentLTR)
                            {
                            case LongTermRelationshipTypes.Spouse:
                            case LongTermRelationshipTypes.Fiancee:
                            case LongTermRelationshipTypes.Ex:
                            case LongTermRelationshipTypes.ExSpouse:
                            case LongTermRelationshipTypes.Partner:
                            case LongTermRelationshipTypes.RomanticInterest:
                                break;

                            default:
                                if (displayNotice)
                                {
                                    Sim createdSimA = simA.CreatedSim;
                                    Sim createdSimB = simB.CreatedSim;
                                    if ((createdSimA != null) && (createdSimB != null))
                                    {
                                        if ((createdSimA.LotCurrent == createdSimB.LotCurrent) && (createdSimA.RoomId == createdSimB.RoomId))
                                        {
                                            VisualEffect effect = VisualEffect.Create("ep8AttractionSystem");
                                            createdSimB.ParentHeadlineFx(effect);
                                            effect.SubmitOneShotEffect(VisualEffect.TransitionType.SoftTransition);

                                            VisualEffect effect2 = VisualEffect.Create("ep8AttractionSystem");
                                            createdSimA.ParentHeadlineFx(effect2);
                                            effect2.SubmitOneShotEffect(VisualEffect.TransitionType.SoftTransition);

                                            ThoughtBalloonManager.BalloonData bd = new ThoughtBalloonManager.BalloonData(createdSimA.GetThumbnailKey());
                                            bd.BalloonType = ThoughtBalloonTypes.kSpeechBalloon;
                                            createdSimB.ThoughtBalloonManager.ShowBalloon(bd);

                                            ThoughtBalloonManager.BalloonData data2 = new ThoughtBalloonManager.BalloonData(createdSimB.GetThumbnailKey());
                                            data2.BalloonType = ThoughtBalloonTypes.kSpeechBalloon;
                                            createdSimA.ThoughtBalloonManager.ShowBalloon(data2);

                                            TNSNames reasonTNS = ths.GetReasonTNS(attractionType);
                                            if (reasonTNS != TNSNames.None)
                                            {
                                                Sim target = createdSimB.IsSelectable ? createdSimB : createdSimA;
                                                Sim actor  = (createdSimB == target) ? createdSimA : createdSimB;
                                                target.ShowTNSIfSelectable(reasonTNS, actor, target, new object[] { actor, target });
                                            }

                                            EventTracker.SendEvent(EventTypeId.kMeetAttractiveSim, createdSimB);
                                            EventTracker.SendEvent(EventTypeId.kMeetAttractiveSim, createdSimA);
                                            Audio.StartObjectSound(createdSimB.IsSelectable ? createdSimB.ObjectId : createdSimA.ObjectId, "sting_attraction", false);
                                        }
                                    }
                                }
                                break;
                            }
                        }
                        else if (ths.AttractionNPCController != null)
                        {
                            ths.AttractionNPCController.Dispose();
                        }
                    }
                    else
                    {
                        if (greyedOutTooltipCallback != null)
                        {
                            Common.DebugNotify(simA.FullName + Common.NewLine + simB.FullName + Common.NewLine + greyedOutTooltipCallback());
                        }
                    }
                }
            }

            if (ths.AttractionNPCController != null)
            {
                ths.AttractionNPCController.Dispose();
            }
        }
Ejemplo n.º 31
0
 public override void onCreate()
 {
     base.onCreate();
     mSettings = new PersistedSettings(this, ApplicationContext);
 }
Ejemplo n.º 32
0
        public static bool SatisfiesTryForBaby(Sim actor, Sim target, string logName, bool isAutonomous, bool scoreTarget, ref GreyedOutTooltipCallback callback)
        {
            using (Common.TestSpan span = new Common.TestSpan(ScoringLookup.Stats, "Duration " + logName, Common.DebugLevel.Stats))
            {
                int speciesIndex = PersistedSettings.GetSpeciesIndex(actor);

                if (isAutonomous)
                {
                    if (!Woohooer.Settings.mTryForBabyAutonomousV2[speciesIndex])
                    {
                        return(false);
                    }

                    if (!Woohooer.Settings.mAllowOffLotTryForBabyAutonomous[speciesIndex])
                    {
                        if (actor.LotCurrent != Household.ActiveHousehold.LotHome)
                        {
                            return(false);
                        }
                    }
                }

                if ((!scoreTarget) && (!CommonWoohoo.SatisfiesUserLikingGate(actor, target, isAutonomous, true, logName)))
                {
                    callback = Common.DebugTooltip("Liking Gate Fail");
                    return(false);
                }

                if (!CommonSocials.SatisfiedInteractionLevel(actor, target, isAutonomous, ref callback))
                {
                    return(false);
                }

                if (!WoohooInteractionLevelSetting.Satisfies(actor, target, true))
                {
                    ScoringLookup.IncStat(logName + " Interaction Level Fail");

                    callback = Common.DebugTooltip("Interaction Level Fail");
                    return(false);
                }

                if (!CommonWoohoo.SatisfiesCooldown(actor, target, isAutonomous, ref callback))
                {
                    return(false);
                }

                string reason;
                if (!CanTryForBaby(actor, target, isAutonomous, CommonWoohoo.WoohooStyle.TryForBaby, ref callback, out reason))
                {
                    ScoringLookup.IncStat(logName + " " + reason);
                    return(false);
                }

                WoohooScoring.ScoreTestResult result = WoohooScoring.ScoreActor(logName, actor, target, isAutonomous, "InterestInTryForBaby", true);
                if (result != WoohooScoring.ScoreTestResult.Success)
                {
                    ScoringLookup.IncStat(logName + " " + result);

                    callback = Common.DebugTooltip("Actor Scoring Fail " + result);
                    return(false);
                }

                if (scoreTarget)
                {
                    result = WoohooScoring.ScoreTarget(logName, target, actor, isAutonomous, "InterestInTryForBaby", true);
                    if (result != WoohooScoring.ScoreTestResult.Success)
                    {
                        ScoringLookup.IncStat(logName + " " + result);

                        callback = Common.DebugTooltip("Target Scoring Fail " + result);
                        return(false);
                    }
                }

                ScoringLookup.IncStat(logName + " Success");
                return(true);
            }
        }