Пример #1
0
            public override bool Run()
            {
                if (!Target.SetCoffinActive(true))
                {
                    return(false);
                }
                StandardEntry();

                bool createsimdesc = false; // custom


                SimDescription BonehildaDesc = null;

                if (Target.mBonehilda == null)
                {
                    Target.mBonehilda =
                        Instantiator.RootIsOpenDGSInstalled ?
                        Genetics.MakeSim(CASAgeGenderFlags.Adult, CASAgeGenderFlags.Female, GameUtils.GetCurrentWorld(), uint.MaxValue)
                        : null;

                    if (Target.mBonehilda == null)
                    {
                        BonehildaCoffin[] blist = NFinalizeDeath.SC_GetObjects <BonehildaCoffin>();

                        Household ActiveHousehold  = NFinalizeDeath.ActiveHousehold;
                        Household ActiveHouseholdX = Household.ActiveHousehold;

                        List <SimDescription> sSimDescriptionList = new List <SimDescription>();

                        //if (!Instantiator.RootIsOpenDGSInstalled)
                        //{
                        //    foreach (var item in NFinalizeDeath.TattoaX())
                        //    {
                        //        global::NiecMod.Helpers.Create.
                        //            AddNiecSimDescription(item);
                        //        Simulator.Sleep(0);
                        //    }
                        //}


                        int isleep = 0;

                        foreach (SimDescription item in NFinalizeDeath.UpdateNiecSimDescriptions(false, false, true))
                        {
                            if (item == null)
                            {
                                continue;
                            }



                            if (!item.mIsValidDescription)
                            {
                                continue;
                            }

                            if (item.IsPet)
                            {
                                continue;
                            }

                            if (Instantiator.RootIsOpenDGSInstalled && item.mSim != null)
                            {
                                continue;
                            }

                            isleep++;
                            if (isleep > 20)
                            {
                                isleep = 0;
                                Simulator.Sleep(0);
                            }


                            if (item.LotHome != null)
                            {
                                continue;
                            }

                            //if (item.Household == null)
                            //    continue;

                            if (item.mHousehold == ActiveHousehold)
                            {
                                continue;
                            }
                            if (item.mHousehold == ActiveHouseholdX)
                            {
                                continue;
                            }
                            if (NFinalizeDeath.FindBonehildaCoffinSimDesc(blist, item) != null)
                            {
                                continue;
                            }

                            if ((item.Service ?? item.CreatedByService) is GrimReaper)
                            {
                                continue;
                            }

                            if (item.TeenOrAbove)
                            {
                                sSimDescriptionList.Add(item);
                            }
                        }
                        if (sSimDescriptionList.Count > 0)
                        {
                            SimDescription simd = RandomUtil.GetRandomObjectFromList <SimDescription>(sSimDescriptionList, ListCollon.SafeRandom);
                            sSimDescriptionList.Clear();
                            if (simd != null)
                            {
                                Target.mBonehilda = simd;
                                simd.IsBonehilda  = true;
                            }
                        }

                        BonehildaDesc = Target.mBonehilda;

                        if (BonehildaDesc == null)
                        {
                            //EndCommodityUpdates(false);
                            Simulator.Sleep(10);
                            Target.SetCoffinActive(false);
                            StandardExit();
                            return(false);
                        }

                        if (BonehildaDesc.Household == null)
                        {
                            BonehildaDesc.IsGhost     = false;
                            BonehildaDesc.mDeathStyle = 0;

                            (Household.NpcHousehold ?? Actor.Household ?? Household.ActiveHousehold).Add(BonehildaDesc);
                        }
                    }
                    else
                    {
                        BonehildaDesc = Target.mBonehilda;

                        BonehildaDesc.Marryable        = false;
                        BonehildaDesc.CanBeKilledOnJob = false;
                        BonehildaDesc.AgingEnabled     = false;
                        BonehildaDesc.Contactable      = false;
                        BonehildaDesc.FirstName        = "Gameplay/Actors/Sim:BonehildaName"; //Localization.LocalizeString("Gameplay/Actors/Sim:BonehildaName");
                        BonehildaDesc.LastName         = "";
                        BonehildaDesc.TraitManager.RemoveAllElements();
                        BonehildaDesc.TraitManager.AddElement(TraitNames.Brave);
                        BonehildaDesc.TraitManager.AddElement(TraitNames.Neat);
                        BonehildaDesc.TraitManager.AddElement(TraitNames.Workaholic);
                        BonehildaDesc.TraitManager.AddElement(TraitNames.Athletic);
                        BonehildaDesc.TraitManager.AddElement(TraitNames.Perfectionist);
                        BonehildaDesc.TraitManager.AddHiddenElement(TraitNames.ImmuneToFire);
                        BonehildaDesc.VoiceVariation     = VoiceVariationType.B;
                        BonehildaDesc.VoicePitchModifier = 0f;

                        if (BonehildaDesc.Household == null)
                        {
                            (Household.NpcHousehold ?? Actor.Household ?? Household.ActiveHousehold).Add(BonehildaDesc);
                        }

                        createsimdesc = true;
                    }
                }


                BonehildaDesc = Target.mBonehilda;

                if (BonehildaDesc.Household == null)
                {
                    BonehildaDesc.IsGhost     = false;
                    BonehildaDesc.mDeathStyle = 0;

                    (Household.NpcHousehold ?? Actor.Household ?? Household.ActiveHousehold).Add(BonehildaDesc);
                }

                if (BonehildaDesc.CreatedSim == null)
                {
                    Target.mBonehildaSim = BonehildaDesc.Instantiate(Vector3.OutOfWorld, Instantiator.RootIsOpenDGSInstalled);
                }
                else
                {
                    Target.mBonehildaSim = BonehildaDesc.CreatedSim;
                }

                BonehildaDesc = null;

                if (Target.mBonehildaSim == null)
                {
                    Simulator.Sleep(10);
                    Target.SetCoffinActive(false);
                    StandardExit();
                    return(false);
                }

                Target.mBonehildaSim.GreetSimOnLot(Target.LotCurrent);

                if (!AssemblyCheckByNiec.IsInstalled("OpenDGS") && Target.mBonehildaSim.Inventory != null)
                {
                    Target.mBonehildaSim.Inventory.DestroyItems(true);
                }

                Target.mBonehildaSim.SetOpacity(0f, 0f);

                if (createsimdesc) // custom
                {
                    Target.SetUpBonehildaOutfit();
                }

                AcquireStateMachine("BonehildaAwaken");
                SetActor("x", Actor);
                SetActor("coffin", Target);
                EnterState("x", "Enter");
                BeginCommodityUpdates();
                AnimateSim("Exit_Awaken");
                bool ok = Target.SpawnBonehilda(); // custom

                EndCommodityUpdates(ok);
                StandardExit();
                return(ok);
            }
Пример #2
0
        public static void Gather()
        {
            Clear();
            Households = (uint)NFinalizeDeath.SC_GetObjects <Household>().Length; //(uint)Household.sHouseholdList.Count;
            foreach (SimDescription item in NFinalizeDeath.UpdateNiecSimDescriptions(false, false, true))
            {
                if (item == null || !item.IsValidDescription)
                {
                    continue;
                }

                Population++;
                if (item.IsMale)
                {
                    Male++;
                }
                else
                {
                    Female++;
                }
                switch (item.Age)
                {
                case CASAgeGenderFlags.Baby:
                    age_b++;
                    break;

                case CASAgeGenderFlags.Toddler:
                    age_p++;
                    break;

                case CASAgeGenderFlags.Child:
                    age_c++;
                    break;

                case CASAgeGenderFlags.Teen:
                    age_t++;
                    break;

                case CASAgeGenderFlags.YoungAdult:
                    age_y++;
                    break;

                case CASAgeGenderFlags.Adult:
                    age_a++;
                    break;

                case CASAgeGenderFlags.Elder:
                    age_e++;
                    break;
                }
                if (item.mGenderPreferenceFemale > 0 && item.mGenderPreferenceMale > 0)
                {
                    if (item.IsMale)
                    {
                        Bi_M++;
                    }
                    else
                    {
                        Bi_F++;
                    }
                }
                else if (item.mGenderPreferenceMale > 0)
                {
                    if (item.IsMale)
                    {
                        Gay++;
                    }
                    else
                    {
                        Straight++;
                    }
                }
                else if (item.mGenderPreferenceFemale > 0)
                {
                    if (item.IsMale)
                    {
                        Straight++;
                    }
                    else
                    {
                        Lesbian++;
                    }
                }
                else if (item.mGenderPreferenceFemale < 0 && item.mGenderPreferenceMale < 0)
                {
                    if (item.IsMale)
                    {
                        Cel_M++;
                    }
                    else
                    {
                        Cel_F++;
                    }
                }
                else if (item.IsMale)
                {
                    Undet_M++;
                }
                else
                {
                    Undet_F++;
                }
            }
            sHasCurrent = true;
        }