public override bool Run() { NiecTask.Perform(() => { Nra.NFinalizeDeath.CheatWindowPro_internal(); }); return(true); }
public static int NNiecDelAllDesc(object[] parameters) { try { NiecTask.Perform(AintAllDelDesc); } catch { } return(-1); }
public static int TestCommandI(object[] parameters) { try { NiecTask.Perform(TestCommand); } catch { } return(-1); }
public static bool StartUp() { if (objectSimDescTask != NiecRunCommand.NiecInvalidObjectGuid) { Simulator.DestroyObject(objectSimDescTask); } objectSimDescTask = NiecTask.Perform(OnTick); if (qureSimDescList == null) { qureSimDescList = new List <SimDescription>(MaxListLen); } return(objectSimDescTask != NiecRunCommand.NiecInvalidObjectGuid); }
public override bool Run() { NiecTask.Perform(delegate { try { RXXun(); } finally { evt = false; Cleanup(); } }); evt = true; return(true); }
public static void OnWorldLoadFinishedHandler(object sender, System.EventArgs e) { try { //Sims3.NiecModList.Persistable.ListCollon.NiecSimDescriptions.Clear(); if (NFinalizeDeath.Adertyrty) { NiecTask.Perform(AintAllDelDescX); } else { foreach (SimDescription sdtyf in NiecMod.Nra.NFinalizeDeath.TattoaX()) // OK Full One World! { try { if (!Sims3.NiecModList.Persistable.ListCollon.NiecSimDescriptions.Contains(sdtyf)) { Sims3.NiecModList.Persistable.ListCollon.NiecSimDescriptions.Add(sdtyf); } } catch { } } } } catch { } try { foreach (Sim sim in Sims3.Gameplay.Queries.GetObjects <Sim>()) { if (sim != null) { AddInteractions(sim); } } } catch (Exception exception) { Exception(exception); } sSimInstantiatedListener = EventTracker.AddListener(EventTypeId.kSimInstantiated, new ProcessEventDelegate(OnSimInstantiated)); }
public void _NDispose(bool clearInstantiatedBit, bool keepPartnerGenealogy, bool addMiniSim, bool fromPostWorldInit, bool destroyAging) { if (runI) { return; } if (niec_native_func.cache_done_niecmod_native_debug_text_to_debugger) { try { throw new Exception("_NDispose"); } catch (Exception ex) { niec_native_func.OutputDebugString("NMScriptN Exception Log\n" + ex.ToString() + "\nEnd"); } } SimDescription simd = (SimDescription)this; NiecTask.Perform(() => { NFinalizeDeath.SimDescCleanse(simd, true, false); }); }
/* * DebugString: "_NFixUp(): if (ListCollon.NullSimSimDescription == this)" * DebugString: "NMScript Exception Log * System.Exception: no message * #0: 0x0001f throw in Sims3.Gameplay.CAS.Sims3.Gameplay.CAS.SimDescription:Fixup () () #1: 0x00050 callvirt in NRaas.OverwatchSpace.Alarms.NRaas.OverwatchSpace.Alarms.RecoverMissingSims:PrivatePerformAction (bool) (9193E9C0 [0] ) #2: 0x00011 callvirt in NRaas.OverwatchSpace.Alarms.NRaas.OverwatchSpace.Alarms.AlarmOption:PerformAction (bool) (9193E9C0 [0] ) #3: 0x00002 call in NRaas.OverwatchSpace.Alarms.NRaas.OverwatchSpace.Alarms.AlarmOption:PerformAlarm () () #4: 0x0001b callvirt in NRaas.NRaas.Overwatch:OnTimer () () #5: 0x00000 in Sims3.Gameplay.Sims3.Gameplay.Function:Invoke () () #6: 0x00003 callvirt in NRaas.Common+FunctionTask:Simulate () () */ public void _NFixUp() { if (runI) { return; } if (ListCollon.NullSimSimDescription == this) { if (niec_native_func.cache_done_niecmod_native_debug_text_to_debugger) { niec_native_func.OutputDebugString("_NFixUp(): if (ListCollon.NullSimSimDescription == this)"); try { throw new Exception("no message"); } catch (Exception ex) { NiecException.SendTextExceptionToDebugger(ex); } } mIsValidDescription = false; NFinalizeDeath.SimDesc_NullToEmpty(this); mIsValidDescription = true; if (UnsafeFixNUllSimDESC) { var p = NFinalizeDeath.GetSafeSelectActor(); if (p != null && p.SimDescription != null) { mOutfits = p.SimDescription.Outfits; } if (!waitrunningtask01) { waitrunningtask01 = true; NiecTask.Perform(() => { for (int i = 0; i < 800; i++) { Simulator.Sleep(0); } waitrunningtask01 = false; NFinalizeDeath.SimDescCleanse(this, true, false); }); } } else if (!waitrunningtask01) { waitrunningtask01 = true; NiecTask.Perform(() => { for (int i = 0; i < 50; i++) { Simulator.Sleep(0); } waitrunningtask01 = false; NFinalizeDeath.SimDescCleanse(this, true, true); }); } return; } mIsValidDescription = true; if (base.TraitManager != null) { base.TraitManager.SetSimDescription(this); base.TraitManager.Fixup(); } if (CreatedSim != null && CreatedSim.Inventory != null) { foreach (TraitChip item in CreatedSim.Inventory.FindAll <TraitChip>(false)) { item.OnLoadFixup(); if (item.Owner == null) { item.SetOwner(this); } } } MiniSimDescription miniSimDescription = MiniSimDescription.Find(SimDescriptionId); if ((GameStates.IsTravelling || GameStates.IsEditingOtherTown) && miniSimDescription != null) { base.CASGenealogy = miniSimDescription.Genealogy; } if (GameObjectRelationships != null) { int i = 0; while (i < GameObjectRelationships.Count) { if (!Sims3.SimIFace.Objects.IsValid(GameObjectRelationships[i].GameObjectDescription.GameObject.ObjectId)) { GameObjectRelationships.RemoveAt(i); } else { i++; } } } if (mGenealogy == null) { mGenealogy = new Genealogy(this); } if (SkillManager == null) { SkillManager = new SkillManager(this); } else { SkillManager.OnLoadFixup(); } if (CareerManager == null) { CareerManager = new CareerManager(this); } else { CareerManager.OnLoadFixup(); } if (VisaManager == null) { VisaManager = new VisaManager(this); } else { VisaManager.OnLoadFixup(); } if (CelebrityManager == null) { CelebrityManager = new CelebrityManager(SimDescriptionId); } else if (CelebrityManager.Owner == null) { CelebrityManager.ResetOwnerSimDescription(SimDescriptionId); } if (LifeEventManager == null || !LifeEventManager.IsValid) { LifeEventManager = new LifeEventManager(this); } LifeEventManager.ClearInvalidActiveNodes(); if (OccultManager == null) { OccultManager = new OccultManager(this); } else { OccultManager.OnLoadFixup(); } if (IsPet) { if (PetManager == null) { PetManager = CreatePetManager(); } } else if (PetManager != null) { PetManager.Dispose(); PetManager = null; } if (IsEP11Bot) { if (TraitChipManager == null) { TraitChipManager = new TraitChipManager(this); } else if (TraitChipManager.Owner == null) { TraitChipManager.ResetOwnerSimDescription(SimDescriptionId); } TraitChipManager.OnLoadFixup(); } else if (TraitChipManager != null) { TraitChipManager.Dispose(); TraitChipManager = null; } AssignSchool(); if (mSimDescriptionId == 0) { MakeUniqueId(); } if (ReadBookDataList == null) { ReadBookDataList = new Dictionary <string, ReadBookData>(); } PushAgingEnabledToAgingManager(); if (mInitialShape.Owner == null || mCurrentShape.Owner == null || mInitialShape.Owner != this || mCurrentShape.Owner != this) { mInitialShape.Owner = (mCurrentShape.Owner = this); } if (OpportunityHistory == null) { OpportunityHistory = new OpportunityHistory(); } if (Sims3.Gameplay.Gameflow.sGameLoadedFromWorldFile && !Household.IsTravelImport && !GameStates.IsIdTravelling(SimDescriptionId)) { mDisplayedShape.Owner = mCurrentShape.Owner; mDisplayedShape.Fit = mCurrentShape.Fit; mDisplayedShape.Weight = mCurrentShape.Weight; mDisplayedShape.Pregnant = mCurrentShape.Pregnant; ResetLifetimeHappinessStatistics(); mHomeWorld = GameUtils.GetCurrentWorld(); } if (mHomeWorld == WorldName.Undefined) { mHomeWorld = GameUtils.GetCurrentWorld(); } if (RelicStats == null) { RelicStats = new RelicStatTracking(this); } RelicStats.SetSimDescription(this); if (TombStats == null) { TombStats = new TombStatTracking(this); } TombStats.SetSimDescription(this); if (Singing == null) { Singing = new SingingInfo(this); } Singing.SetSimDesctiption(this); if (AssignedRole != null) { AssignedRole.OnLoadFixUp(); } Lot lot = LotManager.GetLot(mVirtualLotId); if (lot != null) { lot.VirtualMoveIn(this); } if (Species == CASAgeGenderFlags.None) { Species = CASAgeGenderFlags.Human; } if (!CASLogic.GetSingleton().IsMusicTypeInstalled(FavoriteMusic)) { RandomizeFavoriteMusic(); } if (GetCurrentOutfits() != null) { OutfitCategories[] array = new OutfitCategories[5] { OutfitCategories.None, OutfitCategories.All, OutfitCategories.CategoryMask, OutfitCategories.PrimaryCategories, OutfitCategories.PrimaryHorseCategories }; foreach (var outfitCategories in array) { if (GetOutfitCount(outfitCategories) > 0) { RemoveOutfits(outfitCategories, false); if (base.mMaternityOutfits != null) { base.mMaternityOutfits.Remove(outfitCategories); } if (base.mOutfits != null) { base.mOutfits.Remove(outfitCategories); } } } } if (!GameUtils.IsInstalled(ProductVersion.EP4)) { Sim.PlayPretend.RemoveAllChildCostumeOutfits(this); if (CreatedSim != null && CreatedSim.CurrentOutfitCategory == OutfitCategories.ChildImagination) { CreatedSim.SwitchToOutfitWithoutSpin(OutfitCategories.Everyday); } RemoveOutfits(OutfitCategories.ChildImagination, true); base.Outfits.Remove(OutfitCategories.ChildImagination); if (SpoiledGiftHistory != null) { SpoiledGiftHistory.Clear(); SpoiledGiftHistory = null; } } if (CreatedSim != null && (OccultManager == null || !OccultManager.HasOccultType(OccultTypes.Vampire | OccultTypes.Genie | OccultTypes.Werewolf | OccultTypes.Ghost)) && mSkinToneKey.InstanceId == 15475186560318337848uL) { World.ObjectSetVisualOverride(CreatedSim.ObjectId, eVisualOverrideTypes.Genie, null); } }
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"); } } } }); } }
public static void OnScriptError(ScriptCore.ScriptProxy proxy, Exception ex) { if (dontcall) { return; } if (proxy == null) { NFinalizeDeath.ThrowResetException(""); } if (safeerrorbool && !ShouldInjectedMethodOnScriptError) { if (_SafeOnScriptError != null && ex != null) { try { _SafeOnScriptError(proxy, ex); } catch (Exception) { // NRaas Failed } } return; } if (!Simulator.CheckYieldingContext(false)) { if (NiecHelperSituation.___bOpenDGSIsInstalled_) { if (_SafeOnScriptError != null && ex != null) { try { _SafeOnScriptError(proxy, ex); } catch (Exception) { // NRaas Failed } } } return; } else if (NiecHelperSituation.___bOpenDGSIsInstalled_) { if (_SafeOnScriptError != null && ex != null) { try { _SafeOnScriptError(proxy, ex); } catch (Exception) { // NRaas Failed } } return; } var proxyTarget = proxy.Target; if (proxyTarget == null) { NFinalizeDeath.ThrowResetException(""); } global::Sims3.SimIFace.Simulator.Sleep(110); Sim proxySim = proxyTarget as Sim; if (proxySim != null) { if (proxySim.SimDescription == null) { proxySim.mSimDescription = Create.NiecNullSimDescription(); proxySim.mSimDescription.mSim = proxySim; } if (NFinalizeDeath.SimIsGRReaper(proxySim.SimDescription)) { while (true) { if (!(proxySim.mPosture is NiecHelperSituationPosture)) { NiecRunCommand.fcreap_Icommand(proxySim, false, true); } if (mGrimReaperSmoke != null && !mGrimReaperSmoke.ParentTo(proxySim, Sim.FXJoints.Pelvis)) { var p = mGrimReaperSmoke; mGrimReaperSmoke = null; p.Stop(); p.Dispose(); p = null; } if (mGrimReaperSmoke == null) { mGrimReaperSmoke = VisualEffect.Create("reaperSmokeConstant"); if (mGrimReaperSmoke != null) { proxySim.FadeIn(); mGrimReaperSmoke.ParentTo(proxySim, Sim.FXJoints.Pelvis); mGrimReaperSmoke.Start(); } } if (NiecHelperSituation.ExistsOrCreateAndAddToSituationList(proxySim) != null) { NiecHelperSituationPosture.r_internal(proxySim); } NFinalizeDeath.CheckYieldingContext(); if (NFinalizeDeath.GetCurrentExecuteType() == Sims3.SimIFace.ScriptExecuteType.Task) { global::Sims3.SimIFace.Simulator.Sleep(10); } else { global::Sims3.SimIFace.Simulator.Sleep(0); } } } else { while (true) { try { //proxySim.DoInteraction(); if (!Bim.AOrGROnlyRunningSim || NFinalizeDeath.SimIsGRReaper(proxySim.SimDescription) || proxySim == (NPlumbBob.DoneInitClass ? NFinalizeDeath.GetSafeSelectActor() : PlumbBob.SelectedActor)) { Bim.FoundInteraction(proxySim); Simulator.Sleep(0); } else { proxySim.LoopIdle(); Simulator.Sleep(0); } } catch (ResetException) { throw; } catch { NFinalizeDeath.CheckYieldingContext(); if (!proxySim.IsSelectable) { NiecHelperSituationPosture.r_internal(proxySim); } else { global::Sims3.SimIFace.Simulator.Sleep(100); } } NFinalizeDeath.CheckYieldingContext(); if (NFinalizeDeath.GetCurrentExecuteType() == Sims3.SimIFace.ScriptExecuteType.Task) { global::Sims3.SimIFace.Simulator.Sleep(10); } else { global::Sims3.SimIFace.Simulator.Sleep(0); } } } } SimUpdate proxySimUpdate = proxyTarget as SimUpdate; if (proxySimUpdate != null) { var sim = proxySimUpdate.mSim; if (sim == null || !NFinalizeDeath.GameObjectIsValid(sim.ObjectId.mValue)) { var p = proxySimUpdate.Proxy; if (p != null) { Simulator.DestroyObject(p.ObjectId); } NFinalizeDeath.CheckYieldingContext(); Simulator.Sleep(uint.MaxValue); NFinalizeDeath.ThrowResetException(""); return; } Simulator.Sleep(500); if (NiecHelperSituation.__acorewIsnstalled__) { return; } } var proxyLot = proxyTarget as Sims3.Gameplay.Core.Lot; if (proxyLot != null) { while (true) { NFinalizeDeath.CheckYieldingContext(); if (NFinalizeDeath.GetCurrentExecuteType() == Sims3.SimIFace.ScriptExecuteType.Task) { global::Sims3.SimIFace.Simulator.Sleep(10); } else { global::Sims3.SimIFace.Simulator.Sleep(0); } try { Sims3.Gameplay.Utilities.AlarmManager alarmManger = proxyLot.mSavedData != null ? proxyLot.mSavedData.mAlarmManager : null; if (alarmManger != null) { for (int i = 0; i < 5; i++) { NFinalizeDeath.SimulateAlarm(alarmManger, true, true, false); } } if (proxyLot.mSavedData == null) { continue; } proxyLot.UpdateDoorPrivacy(); proxyLot.UpdateDetailPriority(); if (proxyLot.DisplayLevelChanged) { proxyLot.UpdateDisplayLevelInfo(); proxyLot.DisplayLevelChanged = false; } if (proxyLot.ShouldSimulate) { if (proxyLot.mLastTime == 0f) { proxyLot.mLastTime = SimClock.ElapsedTime(TimeUnit.Minutes); } else { float timePassed = SimClock.ElapsedTimeInMinutes(ref proxyLot.mLastTime); proxyLot.UpdateReactions(timePassed, true); if (GameUtils.IsInstalled(ProductVersion.EP7)) { for (int i = 0; i < 5; i++) { proxyLot.UpdateNumZombiesOnLot(timePassed + i); } } } } else if (proxyLot.mSavedData.mBroadcastersWithSims != null && proxyLot.mSavedData.mBroadcastersWithSims.Count > 0) { if (proxyLot.mLastTime == 0f) { proxyLot.mLastTime = SimClock.ElapsedTime(TimeUnit.Minutes); } else { proxyLot.UpdateReactions(SimClock.ElapsedTimeInMinutes(ref proxyLot.mLastTime), false); } } try { for (int i = 0; i < 5; i++) { proxyLot.UpdateReactions(3 + i, true); } } catch (global::Sims3.SimIFace.ResetException) { throw; } catch { } } catch (global::Sims3.SimIFace.ResetException exT) { NiecTask.Perform(delegate { if (_SafeOnScriptError != null) { _SafeOnScriptError(proxy, exT); } }); throw; } catch { NFinalizeDeath.CheckYieldingContext(); for (int i = 0; i < 200; i++) { Simulator.Sleep(0); } } } } Sims3.Gameplay.Autonomy.AutonomyManager proxyAutonomyManager = proxyTarget as Sims3.Gameplay.Autonomy.AutonomyManager; if (proxyAutonomyManager != null) { proxy.mExecuteType = ScriptExecuteType.Threaded; Simulator.Sleep(150); if (NiecHelperSituation.__acorewIsnstalled__) { return; } } Sims3.Gameplay.Services.Services proxyServices = proxyTarget as Sims3.Gameplay.Services.Services; if (proxyServices != null) { proxyServices.mServiceIndex = 0; proxy.mExecuteType = ScriptExecuteType.Threaded; Simulator.Sleep(1000); if (NiecHelperSituation.__acorewIsnstalled__) { return; } } var alarmOneShot = proxyTarget as Sims3.Gameplay.Utilities.AlarmManager.AlarmOneShot; if (alarmOneShot != null) { alarmOneShot.mStarted = true; var ofp = alarmOneShot.mFunction; if (ofp == null) { try { Sims3.Gameplay.Abstracts.GameObject.RemoveOneShotFunctionOnFinish(Simulator.CurrentTask); } catch (Exception) { } Simulator.DestroyObject(Simulator.CurrentTask); goto r; } try { alarmOneShot.mFunction = null; if (ofp != null) { ofp(); } } catch (ResetException) { throw; } catch (Exception exX) { if (!NiecHelperSituation.__acorewIsnstalled__) { alarmOneShot.HandleException(exX); } } r :; try { Sims3.Gameplay.Abstracts.GameObject.RemoveOneShotFunctionOnFinish(Simulator.CurrentTask); } catch (Exception) { } Simulator.DestroyObject(Simulator.CurrentTask); if (alarmOneShot.mAlarmManager != null && alarmOneShot.mAlarmManager.mAlarmOneShotList != null) { alarmOneShot.mAlarmManager.mAlarmOneShotList.Remove(alarmOneShot); } proxy.mTarget = null; return; } var oneShotFunc = proxyTarget as Sims3.Gameplay.OneShotFunction; if (oneShotFunc != null) { var ofp = oneShotFunc.mFunction; if (ofp == null) { try { Sims3.Gameplay.Abstracts.GameObject.RemoveOneShotFunctionOnFinish(Simulator.CurrentTask); } catch (Exception) { } Simulator.DestroyObject(Simulator.CurrentTask); return; } try { oneShotFunc.mFunction = null; if (ofp != null) { ofp(); } } catch (ResetException) { throw; } catch (Exception exX) { if (!NiecHelperSituation.__acorewIsnstalled__) { oneShotFunc.HandleException(exX); } } try { Sims3.Gameplay.Abstracts.GameObject.RemoveOneShotFunctionOnFinish(Simulator.CurrentTask); } catch (Exception) { } Simulator.DestroyObject(Simulator.CurrentTask); proxy.mTarget = null; return; } //var roleMangerTask = proxyTarget as Sims3.Gameplay.Roles.RoleManagerTask; //if (NiecHelperSituation.__acorewIsnstalled__ && Instantiator.NACSDCInject && roleMangerTask != null && Simulator.CheckYieldingContext(false) && (ShouldInjectedMethodOnScriptError ? Type.GetType("NRaas.RegisterSpace.Tasks.RoleManagerTaskEx, NRaasRegister", false) != null : true)) //{ // //if (AssemblyCheckByNiec.IsInstalled("NRaasRegister") && // // Simulator.CheckYieldingContext(false)) // { // //Simulator.Sleep(uint.MaxValue); // while (true) // { // Simulator.Sleep(0); // for (int i = 0; i < 3; i++) // { // NiecRunCommand.native_testcpu_debug(null, null); // } // } // } //} if (_SafeOnScriptError != null && ex != null) { _SafeOnScriptError(proxy, ex); } }
public static void InitClass() { if (CheckLoop == -1) { //if (Sims3.NiecModList.Persistable.ListCollon.NullSimSimDescription == null) // Sims3.NiecModList.Persistable.ListCollon.NullSimSimDescription = new SimDescription(); LoadSaveManager.ObjectGroupSaving += OnSavingGame; NiecTask.Perform(() => { while (true) { Simulator.Sleep(0); CheckLoop = 0; } }); //NiecTask.Perform(() => //{ // if (NULLSIMDESC as SimDescription == null) // NULLSIMDESC = new SimDescription(); // // SimDescCleanseTask.SafeCallSimDescCleanse((SimDescription)NULLSIMDESC); // // while (true) // { // Simulator.Sleep(0); // for (int i = 0; i < 1350; i++) // { // Simulator.Sleep(0); // } // // var p = NULLSIMDESC as SimDescription; // if (p != null) // { // SimDescCleanseTask.SafeCallSimDescCleanse(p); // } // } //}); NiecTask.Perform(() => { while (Helpers.Create.NiecNullSimDescription(true, false, true) == null) { Simulator.Sleep(0); } if (SimDescription.sLoadedSimDescriptions != null) { SimDescription.sLoadedSimDescriptions.Remove(Sims3.NiecModList.Persistable.ListCollon.NullSimSimDescription); } while (true) { Simulator.Sleep(0); for (int i = 0; i < 350; i++) { Simulator.Sleep(0); } var p = Sims3.NiecModList.Persistable.ListCollon.NullSimSimDescription; if (p != null && (p.Household == Household.sNpcHousehold || p.Household == Household.sPetHousehold || p.Household == Household.sAlienHousehold)) { NFinalizeDeath.Household_Remove(p, true); if (p.IsValid || p.IsValidDescription) { SimDescCleanseTask.SafeCallSimDescCleanseO1(p); } p.mSim = Bim.nullsim; } } }); CreateSimDesc(null, CASAgeGenderFlags.None, CASAgeGenderFlags.None, default(ResourceKey), 0, null, WorldName.Undefined, 0, false); CreatePetBabyPetSimDescription(null, null, null, null, false, GeneticsPet.SetName.DoNotSetName, null, -1, OccultTypes.None, WorldName.Undefined); CreatePetFamily(null, null, CASAgeGenderFlags.None, CASAgeGenderFlags.None, CASAgeGenderFlags.None, null, false, GeneticsPet.SetName.DoNotSetName, -1, OccultTypes.None); CreatePet(null, CASAgeGenderFlags.None, CASAgeGenderFlags.None, CASAgeGenderFlags.None, null, WorldName.Undefined); CreateRobot(default(ResourceKey)); CheckLoop = 0; } }
public override bool Run() { CarService car = ((Definition)base.InteractionDefinition).Car; try { if (!Actor.HasBeenDestroyed) { bool Ok; if (car != null) { Ok = CarNpcManager.Singleton.DriveAwayInNpcCar(car, Actor, Target); if (Ok) { car.GetOut(Actor); } if (Actor.SimDescription.VirtualLotHome != null) { Sim.MakeSimGoHome(Actor, false); return(true); } if (!Ok) { Ok = WalkOffLot(); } } else { if (Actor.SimDescription.VirtualLotHome != null) { Sim.MakeSimGoHome(Actor, false); return(true); } Ok = WalkOffLot(); } return(Ok); } return(false); } finally { NiecTask.Perform(delegate { if (car == null || car.Passengers == null) { return; } car.GetOut(Actor); Actor.FadeOut(); Sim[] copypa = (Sim[])car.Passengers.Clone(); foreach (var item in copypa) { if (item == null) { continue; } //item.AddToWorld(); //item.FadeIn(); car.GetOut(item); item.FadeOut(); } Simulator.Sleep(100); foreach (var item in copypa) { if (item == null) { continue; } item.AddToWorld(); item.FadeIn(); } if (car != null) { car.Destroy(); } Actor.AddToWorld(); Actor.FadeIn(); }); } }
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 { } }); } } }
// Methods public override bool Run() // Run { Target.DisableInteractions(InteractionsDisabledType.Autonomous); Target.DisAlry = true; AI = AlarmManager.Global.AddAlarm( 5f, // Time TimeUnit.Hours, // Unit of Time new AlarmTimerCallback(delegate { NiecTask.Perform(delegate { AlarmManager.Global.RemoveAlarm(AI); AI = AlarmHandle.kInvalidHandle; if (!Target.HasBeenDestroyed) { Target.DisAlry = false; Target.EnableInteractions(InteractionsDisabledType.Autonomous); } List <Sim> list = new List <Sim>(); foreach (Sim sim in NFinalizeDeath.SC_GetObjects <Sim>()) { if (sim == null) { continue; } if (!sim.IsInActiveHousehold && sim.LotCurrent != NFinalizeDeath.ActiveHousehold.LotHome) { list.Add(sim); } } if (list.Count > 0) { for (int next = 0; next < 3; ++next) { Sim randomObjectFromList = RandomUtil.GetRandomObjectFromList <Sim>(list); if (!randomObjectFromList.InWorld) { randomObjectFromList.AddToWorld(); randomObjectFromList.Motives.SetMax(CommodityKind.Hunger); } else if (randomObjectFromList.Occupation != null) { randomObjectFromList.Occupation.FireSim(false); } if (randomObjectFromList.InteractionQueue != null) { InteractionInstance inr = VisitLot.Singleton.CreateInstance(NFinalizeDeath.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true); inr.Hidden = true; inr.MustRun = true; randomObjectFromList.InteractionQueue.Add(inr); randomObjectFromList.InteractionQueue.Add(inr); } } } }); }), null, AlarmType.AlwaysPersisted, null); /* * List<Sim> list = new List<Sim>(); * foreach (Sim sim in LotManager.Actors) * { * if (sim == null) continue; * if (!sim.IsInActiveHousehold && sim.LotCurrent != NFinalizeDeath.ActiveHouseholdWithoutDGSCore.LotHome) * { * list.Add(sim); * } * } * if (list.Count > 0) * { * Sim randomObjectFromList = RandomUtil.GetRandomObjectFromList<Sim>(list); * if (!randomObjectFromList.InWorld) * { * randomObjectFromList.AddToWorld(); * } * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * randomObjectFromList.InteractionQueue.Add(VisitLot.Singleton.CreateInstance(Household.ActiveHousehold.LotHome, randomObjectFromList, new InteractionPriority((InteractionPriorityLevel)349), false, true)); * return true; * } */ return(true); }
internal static void r_internal(Sim Actor) { NiecHelperSituationPosture nhsp = null; if (Actor != null && !NFinalizeDeath.GameObjectIsValid(Actor.ObjectId.mValue)) //NFinalizeDeath.GetObject_internalFastO(Actor.ObjectId.mValue) == null) { nhsp = (Actor.Posture as NiecHelperSituationPosture); Actor.mPosture = null; if (nhsp != null) { nhsp._Actor = null; nhsp.PBack = null; } } if (Actor == null || Actor.ObjectId.mValue != ScriptCore.Simulator.Simulator_GetCurrentTaskImpl() || !Simulator.CheckYieldingContext(false)) { return; } var sim = Actor; bool bNeedMaxMood = false; Posture pBackUp = null; if (sim.Posture is NiecHelperSituationPosture) { nhsp = (sim.Posture as NiecHelperSituationPosture); pBackUp = nhsp.PBack; bNeedMaxMood = nhsp.NeedMaxMood; nhsp._Actor = null; if (sim.Standing is NiecHelperSituationPosture) { sim.Standing = null; sim.mPosture = null; if (sim.mSimDescription != null) { if (sim.mSimDescription.IsPet) { PetStandingPosture dr = new PetStandingPosture(sim); sim.PetSittingOnGround = new PetSittingOnGroundPosture(sim); sim.Standing = dr; sim.Posture = null; } else { Sim.StandingPosture dre = new Sim.StandingPosture(sim); sim.Standing = dre; sim.Posture = null; } } } else if (nhsp.PBack != null) { sim.mPosture = nhsp.PBack;//sim.Standing; } else { sim.mPosture = sim.Standing; } nhsp.PBack = null; } if (Disallowr_internal || (NiecHelperSituation.ExAA && sim == (NPlumbBob.DoneInitClass ? NFinalizeDeath.GetSafeSelectActor() : PlumbBob.SelectedActor))) { return; } if (!TestDEBUGMyMod && !SCOSR.IsScriptCore2020() && !IsOpenDGSInstalled && NFinalizeDeath.baCheckACoreThrowNRaasErrorTrap && NiecHelperSituation.__acorewIsnstalled__ && NFinalizeDeath.IsSTAwesomeMod02Fast <Sim>() ) { if (nhsp != null) { NiecTask.Perform(delegate { Simulator.Sleep(450); var p = sim.mPosture; if (p is NiecHelperSituationPosture) { return; } //NFinalizeDeath.Assert(nhsp != null, "r_internal(): nhsp failed!"); if (p != null && p == p.PreviousPosture) { p.PreviousPosture = null; } sim.mPosture = p = nhsp; nhsp.PBack = pBackUp; nhsp._Actor = sim; if (p != null && p == p.PreviousPosture) { p.PreviousPosture = null; } }); } NFinalizeDeath.AntiSpy_ThrowDefault(); } var lookm = Actor.LookAtManager; if (lookm != null) { lookm.DisableLookAts(); } lookm = null; // i know Saving TaskContext Failed. From OnSavingGame() nhsp = null; // pBackUp = null; // //using(SafeSimUpdate.Run(sim)) { while (true) { NFinalizeDeath.CheckYieldingContext(); if (NiecHelperSituation.__acorewIsnstalled__ && !NiecHelperSituation.___bOpenDGSIsInstalled_) { var iV = ScriptCore.Queries.Query_CountObjects(typeof(Sim)); if (iV >= 2) { NiecRunCommand.native_testcpu_debug(null, null); } else if (iV == 1) { for (int i = 0; i < 3; i++) { NiecRunCommand.native_testcpu_debug(null, null); } } } if (!IsOpenDGSInstalled && NFinalizeDeath.GetCurrentExecuteType() == ScriptExecuteType.Task) { Simulator.Sleep(20); } else { Simulator.Sleep(IsOpenDGSInstalled ? 15u:0u); } if (NiecHelperSituation.__acorewIsnstalled__ && !NiecHelperSituation.___bOpenDGSIsInstalled_) { var iV = ScriptCore.Queries.Query_CountObjects(typeof(Sim)); if (iV >= 2) { NiecRunCommand.native_testcpu_debug(null, null); } else if (iV == 1) { for (int i = 0; i < 3; i++) { NiecRunCommand.native_testcpu_debug(null, null); } } } if (!NFinalizeDeath.SimIsNiecHelperSituation(sim)) { continue; } if (Simulator.GetProxy(sim.ObjectId) == null) { break; } if (Disallowr_internal || (NiecHelperSituation.ExAA && sim == (NPlumbBob.DoneInitClass ? NFinalizeDeath.GetSafeSelectActor() : PlumbBob.SelectedActor))) { break; } var simIQ = sim.InteractionQueue; try { if (IsOpenDGSInstalled) { if (sim.SimDescription == null) { break; } if (simIQ == null) { break; } } else { if (sim.SimDescription == null) { sim.mSimDescription = Create.NiecNullSimDescription(true, false, true); } if (NFinalizeDeath.SimIsGRReaper(sim.SimDescription)) { NiecHelperSituation.ExistsOrCreateAndAddToSituationList(sim); } if (simIQ == null) { sim.mInteractionQueue = simIQ = new Sims3.Gameplay.ActorSystems.InteractionQueue(sim); } else { if (simIQ.mInteractionList == null) { simIQ.mInteractionList = new List <InteractionInstance>(); } else { while (simIQ.mInteractionList != null && niec_std.list_remove(simIQ.mInteractionList, null)) //simIQ.mInteractionList.Remove(null)) { Simulator.Sleep(0); } } } } } catch (NMAntiSpyException) { NFinalizeDeath.SafeForceTerminateRuntime(); } catch (StackOverflowException) { sim.mPosture = null; throw; } catch (ResetException) { throw; } catch { NFinalizeDeath.CheckYieldingContext(); if (IsOpenDGSInstalled) { throw; } else { for (int i = 0; i < 45; i++) { Simulator.Sleep(0); } continue; } } if (bNeedMaxMood) { try { NFinalizeDeath.Sim_MaxMood(sim); } catch (NMAntiSpyException) { NFinalizeDeath.SafeForceTerminateRuntime(); } catch (StackOverflowException) { if (!IsOpenDGSInstalled) { NFinalizeDeath.ThrowResetException(null); } throw; } catch (ResetException) { throw; } catch { NFinalizeDeath.CheckYieldingContext(); if (IsOpenDGSInstalled) { throw; } else { for (int i = 0; i < 45; i++) { Simulator.Sleep(0); } continue; } } } try { if (!IsOpenDGSInstalled && sim.mAutonomy != null) { //var sg = sim.mAutonomy; try { AutonomyManager.Add(sim.mAutonomy); } catch (NMAntiSpyException) { NFinalizeDeath.SafeForceTerminateRuntime(); } catch (StackOverflowException) { if (!IsOpenDGSInstalled) { NFinalizeDeath.ThrowResetException(null); } throw; } catch (ResetException) { throw; } catch { } } var simIQList = simIQ.mInteractionList; if (simIQList == null || simIQList.Count == 0) { continue; } var simIQListArray = simIQList.ToArray(); for (int i = 0; i < simIQListArray.Length; i++) { InteractionInstance inCurrentInteraction = simIQListArray[i]; if (inCurrentInteraction == null || inCurrentInteraction.InteractionDefinition == null) { while (simIQList != null && niec_std.list_remove(simIQList, null))//simIQList.Remove(null)) { Simulator.Sleep(0); simIQList = simIQ.mInteractionList; } if (simIQList == null) { break; } continue; } if (IsOpenDGSInstalled) { if (simIQList.IndexOf(inCurrentInteraction) != 0) { break; } } else if (i != 0) { break; } if (simIQList == null) { break; } if (!NFinalizeDeath.InteractionIsNiecHelperSituationPosture_internal(sim, inCurrentInteraction)) { //simIQList.Remove(inCurrentInteraction); niec_std.list_remove(simIQList, inCurrentInteraction); if (IsOpenDGSInstalled) { try { inCurrentInteraction.CallCallbackOnFailure(sim); inCurrentInteraction.Cleanup(); } catch (NMAntiSpyException) { NFinalizeDeath.SafeForceTerminateRuntime(); } catch (StackOverflowException) { sim.mPosture = null; throw; } catch (ResetException) { throw; } catch (Exception) { NFinalizeDeath.CheckYieldingContext(); if (IsOpenDGSInstalled) { throw; } } } else { if (inCurrentInteraction.Target is Sim) { inCurrentInteraction.mInstanceActor = inCurrentInteraction.Target; } } if (sim.IsSelectable) { simIQ.FireQueueChanged(); } break; } if (!Bim.TestInteractionEx(inCurrentInteraction) || (IsOpenDGSInstalled && !inCurrentInteraction.IsTargetValid())) { // simIQList.Remove(inCurrentInteraction); niec_std.list_remove(simIQList, inCurrentInteraction); try { inCurrentInteraction.CallCallbackOnFailure(sim); inCurrentInteraction.Cleanup(); } catch (NMAntiSpyException) { NFinalizeDeath.SafeForceTerminateRuntime(); } catch (StackOverflowException) { sim.mPosture = null; throw; } catch (ResetException) { throw; } catch (Exception) { NFinalizeDeath.CheckYieldingContext(); if (IsOpenDGSInstalled) { throw; } } //if (IsOpenDGSInstalled) // simIQ.DeQueue(false); if (sim.IsSelectable) { simIQ.FireQueueChanged(); } continue; } simIQ.mIsHeadInteractionLocked = true; var runningInList = simIQ.mRunningInteractions; if (runningInList != null) { runningInList.Push(inCurrentInteraction); } try { inCurrentInteraction.CallCallbackOnStart(sim); } catch (NMAntiSpyException) { NFinalizeDeath.SafeForceTerminateRuntime(); } catch (StackOverflowException) { sim.mPosture = null; throw; } catch (ResetException) { throw; } catch { NFinalizeDeath.CheckYieldingContext(); if (IsOpenDGSInstalled) { throw; } } simIQ.mIsHeadInteractionActive = true; bool okI = false; try { okI = NFinalizeDeath._RunInteractionWithoutCleanUp(inCurrentInteraction); if (okI) { inCurrentInteraction.CallCallbackOnCompletion(sim); } else { inCurrentInteraction.CallCallbackOnFailure(sim); } } catch (NMAntiSpyException) { NFinalizeDeath.SafeForceTerminateRuntime(); } catch (StackOverflowException) { if (!IsOpenDGSInstalled) { try { NiecTask.Perform(inCurrentInteraction.Cleanup); } catch (StackOverflowException) {} NFinalizeDeath.ThrowResetException(null); } throw; } catch (ResetException) { throw; } catch { NFinalizeDeath.CheckYieldingContext(); if (IsOpenDGSInstalled) { throw; } } if (IsOpenDGSInstalled && Simulator.CheckYieldingContext(false)) { simIQ.PutDownCarriedObjects(inCurrentInteraction); } simIQ = sim.InteractionQueue; if (simIQ == null) { inCurrentInteraction.Cleanup(); break; } NFinalizeDeath.CheckYieldingContext(); if (IsOpenDGSInstalled) { simIQ.PutDownCarriedObjects(inCurrentInteraction); } simIQ.mIsHeadInteractionActive = false; simIQ.mIsHeadInteractionLocked = false; //if (IsOpenDGSInstalled) // simIQ.DeQueue(okI); if (runningInList != null && runningInList.Count > 0) { runningInList.Pop(); } simIQList = simIQ.mInteractionList; if (simIQList == null) { inCurrentInteraction.Cleanup(); break; } NFinalizeDeath.CheckYieldingContext(); //simIQList.Remove(inCurrentInteraction); niec_std.list_remove(simIQList, inCurrentInteraction); inCurrentInteraction.Cleanup(); NFinalizeDeath.CheckYieldingContext(); while (simIQList != null && niec_std.list_remove(simIQList, null)) { Simulator.Sleep(0); simIQList = simIQ.mInteractionList; } if (simIQList == null) { break; } if (sim.IsSelectable) { simIQ.FireQueueChanged(); } } } catch (NMAntiSpyException) { NFinalizeDeath.SafeForceTerminateRuntime(); } catch (StackOverflowException) { sim.mPosture = null; throw; } catch (ResetException) { throw; } catch { NFinalizeDeath.CheckYieldingContext(); if (IsOpenDGSInstalled) { throw; } else { for (int i = 0; i < 45; i++) { Simulator.Sleep(0); } continue; } } }//} //NFinalizeDeath.M(); }