Ejemplo n.º 1
0
        public static bool CloseTasks()
        {
            if (!IsOpen)
            {
                return(true);
            }

            return(SelectString.ClickLineEquals(RetainerTaskStrings.Quit));
        }
Ejemplo n.º 2
0
 public static bool OpenInventory()
 {
     if (IsOpen)
     {
         return(SelectString.ClickLineEquals(RetainerTaskStrings.Inventory));
     }
     Logging.Write("Retainer task window not open");
     return(false);
 }
Ejemplo n.º 3
0
        public async Task <bool> RetainerHandleVentures()
        {
            if (!SelectString.IsOpen)
            {
                return(false);
            }

            if (SelectString.Lines().Contains(Translator.VentureCompleteText))
            {
                //Log("Venture Done");
                SelectString.ClickLineEquals(Translator.VentureCompleteText);

                await Coroutine.Wait(5000, () => RetainerTaskResult.IsOpen);

                if (!RetainerTaskResult.IsOpen)
                {
                    Log("RetainerTaskResult didn't open");
                    return(false);
                }

                var taskId = AgentRetainerVenture.Instance.RetainerTask;

                var task = VentureData.Value.FirstOrDefault(i => i.Id == taskId);

                if (task != default(RetainerTaskData))
                {
                    Log($"Finished Venture {task.Name}");
                    Log($"Reassigning Venture {task.Name}");
                }
                else
                {
                    Log($"Finished Venture");
                    Log($"Reassigning Venture");
                }

                RetainerTaskResult.Reassign();

                await Coroutine.Wait(5000, () => RetainerTaskAsk.IsOpen);

                if (!RetainerTaskAsk.IsOpen)
                {
                    Log("RetainerTaskAsk didn't open");
                    return(false);
                }

                await Coroutine.Wait(2000, RetainerTaskAskExtensions.CanAssign);

                if (RetainerTaskAskExtensions.CanAssign())
                {
                    RetainerTaskAsk.Confirm();
                }
                else
                {
                    Log($"RetainerTaskAsk Error: {RetainerTaskAskExtensions.GetErrorReason()}");
                    RetainerTaskAsk.Close();
                }

                await Coroutine.Wait(1500, () => DialogOpen || SelectString.IsOpen);

                await Coroutine.Sleep(200);

                if (DialogOpen)
                {
                    Next();
                }
                await Coroutine.Sleep(200);

                await Coroutine.Wait(5000, () => SelectString.IsOpen);
            }
            else
            {
                Log("Venture Not Done");
            }


            return(true);
        }
Ejemplo n.º 4
0
        private async Task <bool> HandleWindows()
        {
            while (WindowsOpen())
            {
                if (SelectString.IsOpen)
                {
                    if (DialogOption > -1)
                    {
                        SelectString.ClickSlot((uint)DialogOption);
                    }

                    SelectString.ClickLineEquals(QuestName);
                    await Coroutine.Sleep(100);
                }

                if (SelectIconString.IsOpen)
                {
                    if (DialogOption > -1)
                    {
                        SelectIconString.ClickSlot((uint)DialogOption);
                    }

                    SelectIconString.ClickLineEquals(QuestName);
                    await Coroutine.Sleep(100);
                }

                if (SelectYesno.IsOpen)
                {
                    SelectYesno.ClickYes();
                    await Coroutine.Sleep(100);
                }

                if (Request.IsOpen)
                {
                    var items = InventoryManager.FilledInventoryAndArmory.ToArray();
                    for (int i = 0; i < ItemIds.Length; i++)
                    {
                        BagSlot item;
                        if (RequiresHq[i])
                        {
                            item = items.FirstOrDefault(z => z.RawItemId == ItemIds[i] && z.IsHighQuality && !usedSlots.Contains(z));
                        }
                        else
                        {
                            item = items.FirstOrDefault(z => z.RawItemId == ItemIds[i] && !usedSlots.Contains(z));
                        }

                        item.Handover();
                        usedSlots.Add(item);
                    }
                    usedSlots.Clear();
                    Request.HandOver();
                    await Coroutine.Sleep(100);
                }

                if (JournalResult.IsOpen)
                {
                    if (JournalResult.ButtonClickable)
                    {
                        JournalResult.Complete();
                    }

                    if (hasRewards)
                    {
                        JournalResult.SelectSlot(RewardSlot);
                    }

                    await Coroutine.Sleep(100);
                }

                if (JournalAccept.IsOpen)
                {
                    JournalAccept.Accept();
                    await Coroutine.Sleep(100);
                }

                if (Talk.DialogOpen)
                {
                    Talk.Next();
                    await Coroutine.Sleep(100);
                }

                if (QuestLogManager.InCutscene)
                {
                    if (AgentCutScene.Instance.CanSkip && !SelectString.IsOpen)
                    {
                        AgentCutScene.Instance.PromptSkip();
                        if (await Coroutine.Wait(600, () => SelectString.IsOpen))
                        {
                            SelectString.ClickSlot(0);
                            await Coroutine.Sleep(1000);
                        }
                    }
                }

                await Coroutine.Yield();
            }

            return(QuestLogManager.InCutscene || Core.Player.HasTarget);
        }