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); }
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); }
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); }
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 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()); }
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); }
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; } }
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); }
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); }
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 { } }); } } }