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); }
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); }
public static void ResetSettings() { sSettings = null; KamaSimtra.ResetSettings(); AdjustAttractionTuning(); }
public static void ResetSettings() { sSettings = null; ApplyDefaultProfiles(); ReapplySettings(); }
public static void ResetSettings() { foreach (KeyValuePair <OccupationNames, PersistedSettings.CareerSettings> settings in Careers.Settings.mCareerSettings) { settings.Value.RevertToDefault(); } sSettings = null; }
protected override bool Allow(GameHitParameters <GameObject> parameters) { if (NRaas.Woohooer.Settings.mRiskyBabyMadeChanceV2[PersistedSettings.GetSpeciesIndex(CASAgeGenderFlags.Human)] <= 0) { return(false); } return(true); }
protected override OptionResult Run(GameHitParameters <GameObject> parameters) { OptionResult result = base.Run(parameters); if (result != OptionResult.Failure) { PersistedSettings.ResetSpeeds(); } return(result); }
public static void ResetSettings() { sSettings = null; PersistedSettings.ResetSpeeds(); PriorValues.sFactorChanged = true; Settings.ParseIntervals(); }
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)]); } }
public static void ResetSettings() { ApplyDefaultSettings(); sSettings = null; FunFactor.ApplyFunFactor(); ApplySettings(); StartAlarms(); }
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); }
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)); }
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); }
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)] }) }); }
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()); }
public uint GetActualEnd(Season season) { return(PersistedSettings.GetActualDay(mEnd, season)); }
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(); }
public override int Score(SimScoringParameters parameters) { return(Woohooer.Settings.GetCount(parameters.Actor) * Woohooer.Settings.mWoohooCountScoreFactor[PersistedSettings.GetSpeciesIndex(parameters.Actor)]); }
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); }
public static void ResetSettings() { sSettings = null; }
public static void ResetSettings() { sSettings = null; }
public override void onCreate() { base.onCreate(); mSettings = new PersistedSettings(this, ApplicationContext); }
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); } }
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); }
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); } }
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); } }
public static void ResetSettings() { sSettings = null; Tagger.RemoveTags(); }
public override int Score(SimScoringParameters parameters) { return(Woohooer.Settings.mAttractionBaseChanceScoringV3[PersistedSettings.GetSpeciesIndex(parameters.Actor)]); }
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(); } }
public override void onCreate() { base.onCreate(); mSettings = new PersistedSettings(this, ApplicationContext); }
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); } }