private void LetSimIn(Sim s) { VisitSituation visitSituation = VisitSituation.FindVisitSituationInvolvingGuest(s); if (visitSituation != null) { VisitSituation.SetVisitToGreeted(s); VisitSituation.OnInvitedIn(s); visitSituation.AllowedToStayOver = true; visitSituation.SetStateSocializing(); } }
public virtual void OnGuestHasArrived(Sim sim) { if (!SomeGuestsHaveArrived) { EventTracker.SendEvent(new PartyEvent(EventTypeId.kPartyBegan, Host, Host.SimDescription, this)); } SomeGuestsHaveArrived = true; StoryProgression.Main.Situations.GreetSimOnLot(sim.SimDescription, Lot); VisitSituation.SetVisitToGreeted(sim); }
protected override void OnPerform() { mScenario.IncStat("PopulatePartyTask"); mParty.mPlaceNpcGuestsFunction = null; mParty.SomeGuestsHaveArrived = true; Lot lotHome = mParty.Host.LotHome; GatheringScenario.PushBuffetInteractions(mScenario, mParty.Host.SimDescription, lotHome); List <Sim> sims = new List <Sim>(HouseholdsEx.AllSims(lotHome.Household)); SimDescription host = mParty.Host.SimDescription; foreach (SimDescription sim in mParty.GuestDescriptions) { if (!NpcParty.NpcGuestTest(sim, host)) { continue; } if (!mScenario.Situations.Allow(mScenario, sim)) { mScenario.IncStat("NpcParty Push User Denied"); continue; } Sim createdSim = sim.CreatedSim; if (createdSim == null) { createdSim = Instantiation.PerformOffLot(sim, lotHome, null); } if (createdSim != null) { if (createdSim.LotCurrent != lotHome) { if (!mScenario.Situations.PushVisit(mScenario, sim, lotHome)) { mScenario.IncStat("NpcParty Push Fail"); continue; } } mParty.Guests.Add(createdSim); createdSim.AssignRole(mParty); VisitSituation.SetVisitToGreeted(createdSim); sims.Add(createdSim); } } foreach (Sim sim in sims) { if (sim.LotCurrent == lotHome) { sim.Motives.SetMax(CommodityKind.Energy); sim.Motives.SetMax(CommodityKind.Hygiene); sim.PushSwitchToOutfitInteraction(Sims3.Gameplay.Actors.Sim.ClothesChangeReason.Force, mParty.ClothingStyle); } } EventTracker.SendEvent(new PartyEvent(EventTypeId.kPartyBegan, mParty.Host, host, mParty)); mParty.SetState(new NpcParty.Happening(mParty)); }