示例#1
0
        protected bool LookupRoutine()
        {
            if (!mChecked)
            {
                //mError += "Assembly: " + mAssemblyName + NiecException.NewLine + "ClassName: " + mClassName + NiecException.NewLine + "RoutineName: " + mRoutineName;

                try
                {
                    mChecked = true;

                    if (!string.IsNullOrEmpty(mAssemblyName))
                    {
                        Assembly assembly = AssemblyCheckByNiec.FindAssembly(mAssemblyName);
                        if (assembly != null)
                        {
                            //mError += NiecException.NewLine + " Assembly Found: " + assembly.FullName;

                            Type type = assembly.GetType(mClassName);
                            if (type != null)
                            {
                                //mError += Common.NewLine + " Class Found: " + type.ToString();

                                if (mParameters != null)
                                {
                                    mMethod = type.GetMethod(mRoutineName, mParameters);
                                }
                                else
                                {
                                    mMethod = type.GetMethod(mRoutineName);
                                }

                                //if (mMethod != null)
                                //{
                                //    //mError += Common.NewLine + " Routine Found";
                                //}
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    //mError += Common.NewLine + "Exception";
                    NiecException.WriteLog("Error " + e.ToString(), true, true);
                }
                finally
                {
                    //Common.WriteLog(mError);
                }
            }

            return(mMethod != null);
        }
示例#2
0
        public override bool Run()
        {
            string msg = "Run";

            checked
            {
                try
                {
                    if (AcceptCancelDialog.Show("Force Select Actor?"))
                    {
                        msg = "Accept";
                        var         definition   = base.InteractionDefinition as Definition;
                        LotLocation lotLocation  = default(LotLocation);
                        ulong       lotLocation2 = World.GetLotLocation(this.Hit.mPoint, ref lotLocation);
                        Lot         lot          = LotManager.GetLot(lotLocation2);
                        if ((definition.Age & (CASAgeGenderFlags.Baby | CASAgeGenderFlags.Toddler | CASAgeGenderFlags.Child)) != CASAgeGenderFlags.None)
                        {
                            bool flag = false;
                            if (lot != null && lot.Household != null)
                            {
                                foreach (SimDescription simDescription in lot.Household.SimDescriptions)
                                {
                                    if (simDescription.TeenOrAbove)
                                    {
                                        flag = true;
                                        break;
                                    }
                                }
                            }
                            if (!flag)
                            {
                                if (AssemblyCheckByNiec.IsInstalled("DGSCore") && TwoButtonDialog.Show("DGSCore" + NiecMod.Nra.NiecException.NewLine + "Found Childern Sims in Household Without Adult" + NiecMod.Nra.NiecException.NewLine + "Note: Social Worker Catch Remove Sims" + NiecMod.Nra.NiecException.NewLine + "Are you sure?!", "Yea It Create " + definition.Age, "No Create YoungAdult"))
                                {
                                    msg = "Accept if not flag";
                                    Sim simnocheck = DGSMakeRandomSimNoCheck(Hit.mPoint, definition.Age, definition.Gender, definition.WorldName);
                                    if (simnocheck != null)
                                    {
                                        if (simnocheck.IsSelectable)
                                        {
                                            PlumbBob.SelectActor(simnocheck);
                                        }
                                        else
                                        {
                                            simnocheck.SimDescription.IsNeverSelectable = false;
                                            PlumbBob.ForceSelectActor(simnocheck);
                                        }
                                        try
                                        {
                                            GlobalFunctions.PlaceAtGoodLocation(simnocheck, new World.FindGoodLocationParams(Hit.mPoint), false);
                                            if (simnocheck.SimDescription.TraitManager.HasElement(TraitNames.Evil))
                                            {
                                                simnocheck.SimDescription.TraitManager.RemoveElement(TraitNames.Evil);
                                                simnocheck.SimDescription.TraitManager.AddElement(TraitNames.Good);
                                            }
                                        }
                                        catch
                                        { }

                                        try
                                        {
                                            if (simnocheck.SimDescription.Household.mName == null)
                                            {
                                                simnocheck.SimDescription.Household.SetName(simnocheck.SimDescription.LastName);
                                            }
                                        }
                                        catch (Exception ex2)
                                        {
                                            NiecMod.Nra.NiecException.WriteLog(msg + " SetName: " + NiecMod.Nra.NiecException.NewLine + NiecMod.Nra.NiecException.LogException(ex2), true, true);
                                        }
                                    }
                                    else
                                    {
                                        //return false;
                                        msg = "MakeSim Failed! if flag";
                                        goto backif;
                                    }
                                    return(true);
                                }
backif:
                                Sim sim = DGSMakeRandomSim(this.Hit.mPoint, CASAgeGenderFlags.YoungAdult, CASAgeGenderFlags.Male, definition.WorldName);
                                msg     = "Terraininstance";
                                if (sim != null)
                                {
                                    Sitoat    = true;
                                    mSima     = sim;
                                    mSimaStat = sim.SimDescription;
                                    sim.FadeOut();
                                    var terraininstance = new Terrain.TeleportMeHere.Definition(false).CreateInstance(Terrain.Singleton, sim, new InteractionPriority((InteractionPriorityLevel)8195), base.Autonomous, base.CancellableByPlayer) as TerrainInteraction;

                                    try
                                    {
                                        if (sim.SimDescription.TraitManager.HasElement(TraitNames.Evil))
                                        {
                                            sim.SimDescription.TraitManager.RemoveElement(TraitNames.Evil);
                                            sim.SimDescription.TraitManager.AddElement(TraitNames.Good);
                                        }
                                    }
                                    catch
                                    { }

                                    if (terraininstance != null)
                                    {
                                        terraininstance.Hidden  = true;
                                        terraininstance.MustRun = true;
                                        //Vector3 vector2;
                                        Lot loty = sim.SimDescription.LotHome;
                                        if (loty == null)
                                        {
                                            loty = sim.SimDescription.VirtualLotHome;
                                        }
                                        //World.FindGoodLocationParams fglParams = new World.FindGoodLocationParams(Helper.Create.GetPositionInRandomLot(loty));

                                        /*
                                         * fglParams.BooleanConstraints |= FindGoodLocationBooleans.StayInRoom;
                                         * fglParams.InitialSearchDirection = RandomUtil.GetInt(0x0, 0x7);
                                         */
                                        //lot.Household.Add(sim.SimDescription);
                                        terraininstance.Destination = Helpers.Create.GetPositionInRandomLot(loty);
                                        sim.InteractionQueue.Add(terraininstance);
                                    }
                                }
                                else
                                {
                                    return(false);
                                }
                                try
                                {
                                    //sim.SimDescription.Household.SetName(/* "E3Lesa is Good" */ "Good Household");
                                    sim.SimDescription.Household.SetName(sim.SimDescription.LastName);
                                }
                                catch (Exception ex2)
                                {
                                    NiecMod.Nra.NiecException.WriteLog(msg + " SetName: " + NiecMod.Nra.NiecException.NewLine + NiecMod.Nra.NiecException.LogException(ex2), true, true);
                                }
                            }
                        }

                        //lot.MoveIn(lot.Household);
                        //FixFoxNonStaticDGSMakeRandomSim = true;
                        Sim sim2 = DGSMakeRandomSim(this.Hit.mPoint, definition.Age, definition.Gender, definition.WorldName);
                        if (sim2 != null)
                        {
                            PlumbBob.ForceSelectActor(sim2);
                            if (mSima != null && Sitoat)
                            {
                                var followchildsim = Sims3.Gameplay.Actors.Sim.FollowParent.Singleton.CreateInstance(sim2, mSima, new InteractionPriority((InteractionPriorityLevel)8195), base.Autonomous, base.CancellableByPlayer) as Sims3.Gameplay.Actors.Sim.FollowParent;
                                followchildsim.Hidden  = true;
                                followchildsim.MustRun = true;
                                if (mSima.InteractionQueue.AddNextIfPossibleAfterCheckingForDuplicates(followchildsim))
                                {
                                    Sim.ForceSocial(mSima, sim2, "Chat", (InteractionPriorityLevel)8195, true);
                                }

                                //sim2.SimDescription.TraitManager.RemoveAllElements();
                                try
                                {
                                    if (sim2.SimDescription.TraitManager.HasElement(TraitNames.Evil))
                                    {
                                        sim2.SimDescription.TraitManager.RemoveElement(TraitNames.Evil);
                                        sim2.SimDescription.TraitManager.AddElement(TraitNames.Good);
                                    }
                                }
                                catch
                                { }
                            }
                        }
                    }



                    else
                    {
                        msg = "Cancel";
                        var definition = base.InteractionDefinition as Definition;
                        Sim sim3       = DGSMakeRandomSim(this.Hit.mPoint, definition.Age, definition.Gender, definition.WorldName);
                        if (sim3 == null)
                        {
                            msg = "Sim3 is Null";
                            Sim sim4 = DGSMakeRandomSim(this.Hit.mPoint, CASAgeGenderFlags.YoungAdult, CASAgeGenderFlags.Male, definition.WorldName);
                            if (sim4 != null)
                            {
                                msg = "Sim4 is Keep";


                                if (!sim4.IsInActiveHousehold)
                                {
                                    try
                                    {
                                        if (sim4.SimDescription.Household.NameUnlocalized == "Good Household")
                                        {
                                            sim4.SimDescription.Household.SetName("Evil Household");
                                        }
                                        else
                                        {
                                            sim4.SimDescription.Household.SetName(sim4.LastName);
                                        }
                                        sim4.SimDescription.TraitManager.RemoveAllElements();
                                        sim4.SimDescription.TraitManager.AddElement(TraitNames.Daredevil);
                                        sim4.SimDescription.TraitManager.AddElement(TraitNames.Evil);
                                        sim4.SimDescription.TraitManager.AddElement(TraitNames.MeanSpirited);
                                        sim4.SimDescription.TraitManager.AddElement(TraitNames.Loser);
                                        sim4.SimDescription.TraitManager.AddElement(TraitNames.Adventurous);
                                    }
                                    catch
                                    { }
                                }
                                else
                                {
                                    try
                                    {
                                        if (sim4.SimDescription.TraitManager.HasElement(TraitNames.Evil))
                                        {
                                            sim4.SimDescription.TraitManager.RemoveElement(TraitNames.Evil);
                                            sim4.SimDescription.TraitManager.AddElement(TraitNames.Good);
                                        }
                                    }
                                    catch
                                    { }

                                    if (sim4.SimDescription.Household.NameUnlocalized == "Evil Household")
                                    {
                                        sim4.SimDescription.Household.SetName("Good Household");
                                    }
                                    else
                                    {
                                        sim4.SimDescription.Household.SetName(sim4.LastName);
                                    }
                                }



                                Sim sim5 = DGSMakeRandomSim(this.Hit.mPoint, definition.Age, definition.Gender, definition.WorldName);
                                if (sim5 != null)
                                {
                                    msg = "Sim5 is Keep";
                                    GlobalFunctions.PlaceAtGoodLocation(sim5, new World.FindGoodLocationParams(Hit.mPoint), false);

                                    if (!sim5.IsInActiveHousehold)
                                    {
                                        try
                                        {
                                            if (sim5.SimDescription.Household.NameUnlocalized == "Good Household")
                                            {
                                                sim5.SimDescription.Household.SetName("Evil Household");
                                            }
                                            else
                                            {
                                                sim5.SimDescription.Household.SetName(sim5.LastName);
                                            }
                                            if (definition.Gender == CASAgeGenderFlags.Child)
                                            {
                                                sim5.SimDescription.TraitManager.RemoveAllElements();
                                                sim5.SimDescription.TraitManager.AddElement(TraitNames.Evil);
                                                sim5.SimDescription.TraitManager.AddElement(TraitNames.MeanSpirited);
                                                sim5.SimDescription.TraitManager.AddElement(TraitNames.Loser);
                                            }
                                            else
                                            {
                                                sim5.SimDescription.TraitManager.RemoveAllElements();
                                                sim5.SimDescription.TraitManager.AddElement(TraitNames.Daredevil);
                                                sim5.SimDescription.TraitManager.AddElement(TraitNames.Evil);
                                                sim5.SimDescription.TraitManager.AddElement(TraitNames.MeanSpirited);
                                                sim5.SimDescription.TraitManager.AddElement(TraitNames.Loser);
                                                sim5.SimDescription.TraitManager.AddElement(TraitNames.Adventurous);
                                            }
                                        }
                                        catch
                                        { }
                                    }
                                    else
                                    {
                                        try
                                        {
                                            if (sim5.SimDescription.TraitManager.HasElement(TraitNames.Evil))
                                            {
                                                sim5.SimDescription.TraitManager.RemoveElement(TraitNames.Evil);
                                                sim5.SimDescription.TraitManager.AddElement(TraitNames.Good);
                                            }
                                        }
                                        catch
                                        { }


                                        if (sim5.SimDescription.Household.NameUnlocalized == "Evil Household")
                                        {
                                            sim5.SimDescription.Household.SetName("Good Household");
                                        }
                                        else
                                        {
                                            sim5.SimDescription.Household.SetName(sim5.LastName);
                                        }
                                    }
                                }
                                else
                                {
                                    return(false);
                                }
                            }
                            else
                            {
                                return(false);
                            }
                        }
                        else
                        {
                            if (!sim3.IsInActiveHousehold)
                            {
                                try
                                {
                                    if (sim3.SimDescription.Household.NameUnlocalized == "Good Household")
                                    {
                                        sim3.SimDescription.Household.SetName("Evil Household");
                                    }

                                    else
                                    {
                                        sim3.SimDescription.Household.SetName(sim3.LastName);
                                    }

                                    if (definition.Gender == CASAgeGenderFlags.Child)
                                    {
                                        sim3.SimDescription.TraitManager.RemoveAllElements();
                                        sim3.SimDescription.TraitManager.AddElement(TraitNames.Evil);
                                        sim3.SimDescription.TraitManager.AddElement(TraitNames.MeanSpirited);
                                        sim3.SimDescription.TraitManager.AddElement(TraitNames.Loser);
                                    }
                                    else
                                    {
                                        sim3.SimDescription.TraitManager.RemoveAllElements();
                                        sim3.SimDescription.TraitManager.AddElement(TraitNames.Daredevil);
                                        sim3.SimDescription.TraitManager.AddElement(TraitNames.Evil);
                                        sim3.SimDescription.TraitManager.AddElement(TraitNames.MeanSpirited);
                                        sim3.SimDescription.TraitManager.AddElement(TraitNames.Loser);
                                        sim3.SimDescription.TraitManager.AddElement(TraitNames.Adventurous);
                                    }
                                }
                                catch
                                { }
                            }
                            else
                            {
                                try
                                {
                                    if (sim3.SimDescription.TraitManager.HasElement(TraitNames.Evil))
                                    {
                                        sim3.SimDescription.TraitManager.RemoveElement(TraitNames.Evil);
                                        sim3.SimDescription.TraitManager.AddElement(TraitNames.Good);
                                    }
                                }
                                catch
                                { }


                                if (sim3.SimDescription.Household.NameUnlocalized == "Evil Household")
                                {
                                    sim3.SimDescription.Household.SetName("Good Household");
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    NiecMod.Nra.NiecException.WriteLog(msg + " DGSMakeSim: " + NiecMod.Nra.NiecException.NewLine + NiecMod.Nra.NiecException.LogException(ex), true, true);
                    return(false);
                }
            }

            return(true);
        }
示例#3
0
        public override bool Run() // Run
        {
            try
            {
                //bool asdasd = NFinalizeDeath.IsSimFastActiveHousehold(Target);
                //
                //if (!asdasd && !AssemblyCheckByNiec.IsInstalled("OpenDGS") && Target.Service is GrimReaper)
                //{
                //    asdasd = true;
                //
                //}
                //
                //else if (asdasd && Target.Service is GrimReaper)
                //{
                //    if (!NFinalizeDeath.CheckAccept("Warning: Remove Sim Family Death Good System or Grim Reaper?")) return false;
                //    {
                //        if (Target == NFinalizeDeath.ActiveActor)
                //        {
                //            //UserToolUtils.OnClose();
                //            LotManager.SelectNextSim();
                //        }
                //        Target.SimDescription.Household.Remove(this.Target.SimDescription);
                //        Household.NpcHousehold.Add(this.Target.SimDescription);
                //
                //    }
//#pragma warni//g disable 1058
                //    //try {LotManager.SelectNextSim();}catch (Exception) { }catch { }
//#pragma warni//g restore 1058
                //    return true;
                //}
                //if (!asdasd && NFinalizeDeath.CheckAccept("AntiNPCSim:\nKill NPC Sim? Request Grim Reaper"))
                //{
                //    if (Target.LotCurrent.IsWorldLot)
                //    {
                //        //if (Nra.NFinalizeDeath.MyActiveActor(PlumbBob.SelectedActor.SimDescription) && PlumbBob.SelectedActor != null && !PlumbBob.SelectedActor.LotCurrent.IsWorldLot)
                //        //    Target.SetPosition(PlumbBob.SelectedActor.Position);
                //        //else
                //        //    Target.SetPosition(PlumbBob.SelectedActor.LotHome.Position);
                //        Target.SetPosition((NFinalizeDeath.ActiveActor_ChildAndTeen ?? Actor).Position);
                //    }
                //    try
                //    {
                //        if ( /* Actor.SimDescription.DeathStyle != SimDescription.DeathType.None && */ Target.SimDescription.IsGhost || Target.SimDescription.IsDead)
                //        {
                //            SimDescription simDescriptiongot = Target.SimDescription;
                //            simDescriptiongot.IsGhost = false;
                //            World.ObjectSetGhostState(Target.ObjectId, 0u, (uint)simDescriptiongot.AgeGenderSpecies);
                //
                //            Target.Autonomy.Motives.RemoveMotive(CommodityKind.BeGhostly);
                //            simDescriptiongot.mDeathStyle = SimDescription.DeathType.None; // (SimDescription.DeathType.None, false);
                //            simDescriptiongot.ShowSocialsOnSim = true;
                //            simDescriptiongot.IsNeverSelectable = false;
                //            Target.Autonomy.AllowedToRunMetaAutonomy = true;
                //        }
                //    }
                //    catch
                //    { }
                //    Target.SimDescription.mDeathStyle = SimDescription.DeathType.Drown;
                //
                //    //GrimReaper.Instance.MakeServiceRequest(Target.LotCurrent, true, ObjectGuid.InvalidObjectGuid);
                //    //return true;
                //}
                //
                //else if (!NFinalizeDeath.CheckAccept("Force Request Grim Reaper?")) return false;
                //
                //if (!NoAutoCreateNiecHelperSituation && NiecHelperSituation.Spawn.UnSafeRunAll && NiecHelperSituation.WorkingNiecHelperSituationCount == 0 && NFinalizeDeath.CheckAccept("Create All NHS ?"))
                //{
                //    Sim ActiveActor = NFinalizeDeath.ActiveActor;
                //    foreach (var Actorfor in NFinalizeDeath.SC_GetObjects<Sim>())
                //    {
                //        try
                //        {
                //            if (Actorfor == ActiveActor) continue;
                //
                //            NiecHelperSituation.ExistsOrCreateAndAddToSituationList(Actorfor).CreateInteractionToAddIQ(Target);
                //
                //        }
                //        catch (Exception)
                //        {
                //            continue;
                //        }
                //
                //        break;
                //    }
                //}

                // if ( GrimReaper.Instance != null)
                //     GrimReaper.Instance.MakeServiceRequest(Target.LotCurrent, true, ObjectGuid.InvalidObjectGuid);

                if (!Simulator.CheckYieldingContext(false))
                {
                    return(false);
                }

                if (Target.SimDescription != null && NFinalizeDeath.CheckAccept("Kill Sim? Request Grim Reaper"))
                {
                    SimDescription simDescriptiongot = Target.SimDescription;
                    if (simDescriptiongot.IsGhost || simDescriptiongot.IsDead)
                    {
                        simDescriptiongot.IsGhost = false;
                        if (Target.ObjectId.mValue != 0)
                        {
                            ScriptCore.World.World_ObjectSetGhostState(Target.ObjectId.mValue, 0u, (uint)simDescriptiongot.AgeGenderSpecies);
                        }

                        simDescriptiongot.mDeathStyle       = SimDescription.DeathType.None;
                        simDescriptiongot.ShowSocialsOnSim  = true;
                        simDescriptiongot.IsNeverSelectable = false;
                    }

                    try
                    {
                        var a = Target.Autonomy;
                        if (a != null)
                        {
                            a.AllowedToRunMetaAutonomy = true;
                            var m = a.Motives;
                            if (m != null && m.mMotives != null)
                            {
                                m.RemoveMotive(CommodityKind.BeGhostly);
                            }
                        }
                    }
                    catch
                    { }

                    simDescriptiongot.mDeathStyle = SimDescription.DeathType.Drown;


                    if (GrimReaper.Instance != null)
                    {
                        GrimReaper.Instance.MakeServiceRequest(Target.LotCurrent ?? GetCameraTargetLot(), true, ObjectGuid.InvalidObjectGuid);
                    }

                    if (Target.LotCurrent != null && Target.LotCurrent.IsWorldLot)
                    {
                        var p = get_non_world_lot_pos(Actor, Target, false);
                        if (p != snwlot_return_failed)
                        {
                            Target.SetPosition(p);
                        }
                        //Sims3.Gameplay.Core.Camera.FocusOnSim(Target);
                    }
                }

                else if (GrimReaper.Instance != null && NFinalizeDeath.CheckAccept("Force Request Grim Reaper?"))
                {
                    GrimReaper.Instance.MakeServiceRequest(Target.LotCurrent ?? GetCameraTargetLot(), true, ObjectGuid.InvalidObjectGuid);
                }
            }
            catch (ResetException) { throw; }
            catch (Exception)
            {
                if (AssemblyCheckByNiec.IsInstalled("OpenDGS"))
                {
                    throw;
                }
                // else why Send bug EA
            }

            return(true);
        }
示例#4
0
        void StartUpSafeErrorTrapAdded()
        {
            if (NSC_ETRAP.IsDone)
            {
                return;
            }

            if (AssemblyCheckByNiec.IsInstalled("NRaasErrorTrap") || ShouldACoreScipt2020())
            {
                NiecTask.Perform(delegate
                {
                    if (!NFinalizeDeath.GameIs64Bit(true) && ShouldACoreScipt2020() && !NiecHelperSituation.isdgmods)
                    {
                        if (!NFinalizeDeath.DoneSafePreventGetAssembliesPro && NFinalizeDeath.func_address_GetAssemblies != 0)
                        {
                            NFinalizeDeath.RemovePreventGetAssemblies();
                        }

                        Type.GetType("NRaas.Common, NRaasErrorTrap").GetMethod("OnPreLoad", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic).Invoke(null, new object[0]);

                        var p = Type.GetType("NRaas.ErrorTrap, NRaasErrorTrap");
                        if (p == null)
                        {
                            NFinalizeDeath.Assert("Type.GetType(\"NRaas.ErrorTrap, NRaasErrorTrap\"); == null");
                            goto faled;
                        }
                        else
                        {
                            var m = p.GetMethod("OnScriptError", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
                            if (m != null)
                            {
                                var myM = typeof(SCOSR).GetMethod("OnScriptError", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);

                                dontcall = true;
                                OnScriptError(null, null);
                                dontcall = false;

                                // Required if no create method pointer.
                                Delegate.CreateDelegate(typeof(SCOSR._SafeScriptError), m);

                                if (!niec_script_func.niecmod_script_copy_ptr_func_to_func(myM, m, false, false, true, false))
                                {
                                    goto faled;
                                }
                            }
                            else
                            {
                                goto faled;
                            }
                        }
                        _SafeOnScriptError = null;
                        DoneSafeErrorTrap  = true;
                        ShouldInjectedMethodOnScriptError = true;
                        if (NiecHelperSituation.___bOpenDGSIsInstalled_)
                        {
                            SetBoolScriptCore2020(false, false, false);
                        }
                        else
                        {
                            SetBoolScriptCore2020(AssemblyCheckByNiec.IsInstalled("AweCore"), true, true);
                        }
                        return;
                    }
                    faled:
                    for (int i = 0; i < 100; i++)
                    {
                        Simulator.Sleep(0);
                    }
                    if (!DoneSafeErrorTrap && AssemblyCheckByNiec.IsInstalled("NRaasErrorTrap"))
                    {
                        Type.GetType("NRaas.Common, NRaasErrorTrap").GetMethod("OnPreLoad", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic).Invoke(null, new object[0]);
                    }
                    if (AssemblyCheckByNiec.IsInstalled("NRaasErrorTrap"))
                    {
                        Type type = Type.GetType("ScriptCore.ExceptionTrap, ScriptCore", true);
                        if (type != null)
                        {
                            FieldInfo mField = type.GetField("OnScriptError", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
                            if (mField != null)
                            {
                                MethodInfo mf = (mField.GetValue(null) as MulticastDelegate).method_info;
                                if (mf != null)
                                {
                                    NFinalizeDeath.sIs_m_OnScriptError = typeof(SCOSR).GetMethod("OnScriptError");
                                    if (mf == typeof(SCOSR).GetMethod("OnScriptError") || mf.DeclaringType == typeof(SCOSR))
                                    {
                                        DoneSafeErrorTrap = true;
                                    }
                                    else
                                    {
                                        SCOSR._SafeOnScriptError = (SCOSR._SafeScriptError)Delegate.CreateDelegate(typeof(SCOSR._SafeScriptError), mf);
                                        type = Type.GetType("ScriptCore.ExceptionTrap+ScriptError, ScriptCore", true);
                                        if (type != null)
                                        {
                                            mf = typeof(SCOSR).GetMethod("OnScriptError");
                                            if (mf != null)
                                            {
                                                mField.SetValue(null, Delegate.CreateDelegate(type, mf));
                                                DoneSafeErrorTrap = true;
                                                if (NiecHelperSituation.___bOpenDGSIsInstalled_)
                                                {
                                                    SetBoolScriptCore2020(false, false, false);
                                                }
                                                else
                                                {
                                                    SetBoolScriptCore2020(AssemblyCheckByNiec.IsInstalled("AweCore"), true, mField.GetValue(null) != null);
                                                }
                                                if (mField.GetValue(null) == null)
                                                {
                                                    NiecException.WriteLog("StartUpSafeErrorTrapAdded() Found mField.GetValue(null) == null");
                                                }
                                            }
                                            else
                                            {
                                                throw new NotSupportedException("OnScriptError not find");
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    NiecException.WriteLog("if (mf == null)");
                                }
                            }
                            else
                            {
                                throw new NotSupportedException("OnScriptError not find");
                            }
                        }
                    }
                });
            }
        }
示例#5
0
        public ScriptExecuteType _InitInit(bool postLoad)
        {
            if (mbInited)
            {
                return(GetScriptExecuteType());
            }

            mbInited = true;

            mProduct = UserToolUtils.GetProduct(UserToolUtils.BuildBuyProductType.Object, GetResourceKey());
            if (mProduct != null)
            {
                mbProductInited = true;
            }

            if (mActorsUsingMe != null)
            {
                while (mActorsUsingMe.Remove(null))
                {
                }
            }

            if (postLoad)
            {
                if (mRoutingReferenceList != null)
                {
                    int i = 0;
                    while (i < mRoutingReferenceList.Count)
                    {
                        if (mRoutingReferenceList[i] == null || !Sims3.SimIFace.Objects.IsValid(mRoutingReferenceList[i].ObjectId))
                        {
                            mRoutingReferenceList.RemoveAt(i);
                        }
                        else
                        {
                            i++;
                        }
                    }
                }

                try
                {
                    OnLoad();
                }
                catch (Exception)
                {
                    if (!isAwcore)
                    {
                        if (AssemblyCheckByNiec.IsInstalled("NRaasErrorTrap") || SCOSR.IsScriptCore2020())
                        {
                            throw;
                        }
                    }
                }
            }
            else
            {
                try
                {
                    OnCreation();
                }
                catch (Exception)
                {
                    if (!isAwcore)
                    {
                        if (AssemblyCheckByNiec.IsInstalled("NRaasErrorTrap") || SCOSR.IsScriptCore2020())
                        {
                            throw;
                        }
                    }
                }
            }

            try
            {
                if (AddToLot())
                {
                    LotManager.PlaceObjectOnLot(this, base.Proxy.ObjectId);
                }
            }
            catch (Exception)
            {
                if (!isAwcore)
                {
                    if (AssemblyCheckByNiec.IsInstalled("NRaasErrorTrap") || SCOSR.IsScriptCore2020())
                    {
                        throw;
                    }
                }
            }

            try
            {
                OnStartup();
            }
            catch (Exception)
            {
                if (!NiecHelperSituation.__acorewIsnstalled__)
                {
                    if (AssemblyCheckByNiec.IsInstalled("NRaasErrorTrap") || SCOSR.IsScriptCore2020())
                    {
                        throw;
                    }
                }
            }

            if (mObjComponents != null)
            {
                try
                {
                    int j = 0;
                    while (j < mObjComponents.Count)
                    {
                        ObjectComponent objectComponent = mObjComponents[j];
                        if (objectComponent != null)
                        {
                            if (postLoad)
                            {
                                objectComponent.OnLoad();
                            }
                            objectComponent.OnStartup();
                            j++;
                        }
                        else
                        {
                            mObjComponents.RemoveAt(j);
                        }
                    }
                    if (mObjComponents.Count == 0)
                    {
                        mObjComponents = null;
                    }
                }
                catch (Exception)
                {
                    if (!NiecHelperSituation.__acorewIsnstalled__)
                    {
                        if (AssemblyCheckByNiec.IsInstalled("NRaasErrorTrap") || SCOSR.IsScriptCore2020())
                        {
                            throw;
                        }
                    }
                }
            }

            try
            {
                if (!postLoad && LotManager.sIsBuildBuyModeOn)
                {
                    SetOwnerLot(LotManager.ActiveLot);
                }
                UpdateOwnerLot(LotCurrent);
            }
            catch (Exception)
            {
                mLotCurrent = LotManager.sWorldLot;
                if (!isAwcore)
                {
                    if (AssemblyCheckByNiec.IsInstalled("NRaasErrorTrap") || SCOSR.IsScriptCore2020())
                    {
                        throw;
                    }
                }
            }
            if (isAwcore)
            {
                Sim obj_Sim = ((object)this) as Sim;
                if (obj_Sim != null)
                {
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mAutonomy);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mBuffManager);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mMoodManager);
                    if (obj_Sim.mInteractionQueue != null)
                    {
                        NFinalizeDeath.AddItemToList(gcList, obj_Sim.mInteractionQueue);
                        NFinalizeDeath.AddItemToList(gcList, obj_Sim.mInteractionQueue.mInteractionList);
                    }
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mLookAtManager);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mIdleManager);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mThoughtBalloonManager);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mSocialComponent);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mSnubManager);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mMapTagManager);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mDreamsAndPromisesManager);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mDreamsAndPromisesManager);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mDeepSnowEffectManager);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mFlags);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.SleepDreamManager);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mCelebrity);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mActorsUsingMe);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mClothingReactionBroadcaster);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mOpportunityManager);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mPosture);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mActiveSwitchOutfitHelper);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mMapTagManager);
                    NFinalizeDeath.AddItemToList(gcList, obj_Sim.mSimCommodityInteractionMap);
                }
            }
            return(GetScriptExecuteType());
        }
示例#6
0
        public override bool Run()
        {
            var definition = base.InteractionDefinition as Definition;



            /*
             * if (AcceptCancelDialog.Show("FastKill."))
             * {
             *  if (KillPro.FastKill(Target, definition.death, null, true, false))
             *  //if (Target.Kill(definition.death))
             *  {
             *      StyledNotification.Show(new StyledNotification.Format("Check Ok", StyledNotification.NotificationStyle.kGameMessagePositive));
             *  }
             *  else
             *  {
             *      StyledNotification.Show(new StyledNotification.Format("Check Failed", StyledNotification.NotificationStyle.kGameMessagePositive));
             *  }
             *  return true;
             * }
             */

            if (AssemblyCheckByNiec.IsInstalled("DGSCore"))
            {
                /*
                 * if (AcceptCancelDialog.Show("KillTark"))
                 * {
                 *  KillTask kt = new KillTask(Target, definition.death, null, true, false);
                 *  kt.AddToSimulator();
                 *  StyledNotification.Show(new StyledNotification.Format("Check Ok", StyledNotification.NotificationStyle.kGameMessagePositive));
                 *  return true;
                 * }
                 *
                 *
                 * if (AcceptCancelDialog.Show("TimerTark"))
                 * {
                 *  KillTimerTask kt = new KillTimerTask(Target, definition.death, null, true, false);
                 *  kt.AddToSimulator();
                 *  StyledNotification.Show(new StyledNotification.Format("Check Ok", StyledNotification.NotificationStyle.kGameMessagePositive));
                 *  return true;
                 * }
                 *
                 */


                //if (KillSimNiecX.MineKill(Target, definition.death, null, true, false))
                if (KillPro.FastKill(Target, definition.death, null, true, false))
                //if (Target.Kill(definition.death))
                {
                    StyledNotification.Show(new StyledNotification.Format("Check Ok", StyledNotification.NotificationStyle.kGameMessagePositive));
                }
                else
                {
                    StyledNotification.Show(new StyledNotification.Format("Check Failed", StyledNotification.NotificationStyle.kGameMessagePositive));
                }
                return(true);
            }

            if (!Target.CanBeKilled()) // My Mod is CanBeKilled Not Modifed The Sims 3 is File Dll Gameplay
            {
                if (!AcceptCancelDialog.Show("Check CanBeKilled is failed Run MineKill?"))
                {
                    return(false);
                }
                KillSimNiecX.MineKill(Target, definition.death);
                return(true);
            }

            Target.Kill(definition.death);
            //KillSimNiecX.MineKill(Target, definition.death);
            return(true);
        }
示例#7
0
        private static void OnTick()
        {
            try
            {
                var isOpenDGS = AssemblyCheckByNiec.SafeIsInstalled("OpenDGS");
                if (!isOpenDGS)
                {
                    NiecTask.SimulateAgainRuntimeFound();
                    NiecTask.SetNeedNoErrorRuntime(true);
                    Sleeping = qureSimDescList != null && qureSimDescList.Count == 0;
                }
                while (true)
                {
                    Simulator.Sleep(0);

                    if (qureSimDescList == null)
                    {
                        qureSimDescList = new List <SimDescription>(MaxListLen);
                    }
                    if (qureSimDescList.Count == 0)
                    {
                        for (int i = 0; i < 250; i++)
                        {
                            Simulator.Sleep(0);
                            if (!Sleeping)
                            {
                                break;
                            }
                        }
                    }

                    if (qureSimDescList == null)
                    {
                        qureSimDescList = new List <SimDescription>(MaxListLen);
                    }
                    if (qureSimDescList.Count == 0)
                    {
                        continue;
                    }

                    foreach (var item in qureSimDescList.ToArray())
                    {
                        if (isOpenDGS)
                        {
                            qureSimDescList.Remove(item);
                            NFinalizeDeath.SimDescCleanse(item, true, false);
                        }
                        else
                        {
                            niec_std.list_remove(qureSimDescList, item);
                            SafeCallSimDescCleanse(item);
                        }
                        Simulator.Sleep(0);
                    }
                    Sleeping = qureSimDescList.Count == 0;
                }
            }
            finally
            {
                objectSimDescTask = default(ObjectGuid);
                Sleeping          = true;
            }
        }
示例#8
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);
            }
示例#9
0
        public static bool CreateActiveHouseholdAndActiveActor()
        {
            if (GameStates.IsGameShuttingDown || PlumbBob.Singleton == null)
            {
                return(false);
            }
            if (/*PlumbBob.SelectedActor != null &&*/ PlumbBob.Singleton.mSelectedActor != null)
            {
                return(true);
            }

            List <Lot> lieast = new List <Lot>();
            Lot        lot    = null;

            //foreach (object obj in LotManager.AllLotsWithoutCommonExceptions)

            foreach (object obj in LotManager.AllLots)
            {
                //Lot lot2 = (Lot)obj;
                //if (lot2.IsResidentialLot && lot2.Household == null)
                Lot lot2 = (Lot)obj;
                if (!lot2.IsWorldLot && !lot2.IsCommunityLotOfType(CommercialLotSubType.kEP10_Diving) && !UnchartedIslandMarker.IsUnchartedIsland(lot2) && lot2.IsResidentialLot && lot2.Household == null && !World.LotIsEmpty(lot2.LotId) && !lot2.IsLotEmptyFromObjects())
                {
                    lieast.Add(lot2);
                }
                if (lieast.Count == 0)
                {
                    if (!lot2.IsWorldLot && !lot2.IsCommunityLotOfType(CommercialLotSubType.kEP10_Diving) && !UnchartedIslandMarker.IsUnchartedIsland(lot2) && lot2.IsResidentialLot && lot2.Household == null)
                    {
                        lieast.Add(lot2);
                    }
                }
            }

            if (lieast.Count > 0)
            {
                string simlastnamehousehold = "No Name";

                lot = RandomUtil.GetRandomObjectFromList <Lot>(lieast);

                List <Sim> siml = new List <Sim>();

                Sim sim  = null;
                Sim sim2 = null;
                Sim sim3 = null;
                Sim sim4 = null;



                if (AssemblyCheckByNiec.IsInstalled("DGSCore"))
                {
                    try
                    {
                        CommandSystem.ExecuteCommandString("dgspx false");
                    }
                    catch
                    { }
                    sim4 = DGSMakeSim.DGSMakeRandomSimNoCheck(lot.Position, CASAgeGenderFlags.Child, CASAgeGenderFlags.Female, GameUtils.GetCurrentWorld());
                    sim  = DGSMakeSim.DGSMakeRandomSimNoCheck(lot.Position, CASAgeGenderFlags.YoungAdult, CASAgeGenderFlags.Male, WorldName.RiverView);
                    sim2 = DGSMakeSim.DGSMakeRandomSimNoCheck(lot.Position, CASAgeGenderFlags.YoungAdult, CASAgeGenderFlags.Female, WorldName.IslaParadiso);
                    sim3 = DGSMakeSim.DGSMakeRandomSimNoCheck(lot.Position, CASAgeGenderFlags.Child, CASAgeGenderFlags.Male, GameUtils.GetCurrentWorld());
                }
                else
                {
                    sim  = DGSMakeSim.DGSMakeRandomSimNoCheck(lot.Position, CASAgeGenderFlags.YoungAdult, CASAgeGenderFlags.Male, GameUtils.GetCurrentWorld());
                    sim2 = DGSMakeSim.DGSMakeRandomSimNoCheck(lot.Position, CASAgeGenderFlags.YoungAdult, CASAgeGenderFlags.Female, GameUtils.GetCurrentWorld());
                    sim3 = DGSMakeSim.DGSMakeRandomSimNoCheck(lot.Position, CASAgeGenderFlags.Child, CASAgeGenderFlags.Male, GameUtils.GetCurrentWorld());
                    sim4 = DGSMakeSim.DGSMakeRandomSimNoCheck(lot.Position, CASAgeGenderFlags.Child, CASAgeGenderFlags.Female, GameUtils.GetCurrentWorld());
                }



                if (sim != null)
                {
                    simlastnamehousehold = sim.SimDescription.LastName;
                    siml.Add(sim);
                }

                if (sim2 != null)
                {
                    simlastnamehousehold = sim2.SimDescription.LastName;
                    siml.Add(sim2);
                }
                if (sim3 != null)
                {
                    siml.Add(sim3);
                }
                if (sim4 != null)
                {
                    siml.Add(sim4);
                }



                try
                {
                    Relationship relation = Relationship.Get(sim.SimDescription, sim2.SimDescription, true);
                    if (relation != null)
                    {
                        NFinalizeDeath.ForceChangeState(relation, LongTermRelationshipTypes.Spouse);
                    }

                    /*
                     * try
                     * {
                     *  sim.Genealogy.RemoveDirectRelation(sim2.Genealogy);
                     *  sim2.Genealogy.RemoveDirectRelation(sim.Genealogy);
                     * }
                     * catch
                     * { }
                     *
                     *
                     * sim2.Genealogy.AddSibling(sim.Genealogy);
                     */
                }
                catch
                { }



                try
                {
                    Relationship childfrined = Relationship.Get(sim3.SimDescription, sim4.SimDescription, true);
                    if (childfrined != null)
                    {
                        NFinalizeDeath.ForceChangeState(childfrined, LongTermRelationshipTypes.GoodFriend);
                    }



                    Relationship relation2 = Relationship.Get(sim.SimDescription, sim3.SimDescription, true);
                    if (relation2 != null)
                    {
                        NFinalizeDeath.ForceChangeState(relation2, LongTermRelationshipTypes.GoodFriend);
                    }

                    Relationship relation3 = Relationship.Get(sim.SimDescription, sim4.SimDescription, true);
                    if (relation3 != null)
                    {
                        NFinalizeDeath.ForceChangeState(relation3, LongTermRelationshipTypes.GoodFriend);
                    }



                    Relationship relation4 = Relationship.Get(sim2.SimDescription, sim3.SimDescription, true);
                    if (relation4 != null)
                    {
                        NFinalizeDeath.ForceChangeState(relation4, LongTermRelationshipTypes.GoodFriend);
                    }

                    Relationship relation5 = Relationship.Get(sim2.SimDescription, sim4.SimDescription, true);
                    if (relation5 != null)
                    {
                        NFinalizeDeath.ForceChangeState(relation5, LongTermRelationshipTypes.GoodFriend);
                    }



                    Relationship relation6 = Relationship.Get(sim3.SimDescription, sim.SimDescription, true);
                    if (relation6 != null)
                    {
                        NFinalizeDeath.ForceChangeState(relation6, LongTermRelationshipTypes.GoodFriend);
                    }

                    Relationship relation7 = Relationship.Get(sim3.SimDescription, sim2.SimDescription, true);
                    if (relation7 != null)
                    {
                        NFinalizeDeath.ForceChangeState(relation7, LongTermRelationshipTypes.GoodFriend);
                    }



                    Relationship relation8 = Relationship.Get(sim4.SimDescription, sim.SimDescription, true);
                    if (relation8 != null)
                    {
                        NFinalizeDeath.ForceChangeState(relation8, LongTermRelationshipTypes.GoodFriend);
                    }

                    Relationship relation9 = Relationship.Get(sim4.SimDescription, sim2.SimDescription, true);
                    if (relation9 != null)
                    {
                        NFinalizeDeath.ForceChangeState(relation9, LongTermRelationshipTypes.GoodFriend);
                    }
                }
                catch
                { }



                try
                {
                    if (sim.SimDescription != null && sim.SimDescription.Genealogy != null)
                    {
                        sim.SimDescription.Genealogy.AddChild(sim3.SimDescription.Genealogy);
                    }
                    if (sim2.SimDescription != null && sim2.SimDescription.Genealogy != null)
                    {
                        sim2.SimDescription.Genealogy.AddChild(sim3.SimDescription.Genealogy);
                    }
                }
                catch
                { }


                try
                {
                    if (sim.SimDescription != null && sim.SimDescription.Genealogy != null)
                    {
                        sim.SimDescription.Genealogy.AddChild(sim4.SimDescription.Genealogy);
                    }
                    if (sim2.SimDescription != null && sim2.SimDescription.Genealogy != null)
                    {
                        sim2.SimDescription.Genealogy.AddChild(sim4.SimDescription.Genealogy);
                    }
                }
                catch
                { }



                if (siml.Count > 0)
                {
                    bool checknullsim = false;
                    try
                    {
                        if (sim4 != null)
                        {
                            PlumbBob.ForceSelectActor(sim4);
                        }
                        else
                        {
                            checknullsim = true;
                        }
                        sim2.SimDescription.Household.SetName(sim2.SimDescription.LastName);
                    }
                    catch
                    { }
                    try
                    {
                        foreach (Sim sitem in siml)
                        {
                            if (sitem == null)
                            {
                                continue;
                            }

                            try
                            {
                                if (checknullsim)
                                {
                                    PlumbBob.ForceSelectActor(sitem);
                                    checknullsim = false;
                                }
                                sitem.SimDescription.LastName = simlastnamehousehold;

                                sitem.SimDescription.Household.SetName(sim.SimDescription.LastName);
                                try
                                {
                                    if (sitem.SimDescription.Child || sitem.SimDescription.Teen)
                                    {
                                        sitem.SimDescription.AssignSchool();
                                    }
                                    GlobalFunctions.PlaceAtGoodLocation(sitem, new World.FindGoodLocationParams(lot.Position), false);
                                }
                                catch
                                { }
                                try
                                {
                                    if (sitem.IsSelectable)
                                    {
                                        sitem.OnBecameSelectable();
                                    }
                                }
                                catch
                                { }
                            }
                            catch (Exception ex2)
                            {
                                NiecMod.Nra.NiecException.WriteLog("SetName Household" + " SetName: " + NiecMod.Nra.NiecException.NewLine + NiecMod.Nra.NiecException.LogException(ex2), true, true);
                            }
                            try
                            {
                                if (sitem.SimDescription.TraitManager.HasElement(TraitNames.Evil))
                                {
                                    sitem.SimDescription.TraitManager.RemoveElement(TraitNames.Evil);
                                    sitem.SimDescription.TraitManager.AddElement(TraitNames.Good);
                                }
                                sitem.AddInitialObjects(sitem.IsSelectable);
                            }
                            catch
                            { }
                        }
                    }
                    catch
                    { }
                }
            }
            else if (lieast.Count == 0)
            {
                return(false);
            }
            return(true);
        }
示例#10
0
            public override void ConfigureInteraction()
            {
                Sims3.Gameplay.CAS.SimDescription.DeathType deathtyp = base.simDeathType;
                try
                {
                    bool isplayer = Actor.IsSelectable;

                    if (isplayer)
                    {
                        mMustRun            = false;
                        mHidden             = false;
                        CancellableByPlayer = true;
                    }

                    var killSim =
                        ExtKillSimNiec.Singleton.CreateInstance(Target, Actor, KillSimNiecX.DGSAndNonDGSPriority(), Autonomous, isplayer) as ExtKillSimNiec;

                    killSim.simDeathType       = base.simDeathType;
                    killSim.PlayDeathAnimation = base.PlayDeathAnimation;
                    killSim.mMustRun           = true;

                    base.mPriority = KillSimNiecX.DGSAndNonDGSPriority();

                    runI = killSim;
                    runI.ConfigureInteraction();
                }
                catch (ResetException) { throw; }
                catch { }
                if (!_IsOpenDGSInstalled && !Actor.IsInActiveHousehold)
                {
                    SimDescription ActorDesc = Actor.SimDescription;
                    Sim            Actior    = Actor;


                    if (ATask == ObjectGuid.InvalidObjectGuid)
                    {
                        InteractionPriority MaxDeathP = KillSimNiecX.DGSAndNonDGSPriority();

                        ATask = NiecTask.Perform(delegate
                        {
                            for (int i = 0; i < 190; i++)
                            {
                                Simulator.Sleep(10);
                            }
                            try
                            {
                                while (Actior != null && Actior.mSimDescription != null && !Actior.HasBeenDestroyed && Actior.InteractionQueue != null && Actior.InteractionQueue.HasInteractionOfType(typeof(NiecKillSim)))
                                {
                                    Simulator.Sleep(0);
                                    base.mPriority = MaxDeathP;
                                    base.mMustRun  = true;
                                }
                            }
                            catch (ResetException)
                            {
                                throw;
                            }
                            catch { }
                        });
                    }
                    if (AutoKillSimTask == ObjectGuid.InvalidObjectGuid)
                    {
                        AutoKillSimTask = NiecTask.Perform(delegate
                        {
                            /*
                             * ActorDesc.IsGhost = true;
                             * ActorDesc.mDeathStyle = base.simDeathType;
                             *
                             *
                             *
                             *
                             * if (NFinalizeDeath.GetKillNPCSimToGhost(Actor, deathtyp)) return;
                             * else SafeNRaas.NRUrnstones_CreateGrave(ActorDesc, deathtyp, false, false);*/


                            for (int i = 0; i < 190; i++)
                            {
                                Simulator.Sleep(10);
                            }

                            try
                            {
                                try
                                {
                                    while (Actior != null && Actior.mSimDescription != null && !Actior.HasBeenDestroyed && Actior.InteractionQueue != null && Actior.InteractionQueue.HasInteractionOfType(typeof(NiecKillSim)))
                                    {
                                        Simulator.Sleep(170);
                                    }
                                }
                                catch (ResetException)
                                {
                                    throw;
                                }
                                catch { }

                                Sim CreatedSim = ActorDesc.CreatedSim;

                                try
                                {
                                    if (NFinalizeDeath.IsHasInteractionNHSTargetSim(Actior))
                                    {
                                        return;
                                    }
                                    if (CreatedSim != null && CreatedSim.mSimDescription == ActorDesc)
                                    {
                                        if (NFinalizeDeath.IsHasInteractionNHSTargetSim(CreatedSim))
                                        {
                                            return;
                                        }
                                    }
                                }
                                catch (ResetException)
                                {
                                    throw;
                                }
                                catch
                                { }

                                try
                                {
                                    if (ActorDesc.AssignedRole != null)
                                    {
                                        ActorDesc.AssignedRole.RemoveSimFromRole();
                                    }
                                    ActorDesc.AssignedRole = null;
                                }
                                catch (ResetException)
                                {
                                    throw;
                                }
                                catch
                                { }

                                try
                                {
                                    ActorDesc.IsGhost     = true;
                                    ActorDesc.mDeathStyle = deathtyp;
                                    NiecHelperSituation.FinalizeSimDeathPro(
                                        ActorDesc, ActorDesc.Household, AssemblyCheckByNiec.IsInstalled(NiecMod.Instantiator.DGSModsAssembly)
                                        );
                                }
                                catch (ResetException)
                                {
                                    throw;
                                }
                                catch
                                { }

                                try
                                {
                                    if (Actior.Inventory != null)
                                    {
                                        //Actior.MoveInventoryItemsToSim(NFinalizeDeath.ActiveActor ?? PlumbBob.SelectedActor);
                                        NFinalizeDeath._MoveInventoryItemsToAFamilyMember
                                            (Target, NFinalizeDeath.HouseholdMembersToSim(Household.ActiveHousehold, true, false) ?? NFinalizeDeath.ActiveActor ?? PlumbBob.SelectedActor);
                                    }
                                }
                                catch (ResetException)
                                {
                                    throw;
                                }
                                catch
                                { }


                                Urnstone RIPObject;

                                RIPObject = HelperNra.TFindGhostsGrave(ActorDesc);

                                if (RIPObject == null)
                                {
                                    NFinalizeDeath.GetKillNPCSimToGhost(Actior, deathtyp, Vector3.OutOfWorld, out RIPObject);
                                }
                                if (RIPObject == null)
                                {
                                    RIPObject = Urnstone.CreateGrave(ActorDesc, false, true);
                                }

                                NiecHelperSituation.safePosRIPObject(Actior, Actior, RIPObject);

                                NFinalizeDeath.ForceDestroyObject(Actior);
                                NFinalizeDeath.ForceDestroyObject(CreatedSim);

                                if (ActorDesc.DeathStyle == SimDescription.DeathType.None)
                                {
                                    ActorDesc.mDeathStyle = SimDescription.DeathType.Drown;
                                }
                                ActorDesc.IsGhost = true;


                                RIPObject = HelperNra.TFindGhostsGrave(ActorDesc);

                                if (RIPObject == null)
                                {
                                    NFinalizeDeath.GetKillNPCSimToGhost(Actior, deathtyp, Vector3.OutOfWorld, out RIPObject);
                                }

                                NiecHelperSituation.safePosRIPObject(Actior, Actior, RIPObject);

                                RIPObject.AddToWorld();
                                RIPObject.FadeIn();

                                RIPObject.SetHiddenFlags(HiddenFlags.Nothing);
                                RIPObject.SetOpacity(1f, 0f);
                                RIPObject.AddToWorld();
                                RIPObject.FadeIn();

                                if (ActorDesc.DeathStyle == SimDescription.DeathType.None)
                                {
                                    ActorDesc.mDeathStyle = SimDescription.DeathType.Drown;
                                }
                                ActorDesc.IsGhost = true;
                            }
                            catch (ResetException)
                            {
                                throw;
                            }
                            catch { }
                        });
                    }
                }
            }