public static void PurchaseRentalLot(ManagerMoney manager, Sim buyer, Lot lot) { int cost = GetPurchaseLotCost(lot); Household buyerHouse = buyer.SimDescription.Household; int lotCost = lot.Cost; int loan = lotCost - buyerHouse.FamilyFunds; if (loan > 0) { manager.AdjustFunds(buyerHouse, "Loan", loan); } try { if (TravelUtil.CompleteLocationHomePurchase(buyer, lot)) { int difference = lotCost - cost; manager.AdjustFunds(buyerHouse, "Expense", difference); manager.AdjustAccounting(buyerHouse, "Expense", cost); manager.AdjustAccounting(buyerHouse, "PropertyBought", -cost); if (Common.IsAwayFromHomeworld()) { return; } } } finally { if (loan > 0) { manager.AdjustFunds(buyerHouse, "Loan", -loan); } } PropertyData data = buyer.Household.RealEstateManager.FindProperty(lot); if (data == null) { throw new NullReferenceException("data"); } data.mStoredValue = cost; manager.Lots.ClearWorth(lot); Household resident = lot.Household; if (resident == null) { return; } manager.AdjustFunds(resident, "PropertySold", cost); }
public int BaseCost(int simDays) { switch (mWorldName) { case WorldName.China: case WorldName.France: case WorldName.Egypt: return(TravelUtil.GetTripCost(simDays, mWorldName)); } return(simDays * Traveler.Settings.mCostPerDay); }
public override bool Run() { try { StandardEntry(); if (!Target.StartComputing(this, SurfaceHeight.Table, true)) { StandardExit(); return(false); } Target.StartVideo(Computer.VideoType.Browse); AnimateSim("GenericTyping"); bool flag = DoTimedLoop(kTimeToSpendEnrolling, ~(ExitReason.Replan | ExitReason.MidRoutePushRequested | ExitReason.ObjectStateChanged | ExitReason.PlayIdle | ExitReason.MaxSkillPointsReached)); if (flag) { List <SimDescription> others = null; int tuitionCost = 0; flag = AcademicCareerEx.EnrollInAcademicCareer(Actor, Traveler.Settings.mTravelFilter, out others, out tuitionCost); if (flag) { if (GameUtils.gGameUtils.GetCurrentWorldName() == WorldName.University) { if (others != null) { Actor.ModifyFunds(-tuitionCost); AcademicCareerEx.Enroll(others); } } else { TravelUtil.TriggerTravelToUniversityWorld(others, tuitionCost); } } } Target.StopComputing(this, Computer.StopComputingAction.TurnOff, false); StandardExit(); return(flag); } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(Actor, Target, e); return(false); } }
private new void TriggerTravelToUniversityWorld() { RemoveTriggerAlarm(); List <Sim> allTravelers = new List <Sim>(TravelingSims); allTravelers.Add(Actor); string reason = null; // Custom if (Helpers.TravelUtilEx.FinalBoardingCall(Actor.Household, allTravelers, WorldName.University, false, ref reason)) { int travelDuration = (TravelDuration / 7) * Traveler.Settings.mUniversityTermLength; ForeignVisitorsSituation.ForceKillForeignVisitorsSituation(); HolographicProjectionSituation.ForceKillHolographicVisitorsSituation(); Camera.SetView(CameraView.MapView, false, true); int tripLength = (TravelUtil.sOverriddenTripLength > 0x0) ? TravelUtil.sOverriddenTripLength : travelDuration; int lastTimeAtUniversity = -2147483648; foreach (Sim sim in allTravelers) { if (lastTimeAtUniversity < sim.DegreeManager.LastTimeAtUniversity) { lastTimeAtUniversity = sim.DegreeManager.LastTimeAtUniversity; } } int numDaysSinceLastInDestWorld = -1; if (lastTimeAtUniversity >= 0x0) { numDaysSinceLastInDestWorld = SimClock.ElapsedCalendarDays() - lastTimeAtUniversity; } // Custom GameStatesEx.TravelToVacationWorld(kUniversityWorldName, mTravelingSimsGuids, tripLength, numDaysSinceLastInDestWorld); } else { Actor.ShowTNSIfSelectable(TravelUtil.LocalizeString(Actor.IsFemale, "CantTravelTNS", new object[] { TravelCost }) + Common.NewLine + Common.NewLine + reason, StyledNotification.NotificationStyle.kSystemMessage, ObjectGuid.InvalidObjectGuid); Actor.ModifyFunds(TravelCost); foreach (Sim sim2 in allTravelers) { if (!sim2.IsDying()) { sim2.AddExitReason(ExitReason.CanceledByScript); } } } }
private static void OneDayPassedVacationUpdates(Household ths) { if (GameStates.CurrentDayOfTrip == GameStates.TripLength) { if (!GameStates.IsTravelling) { StyledNotification.Format format = new StyledNotification.Format(Common.LocalizeEAString("Gameplay/Vacation:OneDayLeft"), StyledNotification.NotificationStyle.kSystemMessage); StyledNotification.Show(format); } ths.mLastDayAlarm = AlarmManager.Global.AddAlarm(SimClock.HoursUntil(12f), TimeUnit.Hours, ths.HalfDayLeft, "Half Day left TNS", AlarmType.AlwaysPersisted, ths); } else if (GameStates.CurrentDayOfTrip > GameStates.TripLength) { bool denyTravel = false; if (!GameStates.IsTravelling) { foreach (Sim sim in Households.AllSims(ths)) { sim.VisaManager.UpdateDaysSpentInWorld(GameUtils.GetCurrentWorld(), GameStates.CurrentDayOfTrip - 0x1); if (sim.IsDying()) { denyTravel = true; } } } if (!denyTravel) { GameStates.StopSnappingPicturesIfNeccessary(); Sims3.Gameplay.UI.HudModel hudModel = Sims3.Gameplay.UI.Responder.Instance.HudModel as Sims3.Gameplay.UI.HudModel; if (hudModel != null) { WorldName currentWorld = GameUtils.GetCurrentWorld(); string str = hudModel.LocationName(currentWorld); SimpleMessageDialog.Show(TravelUtil.LocalizeString("TripOverCaption", new object[0x0]), TravelUtil.LocalizeString("TripOverText", new object[] { str }), ModalDialog.PauseMode.PauseSimulator); } } if (!denyTravel) { Traveler.SaveGame(); TravelUtil.PlayerMadeTravelRequest = true; // Calls custom function GameStatesEx.UpdateTelemetryAndTriggerTravelBackToHomeWorld(); } } }
private static void ReturnFromVacationWorld() { List <Sim> travelers = new List <Sim>(); foreach (Sim sim in GameStates.TravelHousehold.AllActors) { if (!Household.RoommateManager.IsNPCRoommate(sim)) { travelers.Add(sim); } } List <Sim> roommateSims = GameStates.TravelHousehold.GetRoommateSims(); TravelUtil.TriggerTravelHomeFromUniversity(travelers, roommateSims); }
public override bool Run() { try { List <SimDescription> others = null; int tuitionCost = 0; if (AcademicCareerEx.EnrollInAcademicCareer(Actor, Traveler.Settings.mTravelFilter, out others, out tuitionCost)) { TravelUtil.TriggerTravelToUniversityWorld(others, tuitionCost); } return(true); } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(Actor, Target, e); return(false); } }
public override bool Run() { try { TripPlannerDialog.Result result; StandardEntry(); if (!Target.StartComputing(this, SurfaceHeight.Table, true)) { StandardExit(); return(false); } Target.StartVideo(Computer.VideoType.Browse); BeginCommodityUpdates(); AnimateSim("GenericTyping"); AnimateSim("GenericTyping"); if (Helpers.TravelUtilEx.ShowTravelToVacationWorldDialog(Actor, out result)) { TravelUtil.TriggerTravelToVacationWorld(Actor, result); } EndCommodityUpdates(true); Target.StopComputing(this, Computer.StopComputingAction.TurnOff, false); StandardExit(); return(true); } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(Actor, Target, e); } return(false); }
public override bool Test(Sim a, Phone target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback) { try { if (!base.Test(a, target, isAutonomous, ref greyedOutTooltipCallback)) { return(false); } if (Common.IsAwayFromHomeworld()) { return(TravelUtil.PurchaseLocationHomeInteractionTest(a)); } else { return(true); } } catch (Exception e) { Common.Exception(a, target, e); return(false); } }
public static bool ShowTravelToVacationWorldDialog(Sim travelInitiator, out TripPlannerDialog.Result tripPlannerResult) { tripPlannerResult = null; if (((travelInitiator == null) || (travelInitiator.Household == null)) || !travelInitiator.IsSelectable) { Common.DebugNotify("Not IsSelectable"); return(false); } else if (!UIUtils.IsOkayToStartModalDialog()) { Common.DebugNotify("Not IsOkayToStartModalDialog"); return(false); } else if (!TravelUtil.CommonTravelTests(travelInitiator.LotHome)) { Common.DebugNotify("Not CommonTravelTests"); return(false); } bool onVacation = (GameStates.sTravelData != null); string worldFile = World.GetWorldFileName(); List <TripPlannerDialog.IDestinationInfo> destinations = new List <TripPlannerDialog.IDestinationInfo>(); for (int i = 0x0; i < TravelUtil.kVacationWorldNames.Length; i++) { if (worldFile == WorldData.GetWorldFile(TravelUtil.kVacationWorldNames[i])) { continue; } if (Traveler.Settings.GetHiddenWorlds(TravelUtil.kVacationWorldNames[i])) { continue; } if (GameStates.sTravelData != null) { if (worldFile == GameStates.sTravelData.mHomeWorld) { continue; } } DestinationInfoEx item = new DestinationInfoEx(TravelUtil.DestinationInfoImage[i], TravelUtil.DestinationInfoName[i], TravelUtil.DestinationInfoDescription[i], TravelUtil.DestinationInfoConfirmImage[i], TravelUtil.DestinationInfoComfirmDescription[i], TravelUtil.DestinationInfoIndex[i], TravelUtil.kVacationWorldNames[i]); destinations.Add(item); } TravelUtil.SimTravelInfo defaultTraveler = null; List <TripPlannerDialog.ISimTravelInfo> simTravelInfoList = new List <TripPlannerDialog.ISimTravelInfo>(); foreach (KeyValuePair <SimDescription, string> key in CommonSpace.Helpers.TravelUtilEx.GetTravelChoices(travelInitiator, Traveler.Settings.mTravelFilter, false)) { SimDescription description = key.Key; WorldData.OnLoadFixup(description.VisaManager); foreach (WorldName worldName in TravelUtil.kVacationWorldNames) { switch (worldName) { case WorldName.China: case WorldName.Egypt: case WorldName.France: continue; } description.VisaManager.SetVisaLevel(worldName, 3); } List <int> visas = TravelUtil.GetVisas(description); int costForSimWithAge = TravelUtil.GetCostForSimWithAge(description.Age); int durationMod = 0x0; if (description.TraitManager.HasElement(TraitNames.PreparedTraveler)) { durationMod = TraitTuning.PreparedTravelerDurationIncrease; } if (description.TraitManager.HasElement(TraitNames.Jetsetter)) { costForSimWithAge = (int)(costForSimWithAge * TraitTuning.JetsetterCostMultiplier); } if ((description.CareerManager != null) && (description.CareerManager.DegreeManager != null)) { // Used in LocateHomeAndPlaceSimsAtVacationWorld to differentiate between regular travel and university description.CareerManager.DegreeManager.mEnrollmentData.mCourseLoad = 0; } int[] partnershipBonuses = GetPartnershipBonuses(description); if (description == travelInitiator.SimDescription) { defaultTraveler = new TravelUtil.SimTravelInfo(description, costForSimWithAge, durationMod, null, visas, partnershipBonuses); } else { simTravelInfoList.Add(new TravelUtil.SimTravelInfo(description, costForSimWithAge, durationMod, key.Value, visas, partnershipBonuses)); } } if (TravelUtil.PlayerMadeTravelRequest) { Common.DebugNotify("PlayerMadeTravelRequest Fail"); return(false); } List <int> durations = new List <int>(TravelUtil.kTravelDurations); tripPlannerResult = TripPlannerDialogEx.Show(destinations, durations, simTravelInfoList, defaultTraveler); if (tripPlannerResult != null) { DestinationInfoEx destination = tripPlannerResult.Destination as DestinationInfoEx; if (destination != null) { tripPlannerResult.mDestination = new TravelUtil.DestinationInfo( destination.Image, destination.Name, destination.Description, destination.ConfirmImage, destination.ConfirmDescription, destination.Index, destination.WorldName ); } } TravelUtil.PlayerMadeTravelRequest = (tripPlannerResult != null); return(TravelUtil.PlayerMadeTravelRequest); }
public static PlaceResults LocateHomeAndPlaceSimsAtVacationWorld(Household household, ref Sim simToSelect) { PlaceResults results = PlaceResults.Failure; Common.StringBuilder msg = new Common.StringBuilder("LocateHomeAndPlaceSimsAtVacationWorld" + Common.NewLine); try { if (household != null) { msg += "A"; if (GameStates.DestinationTravelWorld == WorldName.University) { Dictionary <SimDescription, AcademicDegreeManager> managers = new Dictionary <SimDescription, AcademicDegreeManager>(); try { foreach (SimDescription sim in Households.All(household)) { if (sim.CareerManager == null) { continue; } managers[sim] = sim.CareerManager.DegreeManager; if ((sim.ChildOrBelow) || (sim.IsPet)) { sim.CareerManager.mDegreeManager = null; } else if ((sim.CareerManager.DegreeManager != null) && (sim.CareerManager.DegreeManager.EnrollmentCouseLoad == 0)) { sim.CareerManager.mDegreeManager = null; } } TravelUtil.MoveIntoUniversityHousehold(household); foreach (SimDescription sim in Households.All(household)) { CustomAcademicDegrees.AdjustCustomAcademics(sim); } } finally { foreach (SimDescription sim in Households.All(household)) { if (sim.CareerManager == null) { continue; } AcademicDegreeManager manager; if (!managers.TryGetValue(sim, out manager)) { continue; } sim.CareerManager.mDegreeManager = manager; } } results = PlaceResults.BaseCamp; } else { TravelUtil.ProcessDeedsAndMoveInHousehold(household); if (household.LotHome == null) { msg += "B"; bool manual = false; Lot choice = PromptForLot(); if (choice == null) { choice = FindLot(); } else { manual = true; } if (choice != null) { msg += "C"; msg += Common.NewLine + choice.Name + Common.NewLine; choice.MoveIn(household); Mailbox mailboxOnLot = Mailbox.GetMailboxOnLot(choice); if (mailboxOnLot != null) { mailboxOnLot.ListenToReturnFromWorld(); } if (household.LotHome != null) { msg += "D"; if (manual) { results = PlaceResults.BaseCamp; } else { results = PlaceResults.Residential; } } } } else { msg += "E"; results = PlaceResults.BaseCamp; } } if (household.LotHome != null) { msg += "F"; foreach (Service service in Services.AllServices) { if (service == null) { continue; } if (service.DefaultIsRequested()) { continue; } service.MakeServiceRequest(household.LotHome, false, ObjectGuid.InvalidObjectGuid); } TravelUtil.TriggerTutorial(household); TravelUtil.PlaceSimsOnSafeSpots(household, ref simToSelect); } } } catch (Exception e) { Traveler.InsanityException(msg, e); } finally { Traveler.InsanityWriteLog(msg); } return(results); }
public static Lot PromptForLot() { Lot baseCampLot = LotManager.GetBaseCampLot(); if (!UIUtils.IsOkayToStartModalDialog(false, true)) { return(null); } List <IMapTagPickerInfo> mapTagPickerInfos = new List <IMapTagPickerInfo>(); mapTagPickerInfos.Add(new MapTagPickerLotInfo(baseCampLot, MapTagType.BaseCamp)); Dictionary <ulong, bool> dictionary = new Dictionary <ulong, bool>(); foreach (Lot lot in LotManager.AllLots) { if (!lot.IsResidentialLot) { continue; } if (lot.IsWorldLot) { continue; } if (lot.Household != null) { continue; } if (lot.ResidentialLotSubType == ResidentialLotSubType.kEP1_PlayerOwnable) { continue; } Lot.LotMetrics metrics = new Lot.LotMetrics(); lot.GetLotMetrics(ref metrics); if (metrics.FridgeCount == 0) { continue; } if ((lot != null) && !dictionary.ContainsKey(lot.LotId)) { dictionary[lot.LotId] = true; mapTagPickerInfos.Add(new MapTagPickerLotInfo(lot, MapTagType.AvailableHousehold)); } } GameUtils.EnableSceneDraw(true); LoadingScreenController.Unload(); while (LoadingScreenController.Instance != null) { SpeedTrap.Sleep(0); } IMapTagPickerInfo info = MapTagPickerDialog.Show(mapTagPickerInfos, TravelUtil.LocalizeString("ChooseHomeLot", new object[0]), TravelUtil.LocalizeString("Accept", new object[0]), false); if (info == null) { return(null); } return(LotManager.GetLot(info.LotId)); }
protected new void TriggerTravelToVacationWorld() { RemoveTriggerAlarm(); List <Sim> allTravelers = new List <Sim>(Followers); allTravelers.Add(Actor); string reason = null; // Custom if ((TravelingSimGuids.Count == 0) || (Helpers.TravelUtilEx.FinalBoardingCall(Actor.Household, allTravelers, DestinationWorldName, false, ref reason))) { ForeignVisitorsSituation.ForceKillForeignVisitorsSituation(); HolographicProjectionSituation.ForceKillHolographicVisitorsSituation(); int lastTimeOnVacation = -2147483648; foreach (Sim sim in allTravelers) { if (lastTimeOnVacation < sim.VisaManager.LastTimeOnVacation) { lastTimeOnVacation = sim.VisaManager.LastTimeOnVacation; } } int numDaysSinceLastInDestWorld = -1; if (lastTimeOnVacation > 0) { numDaysSinceLastInDestWorld = SimClock.ElapsedCalendarDays() - lastTimeOnVacation; } Camera.SetView(CameraView.MapView, false, true); int tripLength = (TravelUtil.sOverriddenTripLength > 0x0) ? TravelUtil.sOverriddenTripLength : TravelDuration; // Custom GameStatesEx.TravelToVacationWorld(DestinationWorldName, TravelingSimGuids, tripLength, numDaysSinceLastInDestWorld); TelemetryStats.VacationTelemetryInfo vacationTelemetryInfo = new TelemetryStats.VacationTelemetryInfo(); vacationTelemetryInfo.LeavingHomeWorld = true; vacationTelemetryInfo.WorldId = DestinationWorldName; int num2 = 0x0; if (TravelingSimGuids.Count > 0) { vacationTelemetryInfo.NumberOfSimsInHoushold = Households.NumSims(Actor.Household); vacationTelemetryInfo.NumberOfSimsThatDidTravel = allTravelers.Count; foreach (Sim sim in Households.AllSims(Actor.Household)) { // Custom if (CommonSpace.Helpers.TravelUtilEx.CheckForReasonsToFailTravel(sim.SimDescription, Traveler.Settings.mTravelFilter, DestinationWorldName, false, false) == null) { num2++; } } } else { vacationTelemetryInfo.NumberOfSimsInHoushold = 0; vacationTelemetryInfo.NumberOfSimsThatDidTravel = 0; } vacationTelemetryInfo.NumberOfSimsAbleToTravel = num2; vacationTelemetryInfo.VisaLevels = new PairedListDictionary <ulong, int>(); foreach (Sim sim2 in allTravelers) { int visaLevel = sim2.VisaManager.GetVisaLevel(DestinationWorldName); vacationTelemetryInfo.VisaLevels.Add(sim2.SimDescription.SimDescriptionId, visaLevel); } vacationTelemetryInfo.TravelDateAndTime = SimClock.CurrentTime(); EventTracker.SendEvent(new VacationInfoEvent(EventTypeId.kVacationTelemetryInfo, vacationTelemetryInfo)); } else { if (DestinationWorldName == WorldName.FutureWorld) { Actor.ShowTNSIfSelectable(TravelUtil.LocalizeString(Actor.IsFemale, "CantTravelFutureTNS", new object[] { TravelCost }), StyledNotification.NotificationStyle.kSystemMessage, ObjectGuid.InvalidObjectGuid); } else { Actor.ShowTNSIfSelectable(TravelUtil.LocalizeString(Actor.IsFemale, "CantTravelTNS", new object[] { TravelCost }) + Common.NewLine + Common.NewLine + reason, StyledNotification.NotificationStyle.kSystemMessage, ObjectGuid.InvalidObjectGuid); } Actor.ModifyFunds(TravelCost); foreach (Sim sim3 in allTravelers) { if (!sim3.IsDying()) { sim3.AddExitReason(ExitReason.CanceledByScript); } } } }
public static string CheckForReasonsToFailTravel(SimDescription simDescription, Type filter, WorldName worldName, bool isWorldMove, bool testMoveRequested) { try { if (simDescription == null) return null; if (testMoveRequested) { if ((TravelUtil.PlayerMadeTravelRequest) || (GameStates.WorldMoveRequested)) { return TravelUtil.LocalizeString(simDescription.IsFemale, "AnotherTravelRequested", new object[] { simDescription }); } } bool playerMadeTravelRequest = TravelUtil.PlayerMadeTravelRequest; try { TravelUtil.PlayerMadeTravelRequest = false; string failReason = null; if (!InWorldSubState.IsEditTownValid(simDescription.LotHome, ref failReason)) { if (!string.IsNullOrEmpty(failReason) && Localization.HasLocalizationString("Gameplay/Visa/TravelUtil:EditTownInvalid" + failReason)) { return TravelUtil.LocalizeString(simDescription.IsFemale, "EditTownInvalid" + failReason, new object[] { simDescription }); } return TravelUtil.LocalizeString(simDescription.IsFemale, "EditTownInvalid", new object[] { simDescription }); } } finally { TravelUtil.PlayerMadeTravelRequest = playerMadeTravelRequest; } foreach (Sim sim in Households.AllSims(simDescription.Household)) { try { if (sim.IsDying()) { return TravelUtil.LocalizeString(sim.IsFemale, "FamilyMemberIsDying", new object[] { sim }); } else if (sim.Autonomy.SituationComponent.InSituationOfType(typeof(ParentsLeavingTownSituation))) { return TravelUtil.LocalizeString(sim.IsFemale, "ParentsOutOfTown", new object[] { sim }); } else if (sim.InteractionQueue.HasInteractionOfType(AgeDown.Singleton)) { return TravelUtil.LocalizeString(sim.IsFemale, "SomeoneIsAgingDown", new object[] { sim }); } else if ((sim != simDescription.CreatedSim) && sim.InteractionQueue.HasInteractionOfType(typeof(IAmMovingInteraction))) { return TravelUtil.LocalizeString(sim.IsFemale, "AnotherTravelRequested", new object[] { sim }); } } catch (Exception e) { Common.Exception(sim, e); return "(Error)"; } } if (!isWorldMove) { if ((worldName != WorldName.FutureWorld) && (simDescription.ToddlerOrBelow)) { if ((filter & Type.Toddlers) == Type.None) { return TravelUtil.LocalizeString(simDescription.IsFemale, "TooYoungToTravel", new object[] { simDescription }); } } if ((worldName == WorldName.University) && (simDescription.Teen)) { if ((filter & Type.Teens) == Type.None) { return TravelUtil.LocalizeString(simDescription.IsFemale, "TooYoungToTravel", new object[] { simDescription }); } } if ((worldName == WorldName.University) && (simDescription.ChildOrBelow)) { if ((filter & Type.Children) == Type.None) { return TravelUtil.LocalizeString(simDescription.IsFemale, "TooYoungToTravel", new object[] { simDescription }); } } if (simDescription.IsPet) { if ((filter & Type.Pets) == Type.None) { return Common.Localize("Travel:PetDeny", simDescription.IsFemale, new object[] { simDescription }); } } if ((worldName != WorldName.University) && (worldName != WorldName.FutureWorld) && (simDescription.CreatedSim != null) && simDescription.CreatedSim.BuffManager.HasElement(BuffNames.WentToLocation)) { if ((filter & Type.Recovering) == Type.None) { return TravelUtil.LocalizeString(simDescription.IsFemale, "RecoveringFromVacation", new object[] { simDescription }); } } } if (Sims3.Gameplay.Passport.Passport.IsHouseholdSimAwayInPassport(simDescription.Household)) { return TravelUtil.LocalizeString(simDescription.IsFemale, "SimInPassport", new object[] { simDescription }); } if ((simDescription.CreatedSim != null) && simDescription.CreatedSim.BuffManager.HasElement(BuffNames.VampireBite)) { return TravelUtil.LocalizeString(simDescription.IsFemale, "VampireBite", new object[] { simDescription }); } if (simDescription.IsVisuallyPregnant) { if ((filter & Type.Pregnant) == Type.None) { return TravelUtil.LocalizeString(simDescription.IsFemale, "IsPregnant", new object[] { simDescription }); } } Sim createdSim = simDescription.CreatedSim; if ((createdSim != null) && createdSim.BuffManager.HasElement(BuffNames.MalePregnancy)) { if ((filter & Type.Pregnant) == Type.None) { return TravelUtil.LocalizeString(simDescription.IsFemale, "ConditionPreventsTravel", new object[] { simDescription }); } } if ((createdSim != null) && createdSim.IsDying()) { return TravelUtil.LocalizeString(simDescription.IsFemale, "IsDying", new object[] { simDescription }); } if ((createdSim != null) && (createdSim.CurrentInteraction is IGoToJail)) { return TravelUtil.LocalizeString(simDescription.IsFemale, "IsInJail", new object[] { simDescription }); } if (simDescription.IsEnrolledInBoardingSchool()) { return TravelUtil.LocalizeString(simDescription.IsFemale, "IsInBoardingSchool", new object[] { simDescription }); } if ((ParentsLeavingTownSituation.Adults != null) && ParentsLeavingTownSituation.Adults.Contains(simDescription.SimDescriptionId)) { return TravelUtil.LocalizeString(simDescription.IsFemale, "ParentsOutOfTown", new object[] { simDescription }); } if (simDescription.mCurrentPassportChallengeID != PassportChallenges.ChallengeIds.InvalidChallenge) { return TravelUtil.LocalizeString(simDescription.IsFemale, "AwayInPassport", new object[] { simDescription }); } if ((createdSim != null) && createdSim.BuffManager.HasElement(BuffNames.Ensorcelled)) { return TravelUtil.LocalizeString(simDescription.IsFemale, "Ensorcelled", new object[] { simDescription }); } if (filter == Type.None) { if ((createdSim != null) && (TravelUtil.HasBlockingTransformBuff(createdSim, worldName == WorldName.FutureWorld))) { return TravelUtil.LocalizeString(simDescription.IsFemale, "NoTravelWhileTransformed", new object[0]); } } return null; } catch (Exception e) { Common.Exception(simDescription, e); return "(Error)"; } }
public static PlaceResults LocateHomeAndPlaceSimsAtVacationWorld(Household household, ref Sim simToSelect) { PlaceResults results = PlaceResults.Failure; Common.StringBuilder msg = new Common.StringBuilder("LocateHomeAndPlaceSimsAtVacationWorld" + Common.NewLine); try { if (household != null) { msg += "A"; if (GameStates.DestinationTravelWorld == WorldName.University) { Dictionary <SimDescription, AcademicDegreeManager> managers = new Dictionary <SimDescription, AcademicDegreeManager>(); try { foreach (SimDescription sim in Households.All(household)) { if (sim.CareerManager == null) { continue; } managers[sim] = sim.CareerManager.DegreeManager; if ((sim.ChildOrBelow) || (sim.IsPet)) { sim.CareerManager.mDegreeManager = null; } else if ((sim.CareerManager.DegreeManager != null) && (sim.CareerManager.DegreeManager.EnrollmentCouseLoad == 0)) { sim.CareerManager.mDegreeManager = null; } } TravelUtil.MoveIntoUniversityHousehold(household); foreach (SimDescription sim in Households.All(household)) { CustomAcademicDegrees.AdjustCustomAcademics(sim); } } finally { foreach (SimDescription sim in Households.All(household)) { if (sim.CareerManager == null) { continue; } AcademicDegreeManager manager; if (!managers.TryGetValue(sim, out manager)) { continue; } sim.CareerManager.mDegreeManager = manager; } } results = PlaceResults.BaseCamp; } else { TravelUtil.ProcessDeedsAndMoveInHousehold(household); if (household.LotHome == null) { msg += "B"; bool manual = false; Lot choice = PromptForLot(); if (choice == null) { choice = FindLot(); } else { manual = true; } if (choice != null) { msg += "C"; msg += Common.NewLine + choice.Name + Common.NewLine; choice.MoveIn(household); Mailbox mailboxOnLot = Mailbox.GetMailboxOnLot(choice); if (mailboxOnLot != null) { mailboxOnLot.ListenToReturnFromWorld(); } if (household.LotHome != null) { msg += "D"; if (manual) { results = PlaceResults.BaseCamp; } else { results = PlaceResults.Residential; } } } } else { msg += "E"; results = PlaceResults.BaseCamp; } } if (household.LotHome != null) { msg += "F"; foreach (Service service in Services.AllServices) { if (service == null) { continue; } if (service.DefaultIsRequested()) { continue; } service.MakeServiceRequest(household.LotHome, false, ObjectGuid.InvalidObjectGuid); } TravelUtil.TriggerTutorial(household); TravelUtil.PlaceSimsOnSafeSpots(household, ref simToSelect); // core block in pusharriveinteraction on ITimePortal preventing teens who travel alone from getting the arrive interaction thus // appearing invisible bool flag = true; foreach (SimDescription desc in household.SimDescriptions) { if (desc.YoungAdultOrAbove) { flag = false; break; } } ITimePortal[] portalArray; if (flag && ArriveHomeBehaviorInVacationWorld.ShouldArriveByTimePortal(household.LotHome, out portalArray)) { new Common.AlarmTask(3f, TimeUnit.Minutes, PushArriveHomeInteractionEx); } } } } catch (Exception e) { Traveler.InsanityException(msg, e); } finally { Traveler.InsanityWriteLog(msg); } return(results); }
public override bool Test(Sim actor, Phone target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback) { if (base.Test(actor, target, isAutonomous, ref greyedOutTooltipCallback)) { if (isAutonomous) { if (!Woohooer.Settings.mWoohootyTextAutonomous[PersistedSettings.GetSpeciesIndex(actor)]) { return(false); } } if (!actor.IsAtHome) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(TravelUtil.LocalizeString(actor.IsFemale, "NotAtHome", new object[] { actor })); return(false); } if (!base.CanSimInviteOver(actor, isAutonomous) || !base.CanInviteOverToLot(actor.LotCurrent, isAutonomous)) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(TravelUtil.LocalizeString(actor.IsFemale, "CannotInviteOver", new object[] { actor })); return(false); } if (actor.SimDescription.IsEP11Bot) { if ((actor.TraitManager == null) || !actor.TraitManager.HasElement(TraitNames.CapacityToLoveChip)) { return(false); } } bool flag = false; bool flag2 = false; if (actor.SimDescription.Teen && Woohooer.Settings.AllowTeen(true)) { flag = true; } if (actor.SimDescription.Teen && Woohooer.Settings.AllowTeenAdult(true)) { flag2 = true; } bool locationTest = false; foreach (IMiniRelationship relationship in Relationship.GetMiniRelationships(actor.SimDescription)) { SimDescription description = SimDescription.Find(relationship.GetOtherSimDescriptionId(actor.SimDescription)); if (description != null && description.CreatedSim != null && description.CreatedSim.LotCurrent != actor.LotCurrent && !description.ChildOrBelow && description.IsHuman) { if (!flag && actor.SimDescription.Teen && description.Teen) { continue; } if (!flag2 && actor.SimDescription.Teen && description.YoungAdultOrAbove) { continue; } if (isAutonomous && !CommonSocials.CheckAutonomousGenderPreference(actor.SimDescription, description)) { continue; } if (isAutonomous && !CommonWoohoo.SatisfiesCooldown(actor, description.CreatedSim, isAutonomous, ref greyedOutTooltipCallback)) { continue; } if (!locationTest) { // only humans can use this so we don't need to keep scanning the lot each loop if (!CommonWoohoo.HasWoohooableObject(actor.LotHome, actor, description.CreatedSim)) { return(false); } else { locationTest = true; } } return(true); } } } return(false); }
private new static void TriggerTravelToHomeWorld() { SimpleMessageDialog.Show(TravelUtil.LocalizeString("TermOverCaption", new object[0x0]), TravelUtil.LocalizeString("TermOverText", new object[0x0]), ModalDialog.PauseMode.PauseSimulator); GameStatesEx.UpdateTelemetryAndTriggerTravelBackToHomeWorld(); }