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