public override void OnPreLoad() { Overwatch.Log(GetTitlePrefix()); Opportunity opportunity = OpportunityManager.GetStaticOpportunity(OpportunityNames.EP7_FortuneTellerCareer_HelpInvestigation_Police); if (opportunity != null) { if ((opportunity.SharedData.mRequirementList == null) || (opportunity.SharedData.mRequirementList.Count == 0)) { opportunity.SharedData.mRequirementList = new System.Collections.ArrayList(); // FortuneTeller career requirement Opportunity.OpportunitySharedData.RequirementInfo info = new Opportunity.OpportunitySharedData.RequirementInfo(); info.mType = RequirementType.Career; info.mGuid = (ulong)OccupationNames.FortuneTeller; info.mMinLevel = 1; info.mMaxLevel = 10; opportunity.SharedData.mRequirementList.Add(info); // Police Station requirement info = new Opportunity.OpportunitySharedData.RequirementInfo(); info.mType = RequirementType.WorldHasRabbitHoleType; info.mGuid = (ulong)RabbitHoleType.PoliceStation; opportunity.SharedData.mRequirementList.Add(info); } } foreach (OpportunityNames opp in new OpportunityNames[] { OpportunityNames.EP9_Academics_StudyAtHome, OpportunityNames.EP9_Academics_StudyAtLibrary, OpportunityNames.EP9_Academics_StudyAtQuad, OpportunityNames.EP9_Academics_StudyAtStudentUnion }) { opportunity = OpportunityManager.GetStaticOpportunity(opp); if (opportunity != null) { if ((opportunity.SharedData.mRequirementList == null) || (opportunity.SharedData.mRequirementList.Count == 0)) { opportunity.SharedData.mRequirementList = new System.Collections.ArrayList(); // University Student career requirement Opportunity.OpportunitySharedData.RequirementInfo info = new Opportunity.OpportunitySharedData.RequirementInfo(); info.mType = RequirementType.Career; info.mGuid = (ulong)OccupationNames.AcademicCareer; info.mMinLevel = 1; info.mMaxLevel = 1; opportunity.SharedData.mRequirementList.Add(info); } } } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupDnPExportData"); foreach (SimDescription sim in SimListing.GetResidents(true).Values) { if (sim.DnPExportData == null) { continue; } sim.DnPExportData = null; Overwatch.Log(" Data removed " + sim.FullName); } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupPetAdoption"); bool reset = Overwatch.Settings.mStopPetAdoption; if (PetAdoptions.Cleanup(Overwatch.Log)) { reset = true; } if (reset) { PetAdoptions.Stop(Overwatch.Log); } }
public override void OnPreLoad() { Overwatch.Log("Try DisableTelemetry"); IOptionsModel optionsModel = Responder.Instance.OptionsModel; if (optionsModel != null) { DeviceConfig.EnableRegistryTelemetry(false); DeviceConfig.SetOption(optionsModel.EnableTelemetryKey, 0x0); DeviceConfig.SaveOptions(); Overwatch.Log("Telemetry Disabled"); } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupFakeMetaAutonomy"); if (FakeMetaAutonomy.mToDestroy != null) { foreach (SimDescription sim in new List <SimDescription>(FakeMetaAutonomy.mToDestroy)) { if (Annihilation.Cleanse(sim)) { Overwatch.Log("Destroyed: " + sim.FullName); FakeMetaAutonomy.mToDestroy.Remove(sim); } } } if ((FakeMetaAutonomy.Instance != null) && (FakeMetaAutonomy.Instance.mPool != null)) { int index = 0; while (index < FakeMetaAutonomy.Instance.mPool.Count) { SimDescription sim = FakeMetaAutonomy.Instance.mPool[index]; bool keep = true; if (sim == null) { keep = false; } else if (sim.Genealogy == null) { keep = false; } if (keep) { index++; } else { Overwatch.Log("Removed: " + sim.FullName); FakeMetaAutonomy.Instance.mPool.RemoveAt(index); } } } }
public static void OnTest(Event e) { if (!Overwatch.Settings.mInstantationCheck) { return; } sTracer.Perform(); if (!sTracer.mAllow) { return; } bool reset = false; Sim sim = e.TargetObject as Sim; if (sim == null) { return; } SimDescription simDesc = sim.SimDescription; GreyedOutTooltipCallback callback = null; if (!RecoverMissingSimTask.Allowed(simDesc, true, ref callback)) { reset = true; } if (reset) { string notice = Common.Localize("InstantationCheck:Reset", sim.IsFemale, new object[] { sim }); if (!sAlreadyShown.ContainsKey(sim.SimDescription.SimDescriptionId)) { sAlreadyShown.Add(sim.SimDescription.SimDescriptionId, true); Common.Notify(sim, notice); } sim.Destroy(); Overwatch.Log(notice); } }
protected override void PrivatePerformAction(bool prompt) { try { Overwatch.Log("Cleanup Concert"); foreach (ShowVenue obj in Sims3.Gameplay.Queries.GetObjects <ShowVenue>()) { Overwatch.Log("Reset " + obj.ShowType); foreach (ISearchLight light in obj.LotCurrent.GetObjects <ISearchLight>()) { try { light.TurnOff(); } catch { } SearchLight searchLight = light as SearchLight; if (searchLight != null) { try { searchLight.mSMC.Dispose(); } catch { } searchLight.mSMC = null; } } obj.EndPlayerConcert(); } if (prompt) { Overwatch.AlarmNotify(Common.Localize("CleanupConcert:Complete")); } } catch (Exception e) { Common.Exception(Name, e); } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupSimHousehold"); foreach (Household house in Household.sHouseholdList) { foreach (SimDescription sim in Households.All(house)) { if (sim.Household != house) { sim.mHousehold = house; Overwatch.Log(" Reattached: " + sim.FullName); } } } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupOccult"); foreach (SimDescription sim in Household.AllSimsLivingInWorld()) { OccultTypeHelper.ValidateOccult(sim, Overwatch.Log); OccultTypeHelper.TestAndRebuildWerewolfOutfit(sim); // Compensate for a missing line in OccultWerewolf:FixupOccult if ((sim.CreatedSim != null) && (sim.ToddlerOrAbove) && (OccultTypeHelper.HasType(sim, OccultTypes.Werewolf))) { World.ObjectSetVisualOverride(sim.CreatedSim.ObjectId, eVisualOverrideTypes.Werewolf, null); } } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupHomework"); int count = 0; foreach (Sim sim in LotManager.Actors) { if (sim == null) { continue; } if (sim.Inventory == null) { continue; } List <Homework> objects = Inventories.QuickFind <Homework>(sim.Inventory); Homework actual = null; if (sim.School != null) { actual = sim.School.OwnersHomework; } objects.Remove(actual); foreach (Homework obj in objects) { try { obj.Destroy(); count++; } catch { } } } Overwatch.Log(" Deleted: " + count); }
protected static void SetGenealogy(IMiniSimDescription pureSim, Genealogy genealogy) { if (genealogy == null) { return; } SimDescription sim = pureSim as SimDescription; if (sim != null) { if ((sim.mGenealogy == null) || (!object.ReferenceEquals(sim.mGenealogy, genealogy))) { sim.mGenealogy = genealogy; Overwatch.Log("Replaced SimDesc Genealogy: " + Relationships.GetFullName(pureSim)); } sim.mGenealogy.mSim = sim; sim.mGenealogy.mMiniSim = MiniSimDescription.Find(sim.SimDescriptionId); } else { MiniSimDescription miniSim = pureSim as MiniSimDescription; if (miniSim != null) { if ((miniSim.mGenealogy == null) || (!object.ReferenceEquals(miniSim.mGenealogy, genealogy))) { miniSim.mGenealogy = genealogy; Overwatch.Log("Replaced MiniSim Genealogy: " + Relationships.GetFullName(pureSim)); } if (genealogy.mSim == null) { genealogy.mSim = miniSim.mGenealogy.mSim; } genealogy.mMiniSim = miniSim; } } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupGigs"); foreach (SimDescription sim in Household.EverySimDescription()) { PerformanceCareer career = sim.OccupationAsPerformanceCareer; if (career == null) { continue; } if (career.mSteadyGigs == null) { career.mSteadyGigs = new List <SteadyGig>(); Overwatch.Log(" Missing GigList Added: " + sim.FullName); } for (int i = career.mSteadyGigs.Count - 1; i >= 0; i--) { SteadyGig gig = career.mSteadyGigs[i]; if (gig == null) { career.mSteadyGigs.RemoveAt(i); Overwatch.Log(" Null Gig removed: " + sim.FullName); } else if (gig.Venue == null) { career.mSteadyGigs.RemoveAt(i); Overwatch.Log(" No Venue Gig removed: " + sim.FullName); } else if (MiniSimDescription.Find(gig.ProprietorId) == null) { career.mSteadyGigs.RemoveAt(i); Overwatch.Log(" No Proprietor Gig removed: " + sim.FullName); } } } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupShapeMultipliers"); foreach (Sim obj in Sims3.Gameplay.Queries.GetObjects <Sim>()) { if (obj.SimDescription == null) { continue; } if (obj.SimDescription.mShapeDeltaMultiplier >= 10f) { obj.SimDescription.mShapeDeltaMultiplier = 1f; Overwatch.Log("ShapeMultiplier Reset " + obj.FullName); } } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupGems"); foreach (Gem gem in Sims3.Gameplay.Queries.GetObjects <Gem>()) { if (gem.mCutName == null) { continue; } if (gem.mCutName == "") { gem.mCutName = null; Overwatch.Log(" Gems CutName Corrected " + gem.GetLocalizedName()); } } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("FixPreEP10Bars"); foreach (BarAdvanced bar in Sims3.Gameplay.Queries.GetObjects <BarAdvanced>()) { if (bar.InWorld && bar.mInteractions == null) { bar.mInteractions = new List <BarAdvanced.BarInteraction>(); if (bar.LotCurrent == null) { continue; } Overwatch.Log("Bar at " + bar.LotCurrent.Name + " fixed"); } } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupBonehilda"); foreach (BonehildaCoffin coffin in Sims3.Gameplay.Queries.GetObjects <BonehildaCoffin>()) { if (coffin.mBonehildaSim == null) { continue; } if ((coffin.mBonehildaSim.HasBeenDestroyed) || (coffin.mBonehildaSim.InteractionQueue == null)) { coffin.mBonehildaSim = null; Overwatch.Log(" Bonehilda Coffin Corrected"); } } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupRelationships"); Dictionary <ulong, List <SimDescription> > lookup = SimListing.AllSims <SimDescription>(null, true); List <SimDescription> removeA = new List <SimDescription>(); foreach (KeyValuePair <SimDescription, Dictionary <SimDescription, Relationship> > relationsA in Relationship.sAllRelationships) { if (!lookup.ContainsKey(relationsA.Key.SimDescriptionId)) { removeA.Add(relationsA.Key); } else { List <SimDescription> removeB = new List <SimDescription>(); foreach (KeyValuePair <SimDescription, Relationship> relationB in relationsA.Value) { if (!lookup.ContainsKey(relationB.Key.SimDescriptionId)) { removeB.Add(relationB.Key); } } foreach (SimDescription remove in removeB) { Relationship.sAllRelationships.Remove(remove); Overwatch.Log(" Removed B: " + remove.FullName); } } } foreach (SimDescription remove in removeA) { Relationship.sAllRelationships.Remove(remove); Overwatch.Log(" Removed A: " + remove.FullName); } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("FixLushEpidemic"); if (GameUtils.IsInstalled(ProductVersion.EP9) && !GameUtils.IsUniversityWorld()) { MotiveTuning mTuning = null; foreach (MotiveTuning tuning in MotiveTuning.GetAllTunings(CommodityKind.Juiced)) { MotiveSatisfactionCurve autoSatisfyCurve = new MotiveSatisfactionCurve { Loops = true }; Curve curve = autoSatisfyCurve; curve.Add(new Vector2(0f, -49f)); Curve motiveDecayCurve = autoSatisfyCurve.GetMotiveDecayCurve(); tuning.mMotiveDecayCurve = motiveDecayCurve; tuning.mAutoSatisfyCurve = autoSatisfyCurve; mTuning = tuning; } if (mTuning != null) { foreach (Sim sim in LotManager.Actors) { if (sim == null || sim.Autonomy == null) { continue; } if (sim.Autonomy.Motives.HasMotive(CommodityKind.Juiced)) { sim.mMotiveTuning[(int)CommodityKind.Juiced] = mTuning; sim.Autonomy.Motives.RemoveMotive(CommodityKind.Juiced); sim.Autonomy.Motives.CreateMotive(CommodityKind.Juiced); } } } Overwatch.Log("Banished autosatisfy of Juiced motive"); } }
public override void OnDelayedWorldLoadFinished() { new Common.DelayedEventListener(EventTypeId.kSkillLearnedSkill, OnLearnedSkill); // Must be immediate EventTracker.AddListener(EventTypeId.kGetNCutGems, OnGetNCutGems); Overwatch.Log("CleanupCollecting"); foreach (SimDescription sim in Household.AllSimsLivingInWorld()) { Collecting skill = sim.SkillManager.GetSkill <Collecting>(SkillNames.Collecting); if (skill == null) { continue; } EnactCorrections(skill); } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupCellPhones"); int removed = 0; foreach (Sim sim in LotManager.Actors) { PhoneCell truePhone = null; List <PhoneCell> remove = new List <PhoneCell>(); foreach (PhoneCell phone in Inventories.InventoryDuoFindAll <PhoneCell, Phone>(sim.SimDescription)) { if (truePhone == null) { truePhone = phone; } else { remove.Add(phone); } } foreach (PhoneCell phone in remove) { try { phone.Dispose(); phone.Destroy(); removed++; } catch { } } } if (removed > 0) { Overwatch.Log("Duplicate Phones Removed: " + removed); } }
protected override bool OnPerform() { if (PlumbBob.Singleton == null) { PlumbBob.Startup(); if (mSelectedActor != null) { DreamCatcher.Select(mSelectedActor, true, true); } mStore.Dispose(); Overwatch.Log(" Plumbbobs Deleted: " + mCount); return(false); } else { return(true); } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupBrokenSkills"); Dictionary <ulong, SimDescription> sims = SimListing.GetResidents(true); foreach (SimDescription sim in sims.Values) { Corrections.CleanupBrokenSkills(sim, Overwatch.Log); } if (GameUtils.IsInstalled(ProductVersion.EP5)) { if (SkillManager.sPetSkillFatigueTuning.Count == 0) { SkillManager.ParsePetSkillFatigueRates(XmlDbData.ReadData("Skills")); Overwatch.Log("Loaded Missing Pet Fatigue Rates"); } } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("FixPetSurfaceComponent"); int count = 0; if (!GameUtils.IsInstalled(ProductVersion.EP5)) { foreach (Counter counter in Sims3.Gameplay.Queries.GetObjects <Counter>()) { if (counter.PetSurfaceComponent == null) { counter.AddComponent <PetSurfaceComponent>(new object[] { new PetSurfaceData(Slot.None, Cabinetry.kContainmentSlotCenterBase, PetSurfaceData.JumpStyle.RadialRouteContainmentForwardOnly), PetSurfaceComponent.kAdultAndElderCats }); count++; } } Overwatch.Log(" Corrected: " + count); } }
protected override void PrivatePerformAction(bool prompt) { try { Overwatch.Log("Reset All Gnomes"); int count = 0; foreach (MagicGnomeBase gnome in Sims3.Gameplay.Queries.GetObjects <MagicGnomeBase>()) { if (gnome.IsAngry) { continue; } if (gnome.LotCurrent == null) { continue; } if (gnome.LotCurrent.AlarmManager.GetTimeLeft(gnome.mTrickeryAlarm, TimeUnit.Minutes) > 0) { continue; } gnome.IsAngry = false; count++; } if ((prompt) || (count > 0)) { Overwatch.AlarmNotify(Common.Localize("ResetAllGnomes:Success", false, new object[] { count })); } } catch (Exception e) { Common.Exception(Name, e); } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupHarvestPlant"); foreach (HarvestPlant plant in Sims3.Gameplay.Queries.GetObjects <HarvestPlant>()) { switch (plant.GrowthState) { case PlantGrowthState.Mycelium: if (Plant.IsMushroom(plant.Seed)) { continue; } plant.SetGrowthState(PlantGrowthState.Sprout); Overwatch.Log(" Growth Plant Stage Corrected A"); break; case PlantGrowthState.Harvest: if (HarvestPlant.FindSlottedHarvestable(plant) == null) { OmniPlant omniPlant = plant as OmniPlant; if (omniPlant != null) { if (omniPlant.FedObject == null) { continue; } } plant.PostHarvest(); Overwatch.Log(" Growth Plant Stage Corrected B"); } break; } } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupKnownCompositions"); foreach (SimDescription sim in Household.EverySimDescription()) { if (sim.Singing == null) { continue; } if (sim.Singing.mKnownCompositions == null) { sim.Singing.mKnownCompositions = new List <SingingInfo.SingingComposition>(); } else { for (int i = sim.Singing.mKnownCompositions.Count - 1; i >= 0; i--) { if (sim.Singing.mKnownCompositions[i] == null) { sim.Singing.mKnownCompositions.RemoveAt(i); Overwatch.Log(" Removed Null mKnownComposition"); } } for (int i = sim.Singing.mKnownRomanticCompositions.Count - 1; i >= 0; i--) { if (sim.Singing.mKnownRomanticCompositions[i] == null) { sim.Singing.mKnownRomanticCompositions.RemoveAt(i); Overwatch.Log(" Removed Null mKnownRomanticCompositions"); } } } } }
protected override void PrivatePerformAction(bool prompt) { try { Overwatch.Log("Cleanse The Dead"); Dictionary <SimDescription, Pair <IMausoleum, Urnstone> > urnstones = new Dictionary <SimDescription, Pair <IMausoleum, Urnstone> >(); CommonSpace.Helpers.CleanseTheDead.Retrieve(urnstones); List <SimDescription> choices = new List <SimDescription>(); if (Overwatch.Settings.mCompressFamilyLevel > 0) { foreach (SimDescription choice in urnstones.Keys) { if (Genealogies.GetFamilyLevel(choice.Genealogy) >= Overwatch.Settings.mCompressFamilyLevel) { choices.Add(choice); } } } else { choices.AddRange(urnstones.Keys); } CommonSpace.Helpers.CleanseTheDead.Cleanse(choices, urnstones, true, Overwatch.Log); if ((choices.Count > 0) || (prompt)) { Overwatch.AlarmNotify(Common.Localize("CleanseTheDead:Complete", false, new object[] { choices.Count })); } } catch (Exception e) { Common.Exception(Name, e); } }
protected override void PrivatePerformAction(bool prompt) { try { Overwatch.Log("Purge Genetic Hair"); if ((!prompt) || (AcceptCancelDialog.Show(Common.Localize("PurgeGeneticHair:Prompt")))) { Dictionary <SimDescription, bool> completed = new Dictionary <SimDescription, bool>(); int count = 0; List <SimDescription> list = new List <SimDescription>(SimDescription.GetSimDescriptionsInWorld()); foreach (SimDescription sim in list) { if (sim.GeneticHairstyleKey != ResourceKey.kInvalidResourceKey) { sim.GeneticHairstyleKey = ResourceKey.kInvalidResourceKey; count++; } ; } if (prompt) { SimpleMessageDialog.Show(Name, Common.Localize("PurgeGeneticHair:Result", false, new object[] { count })); } else if (count > 0) { Overwatch.AlarmNotify(Common.Localize("PurgeGeneticHair:Result", false, new object[] { count })); } } } catch (Exception exception) { Common.Exception(Name, exception); } }
public override void OnDelayedWorldLoadFinished() { Overwatch.Log("CleanupPatterns"); if (!Pattern.sCacheBuilt) { BuildPatternCache(); } foreach (string category in Pattern.GetPatternCategories()) { try { ulong id = ResourceUtils.HashString64(category); } catch { Pattern.sPatternCategories.Remove(category); Overwatch.Log(" Unhashable Pattern Category : " + category); } } }
public void OnWorldLoadFinished() { Overwatch.Log("CleanupCauseEffect"); CauseEffectService instance = CauseEffectService.GetInstance(); if (instance != null) { ulong timeTravelerSimID = instance.GetTimeTravelerSimID(); if (MiniSimDescription.Find(timeTravelerSimID) == null) { CauseEffectService.sPersistableData.TimeTravelerSimID = 0; Overwatch.Log(" Removed Corrupt Time Traveler Referece"); } List <ITimeStatueUiData> timeStatueData = instance.GetTimeAlmanacTimeStatueData(); if (timeStatueData != null) { foreach (ITimeStatueUiData data in timeStatueData) { TimeStatueRecordData record = data as TimeStatueRecordData; if (record == null) { continue; } if (MiniSimDescription.Find(record.mRecordHolderId) == null) { record.mRecordHolderId = 0; Overwatch.Log(" Removed Corrupt Record Holder Referece"); } } } } }