Exemple #1
0
            public override List <Sim> GetYouShouldTargets(Sim thisActor, Sim pushedSocialActor)
            {
                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);

                SocialInteractionA.Definition pushedSocialDefinition = new SocialInteractionA.Definition(mPushedSocialActionKey, new string[0x0], null, false);
                pushedSocialDefinition.ChecksToSkip = mChecksToSkip;

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

                foreach (Sim sim in pushedSocialActor.LotCurrent.GetAllActors())
                {
                    if (sim == thisActor)
                    {
                        continue;
                    }

                    if (sim == pushedSocialActor)
                    {
                        continue;
                    }

                    GreyedOutTooltipCallback tooltipCallback = null;
                    if (!PushedSocialTest(pushedSocialActor, sim, pushedSocialDefinition, priority, tooltipCallback))
                    {
                        continue;
                    }

                    list.Add(sim);
                }

                return(list);
            }
        public bool SharedNearDistanceBehavior(float routingDistance, float loopTime)
        {
            EWWait.Definition waitDefinition = new EWWait.Definition();
            EWWait            waitInstance   = waitDefinition.CreateInstance(mMedicineCat, mMedicineCat,
                                                                             new InteractionPriority(InteractionPriorityLevel.UserDirected), false,
                                                                             CancellableByPlayer) as EWWait;

            waitInstance.SetInteractionName("Treat " + Actor.Name);
            mMedicineCat.InteractionQueue.AddNext(waitInstance);

            if (!Actor.RouteToObjectRadius(Target, routingDistance))
            {
                waitInstance.waitComplete = true;
                return(false);
            }
            EnterStateMachine("eatofffloor", "Enter", "x");
            SetParameter("isFish", false);
            BeginCommodityUpdates();
            AnimateSim("EatOffFloorLoop");
            bool flag = DoTimedLoop(loopTime, ExitReason.Default);

            EndCommodityUpdates(flag);
            mDestroyPrey = true;
            AnimateSim("Exit");
            waitInstance.waitComplete = true;

            if (mSuccess)
            {
                Actor.ShowTNSIfSelectable("EWLocalize - Successful treatment",
                                          NotificationStyle.kGameMessagePositive);
                Actor.BuffManager.RemoveElement(mBuffID);
                if (Actor.GetDistanceToObjectSquared(mMedicineCat) <= kMaxDistanceForSimToReact
                    * kMaxDistanceForSimToReact)
                {
                    // Say thank you
                    SocialInteractionA.Definition definition2 = new SocialInteractionA.Definition("Nuzzle Auto Accept",
                                                                                                  new string[0], null, initialGreet: false);
                    InteractionInstance nuzzleInteraction = definition2.CreateInstance(mMedicineCat, Actor,
                                                                                       new InteractionPriority(InteractionPriorityLevel.UserDirected), false,
                                                                                       true);
                    Actor.InteractionQueue.TryPushAsContinuation(this, nuzzleInteraction);
                }
                DoLtrAdjustment(goodReaction: true);
            }
            else
            {
                Actor.ShowTNSIfSelectable("EWLocalize - Failed treatment",
                                          NotificationStyle.kGameMessagePositive);
                DoLtrAdjustment(goodReaction: false);
            }
            treatmentComplete = true;
            return(flag);
        }
Exemple #3
0
        public override void Perform(Sim sim, DiseaseVector vector)
        {
            if (SimTypes.IsDead(sim.SimDescription))
            {
                return;
            }

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

            foreach (Sim other in sim.LotCurrent.GetSims())
            {
                if (other == sim)
                {
                    continue;
                }

                if (mRoomOnly)
                {
                    if (other.RoomId != sim.RoomId)
                    {
                        continue;
                    }
                }

                sims.Add(other);
            }

            if (sims.Count == 0)
            {
                return;
            }

            Sim choice = RandomUtil.GetRandomObjectFromList(sims);

            try
            {
                if (sim.SimDescription.IsZombie)
                {
                    InteractionInstance entry = new Sim.ZombifiedSocials.Definition(Sim.ZombifiedSocials.Definition.eInteractionType.Braaaiiins).CreateInstance(choice, sim, new InteractionPriority(InteractionPriorityLevel.High), true, true);
                    sim.InteractionQueue.AddNext(entry);
                }
                else if (mSocial != "Braaaiiins")
                {
                    InteractionInstance entry = new SocialInteractionA.Definition(mSocial, null, null, false).CreateInstance(choice, sim, new InteractionPriority(InteractionPriorityLevel.High), true, true);

                    sim.InteractionQueue.AddNext(entry);
                }
            }
            catch (Exception e)
            {
                Common.DebugException(sim, choice, e);
            }
        }
Exemple #4
0
            public override List <Sim> GetYouShouldTargets(Sim thisActor, Sim pushedSocialActor)
            {
                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);

                SocialInteractionA.Definition pushedSocialDefinition = new SocialInteractionA.Definition(mPushedSocialActionKey, new string[0x0], null, false);
                pushedSocialDefinition.ChecksToSkip = mChecksToSkip;

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

                foreach (Sim sim in pushedSocialActor.LotCurrent.GetAllActors())
                {
                    if (sim == thisActor)
                    {
                        continue;
                    }

                    if (sim == pushedSocialActor)
                    {
                        continue;
                    }

                    if (sim.SimDescription.HasActiveRole)
                    {
                        continue;
                    }

                    GreyedOutTooltipCallback tooltipCallback = null;
                    if (!PushedSocialTest(pushedSocialActor, sim, pushedSocialDefinition, priority, tooltipCallback))
                    {
                        continue;
                    }

                    ActionData data = ActionData.Get(mPushedSocialActionKey);
                    if ((data != null) && ((data.IntendedCommodityString == CommodityTypes.Amorous) || (data.IntendedCommodityString == AmorousCommodity.sAmorous2)))
                    {
                        // Custom Function
                        string reason;
                        if (!CommonSocials.CanGetRomantic(sim.SimDescription, pushedSocialActor.SimDescription, false, true, true, ref tooltipCallback, out reason))
                        {
                            continue;
                        }
                    }

                    list.Add(sim);
                }

                return(list);
            }
Exemple #5
0
        private bool FinishAdoption(Sim pet)
        {
            if (pet != null)
            {
                pet.InteractionQueue.CancelAllInteractions();
                pet.SetObjectToReset();

                SpeedTrap.Sleep();

                pet.UpdateBlockTime();
                Actor.ShowTNSAndPlayStingIfSelectable("sting_pet_adopt", TNSNames.AdoptLitterTNS, Target, pet, null, null, pet.IsFemale, false, new object[] { pet });

                if (pet == Sim.ActiveActor)
                {
                    LotManager.SelectNextSim();
                }

                if (pet.Household != null)
                {
                    pet.Household.Remove(pet.SimDescription);
                }
                Actor.Household.Add(pet.SimDescription);

                Relationships.CheckAddHumanParentFlagOnAdoption(Actor.SimDescription, pet.SimDescription);

                if (Actor.Partner != null)
                {
                    Relationships.CheckAddHumanParentFlagOnAdoption(Actor.Partner, pet.SimDescription);
                }

                InteractionInstance entry = new SocialInteractionA.Definition("Talk To Pet", new string[0x0], null, false).CreateInstance(pet, Actor, GetPriority(), false, false);

                List <Sim> list = new List <Sim>();
                list.Add(pet);
                GoHome home = GoHome.Singleton.CreateInstance(Actor.LotHome, Actor, GetPriority(), false, false) as GoHome;
                home.SimFollowers = list;

                Actor.InteractionQueue.AddNext(home);
                return(Actor.InteractionQueue.AddNext(entry));
            }
            return(false);
        }
        public override bool Run()
        {
            Hospital hospital = RabbitHole.GetClosestRabbitHoleOfType(RabbitHoleType.Hospital,
                                                                      Target.Position) as Hospital;

            if (hospital != null)
            {
                Actor.RouteTurnToFace(Target.Position);
                EWGoToVet interactionInstance = EWGoToVet.Singleton.CreateInstance(hospital, Actor,
                                                                                   new InteractionPriority(InteractionPriorityLevel.High), isAutonomous: false,
                                                                                   cancellableByPlayer: true) as EWGoToVet;
                interactionInstance.mPet = Target;

                if ((Target.IsCat || Target.IsLittleDog))
                {
                    ChildUtils.SetPosturePrecondition(interactionInstance, CommodityKind.CarryingPet, new CommodityKind[0]);
                    PickUpPet pickUp = PickUpPet.Singleton.CreateInstance(Target, Actor, new InteractionPriority(InteractionPriorityLevel.High),
                                                                          false, true) as PickUpPet;
                    Actor.InteractionQueue.TryPushAsContinuation(this, pickUp);
                    Actor.InteractionQueue.TryPushAsContinuation(pickUp, interactionInstance);
                }
                else
                {
                    SocialInteractionA greetPet = new SocialInteractionA.Definition("Let Sniff Hand", new string[0],
                                                                                    null, false).CreateInstance(Target, Actor, new InteractionPriority(InteractionPriorityLevel.High),
                                                                                                                false, true) as SocialInteractionA;
                    Actor.InteractionQueue.TryPushAsContinuation(this, greetPet);
                    Actor.InteractionQueue.TryPushAsContinuation(greetPet, interactionInstance);
                }
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public override bool Run()
        {
            Sim targetsim = GetSelectedObject() as Sim;

            if (targetsim != null)
            {
                foreach (InteractionInstance interactionInstance in Target.InteractionQueue.InteractionList) // Cant Cancel Fix
                {
                    interactionInstance.MustRun = false;
                    interactionInstance.Hidden  = false;
                }
                foreach (InteractionInstance interactionInstance in targetsim.InteractionQueue.InteractionList) // Cant Cancel Fix
                {
                    interactionInstance.MustRun = false;
                    interactionInstance.Hidden  = false;
                }
                SpeedTrap.Sleep(0u);

                Target.InteractionQueue.CancelAllInteractions();
                targetsim.InteractionQueue.CancelAllInteractions();
                SpeedTrap.Sleep(0u);
                targetsim.EnableInteractions();
                SpeedTrap.Sleep(0u);
                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.ESRB);
                if (AcceptCancelDialog.Show("Do you want Run Divorce? (Yes Run or No Next)", true))
                {
                    InteractionInstance helloChatESRBi;
                    helloChatESRBi = new SocialInteractionA.Definition("Divorce", null, null, false).CreateInstance(Target, targetsim, priority, false, false);
                    //helloChatESRBi = new SituationSocial.Definition("Fight!", null, null, false).CreateInstance(Target, targetsim, new InteractionPriority(InteractionPriorityLevel.ESRB), false, false);
                    helloChatESRBi.MustRun = true;
                    helloChatESRBi.Hidden  = false;
                    targetsim.InteractionQueue.AddNext(helloChatESRBi);
                }
                //
                targetsim.SocialComponent.AddRelationshipUpdate(Target, CommodityTypes.Insulting, -100f, -100f);
                InteractionInstance helloChatESRBi2;
                helloChatESRBi2 = new SocialInteractionA.Definition("Argue", null, null, false).CreateInstance(Target, targetsim, priority, false, false);
                //helloChatESRBi = new SituationSocial.Definition("Fight!", null, null, false).CreateInstance(Target, targetsim, new InteractionPriority(InteractionPriorityLevel.ESRB), false, false);
                helloChatESRBi2.MustRun = true;
                //helloChatESRBi2.Hidden = false;
                targetsim.InteractionQueue.Add(helloChatESRBi2);
                targetsim.InteractionQueue.Add(helloChatESRBi2);
                targetsim.InteractionQueue.Add(helloChatESRBi2);
                targetsim.InteractionQueue.Add(helloChatESRBi2);
                targetsim.InteractionQueue.Add(helloChatESRBi2);
                targetsim.InteractionQueue.Add(helloChatESRBi2);
                //
                InteractionInstance helloChatESRBi3;
                helloChatESRBi3 = new SocialInteractionA.Definition("Declare Nemesis", null, null, false).CreateInstance(Target, targetsim, priority, false, false);
                //helloChatESRBi = new SituationSocial.Definition("Fight!", null, null, false).CreateInstance(Target, targetsim, new InteractionPriority(InteractionPriorityLevel.ESRB), false, false);
                helloChatESRBi3.MustRun = true;
                //helloChatESRBi3.Hidden = false;
                targetsim.InteractionQueue.Add(helloChatESRBi3);
                Sim.ForceSocial(targetsim, Target, "Declare Nemesis", (InteractionPriorityLevel)12, false);
                //
                InteractionInstance helloChatESRBi4;
                helloChatESRBi4 = new SocialInteractionA.Definition("Fight!", null, null, false).CreateInstance(Target, targetsim, priority, false, false);
                //helloChatESRBi = new SituationSocial.Definition("Fight!", null, null, false).CreateInstance(Target, targetsim, new InteractionPriority(InteractionPriorityLevel.ESRB), false, false);
                helloChatESRBi4.MustRun = true;
                //helloChatESRBi4.Hidden = false;
                targetsim.InteractionQueue.Add(helloChatESRBi4);
                Sim.ForceSocial(targetsim, Target, "Fight!", (InteractionPriorityLevel)12, false);
            }
            return(true);
        }
Exemple #8
0
        public static List <InteractionObjectPair> GetAllInteractionsForActor(Sim ths, IActor actor)
        {
            List <InteractionObjectPair> allInteractionsForActor;
            InteractionInstance          currentInteraction = ths.CurrentInteraction;
            Sim sim = actor as Sim;

            if (ths.DisablePieMenuOnSim)
            {
                sMsg += Common.NewLine + "Disabled";

                return(new List <InteractionObjectPair>());
            }
            if (ths.BuffManager.HasElement(BuffNames.BabyIsComing))
            {
                sMsg += Common.NewLine + "Pregnant";

                allInteractionsForActor = new List <InteractionObjectPair>();
                allInteractionsForActor.Add(new InteractionObjectPair(Pregnancy.TakeToHospital.Singleton, ths));
                return(allInteractionsForActor);
            }
            allInteractionsForActor = new List <InteractionObjectPair>(); //base.GetAllInteractionsForActor(actor);
            if (actor != ths)
            {
                List <InteractionObjectPair> list2;
                DaycareSituation             daycareSituationForSim = DaycareSituation.GetDaycareSituationForSim(ths);
                if ((daycareSituationForSim != null) && daycareSituationForSim.OverrideActorInteractions)
                {
                    sMsg += Common.NewLine + "Daycare";

                    return(daycareSituationForSim.GetAllInteractionsForActor(sim, ths));
                }
                if (FirefighterEmergencySituation.FindFirefighterEmergencySituationInvolvingSim(ths) != null)
                {
                    sMsg += Common.NewLine + "Firefighter";

                    allInteractionsForActor.Clear();
                }
                else
                {
                    if (actor.Posture.GetType() != ths.Posture.GetType())
                    {
                        sMsg += Common.NewLine + "Posture Socials " + actor.Posture.GetType().ToString() + " " + ths.Posture.GetType().ToString();

                        actor.Posture.AddSocialInteractions(ths, allInteractionsForActor);
                    }
                    if (actor.Posture.AllowsNormalSocials() && ths.Posture.AllowsNormalSocials())
                    {
                        int count = 0;

                        foreach (InteractionObjectPair pair in GetAllInteractionsForSim(ths.SocialComponent, sim, false))
                        {
                            pair.AddInteractions(actor, allInteractionsForActor);
                            count++;
                        }

                        sMsg += Common.NewLine + "Socials " + count;
                    }
                    if (currentInteraction != null)
                    {
                        InteractionTuning tuning = currentInteraction.InteractionObjectPair.Tuning;
                        if (((tuning != null) && tuning.mTradeoff.JoinableInteraction) && (!(currentInteraction.InteractionDefinition is IDoNotAddJoinInteraction) && !Sim.HaveSameCurrentInteraction(sim, ths)))
                        {
                            Sim.Join.Definition interaction = new Sim.Join.Definition();
                            new InteractionObjectPair(interaction, ths).AddInteractions(actor, allInteractionsForActor);
                        }
                    }
                    if ((sim.CurrentInteraction != null) && (sim.CurrentInteraction != currentInteraction))
                    {
                        InteractionObjectPair interactionObjectPair = sim.CurrentInteraction.InteractionObjectPair;
                        if (((interactionObjectPair.Tuning != null) && interactionObjectPair.Tuning.mTradeoff.JoinableInteraction) && !Sim.HaveSameCurrentInteraction(sim, ths))
                        {
                            Sim.AskToJoin.Definition definition2 = new Sim.AskToJoin.Definition();
                            new InteractionObjectPair(definition2, ths).AddInteractions(actor, allInteractionsForActor);
                        }
                    }
                }
                if (ths.mSituationSpecificInteractions.TryGetValue(sim, out list2) && (list2.Count > 0x0))
                {
                    foreach (InteractionObjectPair pair5 in list2)
                    {
                        bool flag = false;
                        foreach (InteractionObjectPair pair6 in allInteractionsForActor)
                        {
                            SocialInteractionA.Definition interactionDefinition = pair6.InteractionDefinition as SocialInteractionA.Definition;
                            SocialInteractionA.Definition definition4           = pair5.InteractionDefinition as SocialInteractionA.Definition;
                            if (((definition4 != null) && (interactionDefinition != null)) && (interactionDefinition.ActionKey == definition4.ActionKey))
                            {
                                string[] path      = interactionDefinition.GetPath(actor.IsFemale);
                                string[] strArray2 = definition4.GetPath(actor.IsFemale);
                                if (strArray2.Length == path.Length)
                                {
                                    bool flag2 = true;
                                    for (int i = 0x0; i < strArray2.Length; i++)
                                    {
                                        if (strArray2[i] != path[i])
                                        {
                                            flag2 = false;
                                            break;
                                        }
                                    }
                                    if (flag2)
                                    {
                                        flag = true;
                                        break;
                                    }
                                }
                            }
                        }
                        if (!flag)
                        {
                            allInteractionsForActor.Add(pair5);
                        }
                    }
                }
            }
            else
            {
                foreach (InteractionObjectPair pair7 in ths.SoloInteractions)
                {
                    pair7.AddInteractions(actor, allInteractionsForActor);
                }
            }
            foreach (Sim.IAddsSimInteractions interactions in Inventories.QuickDuoFind <Sim.IAddsSimInteractions, GameObject>(actor.Inventory))
            {
                interactions.GetAllInteractions(actor as Sim, ths, allInteractionsForActor);
            }
            allInteractionsForActor.Sort();
            return(allInteractionsForActor);
        }
Exemple #9
0
 public override bool Run()
 {
     if (!Actor.IsInActiveHousehold && base.Autonomous)
     {
         //Vector3 maotia = Vector3.Invalid;
         Actor.LoopIdle();
         try
         {
             Simulator.Sleep(500);
         }
         catch
         { }
         List <Sim> sims = new List <Sim>();
         foreach (Sim targetsim in Actor.LotCurrent.GetAllActors())
         //foreach (Sim targetsim in LotManager.Actors)
         {
             if (targetsim != Actor)
             {
                 sims.Add(targetsim);
             }
         }
         if (sims.Count == 0)
         {
             if (Household.ActiveHousehold != null)
             {
                 foreach (Sim targetsim in Household.ActiveHousehold.Sims)
                 {
                     if (targetsim != Actor)
                     {
                         sims.Add(targetsim);
                     }
                 }
             }
             if (sims.Count == 0)
             {
                 return(false);
             }
         }
         bool flag = false;
         Sim  randomObjectFromList = RandomUtil.GetRandomObjectFromList(sims);
         InteractionInstance interactionInstance = Terrain.GoHere.GetSingleton(Actor, randomObjectFromList.Position).CreateInstance(Terrain.Singleton, Actor, new InteractionPriority((InteractionPriorityLevel)10), false, false);
         if (interactionInstance != null)
         {
             (interactionInstance as Terrain.GoHere).SetDestination(randomObjectFromList.Position, false);
             flag = interactionInstance.RunInteraction();
         }
         InteractionInstance helloChatESRBi3;
         helloChatESRBi3 = new SocialInteractionA.Definition("Chat", new string[0], null, false).CreateInstance(randomObjectFromList, Actor, base.GetPriority(), base.Autonomous, base.CancellableByPlayer);
         if (randomObjectFromList != null && randomObjectFromList.HasBeenDestroyed)
         {
             randomObjectFromList = RandomUtil.GetRandomObjectFromList(sims);
             helloChatESRBi3      = new SocialInteractionA.Definition("Chat", new string[0], null, false).CreateInstance(randomObjectFromList, Actor, base.GetPriority(), base.Autonomous, base.CancellableByPlayer);
         }
         if (randomObjectFromList != null && randomObjectFromList.HasBeenDestroyed)
         {
             return(false);
         }
         Actor.InteractionQueue.Add(helloChatESRBi3);
         return(flag);
     }
     if (Actor.Posture.Satisfies(CommodityKind.Relaxing, null) || (!Actor.Motives.HasMotive(CommodityKind.BeSuspicious) && RandomUtil.RandomChance(Sim.ChanceOfReadingBookRatherThanNewsaperWhenReadingOutdoors)))
     {
         return(__DoReadBook());
     }
     return(__DoReadNewspaper());
 }
Exemple #10
0
        public override bool Run()
        {
            bool pieMenuShowFailureReason = PieMenu.PieMenuShowFailureReason;

            try
            {
                PieMenu.PieMenuShowFailureReason = true;

                Common.StringBuilder msg = new Common.StringBuilder();

                Common.StringBuilder unused = new Common.StringBuilder();
                Common.ExceptionLogger.Convert(Actor, unused, msg);
                Common.ExceptionLogger.Convert(Target, unused, msg);

                msg += Common.NewLine + Common.NewLine + "Injected Interactions" + Common.NewLine;

                foreach (InteractionObjectPair interaction in Target.mInteractions)
                {
                    Common.TestSpan span = Common.TestSpan.CreateSimple();
                    try
                    {
                        msg += Common.NewLine + interaction.InteractionDefinition.GetType();
                        msg += Common.NewLine + " " + interaction.InteractionDefinition.GetType().Assembly.FullName;

                        InteractionInstanceParameters parameters = new InteractionInstanceParameters(interaction, Actor, new InteractionPriority(InteractionPriorityLevel.UserDirected), true, true);

                        try
                        {
                            msg += Common.NewLine + " " + interaction.InteractionDefinition.GetInteractionName(ref parameters);
                        }
                        catch
                        {
                            msg += Common.NewLine + " (Exception)";
                        }
                    }
                    finally
                    {
                        long duration = span.Duration;
                        if (duration > 1)
                        {
                            msg += Common.NewLine + " Duration: " + duration;
                        }
                    }
                }

                msg += Common.NewLine + Common.NewLine + "All Interactions" + Common.NewLine;

                List <InteractionObjectPair> interactions = null;

                Common.TestSpan interactionSpan = Common.TestSpan.CreateSimple();
                try
                {
                    interactions = Target.GetAllInteractionsForActor(Actor);
                    interactions.AddRange(Target.GetAllInventoryInteractionsForActor(Actor));
                }
                finally
                {
                    long duration = interactionSpan.Duration;
                    if (duration > 1)
                    {
                        msg += Common.NewLine + "All Interactions Duration: " + duration;
                    }
                }

                foreach (InteractionObjectPair interaction in interactions)
                {
                    Common.TestSpan span = Common.TestSpan.CreateSimple();
                    try
                    {
                        msg += Common.NewLine + interaction.InteractionDefinition.GetType();
                        msg += Common.NewLine + " " + interaction.InteractionDefinition.GetType().Assembly.FullName;

                        GreyedOutTooltipCallback callback = null;

                        InteractionInstanceParameters userDirected = new InteractionInstanceParameters(interaction, Actor, new InteractionPriority(InteractionPriorityLevel.UserDirected), false, true);

                        InteractionTestResult result = InteractionTestResult.GenericUnknown;

                        try
                        {
                            result = interaction.InteractionDefinition.Test(ref userDirected, ref callback);
                        }
                        catch (Exception e)
                        {
                            msg += Common.NewLine + e.ToString();
                        }

                        try
                        {
                            msg += Common.NewLine + " " + interaction.InteractionDefinition.GetInteractionName(ref userDirected);

                            SocialInteractionA.Definition socialInteractionA = interaction.InteractionDefinition as SocialInteractionA.Definition;
                            if (socialInteractionA != null)
                            {
                                msg += Common.NewLine + "  ActionKey=" + socialInteractionA.ActionKey;
                                msg += Common.NewLine + "  ChecksToSkip=" + socialInteractionA.ChecksToSkip;
                                msg += Common.NewLine + "  mIsInitialGreeting=" + socialInteractionA.mIsInitialGreeting;
                                msg += Common.NewLine + "  mTrait=" + socialInteractionA.mTrait;
                            }
                        }
                        catch (Exception e)
                        {
                            // Only dispaly GetInteractionName() errors if that call is actually used by EA
                            if (IUtil.IsPass(result))
                            {
                                msg += Common.NewLine + e.ToString();
                            }
                            else
                            {
                                msg += Common.NewLine + " (Exception)";
                            }
                        }

                        msg += Common.NewLine + " User Directed = " + result;

                        if (callback != null)
                        {
                            msg += Common.NewLine + "  Tooltip: " + callback();
                        }

                        callback = null;

                        InteractionInstanceParameters autonomous = new InteractionInstanceParameters(interaction, Actor, new InteractionPriority(InteractionPriorityLevel.UserDirected), true, true);

                        result = InteractionTestResult.GenericUnknown;
                        try
                        {
                            result = interaction.InteractionDefinition.Test(ref autonomous, ref callback);
                        }
                        catch (Exception e)
                        {
                            msg += Common.NewLine + e.ToString();
                        }

                        msg += Common.NewLine + " Autonomous = " + result;
                        if (callback != null)
                        {
                            msg += Common.NewLine + "  Tooltip: " + callback();
                        }
                    }
                    finally
                    {
                        long duration = span.Duration;
                        if (duration > 1)
                        {
                            msg += Common.NewLine + " Duration: " + duration;
                        }
                    }
                }

                Common.WriteLog(msg);

                SimpleMessageDialog.Show(Common.Localize("TestInteractions:MenuName"), Common.Localize("TestInteractions:Success"));
            }
            finally
            {
                PieMenu.PieMenuShowFailureReason = pieMenuShowFailureReason;
            }

            return(true);
        }