public override bool Test(InteractionInstance inst, out StringDelegate reason) { if (!base.Test(inst, out reason)) return false; OmniCareer career = Career as OmniCareer; return (career != null); }
public override bool Test(InteractionInstance ii, out StringDelegate reason) { try { LoopingAnimationBase interaction = ii as LoopingAnimationBase; if (interaction.Paused) { reason = delegate { return Common.Localize("Pause:Disabled"); }; return false; } return base.Test(ii, out reason); } catch (Exception e) { reason = null; Common.Exception(ii.InstanceActor, e); return false; } }
public static void OnAccept(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i) { try { // Reset the attraction so it is recalculated now RelationshipEx.CalculateAttractionScore(Relationship.Get(target.SimDescription, actor.SimDescription, false), true); int score = (int)RelationshipEx.GetAttractionScore(target.SimDescription, actor.SimDescription, true); int index = score / 10; if (index >= 10) { index = 9; } else if (index < 0) { index = 0; } Common.Notify(Common.Localize("CheckAttraction:Result" + index, actor.IsFemale, target.IsFemale, new object[] { actor, target }), actor.ObjectId, target.ObjectId, StyledNotification.NotificationStyle.kSimTalking); } catch (Exception e) { Common.Exception(actor, target, e); } }
public static void BeforeDiagnose(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i) { try { FreeClinicSessionSituation freeClinicSessionSituation = FreeClinicSessionSituation.GetFreeClinicSessionSituation(actor); if (freeClinicSessionSituation != null) { freeClinicSessionSituation.NumVaccinations++; freeClinicSessionSituation.AddToIgnoreList(target); freeClinicSessionSituation.BringRandomSimsToSession(0x1); /* HealthManager healthManager = target.SimDescription.HealthManager; if (healthManager != null) { healthManager.Vaccinate(); } */ } } catch (Exception e) { Common.Exception(actor, target, e); } }
public override void OnTimePassed(InteractionInstance interactionInstance, float totalTime, float deltaTime) { base.OnTimePassed(interactionInstance, totalTime, deltaTime); Science career = base.Career as Science; if (career.mTimeSpentInIndependentExptSinceLastBenefit > Science.DoIndependentExperiment.kTimeSpentInDoExptToGainBenefit) { string str; float value = RandomUtil.GetFloat(0f, 1f); if (value < Science.DoIndependentExperiment.kChanceOfGettingPerformanceBonusFromDoIndependentExpt) { str = "IncreasedPerformance"; career.AddPerformance(Science.DoIndependentExperiment.kAmountOfBonusPerformance); } else if (value < Science.DoIndependentExperiment.kChanceOfGettingPromotionFromDoIndependentExpt) { str = "Promotion"; career.AddPerformance(100f); } else { str = "Failure"; } string titleText = LocalizeString(career.OwnerDescription, str, new object[] { career.OwnerDescription }); StyledNotification.Format format = new StyledNotification.Format(titleText, StyledNotification.NotificationStyle.kGameMessagePositive); StyledNotification.Show(format); career.mTimeSpentInIndependentExptSinceLastBenefit = 0f; } else { career.mTimeSpentInIndependentExptSinceLastBenefit += deltaTime / 60f; } }
public static void OnAccept(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i) { try { actor.Motives.SetDecay(CommodityKind.Fun, true); target.Motives.SetDecay(CommodityKind.Fun, true); actor.Motives.ChangeValue(CommodityKind.Fun, Jetpack.kFunGainJetPackWoohoo); target.Motives.ChangeValue(CommodityKind.Fun, Jetpack.kFunGainJetPackWoohoo); if (CommonPregnancy.IsSuccess(actor, target, i.Autonomous, CommonWoohoo.WoohooStyle.TryForBaby)) { CommonPregnancy.Impregnate(actor, target, i.Autonomous, CommonWoohoo.WoohooStyle.TryForBaby); } CommonWoohoo.RunPostWoohoo(actor, target, actor.GetActiveJetpack(), CommonWoohoo.WoohooStyle.TryForBaby, CommonWoohoo.WoohooLocation.Jetpack, true); } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(actor, target, e); } }
public static void OnAccept(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i) { try { int actorAge = (int)Aging.GetCurrentAgeInDays(actor.SimDescription); int targetAge = (int)Aging.GetCurrentAgeInDays(target.SimDescription); int difference = 0; string suffix = "SameResult"; if (targetAge > actorAge) { suffix = "OlderResult"; difference = targetAge - actorAge; } else if (targetAge < actorAge) { suffix = "YoungerResult"; difference = actorAge - targetAge; } if (SimTypes.IsSelectable(actor)) { Common.Notify(Common.Localize("AskAboutAge:" + suffix, target.IsFemale, new object[] { difference }), target.ObjectId, ObjectGuid.InvalidObjectGuid, StyledNotification.NotificationStyle.kSimTalking); } } catch (Exception e) { Common.Exception(actor, target, e); } }
public static bool PreTimeTravel1(InteractionInstance ths) { if (!UIUtils.IsOkayToStartModalDialog()) { return false; } Sim actor = ths.InstanceActor as Sim; TravelUtil.PlayerMadeTravelRequest = true; OpportunityNames guid = CheckOpportunities(actor); string prompt; if (GameUtils.IsFutureWorld()) { prompt = TimePortal.LocalizeString("ConfirmReturn", new object[0x0]); } else if (guid != OpportunityNames.Undefined) { prompt = TimePortal.LocalizeString("ConfirmWarningTravel", new object[0x0]); } else { prompt = TimePortal.LocalizeString("ConfirmTravel", new object[0x0]); } if (!TwoButtonDialog.Show(prompt, Localization.LocalizeString("Ui/Caption/Global:Accept", new object[0x0]), Localization.LocalizeString("Ui/Caption/Global:Cancel", new object[0x0]))) { TravelUtil.PlayerMadeTravelRequest = false; return false; } //Sims3.Gameplay.Gameflow.Singleton.DisableSave(this, "Ui/Caption/HUD/DisasterSaveError:Traveling"); ths.CancellableByPlayer = false; if ((guid != OpportunityNames.Undefined) && (actor.OpportunityManager != null)) { actor.OpportunityManager.CancelOpportunity(guid); } if (actor.OpportunityManager != null) { if (actor.OpportunityManager.HasOpportunity(OpportunityNames.EP11_HelpingTheTimeTraveler01)) { actor.OpportunityManager.CancelOpportunity(OpportunityNames.EP11_HelpingTheTimeTraveler01); } if (actor.OpportunityManager.HasOpportunity(OpportunityNames.EP11_HelpingTheTimeTraveler02)) { actor.OpportunityManager.CancelOpportunity(OpportunityNames.EP11_HelpingTheTimeTraveler02); } if (GameUtils.IsFutureWorld() && actor.OpportunityManager.HasOpportunity(OpportunityNames.EP11_RecalibrateDefenseGrid)) { actor.OpportunityManager.CancelOpportunity(OpportunityNames.EP11_RecalibrateDefenseGrid); } } return true; }
public static void OnFinishMakeoverFreestyle(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i) { try { bool tookSemaphore = false; Styling.MakeoverOutcome makeoverOutcome = Styling.GetMakeoverOutcome(target, actor, true); bool forceFailureOutfit = makeoverOutcome == Styling.MakeoverOutcome.EpicFailure; bool flag3 = false; try { if (forceFailureOutfit) { Styling.LoadMakeoverEpicFailureOutfitForCasOverride(target); } flag3 = GetMakeoverEx.DisplayCAS(target, actor, ref tookSemaphore, forceFailureOutfit); } catch (Exception) { throw; } finally { if (tookSemaphore) { GameStates.ReleaseInteractionStateChangeSemaphore(); } } if (CASChangeReporter.Instance.GetPropertyChanged(CASChangeReporter.ChangeFlags.Any)) { SkillLevel customerReactionType = Styling.GetCustomerReactionType(target, actor, makeoverOutcome, false); SkillLevel stylerReactionType = Styling.GetStylerReactionType(customerReactionType); StateMachineClient client = StateMachineClient.Acquire(actor, "StylistActiveCareer"); client.SetActor("x", target); client.SetActor("y", actor); client.SetParameter("doClothesSpin", !flag3); client.SetParameter("customerReactionType", customerReactionType); client.SetParameter("stylistReactionType", stylerReactionType); client.EnterState("x", "Enter"); client.EnterState("y", "Enter"); actor.LoopIdle(); client.RequestState("x", "Customer Reaction"); Styling.PostMakeover(target, actor, makeoverOutcome, false, customerReactionType, true, true, new Styling.OnMakeoverCompletedCallback(SocialCallback.OnMakeoverFreestyleCompleted)); client.RequestState(false, "x", "Exit"); client.RequestState("y", "Stylist Reaction"); client.RequestState("y", "Exit"); } } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(actor, target, e); } }
// Methods public override void BeginCareerTone(InteractionInstance interactionInstance) { base.BeginCareerTone(interactionInstance); mTimeForStartOfTone = SimClock.ElapsedTime(TimeUnit.Hours); Education career = OmniCareer.Career<Education>(Career); if (career != null) { mLecturesHeldBeforeStartOfTone = career.LecturesGivenToday; } }
public override bool ShouldReplace(InteractionInstance interaction) { if (GoHere.Settings.mAllowGoHereStack) { return false; } else { return base.ShouldReplace(interaction); } }
// Methods public override void OnTimePassed(InteractionInstance interactionInstance, float totalTime, float deltaTime) { base.OnTimePassed(interactionInstance, totalTime, deltaTime); ProSports career = OmniCareer.Career<ProSports>(base.Career); if ((career != null) && (career.CurLevel != null)) { career.mPreparationForGame = Math.Min((float)100f, (float)(career.mPreparationForGame + ((deltaTime * ProSports.PrepareForGame.kPrepareForGamePerSimHour) / 60f))); this.OnProgressChanged(this); } }
public static void OnAccepted(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i) { try { Kill.OnAccepted(actor, target, SimDescription.DeathType.Burn); } catch (Exception e) { Common.Exception(actor, target, e); } }
public override bool Test(InteractionInstance ii, out StringDelegate reason) { if (!base.Test(ii, out reason)) return false; Business career = OmniCareer.Career<Business>(Career); if ((career != null) && (career.CurLevel != null)) { return OmniCareer.HasMetric<MetricMeetingsHeld>(Career); } return false; }
public override bool Test(InteractionInstance ii, out StringDelegate reason) { if (!base.Test(ii, out reason)) return false; Education career = OmniCareer.Career<Education>(Career); if ((career != null) && (career.CurLevel != null)) { return OmniCareer.HasMetric<MetricLecturesGiven>(Career); } return false; }
// Methods public override void BeginCareerTone(InteractionInstance interactionInstance) { base.BeginCareerTone(interactionInstance); mTimeForStartOfTone = SimClock.ElapsedTime(TimeUnit.Hours); Business career = OmniCareer.Career<Business> (Career); if (career != null) { mMeetingsHeldBeforeStartOfTone = career.MeetingsHeldToday; } }
public static void OnGiveGiftReject(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i) { try { Sim.GiveGift inst = i as Sim.GiveGift; DoAcceptReject(actor, target, inst); } catch (Exception e) { Common.Exception(actor, target, interaction, e); } }
// Methods public override void BeginCareerTone(InteractionInstance interactionInstance) { base.BeginCareerTone(interactionInstance); Criminal career = OmniCareer.Career<Criminal>(Career); if (career == null) return; if (career.TotalTimeToCompleteCurrentSideJob < 0.5f) { career.TotalTimeToCompleteCurrentSideJob = Criminal.DoASideJob.kNumHoursDoingSideJobsToGetBonus * (1f + RandomUtil.GetFloat(-Criminal.DoASideJob.kSideJobDurationVariance, Criminal.DoASideJob.kSideJobDurationVariance)); } }
public override void OnSelectionBegin(InteractionInstance interactionInstance) { try { new Task(this, interactionInstance).AddToSimulator(); base.OnSelectionBegin(interactionInstance); } catch (Exception e) { Common.Exception(interactionInstance.InstanceActor, e); } }
public override void OnTimePassed(InteractionInstance interactionInstance, float totalTime, float deltaTime) { base.OnTimePassed(interactionInstance, totalTime, deltaTime); Business career = OmniCareer.Career<Business>(Career); if (career != null) { float num = SimClock.ElapsedTime(TimeUnit.Hours) - mTimeForStartOfTone; if (((int)Math.Floor((double)(num / Business.kSimHoursToCallMeetingWothwhile))) > (career.MeetingsHeldToday - mMeetingsHeldBeforeStartOfTone)) { career.MeetingsHeldToday++; } } }
public static void OnAccepted(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i) { try { if ((actor.Household == Household.ActiveHousehold) || (target.Household == Household.ActiveHousehold)) { Common.Notify(Common.Localize("AskAboutFunds:Result", target.IsFemale, new object[] { target, target.FamilyFunds }), target.ObjectId); } } catch (Exception e) { Common.Exception(actor, target, e); } }
public static void AfterMoochSmallMoney(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i) { try { AfterMoochMoney(actor, target, TraitTuning.MoochTraitSmallMoneyMoochSkill, Math.Max(0x0, actor.SkillManager.GetSkillLevel(SkillNames.Mooch))); } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(actor, target, e); } }
public static void OnAccepted(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i) { try { PetSale.DisplayDialog(actor.SimDescription, target.Household, true); } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(actor, target, e); } }
public override void OnSelectionBegin(InteractionInstance interactionInstance) { try { LoopingAnimationBase interaction = interactionInstance as LoopingAnimationBase; interaction.Paused = true; base.OnSelectionBegin(interactionInstance); } catch (Exception e) { Common.Exception(interactionInstance.InstanceActor, e); } }
public static void OnAccept(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i) { try { string suffix = null; if ((target.SimDescription.mGenderPreferenceMale > 0) && (target.SimDescription.mGenderPreferenceFemale > 0)) { suffix = "Bi"; } else if ((target.SimDescription.mGenderPreferenceMale == 0) && (target.SimDescription.mGenderPreferenceFemale == 0)) { suffix = "Undefined"; } else if ((target.SimDescription.mGenderPreferenceMale <= 0) && (target.SimDescription.mGenderPreferenceFemale <= 0)) { suffix = "Celibate"; } else if (target.IsFemale) { if (target.SimDescription.mGenderPreferenceMale > 0) { suffix = "Hetro"; } else { suffix = "Same"; } } else { if (target.SimDescription.mGenderPreferenceMale > 0) { suffix = "Same"; } else { suffix = "Hetro"; } } Common.Notify(Common.Localize("GenderPreference:" + suffix, target.IsFemale, new object[] { target }), target.ObjectId, ObjectGuid.InvalidObjectGuid, StyledNotification.NotificationStyle.kSimTalking); } catch (Exception e) { Common.Exception(actor, target, e); } }
public override void OnTimePassed(InteractionInstance interactionInstance, float totalTime, float deltaTime) { base.OnTimePassed(interactionInstance, totalTime, deltaTime); Music career = base.Career as Music; if ((career != null) && (career.CurLevel != null)) { career.mPreparationForConcert += (deltaTime * Music.PerformTone.kPrepareForConcertPerSimHour) / 60f; } if (career.mPreparationForConcert >= 100f) { career.mPreparationForConcert = 0f; career.ConcertsPerformed++; career.ShowOccupationTNS(LocalizeString(interactionInstance.InstanceActor.SimDescription, "ConcertPerformed", new object[] { career.OwnerDescription })); } this.OnProgressChanged(this); }
private static InteractionInstance CreateGoHereWithInteractionInstance(SimRoutingComponent ths, Route r, List<Sim> followers, InteractionPriority priority, bool cancellableByPlayer, out InteractionInstance ownerInteraction, GoHereWithSituation.OnFailBehavior failureBehavior, Vector3 teleportLocation) { Sim properLeader = ths.GetProperLeader(ths.OwnerSim, followers); InteractionInstanceParameters parameters = new InteractionInstanceParameters(new InteractionObjectPair(LeaderGoHereWith.Singleton, Terrain.Singleton), properLeader, priority, false, cancellableByPlayer); LeaderGoHereWith with = LeaderGoHereWith.Singleton.CreateInstanceFromParameters(ref parameters) as LeaderGoHereWith; with.SetOwner(ths.OwnerSim); with.OnFailBehavior = failureBehavior; if (teleportLocation != Vector3.Invalid) { with.TeleportDestination = teleportLocation; } else if (failureBehavior == GoHereWithSituation.OnFailBehavior.Teleport) { with.TeleportDestination = r.GetDestPoint(); } if (properLeader != ths.OwnerSim) { followers = new List<Sim>(followers); followers.Remove(properLeader); Route route = r.ShallowCopy(); route.ExitReasonsInterrupt = r.ExitReasonsInterrupt; ths.UpdateRoutingOptionsFromLeader(properLeader, route); route.Follower = properLeader.Proxy; route.Replan(); with.SetRouteToFollow(route); } else { with.SetRouteToFollow(r); } with.SetFollowers(followers); GoHereWithSituationEx.CreateSituation(with); if (properLeader != ths.OwnerSim) { ownerInteraction = new SlaveLeaderGoHereWith.Definition(with.Situation).CreateInstance(Terrain.Singleton, ths.OwnerSim, priority, false, cancellableByPlayer); } else { ownerInteraction = null; } return with; }
public override bool Test(InteractionInstance ii, out StringDelegate reason) { try { LoopingAnimationBase interaction = ii as LoopingAnimationBase; mIterations = interaction.Iterations; return base.Test(ii, out reason); } catch (Exception e) { reason = null; Common.Exception(ii.InstanceActor, e); return false; } }
public override void OnTimePassed(InteractionInstance interactionInstance, float totalTime, float deltaTime) { base.OnTimePassed(interactionInstance, totalTime, deltaTime); Education career = OmniCareer.Career<Education>(Career); if (career != null) { float num = SimClock.ElapsedTime(TimeUnit.Hours) - mTimeForStartOfTone; if (((int)Math.Floor((double)(num / Education.kSimHoursGiveLecturesWorthwhile))) > (career.LecturesGivenToday - mLecturesHeldBeforeStartOfTone)) { career.LecturesGivenToday++; if ((Career.OwnerDescription != null) && (Career.OwnerDescription.CreatedSim != null)) { EventTracker.SendEvent(EventTypeId.kGaveEducationLecture, Career.OwnerDescription.CreatedSim); } } } }
public static void OnAccepted(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i) { try { int funds = RandomUtil.GetInt(NRaas.Careers.Settings.mMaxShakedown / 2, NRaas.Careers.Settings.mMaxShakedown); if (funds > target.FamilyFunds) { funds = target.FamilyFunds; } if (funds <= 0) return; target.ModifyFunds(-funds); actor.ModifyFunds(funds); if (actor.IsSelectable) { Common.Notify(actor, Common.Localize("Shakedown:Notice", actor.IsFemale, target.IsFemale, new object[] { actor, target, funds })); } Relationship relation = Relationship.Get(actor, target, true); if (relation != null) { relation.LTR.UpdateLiking(NRaas.Careers.Settings.mShakedownRelationChange); } OmniCareer actorCareer = actor.Occupation as OmniCareer; if (actorCareer != null) { actorCareer.AddShakedownFunds(funds); } } catch (Exception e) { Common.Exception(actor, target, e); } }
public void PushRoleStartingInteraction(Actors.Sim sim) { try { //Message.Sender.Show("PushRoleStartingInteraction to " + (sim != null ? sim.FullName : "null")); if (sim != null) { if (sim.LotCurrent == null || sim.LotCurrent != this.LotCurrent) { HomeBartender.forceSimToLot(sim); } else { LetSimIn(sim); List <BarProfessional> bars = this.LotCurrent.GetObjectsInRoom <BarProfessional>(this.RoomId); BarProfessional theBar = null; foreach (BarProfessional bar in bars) { if (!isBarManned(bar)) { theBar = bar; break; } } if (theBar != null) { InteractionInstance instance = TendHomeBar.Singleton.CreateInstance(theBar, sim, new InteractionPriority(InteractionPriorityLevel.CriticalNPCBehavior), false, false); sim.InteractionQueue.AddAfterCheckingForDuplicates(instance); } } } } catch (Exception ex) { } }
public void RevertCommodityGains() { foreach (KeyValuePair <Sim, PriorCommodities> sim in mCommodities) { try { if (sim.Key.InteractionQueue == null) { continue; } InteractionInstance head = sim.Key.InteractionQueue.GetHeadInteraction(); if (head == null) { continue; } if (sim.Value.mInteraction != head) { continue; } head.mMotiveDeltas = sim.Value.mMotives; sim.Value.EndSkillCommodityUpdates(head); head.mSkillMultipliers = sim.Value.mSkillMultipliers; sim.Value.BeginSkillCommodityUpdates(head, sim.Value.mSkillMultipliers, false, false); } catch (Exception e) { Common.Exception(sim.Key, e); } } mCommodities.Clear(); }
public override bool Test(Sim a, BonehildaCoffin target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback) { if (a == null || target == null) { return(false); } if (isAutonomous) { return(false); } SimDescription simd = a.SimDescription; if (simd == null || simd.IsPet) { return(false); } if (simd.ToddlerOrBelow) { return(false); } if (a.Posture is SwimmingInPool) { return(false); } if (!target.BonehildaActive && target.mBonehildaSim != null) { if (target.BonehildaSim != null && target.BonehildaSim.InteractionQueue != null && target.BonehildaSim.InteractionQueue.HasInteractionOfType(Sims3.Gameplay.Objects.Environment.BonehildaCoffin.BonehildaReturnToCoffin.Singleton)) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(BonehildaCoffin.LocalizeString("BonehildaReturningToCoffin", a)); } return(false); } return(!target.BonehildaActive); }
public static void OnPerformedConcert(Event e) { Sim actor = e.Actor as Sim; if (actor == null) { return; } if ((actor.Household == null) || (actor.Household.IsSpecialHousehold)) { return; } if (actor.InteractionQueue == null) { return; } InteractionInstance interaction = actor.InteractionQueue.GetCurrentInteraction(); if (interaction == null) { return; } ShowVenue venue = interaction.Target as ShowVenue; if (venue == null) { return; } foreach (SkillNames skill in MetricMusicSkill.Skills) { SkillBasedCareerBooter.UpdateExperience(actor, skill, (int)venue.ConcertPayAmount); } }
public void OnCompleted(Sim a, float value) { try { List <Sim> sims = new List <Sim>(); sims.Add(mObject.GetLeftSim()); sims.Add(mObject.GetRightSim()); if ((sims.Contains(mActor)) && (sims.Contains(mTarget))) { Common.DebugNotify("OnCompleted C"); Sim actor = mActor; Sim target = mTarget; HotairBalloon.InBalloonPosture posture = mActor.Posture as HotairBalloon.InBalloonPosture; if ((posture == null) || (!posture.IsXActor)) { actor = mTarget; target = mActor; } InteractionInstance instance = HotairBalloon.Raise.Singleton.CreateInstanceWithCallbacks(mObject, actor, new InteractionPriority(InteractionPriorityLevel.UserDirected), false, true, null, null, OnFailed2); actor.InteractionQueue.Add(instance); instance = mDefinition.CreateInstanceWithCallbacks(target, actor, new InteractionPriority(InteractionPriorityLevel.UserDirected), false, true, null, null, OnFailed2); actor.InteractionQueue.Add(instance); } else { Common.DebugNotify("OnCompleted A"); } } catch (Exception e) { Common.Exception(mActor, mTarget, e); } }
public static void PopulateFishingPoints() { if (sFishingPoints == null) { sFishingPoints = new List <Pair <Lot, GameObjectHit> >(); foreach (Lot lot in LotManager.AllLots) { Vector3[] vectorArray; if (((lot != null) && !lot.IsWorldLot) && (World.FindPondRepresentativePositions(lot.LotId, out vectorArray) && (vectorArray.Length != 0x0))) { foreach (Vector3 vector in vectorArray) { GameObjectHit b = InteractionInstance.CreateFakeGameObjectHit(vector); if ((b.mType == GameObjectHitType.WaterSea) || (b.mType == GameObjectHitType.WaterPond)) { sFishingPoints.Add(new Pair <Lot, GameObjectHit>(lot, b)); } } } } } }
public override bool Run() { List <Sim> selectedSims = new List <Sim>(); List <object> selectedObjects = base.SelectedObjects; if (selectedObjects != null) { foreach (object obj2 in selectedObjects) { selectedSims.Add(obj2 as Sim); } } //Loop through the sims and add them the eating interaction foreach (Sim sim in selectedSims) { InteractionInstance ii = BuyCoffee.BuyCoffeeSingleton.CreateInstance(base.Target.CurrentRole.SimInRole, sim, new InteractionPriority(InteractionPriorityLevel.UserDirected), false, true); sim.InteractionQueue.AddNext(ii); // sim.InteractionQueue.Add(ii); } return(true); }
public override bool Test(Sim a, WashingMachine target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback) { if (!target.CanDoLaundry()) { return(false); } if (target.mWashState == WashingMachine.WashState.HasDirtyLaundry) { return(true); } if (a.IsSelectable && target.LotCurrent.IsCommunityLot && a.FamilyFunds < target.Tuning.kCostToOperate) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(WashingMachine.LocalizeString("InsufficientFunds")); return(false); } if (!target.LotCurrent.IsResidentialLot) { return(true); } if (Sims3.Gameplay.Queries.CountObjects <ClothingPileDry>(target.LotCurrent) > 0U) { return(true); } foreach (Hamper hamper in target.LotCurrent.GetObjects <Hamper>()) { if (hamper.HasClothingPiles()) { return(true); } } if (a.Inventory.ContainsType(typeof(ClothingPileDry), 1)) { return(true); } greyedOutTooltipCallback = new GreyedOutTooltipCallback(WashingMachine.DoLaundry.Definition.NoLaundryTooltip); return(false); }
public override bool Test(Sim a, ScienceResearchStation target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback) { if (target.Repairable.Broken) { greyedOutTooltipCallback = new GreyedOutTooltipCallback(target.StationIsBroken); return(false); } ScienceSkill element = (ScienceSkill)a.SkillManager.GetElement(SkillNames.Science); if ((element == null) || (element.SkillLevel < ScientificSample.CloneFromSample.MinScienceSkillLevel)) { greyedOutTooltipCallback = new GreyedOutTooltipCallback(ScienceResearchStation.DisplayLevelTooLowTooltip); return(false); } new List <InventoryStack>(); bool flag = false; foreach (InventoryStack stack in a.Inventory.InventoryItems.Values) { ScientificSample sample = null; if (stack != null) { sample = stack.List[0].Object as ScientificSample; } if ((sample != null) && ((sample.ScientificSampleType != ScientificSample.SampleType.Dna) /*|| (!GameUtils.IsUniversityWorld() && a.Household.CanAddSpeciesToHousehold(CASAgeGenderFlags.None | CASAgeGenderFlags.Human))*/)) { flag = true; break; } } if (!flag) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(ScienceResearchStation.LocalizeString("SampleNotPresent", new object[0])); return(false); } return(flag); }
public override bool Test(Sim a, PingPongTable target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback) { if (target.InUse) { if (!target.IsHaunted) { if (target.IsActorUsingMe(a)) { return(true); } greyedOutTooltipCallback = delegate { return(PingPongTable.LocalizeString("PingPongTableInUse", new object[0])); }; } return(false); } if (!Woohooer.Settings.mUnlockTeenActions) { if (a.SimDescription.TeenOrBelow) { return(false); } } if (PingPongTable.GetPotentialPlayers(a, target.LotCurrent, !Woohooer.Settings.mUnlockTeenActions, true).Count == 0) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(Localization.LocalizeString(a.IsFemale, "Gameplay/Objects/Toys/PlayCatchObject:NoOneToPlayWith", new object[0])); return(false); } return(true); }
protected override void OnPerform() { WoohooLocationControl location = null; if (mObject == null) { mObject = GetRandomObject(mActor.SimDescription, out location); } if ((mObject == null) || (location == null)) { return; } InteractionDefinition interaction = location.GetInteraction(mActor, mTarget, mStyle); if (interaction != null) { IWooHooDefinition woohooDefinition = interaction as IWooHooDefinition; if (woohooDefinition != null) { woohooDefinition.Attempts = mAttempts; } InteractionInstance instance = interaction.CreateInstance(mObject, mActor, new InteractionPriority(InteractionPriorityLevel.UserDirected), false, true); if ((mActor.InteractionQueue != null) && (mActor.InteractionQueue.Add(instance))) { ScoringLookup.IncStat("Push Success " + location + " " + mStyle); } else { ScoringLookup.IncStat("Push Fail " + location + " " + mStyle); } } }
public static bool PreTimeTravel2(InteractionInstance ths) { Sim actor = ths.InstanceActor as Sim; if (GameUtils.IsFutureWorld()) { EventTracker.SendEvent(EventTypeId.kTravelToPresent, actor); } else { EventTracker.SendEvent(EventTypeId.kTravelToFuture, actor); } ths.StandardEntry(); ths.BeginCommodityUpdates(); BuffTransformation transformBuff = actor.BuffManager.TransformBuff; if (transformBuff != null) { actor.BuffManager.RemoveElement(transformBuff.Guid); } return(true); }
public override bool Test(Sim a, Sim target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback) { /* * if (a.SimDescription.IsVisuallyPregnant) * { * return false; * } * if (target.SimDescription.IsVisuallyPregnant) * { * return false; * } */ InteractionInstance currentInteraction = a.CurrentInteraction; if (((currentInteraction != null) && (currentInteraction.Target == target)) && ((currentInteraction is CuddleSeated) || (currentInteraction is NestedCuddleInteraction))) { return(false); } string reason; return(CommonSocials.CanGetRomantic(a, target, isAutonomous, false, true, ref greyedOutTooltipCallback, out reason) && CanCuddle(a, target, ref greyedOutTooltipCallback, true)); }
public override CommonWoohoo.WoohooStyle GetStyle(InteractionInstance paramInteraction) { return(CommonWoohoo.WoohooStyle.TryForBaby); }
public override bool Run() { bool flag = this.Actor.LotCurrent == this.Target; SimDescription simDescription = this.Actor.SimDescription; Lot virtualLotHome = simDescription.VirtualLotHome; if (this.SimWalkStyle != Sim.WalkStyle.AutoSelect) { this.Actor.RequestWalkStyle(this.SimWalkStyle); } if (!flag) { if (virtualLotHome != null) { BuildableShell[] buildableShells = this.Target.BuildableShells; if (buildableShells.Length > 0) { if (!buildableShells[0].RouteInsideShell(this.Actor)) { if (DGSCommon.IsExtKillSimNiecAndYLevel(Actor)) { return(true); } this.Actor.FadeOut(true, true); Simulator.Sleep(uint.MaxValue); return(true); } } else if (!this.Actor.RouteToLot(virtualLotHome.LotId)) { if (DGSCommon.IsExtKillSimNiecAndYLevel(Actor)) { return(true); } this.Actor.FadeOut(true, true); Simulator.Sleep(uint.MaxValue); return(true); } } else { Route route = this.Actor.CreateRoute(); this.Target.PlanToLotEx(route); if (route.PlanResult.Succeeded()) { this.Actor.DoRoute(route); } } } if (DGSCommon.IsExtKillSimNiecAndYLevel(Actor)) { return(true); } if (simDescription.Household != null && simDescription.Household.IsTouristHousehold) { Sim.GoToVirtualHome.SendTouristHome(simDescription); } else if (simDescription.Household != null && simDescription.Household.IsAlienHousehold) { (Sims3.UI.Responder.Instance.HudModel as HudModel).OnSimCurrentWorldChanged(false, simDescription); if (DGSCommon.IsExtKillSimNiecAndYLevel(Actor)) { return(true); } this.Actor.FadeOut(true, true); } else if (virtualLotHome != null) { if (!flag && RandomUtil.RandomChance01(this.kAutonomuousReactionChanceOnGoingToVirtualHome)) { simDescription.ShowSocialsOnSim = true; simDescription.MotivesDontDecay = false; InteractionInstance interactionInstance = this.Actor.Autonomy.FindBestActionForCommodityOnLot(CommodityKind.None, virtualLotHome, AutonomySearchType.Generic); if (interactionInstance == null) { this.Actor.Motives.SetMotivesToTimedDefaultsAndRemoveBuffs(false); interactionInstance = this.Actor.Autonomy.FindBestActionForCommodityOnLot(CommodityKind.None, virtualLotHome, AutonomySearchType.Generic); } if (interactionInstance != null) { interactionInstance = interactionInstance.InteractionDefinition.CreateInstanceWithCallbacks(interactionInstance.Target, this.Actor, interactionInstance.GetPriority(), interactionInstance.Autonomous, interactionInstance.CancellableByPlayer, null, new Callback(DGSGoToVirtualHome.DGSGoToVirtualHomeInternal.OnAutonomousDone), new Callback(DGSGoToVirtualHome.DGSGoToVirtualHomeInternal.OnAutonomousDone)); this.Actor.InteractionQueue.AddNext(interactionInstance); return(true); } } Door associatedNPCDoor = virtualLotHome.GetAssociatedNPCDoor(this.Actor.SimDescription); Slot slot; if (associatedNPCDoor != null && this.Actor.RouteToSlotListAndCheckInUse(associatedNPCDoor, new Slot[] { Door.RoutingSlots.Upgrade_Front, Door.RoutingSlots.Upgrade_Rear }, out slot)) { Audio.StartObjectSound(associatedNPCDoor.ObjectId, "shell_door_apt_open", false); if (DGSCommon.IsExtKillSimNiecAndYLevel(Actor)) { return(true); } this.Actor.FadeOut(true, true); Simulator.Sleep(uint.MaxValue); return(true); } int num = int.MaxValue; Route route2 = null; foreach (ElevatorDoors elevatorDoors in virtualLotHome.GetObjects <ElevatorDoors>()) { int num2 = Math.Abs(this.Actor.Level - elevatorDoors.Level); if (num2 < num) { Route route3 = this.Actor.CreateRoute(); if (route3.PlanToSlot(elevatorDoors, Slot.RoutingSlot_0).Succeeded()) { route2 = route3; num = num2; } } } if (route2 != null) { route2.DoRouteFail = false; this.Actor.DoRoute(route2); } if (DGSCommon.IsExtKillSimNiecAndYLevel(Actor)) { return(true); } this.Actor.FadeOut(true, true); } else { if (DGSCommon.IsExtKillSimNiecAndYLevel(Actor)) { return(true); } this.Actor.FadeOut(true, true); } Simulator.Sleep(uint.MaxValue); return(true); }
public override bool JoinInProgress(Sim actor, Sim target, ActorTrailer obj, InteractionInstance interaction) { if ((obj.ActorsUsingMe.Contains(actor)) || (obj.ActorsUsingMe.Contains(target))) { PushWooHoo(actor, target, obj); return(true); } else { return(base.JoinInProgress(actor, target, obj, interaction)); } }
public static bool PreTimeTravel1(InteractionInstance ths, ITravelWith travelWith, List <Sim> travelers) { Sim actor = ths.InstanceActor as Sim; if (!UIUtils.IsOkayToStartModalDialog()) { return(false); } if (GameUtils.IsFutureWorld()) { foreach (Sim sim in actor.Household.Sims) { if (sim != actor) { GreyedOutTooltipCallback callback = null; if (TravelerSpace.Helpers.TravelUtilEx.CanSimTriggerTravelToFutureWorld(sim, true, ref callback)) { Lazy.Add <List <Sim>, Sim>(ref travelers, sim); } } } } else { travelers.AddRange(ths.GetSelectedObjectsAsSims()); } if (travelers.Count == 0) { return(false); } if ((actor.OpportunityManager != null) && actor.OpportunityManager.HasOpportunity(OpportunityNames.EP11_HelpingTheTimeTraveler01)) { return(false); } string portal; TravelUtil.PlayerMadeTravelRequest = true; Dictionary <Sim, OpportunityNames> dictionary = CheckOpportunities(actor, travelers); if (GameUtils.IsFutureWorld()) { portal = TimePortal.LocalizeString("ConfirmReturnWith", new object[0x0]); } else if (dictionary.Count > 0x0) { portal = TimePortal.LocalizeString("ConfirmTravelWith", new object[0x0]) + TimePortal.LocalizeString("ConfirmWarningTravelWith", new object[0x0]); } else { portal = TimePortal.LocalizeString("ConfirmTravelWith", new object[0x0]); } if (!TwoButtonDialog.Show(portal, Localization.LocalizeString("Ui/Caption/Global:Accept", new object[0x0]), Localization.LocalizeString("Ui/Caption/Global:Cancel", new object[0x0]))) { return(false); } ths.CancellableByPlayer = false; //Sims3.Gameplay.Gameflow.Singleton.DisableSave(this, "Ui/Caption/HUD/DisasterSaveError:Traveling"); if (dictionary.Count > 0x0) { foreach (Sim sim2 in dictionary.Keys) { if (sim2.OpportunityManager != null) { sim2.OpportunityManager.CancelOpportunity(dictionary[sim2]); } } } if ((GameUtils.IsFutureWorld() && (actor.OpportunityManager != null)) && actor.OpportunityManager.HasOpportunity(OpportunityNames.EP11_RecalibrateDefenseGrid)) { actor.OpportunityManager.CancelOpportunity(OpportunityNames.EP11_RecalibrateDefenseGrid); } foreach (Sim sim3 in travelers) { travelWith.AddFollower(sim3); } return(true); }
public override bool Run() { try { if (Actor.LotCurrent != Target) { Vector3 point = World.LotGetPtInside(Target.LotId); if (point == Vector3.Invalid) { return(false); } if (!Actor.RouteToPointRadius(point, 3f) && (!GlobalFunctions.PlaceAtGoodLocation(Actor, new World.FindGoodLocationParams(point), false) || !SimEx.IsPointInLotSafelyRoutable(Actor, Target, Actor.Position))) { Actor.AttemptToPutInSafeLocation(true); } } Sim destObj = null; float negativeInfinity = float.NegativeInfinity; foreach (Sim sim2 in Actor.Household.Sims) { if ((sim2.IsHuman && sim2.IsAtHome) && !sim2.IsSleeping) { Relationship relationship = Relationship.Get(Actor, sim2, false); if ((relationship != null) && (relationship.LTR.Liking > negativeInfinity)) { destObj = sim2; negativeInfinity = relationship.LTR.Liking; } } } if (destObj != null) { Actor.RouteToDynamicObjectRadius(destObj, kRouteToHighRelSimRange[0x0], kRouteToHighRelSimRange[0x1], null, new Route.RouteOption[] { Route.RouteOption.DoLineOfSightCheckUserOverride }); } string instanceName = null; switch (Actor.SimDescription.Species) { case CASAgeGenderFlags.Dog: instanceName = "dogPregnantJig"; break; case CASAgeGenderFlags.LittleDog: instanceName = "smallDogPregnantJig"; break; case CASAgeGenderFlags.Horse: instanceName = "horsePregnantJig"; break; case CASAgeGenderFlags.Cat: instanceName = "catPregnantJig"; break; } if (instanceName != null) { mPetPregnancyJig = GlobalFunctions.CreateObjectOutOfWorld(instanceName, ProductVersion.EP5) as SocialJigOnePerson; if (mPetPregnancyJig != null) { mPetPregnancyJig.RegisterParticipants(Actor, null); Vector3 position = Actor.Position; Vector3 forwardVector = Actor.ForwardVector; if (GlobalFunctions.FindGoodLocationNearby(mPetPregnancyJig, ref position, ref forwardVector)) { mPetPregnancyJig.SetPosition(position); mPetPregnancyJig.SetForward(forwardVector); mPetPregnancyJig.AddToWorld(); Route r = mPetPregnancyJig.RouteToJigA(Actor); if (!Actor.DoRoute(r)) { mPetPregnancyJig.Destroy(); mPetPregnancyJig = null; } } else { mPetPregnancyJig.Destroy(); mPetPregnancyJig = null; } } } StandardEntry(); BeginCommodityUpdates(); EnterStateMachine("GiveBirth", "Enter", "x"); AnimateSim("LieDown"); if (Actor.IsSelectable) { try { Sims3.Gameplay.Gameflow.Singleton.DisableSave(this, "Gameplay/ActorSystems/PetPregnancy:DisableSave"); // Custom HaveBabyHomeEx.EnsureForeignFather(Actor.SimDescription.Pregnancy); mOffspring = new Proxies.PetPregnancyProxy(Actor.SimDescription.Pregnancy).CreateNewborns(0f, true, true); int num2 = 0x0; foreach (Sim sim3 in mOffspring) { sim3.SimDescription.IsNeverSelectable = true; if (mPetPregnancyJig != null) { Slot slotName = kPregnancyJigContainmentSlots[num2++]; sim3.SetPosition(mPetPregnancyJig.GetPositionOfSlot(slotName)); sim3.SetForward(mPetPregnancyJig.GetForwardOfSlot(slotName)); InteractionInstance entry = Pregnancy.BabyPetLieDown.Singleton.CreateInstance(sim3, sim3, new InteractionPriority(InteractionPriorityLevel.Autonomous), true, true); entry.Hidden = true; sim3.InteractionQueue.AddNext(entry); } else { World.FindGoodLocationParams fglParams = new World.FindGoodLocationParams(Actor.Position); fglParams.RequiredRoomID = Actor.RoomId; if ((!GlobalFunctions.PlaceAtGoodLocation(sim3, fglParams, false) || !sim3.IsPointInLotSafelyRoutable(sim3.LotCurrent, sim3.Position)) && !sim3.AttemptToPutInSafeLocation(true)) { sim3.SetPosition(Actor.Position); } } } } finally { Sims3.Gameplay.Gameflow.Singleton.EnableSave(this); } } // Custom call bool flag = DoLoop(ExitReason.Finished, GiveBirthLoopFunc, mCurrentStateMachine); AnimateSim("Exit"); StandardExit(); return(flag); } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(Actor, Target, e); return(false); } }
public static void OnAccept(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i) { try { ScoringLookup.IncStat("OnAccept Woohoo"); if (Common.kDebugging) { Woohooer.DebugNotify("Woohoo" + Common.NewLine + actor.FullName + Common.NewLine + target.FullName, actor, target); } WooHooSocialInteraction woohooSocial = i as WooHooSocialInteraction; if (woohooSocial != null) { woohooSocial.PushWooHoo(actor, target); } else { new CommonWoohoo.PushWoohoo(actor, target, i.Autonomous, CommonWoohoo.WoohooStyle.Safe); } } catch (Exception e) { Common.Exception(actor, target, e); } }
public static void OnAccept(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i) { try { foreach (DiseaseVector vector in Vector.Settings.GetVectors(target)) { if (vector.ShowingSigns) { if (vector.IsContagious) { Common.Notify(target, Common.Localize("AskContagious:Success", target.IsFemale, new object[] { target })); return; } } } Common.Notify(target, Common.Localize("AskContagious:Failure", target.IsFemale, new object[] { target })); } catch (Exception e) { Common.Exception(actor, target, e); } }
public override void Perform(Sim sim, DiseaseVector vector) { if (SimTypes.IsDead(sim.SimDescription)) { return; } if (!mAllowActive) { if (SimTypes.IsSelectable(sim.SimDescription)) { return; } } bool found = false; foreach (Sim other in sim.LotCurrent.GetSims()) { if (other == sim) { continue; } if (ScoringLookup.GetScore(mScoring, other.SimDescription) >= mMinimum) { found = true; break; } } if (found) { return; } List <Lot> lots = new List <Lot>(LotManager.sLots.Values); while (lots.Count > 0) { Lot lot = RandomUtil.GetRandomObjectFromList(lots); lots.Remove(lot); if (lot.IsWorldLot) { continue; } if (lot == sim.LotCurrent) { continue; } foreach (Sim other in lot.GetSims()) { if (ScoringLookup.GetScore(mScoring, other.SimDescription) >= mMinimum) { InteractionDefinition definition = null; if (lot.IsCommunityLot) { definition = VisitCommunityLot.Singleton; } else { if (sim.IsGreetedOnLot(lot)) { definition = GoToLot.Singleton; } else { definition = VisitLot.Singleton; } } InteractionInstance instance = definition.CreateInstance(lot, sim, new InteractionPriority(InteractionPriorityLevel.Autonomous), true, true); sim.InteractionQueue.Add(instance); return; } } } }
public override bool ShouldReplace(InteractionInstance interaction) { // Allows stacking return(false); }
public static void OnChessWon(Event e) { Sim actor = e.Actor as Sim; if (actor == null) { return; } if ((actor.Household == null) || (actor.Household.IsSpecialHousehold)) { return; } Sim target = e.TargetObject as Sim; if (target == null) { return; } if (target.SimDescription.ChildOrBelow) { return; } if (actor.Household == target.Household) { return; } if (actor.InteractionQueue == null) { return; } InteractionInstance instance = actor.InteractionQueue.GetCurrentInteraction(); if (instance == null) { return; } ChessTable.PracticeChess practice = instance as ChessTable.PracticeChess; if (practice == null) { return; } if (practice.Target == null) { return; } if (practice.Target.mbPlayingForChessRank) { return; } int actorCash = SkillBasedCareerBooter.GetCareerPay(actor, SkillNames.Chess); int targetCash = SkillBasedCareerBooter.GetCareerPay(target, SkillNames.Chess); if (actorCash < targetCash) { actorCash = targetCash; } if (actorCash == 0) { return; } if (actor.SkillManager == null) { return; } int diff = actor.SkillManager.GetSkillLevel(SkillNames.Chess); if (target.SkillManager != null) { diff -= target.SkillManager.GetSkillLevel(SkillNames.Chess); } if (diff < 0) { diff = -diff; } if (diff != 0) { actorCash /= diff; } if (actorCash > target.FamilyFunds) { actorCash = target.FamilyFunds; if (actorCash == 0) { Common.Notify(Common.Localize("ChessPlayer:UnableToPay"), target.ObjectId); if (actor.InteractionQueue != null) { actor.InteractionQueue.CancelAllInteractions(); } return; } } actor.ModifyFunds(actorCash); target.ModifyFunds(-actorCash); SkillBasedCareerBooter.UpdateExperience(actor, SkillNames.Chess, actorCash); }
protected override void OnPerform() { Common.DebugNotify("StartGraduationCeremonyTask:OnPerform"); if (mThs.IsAGraduationCeremonyInProgressAndIfNecessaryStartOne()) { foreach (SimDescription sim in new List <SimDescription>(mThs.mGraduatingSims.Keys)) { try { Instantiation.PerformOffLot(sim, mThs.RabbitHoleProxy.LotCurrent, null); if ((sim.CreatedSim != null) && (sim.CreatedSim.InteractionQueue != null)) { sim.CreatedSim.ShowTNSIfSelectable(TNSNames.CollegeGraduationStarting, null, sim.CreatedSim, new object[] { sim.CreatedSim }); Annex.UniversityGraduationCeremony entry = Annex.UniversityGraduationCeremony.Singleton.CreateInstance(mThs, sim.CreatedSim, new InteractionPriority(InteractionPriorityLevel.High), false, true) as Annex.UniversityGraduationCeremony; sim.CreatedSim.InteractionQueue.AddNext(entry); ActiveTopic.RemoveTopicFromSim(sim.CreatedSim, "University Graduation"); } } catch (Exception e) { Common.Exception(sim, e); } } Dictionary <ulong, SimDescription> loadedSims = SimListing.GetResidents(false); foreach (MiniSimDescription sim in new List <MiniSimDescription>(mThs.mForeignVisitors)) { try { // Custom // EA Standard attempts to reimport existing sims without checking SimDescription local; if (loadedSims.TryGetValue(sim.SimDescriptionId, out local)) { if (!mThs.mLocalVisitors.Contains(local)) { mThs.mLocalVisitors.Add(local); } } else { SimDescription simDescription = MiniSims.UnpackSimAndUpdateRel(sim); if (simDescription != null) { Household.CreateTouristHousehold(); Household.TouristHousehold.AddTemporary(simDescription); sim.Instantiated = true; (Responder.Instance.HudModel as Sims3.Gameplay.UI.HudModel).OnSimCurrentWorldChanged(true, sim); if (simDescription.AgingState != null) { simDescription.AgingState.MergeTravelInformation(sim); } mThs.mLocalVisitors.Add(simDescription); } } } catch (Exception e) { Common.Exception(sim, e); } } Dictionary <SimDescription, bool> performed = new Dictionary <SimDescription, bool>(); foreach (SimDescription sim in new List <SimDescription>(mThs.mLocalVisitors)) { try { if (mThs.mGraduatingSims.ContainsKey(sim)) { continue; } if (performed.ContainsKey(sim)) { continue; } performed[sim] = true; Instantiation.PerformOffLot(sim, mThs.RabbitHoleProxy.LotCurrent, null); if ((sim.CreatedSim != null) && (sim.CreatedSim.InteractionQueue != null)) { InteractionInstance instance = Annex.AttendGraduationCeremony.Singleton.CreateInstance(mThs, sim.CreatedSim, new InteractionPriority(InteractionPriorityLevel.High), true, true); sim.CreatedSim.InteractionQueue.AddNext(instance); } } catch (Exception e) { Common.Exception(sim, e); } } } }
public static void OnAccepted(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i) { try { Kill.OnAccepted(actor, target, SimDescription.DeathType.Thirst); } catch (Exception e) { Common.Exception(actor, target, e); } }
public override bool Run() { VisitSituation.OnSimLeavingLot(this.Actor); Lot lot = this.Actor.SimDescription.VirtualLotHome; if (lot == null) { List <Lot> list = new List <Lot>(); foreach (object obj in LotManager.AllLotsWithoutCommonExceptions) { Lot lot2 = (Lot)obj; if (lot2 != this.Actor.LotCurrent && lot2.LotId != 18446744073709551615UL) { list.Add(lot2); } } if (list.Count > 0) { lot = RandomUtil.GetRandomObjectFromList <Lot>(list); } } GroupingSituation.RemoveSimFromGroupSituation(this.Actor); if (this.Actor.LotCurrent.CommercialLotSubType == CommercialLotSubType.kEP10_Resort && this.Actor.IsHuman && this.Actor.SimDescription.ChildOrAbove && (this.Actor.SimDescription.AssignedRole == null || this.Actor.SimDescription.AssignedRole.Type != Role.RoleType.Paparazzi)) { IResortTower[] objects = this.Actor.LotCurrent.GetObjects <IResortTower>(); if (objects.Length > 0) { IResortTower randomObjectFromList = RandomUtil.GetRandomObjectFromList <IResortTower>(objects); InteractionInstance instance = randomObjectFromList.GetEnterTowerDefinition().CreateInstance(randomObjectFromList, this.Actor, new InteractionPriority(InteractionPriorityLevel.UserDirected), base.Autonomous, false); if (this.Actor.InteractionQueue.PushAsContinuation(instance, false)) { return(true); } } } InteractionInstance interactionInstance = null; if (lot != null) { DGSGoToVirtualHomeInternal goToVirtualHomeInternal; if (this.SuccessCallbackForSequence != null || this.FailureCallbackForSequence != null) { goToVirtualHomeInternal = (DGSGoToVirtualHomeInternal.Singleton.CreateInstanceWithCallbacks(lot, this.Actor, this.Actor.InheritedPriority(), base.Autonomous, base.CancellableByPlayer, null, this.SuccessCallbackForSequence, this.FailureCallbackForSequence) as DGSGoToVirtualHomeInternal); } else { goToVirtualHomeInternal = (DGSGoToVirtualHomeInternal.Singleton.CreateInstance(lot, this.Actor, this.Actor.InheritedPriority(), base.Autonomous, base.CancellableByPlayer) as DGSGoToVirtualHomeInternal); } goToVirtualHomeInternal.SimWalkStyle = this.SimWalkStyle; if (base.TryPushAsContinuation(goToVirtualHomeInternal)) { interactionInstance = goToVirtualHomeInternal; } } if (lot == null || interactionInstance == null || !this.Actor.InteractionQueue.HasInteraction(interactionInstance)) { SimDescription simDescription = this.Actor.SimDescription; if (simDescription.Household != null && simDescription.Household.IsTouristHousehold) { Sim.GoToVirtualHome.SendTouristHome(simDescription); } else { if (DGSCommon.IsExtKillSimNiecAndYLevel(Actor)) { return(true); } this.Actor.FadeOut(true, true); } Simulator.Sleep(uint.MaxValue); } return(true); }
public static bool PublicTest(Sim actor, GameObject target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback) { if ((target.Repairable != null) && target.Repairable.Broken) { greyedOutTooltipCallback = Common.DebugTooltip("Broken"); return(false); } if (TravelUtil.PlayerMadeTravelRequest) { greyedOutTooltipCallback = Common.DebugTooltip("PlayerMadeTravelRequest"); return(false); } if (target.InUse && !target.IsActorUsingMe(actor)) { greyedOutTooltipCallback = Common.DebugTooltip("InUse"); return(false); } CauseEffectService instance = CauseEffectService.GetInstance(); if ((instance != null) && !instance.ShouldShowTimeAlmanacButton()) { greyedOutTooltipCallback = Common.DebugTooltip("ShouldShowTimeAlmanacButton"); return(false); } if (actor.BuffManager.HasElement(BuffNames.Ensorcelled)) { greyedOutTooltipCallback = Common.DebugTooltip("Ensorcelled"); return(false); } if (actor.Household.Sims.Count <= 0x1) { greyedOutTooltipCallback = Common.DebugTooltip("Single"); return(false); } // Custom if (!TravelerSpace.Helpers.TravelUtilEx.CanSimTriggerTravelToFutureWorld(actor, true, ref greyedOutTooltipCallback)) { return(false); } if (GameUtils.IsFutureWorld()) { foreach (Sim sim in Households.AllSims(actor.Household)) { // Custom if ((sim != actor) && !TravelerSpace.Helpers.TravelUtilEx.CanSimTriggerTravelToFutureWorld(sim, true, ref greyedOutTooltipCallback)) { //greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(Localization.LocalizeString(actor.IsFemale, TimePortal.sLocalizationKey + ":UnfitForTravel", new object[] { actor })); return(false); } } } else { Common.StringBuilder result = new Common.StringBuilder(); List <Sim> list = new List <Sim>(); foreach (Sim sim2 in Households.AllSims(actor.Household)) { // Custom if ((sim2 != actor) && TravelerSpace.Helpers.TravelUtilEx.CanSimTriggerTravelToFutureWorld(sim2, true, ref greyedOutTooltipCallback)) { if (greyedOutTooltipCallback != null) { result += Common.NewLine + greyedOutTooltipCallback(); } list.Add(sim2); } } if (list.Count == 0x0) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(Localization.LocalizeString(actor.IsFemale, TimePortal.sLocalizationKey + ":UnfitForTravel", new object[] { actor }) + Common.NewLine + result); return(false); } } return(true); }
public RunTask(InteractionInstance instance) { mInstance = instance; }