As seen below, after an NPC interaction takes place and a cutscene commences, sometimes I will see NullReferenceExceptions spam every few seconds until the cutscene ends. This does not happen every time, so is something happening outside of the cutscene that is causing this, such as an NPC walking away or changing IDs after the current step? Also, something of note: while in the cutscene during one of these errors, the dialog skipping (Talk.Next()?) does not fire like it usually does. Talk.Next() (I assume) fires off after another NullReferenceException appears in the RB window/log file. I'm not sure how to word it properly, but is this error causing dialog checks to not pulse(?) properly as well? Code: [03:45:25.718 V] [Poi.Clear] Reason: Current behavior changed to TalkToTag: LineNumber: 2944, IsDone: False, NpcId: 1000764, InteractDistance: 5, BypassTargetChange: False, XYZ: <218.8906, -28.25249, 338.3992>, NPC: Nolanel 0x4BF11F90, HighPriority: False, InCombat: False, QuestId: 65584, StepId: 3, PostCombatDelay: 0, QuestName: Trial by Earth, IsDoneCache: False, Behavior: TreeSharp.PrioritySelector, . [03:45:25.718 D] Removed all hooks from [HighPriorityProfileOrderBehavior_Hook] [03:45:25.718 D] Replaced hook [ProfileOrderBehavior_Hook] be665532-5a6d-4852-a9b4-42f0016277d1 [03:45:25.723 D] Interacting with Nolanel 0x4BF11F90 [03:45:28.487 N] Waiting at location for valid npc to spawn [COLOR="#FF0000"][03:45:33.513 D] System.NullReferenceException: Object reference not set to an instance of an object. at ff14bot.NeoProfiles.Tags.TalkToTag.(Object ) at TreeSharp.Action.RunAction(Object context) at TreeSharp.Action.<Execute>d__0.MoveNext() at TreeSharp.Composite.Tick(Object context) at TreeSharp.Sequence.<Execute>d__0.MoveNext() at TreeSharp.Composite.Tick(Object context) at TreeSharp.Decorator.<Execute>d__0.MoveNext() at TreeSharp.Composite.Tick(Object context) at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext() at TreeSharp.Composite.Tick(Object context) at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext() at TreeSharp.Composite.Tick(Object context) at ff14bot.Behavior.HookExecutor.Run(Object context) at TreeSharp.Action.RunAction(Object context) at TreeSharp.Action.<Execute>d__0.MoveNext() at TreeSharp.Composite.Tick(Object context) at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext() at TreeSharp.Composite.Tick(Object context) at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext() at TreeSharp.Composite.Tick(Object context) at ff14bot.Behavior.HookExecutor.Run(Object context) at TreeSharp.Action.RunAction(Object context) at TreeSharp.Action.<Execute>d__0.MoveNext() at TreeSharp.Composite.Tick(Object context) at TreeSharp.Decorator.<Execute>d__0.MoveNext() at TreeSharp.Composite.Tick(Object context) at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext() at TreeSharp.Composite.Tick(Object context) at ff14bot.TreeRoot.()[/COLOR]
Add a <WaitWhile Condition="Core.Player.InCutscene"/> after the interact, looks like the profile is trying to move on when it can't, or rather, the talktotag hasn't registered as IsDone.
I've added that to a number of other quest steps where a cutscene starts upon zoning in after a UseTransport or something, but do I really need to add it for possibly hundreds of quest steps? I already considered it, but it seems a bit redundant to have to do that, no?
The waitwhile won't work since it's pulsing again before the waitwhile gets executed. you can try this: Code: using Clio.XmlEngine; using ff14bot.Behavior; using ff14bot.Managers; using TreeSharp; namespace ff14bot.NeoProfiles.Tags { [XmlElement("ExtendedTalkTo")] class ExtendedTalkToTag : TalkToTag { protected override Composite CreateBehavior() { return new PrioritySelector( new Decorator(c => QuestLogManager.InCutscene && RemoteWindows.SelectYesno.IsOpen, new Action(ctx => { RemoteWindows.SelectYesno.ClickYes(); })), new Decorator(c => QuestLogManager.InCutscene, new ActionAlwaysSucceed()), base.CreateBehavior() ); } } } I think(?) the cutscene skip dialog is a SelectYesno, but you'll have to verify yourself if it's a different window and find/replace all <TalkTo with <ExtendedTalkTo
Yeah, it's a necessary evil for some quests, much like the zonecheck bonanza. Either that, or a waitwhile condition="not questvariable".. IIRC the individual tags have wait commands built in, but something is definitely causing the tag to not register as done, be it the cutscene or something else, our job is to find a workaround, until such a time as Mastahg releases the source and we can modify them.