protected override bool TargetAllow(SimDescription sim) { Relationship relationship = ManagerSim.GetRelationship(Sim, Target); if (relationship == null) { IncStat("Bad Relation"); return(false); } else if (relationship.AreRomantic()) { IncStat("Already Romantic"); return(false); } else if (Sim.Partner == Target) { IncStat("Partnered"); return(false); } LongTermRelationship LTR = relationship.LTR; if (LTR == null) { IncStat("Bad LTR"); return(false); } else if (LTR.Liking <= Sims3.Gameplay.Actors.Sim.kRomanceUseLikingGate) { IncStat("Too Low"); return(false); } return(base.TargetAllow(sim)); }
protected override bool TargetAllow(SimDescription sim) { if ((Sim.Partner == Target) && (Sim.IsMarried)) { IncStat("Married"); return(false); } Relationship relationship = ManagerSim.GetRelationship(Sim, Target); if (relationship == null) { return(false); } LongTermRelationship LTR = relationship.LTR; if (LTR == null) { return(false); } if (LTR.Liking <= Sims3.Gameplay.Actors.Sim.kRomanceUseLikingGate) { IncStat("Romance Gated"); return(false); } else if (LTR.Liking <= Sims3.Gameplay.Actors.Sim.kWooHooUseLikingGate) { IncStat("WooHoo Gated"); return(false); } else if (!relationship.AreRomantic()) { IncStat("Not Romantic"); return(false); } return(base.TargetAllow(sim)); }
protected override bool TargetAllow(SimDescription sim) { Relationship relationship = ManagerSim.GetRelationship(Sim, Target); if (relationship == null) { IncStat("Bad Relation"); return(false); } else if (!relationship.AreRomantic()) { IncStat("Not Romantic"); return(false); } LongTermRelationship LTR = relationship.LTR; if (LTR == null) { IncStat("Bad LTR"); return(false); } else if (LTR.Liking <= Sims3.Gameplay.Actors.Sim.kRomanceUseLikingGate) { IncStat("Too Low"); return(false); } if (mAffairStory == ManagerRomance.AffairStory.None) { if (!Romances.AllowAffair(this, Sim, Target, Managers.Manager.AllowCheck.None)) { IncStat("Affair Denied"); return(false); } } return(base.TargetAllow(sim)); }
protected override bool PrivateUpdate(ScenarioFrame frame) { Relationship relationship = ManagerSim.GetRelationship(Sim, Target); if (relationship == null) { return(false); } LongTermRelationship LTR = relationship.LTR; if (LTR == null) { return(false); } Sim.SetFirstKiss(Target); Sim.SetFirstRomance(Target); SetElapsedTime <DayOfLastFlirtOption>(Sim); SetElapsedTime <DayOfLastFlirtOption>(Target); if ((Sim.CreatedSim != null) && (Target.CreatedSim != null)) { EventTracker.SendEvent(new AskOnDateEvent(Sim.CreatedSim, Target.CreatedSim, true)); } Romances.BumpToHigherState(this, Sim, Target); IncStat(LTR.CurrentLTR.ToString()); if (SimID.Matches(Flirts.PreviousLoveLoss, Sim)) { Flirts.PreviousLoveLoss = null; } return(true); }
protected override bool PrivateUpdate(ScenarioFrame frame) { Relationship relationship = ManagerSim.GetRelationship(Sim, Target); if (relationship == null) { return(false); } LongTermRelationship LTR = relationship.LTR; if (LTR == null) { return(false); } if (Sim.TraitManager.HasElement(TraitNames.GreatKisser) || Target.TraitManager.HasElement(TraitNames.GreatKisser)) { if (Sim.CreatedSim != null) { ManagerSim.AddBuff(this, Sim, BuffNames.GreatKisser, Origin.FromSocialization); } if (Target.CreatedSim != null) { ManagerSim.AddBuff(this, Target, BuffNames.GreatKisser, Origin.FromSocialization); } } if (SimID.Matches(Flirts.PreviousLoveLoss, Sim)) { Flirts.PreviousLoveLoss = null; } if (LTR.Liking > Sims3.Gameplay.Actors.Sim.kWooHooUseLikingGate) { if (!Sim.HadFirstWooHoo) { Sim.SetFirstWooHoo(); if ((Sim.CreatedSim != null) && (Target.CreatedSim != null)) { EventTracker.SendEvent(EventTypeId.kHadFirstWoohoo, Sim.CreatedSim, Target.CreatedSim); } } if (!Target.HadFirstWooHoo) { Target.SetFirstWooHoo(); if ((Sim.CreatedSim != null) && (Target.CreatedSim != null)) { EventTracker.SendEvent(EventTypeId.kHadFirstWoohoo, Target.CreatedSim, Sim.CreatedSim); } } LTR.AddInteractionBit(LongTermRelationship.InteractionBits.Kissed); LTR.AddInteractionBit(LongTermRelationship.InteractionBits.WooHoo); if (Sim.IsHuman) { Sim.SetFirstKiss(Target); Target.SetFirstKiss(Sim); } else { if ((Sim.CreatedSim != null) && (Target.CreatedSim != null)) { EventTracker.SendEvent(EventTypeId.kPetWooHooed, Sim.CreatedSim, Target.CreatedSim); EventTracker.SendEvent(EventTypeId.kPetWooHooed, Target.CreatedSim, Sim.CreatedSim); } } if (mPregnancyChance != 0) { Add(frame, new UnexpectedPregnancyScenario(Sim, Target, mPregnancyChance), ScenarioResult.Start); } else { Romances.AddWoohooerNotches(Sim, Target, false, false); } } if (OnRomanceAffairScenario != null) { OnRomanceAffairScenario(this, frame); } return(false); }
private static bool RelationshipIsInappropriate(LongTermRelationship ltr, LTRData data) { return(RelationshipIsInappropriate(data, ltr.mParent.SimDescriptionA, ltr.mParent.SimDescriptionB, ltr.CurrentLTR)); }
protected static void OnLTRChanged(Event e) { using (Common.TestSpan span = new Common.TestSpan(ScoringLookup.Stats, "Duration TeenAdultControl:OnLTRChanged")) { if (!sInLTRChanged) { try { sInLTRChanged = true; RelationshipLTRChangedEvent ltrEvent = e as RelationshipLTRChangedEvent; if ((ltrEvent != null) && (ltrEvent.OldLTR != ltrEvent.RelationshipState)) { Common.StringBuilder msg = new Common.StringBuilder("TeenAdult:OnLTRChanged"); Relationship relation = ltrEvent.Relationship; SimDescription descA = relation.SimDescriptionA; SimDescription descB = relation.SimDescriptionB; bool perform = false; LTRData oldLTR = LTRData.Get(ltrEvent.OldLTR); if (oldLTR != null) { if (LongTermRelationship.RelationshipIsInappropriate(oldLTR, descA, descB, ltrEvent.OldLTR)) { perform = true; } } LongTermRelationshipTypes wasRel = ltrEvent.RelationshipState; msg += Common.NewLine + relation.SimDescriptionA.FullName; msg += Common.NewLine + relation.SimDescriptionB.FullName; msg += Common.NewLine + "Old: " + ltrEvent.OldLTR; msg += Common.NewLine + "Was: " + wasRel; msg += Common.NewLine + "Perform: " + perform; if ((perform) && (descA.IsHuman) && (descB.IsHuman)) { if (((descA.Teen) && (descB.YoungAdultOrAbove)) || ((descB.Teen) && (descA.YoungAdultOrAbove))) { sTracer.Perform(); if (sTracer.mRevert) { Perform(relation, ltrEvent.OldLTR); msg += Common.NewLine + "Now: " + ltrEvent.RelationshipState; } if (!sTracer.mIgnore) { msg += Common.NewLine + sTracer; Common.DebugStackLog(msg); } } } } } finally { sInLTRChanged = false; } } } }