Esempio n. 1
0
        public static void PerformeInteraction(Sim sim, SculptureFloorClothingRack2x1 target, InteractionDefinition definition)
        {
            InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);
            InteractionInstance entry    = definition.CreateInstance(target, sim, priority, false, true);

            sim.InteractionQueue.Add(entry);
        }
Esempio n. 2
0
            public override void PushWooHoo(Sim actor, Sim target, IGameObject obj)
            {
                HoverTrainStation station = obj as HoverTrainStation;

                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);

                HoverTrainStation[] listOfObjects = HoverTrainStation.GetHoverTrainStations().ToArray();
                if (listOfObjects.Length <= 1)
                {
                    return;
                }

                int choiceIndex = RandomUtil.GetInt(listOfObjects.Length - 0x1);
                HoverTrainStation destination = listOfObjects[choiceIndex];

                if (destination == station)
                {
                    choiceIndex++;
                    if (choiceIndex == listOfObjects.Length)
                    {
                        choiceIndex = 0x0;
                    }
                    destination = listOfObjects[choiceIndex];
                }

                HoverTrainWoohoo entry = new ProxyDefinition(this).CreateInstance(station, actor, priority, false, true) as HoverTrainWoohoo;

                entry.mWoohooee    = target;
                entry.mDestination = destination;
                actor.InteractionQueue.PushAsContinuation(entry, true);
            }
Esempio n. 3
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);
            }
Esempio n. 4
0
        public override bool Run()
        {
            try
            {
                Sim selectedObject = GetSelectedObject() as Sim;
                if (selectedObject != null)
                {
                    base.Run();
                    if (mResultCode != SocialInteraction.SocialResultCode.Succeeded)
                    {
                        return(false);
                    }

                    SocialRule targetEffect = mTargetEffect;
                    if (targetEffect != null)
                    {
                        if (targetEffect.RHS.STEffectCommodity != CommodityTypes.Friendly)
                        {
                            return(false);
                        }

                        Definition            interactionDefinition = InteractionDefinition as Definition;
                        InteractionPriority   priority    = GetPriority();
                        InteractionDefinition definition2 = interactionDefinition.GetPushDefintion(Target, selectedObject, priority);
                        if (definition2 == null)
                        {
                            return(false);
                        }

                        // Never could figure out why adding routing pushes here just does nothing...

                        Kill            instance = Kill.Singleton.CreateInstance(selectedObject, Target, priority, false, true) as Kill;
                        Kill.Definition def      = instance.InteractionDefinition as Kill.Definition;
                        def.mType   = interactionDefinition.mType;
                        def.mDirect = false;
                        if (!Target.InteractionQueue.PushAsContinuation(instance, true))
                        {
                            return(false);
                        }

                        Assassination skill = Assassination.EnsureSkill(Target);

                        skill.AddJob(Actor, selectedObject);

                        return(true);
                    }
                }
                return(false);
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.Exception(Actor, Target, e);
                return(false);
            }
        }
Esempio n. 5
0
            public override void PushWooHoo(Sim actor, Sim target, IGameObject obj)
            {
                ToiletStall         target2  = obj as ToiletStall;
                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);
                ToiletStallWooHoo   wooHoo   = new ToiletStallWooHoo.ProxyDefinition(this).CreateInstance(target2, actor, priority, false, true) as ToiletStallWooHoo;

                wooHoo.WooHooer = actor;
                wooHoo.WooHooee = target;
                actor.InteractionQueue.PushAsContinuation(wooHoo, true);
            }
Esempio n. 6
0
            public override void PushWooHoo(Sim actor, Sim target, IGameObject obj)
            {
                LeafPile house = obj as LeafPile;

                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);

                LeafPileWoohoo entry = new ProxyDefinition(this).CreateInstance(target, actor, priority, false, true) as LeafPileWoohoo;

                entry.WoohooObject = house;
                actor.InteractionQueue.PushAsContinuation(entry, true);
            }
Esempio n. 7
0
            public override void PushWooHoo(Sim actor, Sim target, IGameObject obj)
            {
                PetHouse house = obj as PetHouse;

                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);

                PetHouseWoohoo entry = new ProxyDefinition(this).CreateInstance(target, actor, priority, false, true) as PetHouseWoohoo;

                entry.WoohooHouse = house;
                actor.InteractionQueue.AddNext(entry);
            }
Esempio n. 8
0
            public override void PushWooHoo(Sim actor, Sim target, IGameObject obj)
            {
                TimePortal station = obj as TimePortal;

                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);

                TimePortalWooHoo instance = new ProxyDefinition(this).CreateInstance(station, actor, priority, false, true) as TimePortalWooHoo;

                instance.mWoohooee = target;
                instance.mIsMaster = true;
                actor.InteractionQueue.PushAsContinuation(instance, true);
            }
Esempio n. 9
0
            public override void PushWooHoo(Sim actor, Sim target, IGameObject obj)
            {
                PhotoBooth booth = obj as PhotoBooth;

                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);

                PhotoBoothWooHoo instance = new ProxyDefinition(this).CreateInstance(booth, actor, priority, false, true) as PhotoBoothWooHoo;

                instance.WooHooer = actor;
                instance.WooHooee = target;
                actor.InteractionQueue.PushAsContinuation(instance, true);
            }
Esempio n. 10
0
        public override bool Run()
        {
            try
            {
                Sim selectedObject = GetSelectedObject() as Sim;
                if (selectedObject != null)
                {
                    Run();
                    if (mResultCode != SocialInteraction.SocialResultCode.Succeeded)
                    {
                        return(false);
                    }

                    SocialRule targetEffect = mTargetEffect;
                    if (targetEffect != null)
                    {
                        if (targetEffect.RHS.STEffectCommodity != CommodityTypes.Friendly)
                        {
                            return(false);
                        }

                        Definition            interactionDefinition = InteractionDefinition as Definition;
                        InteractionPriority   priority    = GetPriority();
                        InteractionDefinition definition2 = interactionDefinition.GetPushDefintion(Target, selectedObject, priority);
                        if (definition2 == null)
                        {
                            return(false);
                        }
                        InteractionInstance instance = definition2.CreateInstance(selectedObject, Target, priority, false, true);
                        if (!Target.InteractionQueue.PushAsContinuation(instance, true))
                        {
                            return(false);
                        }

                        Assassination skill = Assassination.EnsureSkill(Target);

                        skill.AddJob(Actor, selectedObject);

                        return(true);
                    }
                }
                return(false);
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.Exception(Actor, Target, e);
                return(false);
            }
        }
Esempio n. 11
0
        public static void DoInteractionToSelf(Sim sim)
        {
            Random r = new Random();

            int numberOfEvents = Enum.GetNames(typeof(ListOfSelfInteractions)).Length;

            int randomEvent = r.Next(numberOfEvents);

            //  randomEvent = 3;
            StringBuilder       sb       = new StringBuilder();
            InteractionPriority priority = sim.CurrentInteraction.GetPriority();

            switch ((ListOfSelfInteractions)randomEvent)
            {
            case ListOfSelfInteractions.KnockedOut:
                PerformeInteractionOnSelf(sim, PassOut.Singleton);
                break;

            case ListOfSelfInteractions.Bladderate:
                PerformeInteractionOnSelf(sim, WetSelf.Singleton);
                break;

            case ListOfSelfInteractions.GetNaked:
                PerformeInteractionOnSelf(sim, GetNaked.Singleton);
                break;

            case ListOfSelfInteractions.TalkToSelf:

                PerformeInteractionOnSelf(sim, TalkToSelf2.Singleton);
                break;

            case ListOfSelfInteractions.Sing:
                sb.Append(SingShowerSong.Singleton.ToString());
                PerformeInteractionOnSelf(sim, SingShowerSong.Singleton);
                break;

            case ListOfSelfInteractions.BadBuzz:
                PerformeInteractionOnSelf(sim, BadBuzz.Singleton);
                break;

            case ListOfSelfInteractions.DrunkCry:
                PerformeInteractionOnSelf(sim, DrunkCry.Singleton);
                break;

            case ListOfSelfInteractions.DrunkHysteria:
                PerformeInteractionOnSelf(sim, DrunkHysteria.Singleton);
                break;

            default:
                break;
            }
        }
Esempio n. 12
0
        //Performe the random interaction


        private static void PerformeInteractionOnSelf(Sim sim, InteractionDefinition definition)
        {
            InteractionPriority priority = sim.CurrentInteraction.GetPriority();

            InteractionInstance instance3 = definition.CreateInstance(sim, sim, priority, false, true);

            sim.InteractionQueue.Add(instance3);

            if (AddMenuItem.ReturnShowNotification())
            {
                StyledNotification.Show(new StyledNotification.Format(sim.Name + "\r" + instance3.GetInteractionName(), StyledNotification.NotificationStyle.kGameMessagePositive));
            }
        }
Esempio n. 13
0
            public override void PushWooHoo(Sim actor, Sim target, IGameObject obj)
            {
                ActorTrailer trailer = obj as ActorTrailer;

                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);

                ActorTrailerWooHoo instance = new ProxyDefinition(this).CreateInstance(trailer, actor, priority, false, true) as ActorTrailerWooHoo;

                instance.WooHooer  = actor;
                instance.WooHooee  = target;
                instance.mIsMaster = true;
                actor.InteractionQueue.PushAsContinuation(instance, true);
            }
Esempio n. 14
0
            public override void PushWooHoo(Sim actor, Sim target, IGameObject obj)
            {
                BoxOfMystery box = obj as BoxOfMystery;

                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);

                BoxOfMysteryWooHoo instance = new ProxyDefinition(this).CreateInstance(box, actor, priority, false, true) as BoxOfMysteryWooHoo;

                instance.mWooHooer = actor;
                instance.mWooHooee = target;
                instance.mIsMaster = true;
                actor.InteractionQueue.PushAsContinuation(instance, true);
            }
Esempio n. 15
0
            public override void PushWooHoo(Sim actor, Sim target, IGameObject obj)
            {
                UnderwaterCave box = obj as UnderwaterCave;

                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);

                WooHooInCave instance = new ProxyDefinition(this).CreateInstance(box, actor, priority, false, true) as WooHooInCave;

                instance.mWoohooer = actor;
                instance.mWoohooee = target;
                instance.mMaster   = true;
                actor.InteractionQueue.PushAsContinuation(instance, true);
            }
Esempio n. 16
0
        public override bool Run()
        {
            try
            {
                List <Sim> followers = new List <Sim>();
                if (SelectedObjects != null)
                {
                    foreach (object obj2 in SelectedObjects)
                    {
                        followers.Add(obj2 as Sim);
                    }
                }

                if (Target.LotCurrent != Actor.LotCurrent)
                {
                    Route r = Actor.CreateRoute();
                    Target.LotCurrent.PlanToLot(r);
                    Actor.DoRouteWithFollowers(r, followers);
                    Lot.ValidateFollowers(followers);
                }

                Definition definition = InteractionDefinition as Definition;

                InteractionDefinition summon = new SummonWeatherEx.Definition(definition.mType);

                foreach (Sim sim in followers)
                {
                    if (sim.LotCurrent == Target.LotCurrent)
                    {
                        InteractionPriority priority = GetPriority();
                        if (!sim.IsSelectable)
                        {
                            priority = new InteractionPriority(InteractionPriorityLevel.NonCriticalNPCBehavior);
                        }
                        sim.InteractionQueue.AddNext(summon.CreateInstance(Target, sim, priority, Autonomous, CancellableByPlayer));
                    }
                }

                Actor.InteractionQueue.PushAsContinuation(summon, Target, true);
                return(true);
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.Exception(Actor, Target, e);
                return(false);
            }
        }
Esempio n. 17
0
        public override bool Run()
        {
            try
            {
                List<Sim> followers = new List<Sim>();
                if (SelectedObjects != null)
                {
                    foreach (object obj2 in SelectedObjects)
                    {
                        followers.Add(obj2 as Sim);
                    }
                }

                if (Target.LotCurrent != Actor.LotCurrent)
                {
                    Route r = Actor.CreateRoute();
                    Target.LotCurrent.PlanToLot(r);
                    Actor.DoRouteWithFollowers(r, followers);
                    Lot.ValidateFollowers(followers);
                }

                Definition definition = InteractionDefinition as Definition;

                InteractionDefinition summon = new SummonWeatherEx.Definition(definition.mType);

                foreach (Sim sim in followers)
                {
                    if (sim.LotCurrent == Target.LotCurrent)
                    {
                        InteractionPriority priority = GetPriority();
                        if (!sim.IsSelectable)
                        {
                            priority = new InteractionPriority(InteractionPriorityLevel.NonCriticalNPCBehavior);
                        }
                        sim.InteractionQueue.AddNext(summon.CreateInstance(Target, sim, priority, Autonomous, CancellableByPlayer));
                    }
                }

                Actor.InteractionQueue.PushAsContinuation(summon, Target, true);
                return true;
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.Exception(Actor, Target, e);
                return false;
            }
        }
Esempio n. 18
0
        public static void AddWooHooToQue(BedDouble bed, Sim actor, Sim recipient, InteractionDefinition definition)
        {
            actor.GreetSimOnMyLotIfPossible(recipient);
            InteractionPriority priority = actor.CurrentInteraction.GetPriority();
            InteractionInstance entry    = OverridedEnterRelaxing.Singleton.CreateInstance(bed, actor, priority, false, true);

            if (actor.InteractionQueue.Add(entry))
            {
                InteractionInstance instance2 = OverridedEnterRelaxing.Singleton.CreateInstance(bed, recipient, priority, false, true);
                recipient.InteractionQueue.Add(instance2);
                InteractionInstance instance3 = definition.CreateInstance(recipient, actor, priority, actor.CurrentInteraction.Autonomous, true);
                instance3.GroupId = entry.GroupId;
                actor.InteractionQueue.Add(instance3);
            }
        }
Esempio n. 19
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);
            }
Esempio n. 20
0
        private static List <InteractionObjectPair> SocialsForNewConversation(SocialComponent ths, Sim actor, Sim target, bool isAutonomous)
        {
            string msg = null;

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

            string[]                 path     = new string[0x0];
            InteractionPriority      priority = new InteractionPriority(isAutonomous ? InteractionPriorityLevel.Autonomous : InteractionPriorityLevel.UserDirected);
            GreyedOutTooltipCallback greyedOutTooltipCallback = null;

            foreach (string str in CelebrityManager.CanSocialize(actor, target) ? new string[] { "Greet Friendly", "Greet Insulting" } : new string[] { "Greet Celebrity" })
            {
                InteractionObjectPair         iop        = new InteractionObjectPair(new SocialInteractionA.Definition(str, path, null, false), target);
                InteractionInstanceParameters parameters = new InteractionInstanceParameters(iop, actor, priority, isAutonomous, true);

                InteractionTestResult result = iop.InteractionDefinition.Test(ref parameters, ref greyedOutTooltipCallback);

                msg += Common.NewLine + "A " + str + " " + iop.InteractionDefinition.GetType().ToString() + " " + result;

                if (result == InteractionTestResult.Pass)
                {
                    list.Add(iop);
                }
            }
            foreach (SocialInteractionCandidate candidate in Conversation.GetActiveTopicInteractions(Relationship.GetLongTermRelationship(actor, target), actor, target, null, isAutonomous))
            {
                if (candidate.Topic.Data.AvailableWhenConversationStarts)
                {
                    InteractionObjectPair         pair2       = new InteractionObjectPair(new SocialInteractionA.Definition(candidate.Name, path, null, false), target);
                    InteractionInstanceParameters parameters2 = new InteractionInstanceParameters(pair2, actor, priority, isAutonomous, true);

                    InteractionTestResult result = pair2.InteractionDefinition.Test(ref parameters2, ref greyedOutTooltipCallback);

                    msg += Common.NewLine + "B " + candidate.Name + " " + pair2.InteractionDefinition.GetType().ToString() + " " + result;

                    if (result == InteractionTestResult.Pass)
                    {
                        list.Add(pair2);
                    }
                }
            }

            Common.WriteLog(msg);

            return(list);
        }
Esempio n. 21
0
        private static InteractionInstance CreateGoHereWithInteractionInstance(SimRoutingComponent ths, Route r, List<Sim> followers, InteractionPriority priority, bool cancellableByPlayer, out InteractionInstance ownerInteraction, GoHereWithSituation.OnFailBehavior failureBehavior, Vector3 teleportLocation)
        {
            Sim properLeader = ths.GetProperLeader(ths.OwnerSim, followers);
            InteractionInstanceParameters parameters = new InteractionInstanceParameters(new InteractionObjectPair(LeaderGoHereWith.Singleton, Terrain.Singleton), properLeader, priority, false, cancellableByPlayer);
            LeaderGoHereWith with = LeaderGoHereWith.Singleton.CreateInstanceFromParameters(ref parameters) as LeaderGoHereWith;
            with.SetOwner(ths.OwnerSim);

            with.OnFailBehavior = failureBehavior;
            if (teleportLocation != Vector3.Invalid)
            {
                with.TeleportDestination = teleportLocation;
            }
            else if (failureBehavior == GoHereWithSituation.OnFailBehavior.Teleport)
            {
                with.TeleportDestination = r.GetDestPoint();
            }

            if (properLeader != ths.OwnerSim)
            {
                followers = new List<Sim>(followers);
                followers.Remove(properLeader);
                Route route = r.ShallowCopy();
                route.ExitReasonsInterrupt = r.ExitReasonsInterrupt;
                ths.UpdateRoutingOptionsFromLeader(properLeader, route);
                route.Follower = properLeader.Proxy;
                route.Replan();
                with.SetRouteToFollow(route);
            }
            else
            {
                with.SetRouteToFollow(r);
            }

            with.SetFollowers(followers);
            GoHereWithSituationEx.CreateSituation(with);
            if (properLeader != ths.OwnerSim)
            {
                ownerInteraction = new SlaveLeaderGoHereWith.Definition(with.Situation).CreateInstance(Terrain.Singleton, ths.OwnerSim, priority, false, cancellableByPlayer);
            }
            else
            {
                ownerInteraction = null;
            }

            return with;
        }
Esempio n. 22
0
            public override void PushWooHoo(Sim actor, Sim target, IGameObject obj)
            {
                Treehouse house = obj as Treehouse;

                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);

                TreehouseWoohoo instance = new ProxyDefinition(this).CreateInstance(house, actor, priority, false, true) as TreehouseWoohoo;

                instance.IsMaster = true;

                TreehouseWoohoo hoo2 = new ProxyDefinition(this).CreateInstance(house, target, priority, false, true) as TreehouseWoohoo;

                if (actor.InteractionQueue.PushAsContinuation(instance, true))
                {
                    target.InteractionQueue.PushAsContinuation(hoo2, true);
                    instance.LinkedInteractionInstance = hoo2;
                }
            }
        private void PushWooHooOnBed(Sim actor, Sim recipient, Bed bed, Callback callback)
        {
            InteractionPriority priority       = new InteractionPriority(InteractionPriorityLevel.RequiredNPCBehavior);
            InteractionInstance relaxingAction = EnterRelaxing.Singleton.CreateInstance(bed, actor, priority, false, true);

            relaxingAction.MustRun = true;
            if (actor.InteractionQueue.Add(relaxingAction))
            {
                InteractionInstance entry = EnterRelaxing.Singleton.CreateInstance(bed, recipient, priority, false, true);
                entry.MustRun = true;
                recipient.InteractionQueue.Add(entry);
                InteractionInstance woohooAction = WooHoo.Singleton.CreateInstanceWithCallbacks(recipient, actor, priority, false, true
                                                                                                , new Callback(this.DoNothing), callback, callback);
                woohooAction.MustRun = true;
                woohooAction.GroupId = relaxingAction.GroupId;
                actor.InteractionQueue.Add(woohooAction);
            }
        }
Esempio n. 24
0
            public override void PushWooHoo(Sim actor, Sim target, IGameObject obj)
            {
                ResortTower tower = obj as ResortTower;

                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);

                WooHooInResortTowerEx instance = new ProxyDefinition(this).CreateInstance(tower, actor, priority, false, true) as WooHooInResortTowerEx;

                instance.mWooHooer = actor;
                instance.mWooHooee = target;
                actor.InteractionQueue.PushAsContinuation(instance, true);

                WooHooInResortTowerEx second = new ProxyDefinition(this).CreateInstance(tower, target, priority, false, true) as WooHooInResortTowerEx;

                second.LinkedInteractionInstance = instance;
                second.mWooHooer = actor;
                second.mWooHooee = target;
                target.InteractionQueue.PushAsContinuation(second, true);
            }
Esempio n. 25
0
            public override void PushWooHoo(Sim actor, Sim target, IGameObject obj)
            {
                BoxStall stall = obj as BoxStall;

                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);

                BoxStallWoohoo entry = new ProxyDefinition(this).CreateInstance(actor, target, priority, false, true) as BoxStallWoohoo;

                entry.IsMaster      = false;
                entry.BoxStallToUse = stall;
                target.InteractionQueue.PushAsContinuation(entry, true);

                BoxStallWoohoo entry2 = new ProxyDefinition(this).CreateInstance(target, actor, priority, false, true) as BoxStallWoohoo;

                entry2.IsMaster = true;
                entry2.LinkedInteractionInstance = entry;
                entry2.BoxStallToUse             = stall;
                actor.InteractionQueue.PushAsContinuation(entry2, true);
            }
Esempio n. 26
0
            public override void PushWooHoo(Sim actor, Sim target, IGameObject obj)
            {
                Wardrobe caravan = obj as Wardrobe;

                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);

                Wardrobe.WooHooInWardrobeA instance = Wardrobe.WooHooInWardrobeA.Singleton.CreateInstance(actor, target, priority, false, true) as Wardrobe.WooHooInWardrobeA;
                instance.mWardrobe = caravan;

                WardrobeWoohoo nb = new ProxyDefinition(this).CreateInstance(target, actor, priority, false, true) as WardrobeWoohoo;

                nb.mWardrobe = caravan;

                instance.mTryForBaby  = (GetStyle(nb) != CommonWoohoo.WoohooStyle.Safe);
                instance.mOtherWooHoo = nb;
                nb.mOtherWooHoo       = instance;

                target.InteractionQueue.PushAsContinuation(instance, true);
                actor.InteractionQueue.PushAsContinuation(nb, true);
            }
Esempio n. 27
0
        private bool SetupAbductee()
        {
            if (!CreateAndPlaceJig())
            {
                return(false);
            }

            SimToAbduct.InteractionQueue.CancelAllInteractions();
            InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.High);

            CarUFO.AbductSimB abductSimB = CarUFO.AbductSimB.Singleton.CreateInstance(Actor, SimToAbduct, priority, false, false) as CarUFO.AbductSimB;
            abductSimB.LinkedInteractionInstance = this;
            abductSimB.mJig = mJig;
            abductSimB.mCurrentStateMachine = mCurrentStateMachine;

            if (!SimToAbduct.InteractionQueue.AddNext(abductSimB))
            {
                return(false);
            }

            return(true);
        }
Esempio n. 28
0
            public override void PushWooHoo(Sim actor, Sim target, IGameObject obj)
            {
                IShowerable shower = obj as IShowerable;

                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);

                // Use custom interaction to bypass privacy
                Shower.TakeShower.Definition takeShower = null;
                foreach (InteractionObjectPair pair in shower.Interactions)
                {
                    takeShower = pair.InteractionDefinition as Shower.TakeShower.Definition;
                    if (takeShower != null)
                    {
                        break;
                    }
                }

                if (takeShower == null)
                {
                    Common.DebugNotify("PushWooHoo Take Shower Fail");
                    return;
                }

                Shower.TakeShower instance = takeShower.CreateInstance(shower, target, priority, false, true) as Shower.TakeShower;
                instance.HavingWooHoo = true;

                ShowerWoohoo hoo = new ProxyDefinition(this).CreateInstance(target, actor, priority, false, true) as ShowerWoohoo;

                hoo.WaitForBToEnterShower = true;
                hoo.Shower         = shower;
                hoo.TakeShowerInst = instance;
                if (actor.InteractionQueue.PushAsContinuation(hoo, true))
                {
                    target.InteractionQueue.PushAsContinuation(instance, true);
                    hoo.LinkedInteractionInstance = instance;
                }
            }
Esempio n. 29
0
        public static void DoRandomIdle(Sim sim, InteractionPriority priority)
        {
            //20% chance of doing random idle.
            int percentage = RandomUtil.GetInt(1, 100);

            if (percentage <= 50)
            {
                string   idle;
                IdleInfo info = null;

                bool           customJazzGraph;
                ProductVersion version;

                idle = IdleManager.ChooseTraitIdle(sim.TraitManager.GetRandomVisibleElement().mTraitGuid, Sims3.SimIFace.CAS.CASAgeGenderFlags.Adult, Sims3.SimIFace.CAS.CASAgeGenderFlags.Female, out customJazzGraph, out version);

                foreach (IdleAnimationInfo item in IdleManager.sTraitIdleAnimations.Values)
                {
                    if (item.Animations != null)
                    {
                        info = item.Animations.Find(delegate(IdleInfo i) { return(!string.IsNullOrEmpty(i.AnimationName) && i.AnimationName.Equals(idle)); });
                    }
                    if (info != null)
                    {
                        break;
                    }
                }
                if (info != null)
                {
                    // CommonMethodsOFBBistroSet.PrintMessage(info.AnimationName);
                    Sim.PlayAnim(sim, info.AnimationName);
                }
            }
            else
            {
                sim.IdleManager.PlayOneFacialIdle();
            }
        }
Esempio n. 30
0
 public static void PerformeInteraction(Sim sim, GameObject target, InteractionDefinition definition)
 {
     InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.UserDirected);
     InteractionInstance entry = definition.CreateInstance(target, sim, priority, false, true);
     sim.InteractionQueue.Add(entry);
 }
Esempio n. 31
0
        public static void AddSocials(SocialComponent ths, Sim actor, Sim target, List <SocialInteractionCandidate> socials, bool isAutonomous, int maxNumSocials, List <InteractionObjectPair> results, string[] inlineParentMenu, TraitNames trait, ref string msg)
        {
            int num = 0x0;
            InteractionPriority      priority = new InteractionPriority(isAutonomous ? InteractionPriorityLevel.Autonomous : InteractionPriorityLevel.UserDirected);
            GreyedOutTooltipCallback greyedOutTooltipCallback = null;

            foreach (SocialInteractionCandidate candidate in socials)
            {
                using (Common.TestSpan span = new Common.TestSpan(TimeSpanLogger.Bin, candidate.Name, Common.DebugLevel.Stats))
                {
                    string[] strArray = inlineParentMenu;
                    bool     flag     = true;
                    if (num >= maxNumSocials)
                    {
                        break;
                    }
                    ActiveTopic topic = candidate.Topic;
                    if (topic != null)
                    {
                        ActiveTopicData data = topic.Data;
                        if (data.HasPieMenuOverride())
                        {
                            flag     = false;
                            strArray = new string[] { data.GetText(actor, new object[0x0]) };
                        }
                    }
                    ActionData data2 = ActionData.Get(candidate.Name);
                    if (data2.AppearsOnTopLevel)
                    {
                        strArray = new string[0x0];
                    }
                    if (!ths.DoesSocialAppear(candidate.Name, results, strArray))
                    {
                        InteractionObjectPair iop = null;
                        if (((data2.IntendedCommodityString == CommodityTypes.Friendly) && ((actor.Posture is ISeatedSocialPosture) || (target.Posture is ISeatedSocialPosture))) && data2.AllowCarryChild)
                        {
                            InteractionDefinition interaction = new SeatedSocialInteractionA.SeatedDefinition(candidate.Name, strArray, candidate.Topic, false, trait, false);
                            iop = new InteractionObjectPair(interaction, target);
                            InteractionInstanceParameters parameters = new InteractionInstanceParameters(iop, actor, priority, isAutonomous, true);
                            if (!IUtil.IsPass(interaction.Test(ref parameters, ref greyedOutTooltipCallback)))
                            {
                                iop = null;
                            }
                            if (((candidate.Name == "Chat") && !actor.CanBeInSameGroupTalkAsMe(target)) && (actor.Posture is ISeatedSocialPosture))
                            {
                                string[] strArray2 = new string[0x0];
                                if (!ths.DoesSocialAppear(candidate.Name, results, strArray2))
                                {
                                    interaction = new SeatedSocialInteractionA.SeatedDefinition(candidate.Name, strArray2, candidate.Topic, false, trait, true);
                                    InteractionObjectPair pair2 = new InteractionObjectPair(interaction, target);
                                    parameters = new InteractionInstanceParameters(pair2, actor, priority, isAutonomous, true);
                                    if (IUtil.IsPass(interaction.Test(ref parameters, ref greyedOutTooltipCallback)))
                                    {
                                        results.Add(pair2);
                                    }
                                }
                            }
                        }
                        if (iop == null)
                        {
                            iop = new InteractionObjectPair(new SocialInteractionA.Definition(candidate.Name, strArray, candidate.Topic, false, trait), target);
                        }
                        InteractionInstanceParameters parameters2 = new InteractionInstanceParameters(iop, actor, priority, isAutonomous, true);

                        InteractionTestResult result = iop.InteractionDefinition.Test(ref parameters2, ref greyedOutTooltipCallback);

                        msg += Common.NewLine + parameters2.InteractionDefinition.GetInteractionName(ref parameters2) + ": " + result;

                        if ((IUtil.IsPass(result) || (greyedOutTooltipCallback != null)) || Sims3.Gameplay.UI.PieMenu.PieMenuShowFailureReason)
                        {
                            results.Add(iop);
                            if (flag)
                            {
                                num++;
                            }
                        }
                    }
                }
            }
        }
Esempio n. 32
0
        public static NinecReaper AddToInteranctionQueue(Sim Actor, Sim Target, CustomRun customRun, InteractionPriority priority, bool isAutonomous, bool cancellableByPlayer)
        {
            if (Actor == null || Actor.InteractionQueue == null)
            {
                return(null);
            }
            NinecReaper ii = NinecReaper.Singleton.CreateInstance(Target, Actor, priority, isAutonomous, cancellableByPlayer) as NinecReaper;

            ii.customRun = customRun;
            Actor.InteractionQueue.Add(ii);
            return(ii);
        }
Esempio n. 33
0
        public static NinecReaper CreateP(Sim Actor, Sim Target, CustomRun customRun, InteractionPriority priority)
        {
            NinecReaper ii = NinecReaper.Singleton.CreateInstance(Target, Actor, priority, false, true) as NinecReaper;

            ii.customRun = customRun;
            return(ii);
        }
Esempio n. 34
0
        public override bool Run()
        {
            try
            {
                if (!Target.SimLine.WaitForTurn(this, SimQueue.WaitBehavior.DefaultEvict, ~(ExitReason.Replan | ExitReason.MidRoutePushRequested | ExitReason.ObjectStateChanged | ExitReason.PlayIdle | ExitReason.MaxSkillPointsReached), Shower.kTimeToWaitToEvict))
                {
                    return false;
                }

                try
                {
                    mSwitchOutfitHelper = new Sim.SwitchOutfitHelper(Actor, OutfitChoice);
                }
                catch
                {
                    return false;
                }

                mSwitchOutfitHelper.Start();
                if (Actor.HasTrait(TraitNames.Hydrophobic))
                {
                    Actor.PlayReaction(ReactionTypes.WhyMe, Target as GameObject, ReactionSpeed.ImmediateWithoutOverlay);
                }
                if (Actor.HasTrait(TraitNames.Daredevil))
                {
                    TraitTipsManager.ShowTraitTip(0xb82d0015b9294260L, Actor, TraitTipsManager.TraitTipCounterIndex.Daredevil, TraitTipsManager.kDaredevilCountOfShowersTaken);
                }

                if (!Actor.RouteToSlotAndCheckInUse(Target, Slot.RoutingSlot_0))
                {
                    return false;
                }

                if (EnforcePrivacy)
                {
                    mSituation = new Shower.ShowerPrivacySituation(this);
                    if (!mSituation.Start())
                    {
                        return false;
                    }
                }

                StandardEntry();
                if (!Actor.RouteToSlot(Target, Slot.RoutingSlot_0))
                {
                    if (mSituation != null)
                    {
                        mSituation.Exit();
                    }

                    StandardExit();
                    return false;
                }
                if (Autonomous)
                {
                    mPriority = new InteractionPriority(InteractionPriorityLevel.UserDirected);
                }
                mSwitchOutfitHelper.Wait(true);
                bool daredevilPerforming = Actor.DaredevilPerforming;
                bool flag2 = Actor.GetCurrentOutfitCategoryFromOutfitInGameObject() == OutfitCategories.Singed;
                EnterStateMachine("Shower", "Enter", "x");
                SetActor("Shower", Target);
                if (mSituation != null)
                {
                    mSituation.StateMachine = mCurrentStateMachine;
                }
                SetParameter("IsShowerTub", Target.IsShowerTub);
                SetParameter("SimShouldCloseDoor", true); // Required to be "true" for the Oufit switcher
                SetParameter("SimShouldClothesChange", ((!daredevilPerforming && !flag2) && !Actor.OccultManager.DisallowClothesChange()) && !Actor.BuffManager.DisallowClothesChange());
                
                bool paramValue = false;
                if ((Target.BoobyTrapComponent != null) && Target.BoobyTrapComponent.CanTriggerTrap(Actor.SimDescription))
                {
                    paramValue = !Actor.OccultManager.DisallowClothesChange() && !Actor.BuffManager.DisallowClothesChange();
                }
                SimDescription description = ((Target.BoobyTrapComponent != null) && (Target.BoobyTrapComponent.TrapSetter != 0L)) ? SimDescription.Find(Target.BoobyTrapComponent.TrapSetter) : null;
                if (((description != null) && description.IsFairy) && Actor.BuffManager.HasElement(BuffNames.TrickedByAFairy))
                {
                    paramValue = false;
                }
                SetParameter("isBoobyTrapped", paramValue);
                mSwitchOutfitHelper.AddScriptEventHandler(this);
                AddOneShotScriptEventHandler(0x3e9, EventCallbackStartShoweringSound);
                if (Actor.HasTrait(TraitNames.Virtuoso) || RandomUtil.RandomChance((float)Target.TuningShower.ChanceOfSinging))
                {
                    AddOneShotScriptEventHandler(0xc8, EventCallbackStartSinging);
                }
                PetStartleBehavior.CheckForStartle(Target as GameObject, StartleType.ShowerOn);
                AnimateSim("Loop Shower");
                Actor.BuffManager.AddElement(BuffNames.SavingWater, Origin.FromShower, ProductVersion.EP2, TraitNames.EnvironmentallyConscious);
                mShowerStage.ResetCompletionTime(GetShowerTime());
                StartStages();
                if (Actor.HasTrait(TraitNames.EnvironmentallyConscious))
                {
                    BeginCommodityUpdate(CommodityKind.Hygiene, Shower.kEnvironmentallyConsciousShowerSpeedMultiplier);
                }
                if (Actor.SimDescription.IsPlantSim)
                {
                    ModifyCommodityUpdate(CommodityKind.Hygiene, Shower.kPlantSimHygieneModifier);
                }

                BeginCommodityUpdates();

                if (paramValue)
                {
                    ApplyBoobyTrapOutfit();
                    if ((description != null) && description.IsFairy)
                    {
                        Actor.BuffManager.AddElement(BuffNames.TrickedByAFairy, Origin.FromFairy);
                    }
                }

                bool succeeded = false;
                try
                {
                    try
                    {
                        Target.SimInShower = Actor;
                        succeeded = DoLoop(~(ExitReason.Replan | ExitReason.MidRoutePushRequested | ExitReason.ObjectStateChanged | ExitReason.PlayIdle | ExitReason.MaxSkillPointsReached), DuringShower, null);
                        if (HavingWooHoo && Actor.HasExitReason(ExitReason.StageComplete))
                        {
                            succeeded = DoLoop(~(ExitReason.Replan | ExitReason.MidRoutePushRequested | ExitReason.ObjectStateChanged | ExitReason.PlayIdle | ExitReason.MaxSkillPointsReached | ExitReason.StageComplete), DuringShower, null);
                        }
                    }
                    finally
                    {
                        Target.SimInShower = null;
                    }

                    while (HavingWooHoo)
                    {
                        SpeedTrap.Sleep(10);
                    }
                }
                finally
                {
                    EndCommodityUpdates(succeeded);
                }

                Shower.WaitToLeaveShower(Actor, Target);
                if (succeeded)
                {
                    ShowerEx.ApplyPostShowerEffects(Actor, Target);
                }
                if (paramValue)
                {
                    SetParameter("isBoobyTrapped", false);
                    AddOneShotScriptEventHandler(0xc9, EventCallbackStopSinging);
                    AddOneShotScriptEventHandler(0x3ea, EventCallbackStopShoweringSound);
                    if ((description != null) && description.IsFairy)
                    {
                        AnimateSim("TriggerFairyTrap");
                    }
                    else
                    {
                        AnimateSim("Booby Trap Reaction");
                    }
                    AddOneShotScriptEventHandler(0x3e9, EventCallbackStartShoweringSound);
                    AnimateSim("Loop Shower");
                    RemoveBoobyTrapOutfit();
                    SpeedTrap.Sleep(60);
                }

                try
                {
                    if (flag2 && succeeded)
                    {
                        mSwitchOutfitHelper.Dispose();
                        try
                        {
                            mSwitchOutfitHelper = new Sim.SwitchOutfitHelper(Actor, OutfitChoice);
                            mSwitchOutfitHelper.Start();
                            mSwitchOutfitHelper.Wait(false);
                            mSwitchOutfitHelper.ChangeOutfit();
                        }
                        catch
                        { }
                    }
                    bool flag5 = false;
                    if ((flag2 && succeeded) || (!flag2 && !daredevilPerforming))
                    {
                        SetParameter("SimShouldClothesChange", !Actor.OccultManager.DisallowClothesChange());
                        mSwitchOutfitHelper.Dispose();
                        try
                        {
                            mSwitchOutfitHelper = new Sim.SwitchOutfitHelper(Actor, GetOutfitReason(Actor));
                            mSwitchOutfitHelper.Start();
                            mSwitchOutfitHelper.AddScriptEventHandler(this);
                            mSwitchOutfitHelper.Wait(false);
                        }
                        catch
                        { }

                        flag5 = true;
                    }

                    if (Target.Cleanable != null)
                    {
                        Target.Cleanable.DirtyInc(Actor);
                    }

                    AddOneShotScriptEventHandler(0xc9, EventCallbackStopSinging);
                    AddOneShotScriptEventHandler(0x3ea, EventCallbackStopShoweringSound);
                    if (flag5 && InventingSkill.IsBeingDetonated(Target as GameObject))
                    {
                        SetParameter("SimShouldClothesChange", false);
                        mSwitchOutfitHelper.Abort();
                        mSwitchOutfitHelper.Dispose();
                    }

                    if ((Target.Repairable != null) && (Target.Repairable.UpdateBreakage(Actor)))
                    {
                        Target.StartBrokenFXInAnim(mCurrentStateMachine);
                        AnimateSim("Exit Broken");
                    }
                    else
                    {
                        AnimateSim("Exit Working");
                    }

                    if ((Actor.SimDescription.IsMummy || Actor.DaredevilPerforming) || (Actor.TraitManager.HasElement(TraitNames.Slob) && RandomUtil.RandomChance01(TraitTuning.SlobTraitChanceToLeavePuddle)))
                    {
                        PuddleManager.AddPuddle(Actor.Position);
                    }

                    if (succeeded)
                    {
                        Actor.BuffManager.RemoveElement(BuffNames.GotFleasHuman);
                    }
                }
                finally
                {
                    StandardExit();
                }
                return succeeded;
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.Exception(Actor, Target, e);
                return false;
            }
        }
        public override bool Run()
        {
            try
            {
                Actor.GreetSimOnMyLotIfPossible(Target);
                Seat.EnsureLivingChairPosture(Actor);
                IHasSeatingGroup container = Actor.Posture.Container as IHasSeatingGroup;
                Seat otherSeat = container.SeatingGroup[Actor];
                Seat seat2 = container.SeatingGroup[Target];
                if (!SafeToSync())
                {
                    return false;
                }

                Actor.LookAtManager.SetInteractionLookAt(Target, kTargetLookAtPriority, LookAtJointFilter.TorsoBones);
                if ((seat2 != null) && !seat2.IsAdjacentTo(otherSeat))
                {
                    Seat emptyAdjacentSeat = seat2.GetEmptyAdjacentSeat(Actor);
                    if (emptyAdjacentSeat != null)
                    {
                        InteractionInstance instance = otherSeat.CreateChangeSeatInteraction(emptyAdjacentSeat, GetPriority(), Autonomous, CancellableByPlayer);
                        SaunaClassic.StartSaunaSeatedCuddleA ea = Singleton.CreateInstance(Target, Actor, GetPriority(), Autonomous, CancellableByPlayer) as SaunaClassic.StartSaunaSeatedCuddleA;
                        Actor.InteractionQueue.PushAsContinuation(instance, true);
                        Actor.InteractionQueue.PushAsContinuation(ea, true);
                        return true;
                    }
                    return false;
                }

                SaunaClassic.StartSaunaSeatedCuddleB entry = SaunaClassic.StartSaunaSeatedCuddleB.Singleton.CreateInstance(Actor, Target, GetPriority(), false, CancellableByPlayer) as SaunaClassic.StartSaunaSeatedCuddleB;
                entry.SeatX = otherSeat;
                entry.SeatY = seat2;
                LinkedInteractionInstance = entry;
                Target.InteractionQueue.Add(entry);

                // Custom
                mReactToSocialBroadcaster = new ReactionBroadcaster(Actor, Conversation.ReactToSocialParams, SocialComponentEx.ReactToJealousEventMedium);
                //SocialComponent.SendCheatingEvents(Actor, Target, !Rejected);

                Actor.SynchronizationRole = Sim.SyncRole.Initiator;
                Actor.SynchronizationLevel = Sim.SyncLevel.Started;
                Actor.SynchronizationTarget = Target;
                Target.SynchronizationLevel = Sim.SyncLevel.NotStarted;
                if (!Actor.WaitForSynchronizationLevelWithSim(Target, Sim.SyncLevel.Started, (float)kHowLongToWaitForOtherToArrive))
                {
                    return false;
                }

                StartSocial("Cuddle");
                entry.Reject = Rejected;
                if (!Actor.WaitForSynchronizationLevelWithSim(Target, Sim.SyncLevel.Routed, (float)kHowLongToWaitForOtherToArrive))
                {
                    return false;
                }

                if (Rejected)
                {
                    if (Seat.SimsAreAdjacent(Actor, Target))
                    {
                        Seat.EnsureLivingChairPosture(Target);
                        bool paramValue = seat2 == otherSeat.Right;
                        EnterStateMachine("SeatingCuddle", "EnterSitting", "x", "y");
                        mCurrentStateMachine.EnterState("y", "EnterSitting");
                        mCurrentStateMachine.EnterState("SeatX", "EnterSitting");
                        mCurrentStateMachine.EnterState("SeatY", "EnterSitting");
                        SetActor("SeatX", otherSeat.Host);
                        SetParameter("SuffixX", otherSeat.IKSuffix);
                        SetActor("SeatY", seat2.Host);
                        SetParameter("SuffixY", seat2.IKSuffix);
                        SetActor("surface", otherSeat.Host);
                        SetParameter("IsMirrored", paramValue);
                        bool flag2 = otherSeat is IHotTubSeat;
                        SetParameter("IsHottub", flag2);
                        mCurrentStateMachine.RequestState(false, "x", "CuddleReject");
                        mCurrentStateMachine.RequestState(false, "SeatX", "CuddleReject");
                        mCurrentStateMachine.RequestState(false, "SeatY", "CuddleReject");
                        mCurrentStateMachine.RequestState(true, "y", "CuddleReject");
                        mCurrentStateMachine.RequestState(null, "ExitSitting");
                        Target.RouteAway(kMinDistanceToMoveAwayWhenRejected, kMaxDistanceToMoveAwayWhenRejected, true, new InteractionPriority(InteractionPriorityLevel.Zero), false, true, true, RouteDistancePreference.NoPreference);
                    }
                    else if (Actor.TraitManager.HasElement(TraitNames.HotHeaded))
                    {
                        Actor.PlayReaction(ReactionTypes.JealousIntense, ReactionSpeed.Immediate);
                    }
                    else if (Actor.TraitManager.HasElement(TraitNames.OverEmotional))
                    {
                        Actor.PlayReaction(ReactionTypes.JealousMild, ReactionSpeed.Immediate);
                    }
                    else if (Actor.TraitManager.HasAnyElement(new TraitNames[] { TraitNames.Flirty, TraitNames.GreatKisser }))
                    {
                        Actor.PlayReaction(ReactionTypes.Shrug, ReactionSpeed.Immediate);
                    }
                    else
                    {
                        Actor.PlayReaction(ReactionTypes.Awkward, ReactionSpeed.Immediate);
                    }
                    return false;
                }

                Actor.SynchronizationLevel = Sim.SyncLevel.Completed;
                if (!Actor.WaitForSynchronizationLevelWithSim(Target, Sim.SyncLevel.Completed, (float)kHowLongToWaitForOtherToArrive))
                {
                    return false;
                }

                if (!Seat.SimsAreAdjacent(Actor, Target))
                {
                    Actor.Posture.CurrentStateMachine.RequestState("x", "routeFail");
                    return false;
                }

                if (seat2 == null)
                {
                    seat2 = container.SeatingGroup[Target];
                }

                InteractionPriority priority = new InteractionPriority(InteractionPriorityLevel.Zero);
                CuddleSeated seated = CuddleSeated.Singleton.CreateInstance(Target, Actor, priority, false, CancellableByPlayer) as CuddleSeated;
                seated.AdoptSocialEffect(this);
                seated.SeatX = otherSeat;
                seated.SeatY = seat2;
                CuddleSeated seated2 = CuddleSeated.Singleton.CreateInstance(Actor, Target, priority, false, CancellableByPlayer) as CuddleSeated;
                seated2.SeatX = otherSeat;
                seated2.SeatY = seat2;
                seated.LinkedInteractionInstance = seated2;
                EventTracker.SendEvent(new SocialEvent(EventTypeId.kSocialInteraction, Actor, Target, "Cuddle", false, !Rejected, false, CommodityTypes.Undefined));
                EventTracker.SendEvent(new SocialEvent(EventTypeId.kSocialInteraction, Target, Actor, "Cuddle", true, !Rejected, false, CommodityTypes.Undefined));
                EventTracker.SendEvent(EventTypeId.kCuddled, Actor, Target);
                EventTracker.SendEvent(EventTypeId.kCuddled, Target, Actor);
                Actor.InteractionQueue.Add(seated);
                Target.InteractionQueue.Add(seated2);
                return !Rejected;
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.Exception(Actor, Target, e);
                return false;
            }
        }
Esempio n. 36
0
        public static void AddSocials(string name, SocialComponent ths, CommodityTypes commodity, Sim actor, Sim target, List<SocialInteractionCandidate> socials, bool isAutonomous, int maxNumSocials, List<InteractionObjectPair> results, string[] inlineParentMenu, TraitNames trait)
        {
            sMsg += Common.NewLine + "AddSocials " + name + " " + commodity + " " + socials.Count;

            int num = 0x0;
            InteractionPriority priority = new InteractionPriority(isAutonomous ? InteractionPriorityLevel.Autonomous : InteractionPriorityLevel.UserDirected);
            GreyedOutTooltipCallback greyedOutTooltipCallback = null;
            foreach (SocialInteractionCandidate candidate in socials)
            {
                string[] strArray = inlineParentMenu;
                bool flag = true;
                if (num >= maxNumSocials)
                {
                    break;
                }

                sMsg += Common.NewLine + " Testing " + candidate.Name;

                ActiveTopic topic = candidate.Topic;
                if (topic != null)
                {
                    ActiveTopicData data = topic.Data;
                    if (data.HasPieMenuOverride())
                    {
                        flag = false;
                        strArray = new string[] { data.GetText(actor, new object[0x0]) };
                    }
                }
                ActionData data2 = ActionData.Get(candidate.Name);
                if (data2.AppearsOnTopLevel)
                {
                    strArray = new string[0x0];
                }
                if (!ths.DoesSocialAppear(candidate.Name, results, strArray))
                {
                    InteractionObjectPair iop = null;
                    if (((data2.IntendedCommodityString == CommodityTypes.Friendly) && ((actor.Posture is ISeatedSocialPosture) || (target.Posture is ISeatedSocialPosture))) && data2.AllowCarryChild)
                    {
                        InteractionDefinition interaction = new SeatedSocialInteractionA.SeatedDefinition(candidate.Name, strArray, candidate.Topic, false, trait, false);
                        iop = new InteractionObjectPair(interaction, target);
                        InteractionInstanceParameters parameters = new InteractionInstanceParameters(iop, actor, priority, isAutonomous, true);
                        if (!IUtil.IsPass(interaction.Test(ref parameters, ref greyedOutTooltipCallback)))
                        {
                            iop = null;
                        }
                        if (((candidate.Name == "Chat") && !actor.CanBeInSameGroupTalkAsMe(target)) && (actor.Posture is ISeatedSocialPosture))
                        {
                            string[] strArray2 = new string[0x0];
                            if (!ths.DoesSocialAppear(candidate.Name, results, strArray2))
                            {
                                interaction = new SeatedSocialInteractionA.SeatedDefinition(candidate.Name, strArray2, candidate.Topic, false, trait, true);
                                InteractionObjectPair pair2 = new InteractionObjectPair(interaction, target);
                                parameters = new InteractionInstanceParameters(pair2, actor, priority, isAutonomous, true);
                                if (IUtil.IsPass(interaction.Test(ref parameters, ref greyedOutTooltipCallback)))
                                {
                                    results.Add(pair2);
                                }
                            }
                        }
                    }
                    if (iop == null)
                    {
                        iop = new InteractionObjectPair(new SocialInteractionA.Definition(candidate.Name, strArray, candidate.Topic, false, trait), target);
                    }
                    InteractionInstanceParameters parameters2 = new InteractionInstanceParameters(iop, actor, priority, isAutonomous, true);

                    InteractionTestResult result = iop.InteractionDefinition.Test(ref parameters2, ref greyedOutTooltipCallback);

                    sMsg += Common.NewLine + "  " + candidate.Name + " = " + result;

                    if ((IUtil.IsPass(result) || (greyedOutTooltipCallback != null)) || Sims3.Gameplay.UI.PieMenu.PieMenuShowFailureReason)
                    {
                        results.Add(iop);
                        if (flag)
                        {
                            num++;
                        }
                    }
                }
            }
        }
Esempio n. 37
0
        public static void DoRandomIdle(Sim sim, InteractionPriority priority)
        {
            //20% chance of doing random idle. 
            int percentage = RandomUtil.GetInt(1, 100);

            if (percentage <= 50)
            {
                string idle;
                IdleInfo info = null;

                bool customJazzGraph;
                ProductVersion version;

                idle = IdleManager.ChooseTraitIdle(sim.TraitManager.GetRandomVisibleElement().mTraitGuid, Sims3.SimIFace.CAS.CASAgeGenderFlags.Adult, Sims3.SimIFace.CAS.CASAgeGenderFlags.Female, out customJazzGraph, out version);

                foreach (IdleAnimationInfo item in IdleManager.sTraitIdleAnimations.Values)
                {
                    if (item.Animations != null)
                        info = item.Animations.Find(delegate(IdleInfo i) { return (!string.IsNullOrEmpty(i.AnimationName) && i.AnimationName.Equals(idle)); });
                    if (info != null)
                        break;
                }
                if (info != null)
                {
                    // CommonMethodsOFBBistroSet.PrintMessage(info.AnimationName);
                    Sim.PlayAnim(sim, info.AnimationName);
                }
            }
            else
            {
                sim.IdleManager.PlayOneFacialIdle();
            }
        }
Esempio n. 38
0
        private static List<InteractionObjectPair> SocialsForNewConversation(SocialComponent ths, Sim actor, Sim target, bool isAutonomous)
        {
            string msg = null;

            List<InteractionObjectPair> list = new List<InteractionObjectPair>();
            string[] path = new string[0x0];
            InteractionPriority priority = new InteractionPriority(isAutonomous ? InteractionPriorityLevel.Autonomous : InteractionPriorityLevel.UserDirected);
            GreyedOutTooltipCallback greyedOutTooltipCallback = null;
            foreach (string str in CelebrityManager.CanSocialize(actor, target) ? new string[] { "Greet Friendly", "Greet Insulting" } : new string[] { "Greet Celebrity" })
            {
                InteractionObjectPair iop = new InteractionObjectPair(new SocialInteractionA.Definition(str, path, null, false), target);
                InteractionInstanceParameters parameters = new InteractionInstanceParameters(iop, actor, priority, isAutonomous, true);

                InteractionTestResult result = iop.InteractionDefinition.Test(ref parameters, ref greyedOutTooltipCallback);

                msg += Common.NewLine + "A " + str + " " + iop.InteractionDefinition.GetType().ToString() + " " + result;

                if (result == InteractionTestResult.Pass)
                {
                    list.Add(iop);
                }
            }
            foreach (SocialInteractionCandidate candidate in Conversation.GetActiveTopicInteractions(Relationship.GetLongTermRelationship(actor, target), actor, target, null, isAutonomous))
            {
                if (candidate.Topic.Data.AvailableWhenConversationStarts)
                {
                    InteractionObjectPair pair2 = new InteractionObjectPair(new SocialInteractionA.Definition(candidate.Name, path, null, false), target);
                    InteractionInstanceParameters parameters2 = new InteractionInstanceParameters(pair2, actor, priority, isAutonomous, true);

                    InteractionTestResult result = pair2.InteractionDefinition.Test(ref parameters2, ref greyedOutTooltipCallback);

                    msg += Common.NewLine + "B " + candidate.Name + " " + pair2.InteractionDefinition.GetType().ToString() + " " + result;

                    if (result == InteractionTestResult.Pass)
                    {
                        list.Add(pair2);
                    }
                }
            }

            Common.WriteLog(msg);

            return list;
        }