Пример #1
0
        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);
                    }
                }
            }
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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");
            }
        }
Пример #5
0
        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);
                    }
                }
            }
        }
Пример #6
0
        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);
            }
        }
Пример #7
0
        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);
            }
        }
Пример #8
0
        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);
                    }
                }
            }
        }
Пример #9
0
        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);
                }
            }
        }
Пример #10
0
        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);
        }
Пример #11
0
        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;
                }
            }
        }
Пример #12
0
        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);
                    }
                }
            }
        }
Пример #13
0
        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);
                }
            }
        }
Пример #14
0
        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());
                }
            }
        }
Пример #15
0
        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");
                }
            }
        }
Пример #16
0
        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");
                }
            }
        }
Пример #17
0
        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);
            }
        }
Пример #18
0
        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");
            }
        }
Пример #19
0
        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);
            }
        }
Пример #20
0
        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);
            }
        }
Пример #21
0
            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);
                }
            }
Пример #22
0
        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");
                }
            }
        }
Пример #23
0
        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);
            }
        }
Пример #24
0
        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);
            }
        }
Пример #25
0
        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;
                }
            }
        }
Пример #26
0
        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");
                        }
                    }
                }
            }
        }
Пример #27
0
        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);
            }
        }
Пример #28
0
        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);
            }
        }
Пример #29
0
        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);
                }
            }
        }
Пример #30
0
        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");
                        }
                    }
                }
            }
        }