Exemple #1
0
            public override bool Run()
            {
                if (Actor == PlumbBob.SelectedActor)
                {
                    return(true);
                }

                try
                {
                    BeginCommodityUpdates();
                    bool OkRoute = Actor.RouteToDynamicObjectRadius(Target, 1.5f, Sim.kChildCurfewDistanceFromAdult, null, null);
                    if (!OkRoute)
                    {
                        var goHome = GoHome.Singleton.CreateInstance(Actor.LotHome, Actor, new InteractionPriority(InteractionPriorityLevel.High), false, true);
                        Actor.InteractionQueue.Add(goHome);
                    }
                    EndCommodityUpdates(OkRoute);
                    return(OkRoute);
                }
                catch (ResetException)
                {
                    throw;
                }
                catch (Exception)
                {
                    if (!NFinalizeDeath.IsAllActiveHousehold_SimObject(Actor) &&
                        !NFinalizeDeath.IsAllActiveHousehold_SimObject(Target) &&
                        !(Actor.SimDescription.Service is GrimReaper) &&
                        !(Target.SimDescription.Service is GrimReaper) &&
                        RandomUtil.RandomChance(85)
                        )
                    {
                        return(NFinalizeDeath.ForceNHSReapSoul(Target, Actor));
                    }
                    throw;
                }
            }
Exemple #2
0
        // public static Sim Aora => null;
        public override bool Run()
        {
            if (!Simulator.CheckYieldingContext(false))
            {
                return(false);
            }
            var definition = InteractionDefinition as Definition;

            NFinalizeDeath.Assert(definition != null, "InteractionDefinition as KillInLotCurrent.Definition Failed!");
            var deathType = definition != null ? definition.death : SimDescription.DeathType.Drown;

            if (Autonomous || Actor != PlumbBob.SelectedActor)
            {
                return(false);
            }
            if (!NFinalizeDeath.CheckAccept("Are You Sure MineKill Lot Current Get Sims?"))
            {
                return(false);
            }

            try
            {
                //var list = new List<Sim>();
                foreach (Sim sim in NFinalizeDeath.SC_GetObjectsOnLot <Sim>(Target.LotCurrent)) //Target.LotCurrent.GetAllActors())
                {
                    if (NiecHelperSituation.SimHasBeenDestroyed(sim))
                    {
                        if (NFinalizeDeath.ForceDestroyObject(sim, false))
                        {
                            continue;
                        }
                    }
                    if (sim != null && sim.SimDescription != null && !NFinalizeDeath.IsAllActiveHousehold_SimObject(sim) && !(sim.Service is GrimReaper))
                    {
                        //list.Add(sim);

                        if (sim.mInteractionQueue == null)
                        {
                            sim.mInteractionQueue = new Sims3.Gameplay.ActorSystems.InteractionQueue(sim);
                        }
                        if (NFinalizeDeath.IsOpenDGSInstalled)
                        {
                            KillPro.FastKill(sim, deathType, Actor, true, false);
                        }
                        else
                        {
                            var createKillSim = NFinalizeDeath.Interaction_CreateKillSim(sim, deathType);
                            if (createKillSim == null)
                            {
                                continue;
                            }
                            sim.mInteractionQueue.Add(createKillSim);
                        }
                    }
                }
                //if (list.Count > 0)
                //{
                //    foreach (Sim nlist in list)
                //    {
                //        KillPro.FastKill(nlist, definition.death, Actor, true, false);
                //        //KillSimNiecX.MineKill(nlist, definition.death, null, true, false);
                //    }
                //}
                return(true);
            }

            catch (Exception exception)
            {
                NiecException.PrintMessage(exception.Message + NiecException.NewLine + exception.StackTrace);
                return(true);
            }
        }