#ifndef _mr_npc_helpers_ #define _mr_npc_helpers_ objectdef QuestHelpers { member:bool IsQuestPending() { return ${EQ2UIPage[PopUp,RewardPack].Child[button,RewardPack.ButtonComposite.Accept](exists)} } method AcceptQuest() { EQ2UIPage[PopUp,RewardPack].Child[button,RewardPack.ButtonComposite.Accept]:LeftClick } } objectdef NpcHelpers { variable QuestHelpers QuestHelper function GetQuestFromNpc(string npcName, string choices) { if ${npcName.Length} < 1 { echo "Usage: GetQuestFromNpc [comma separted string of dialog choices(optional)]" return } Actor[Query, Name =- "${npcName}"]:DoubleClick wait 5 variable int numChoices = 0 if ${choices.Length} > 0 { numChoices:Set[${choices.Count[","]}] numChoices:Inc } if ${numChoices} > 0 { variable int idx for (idx:Set[1]; ${idx} <= ${numChoices}; idx:Inc) { variable string choice choice:Set[${choices.Token[${idx}, ","]}] EQ2UIPage[ProxyActor,Conversation].Child[composite,replies].Child[${choice}]:LeftClick wait 5 } } else { variable int dialogOptionsTaken = 0; do { dialogOptionsTaken:Inc EQ2UIPage[ProxyActor,Conversation].Child[composite,replies].Child[1]:LeftClick wait 5 } while !${RewardWindow(exists)} && ${dialogOptionsTaken} < 10 } wait 5 if ${QuestHelper.IsQuestPending} { wait 5 QuestHelper:AcceptQuest } else { echo "Quest not offered" return } } } #endif