#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 <NPC Name> [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