Ejemplo n.º 1
0
        protected override async Task <bool> Main()
        {
            var retainerList = new RetainerList();

            foreach (var unit in GameObjectManager.GetObjectsOfType <EventObject>().OrderBy(r => r.Distance()))
            {
                if (unit.Name == "Summoning Bell" || unit.Name == "Sonnette" || unit.Name == "Krämerklingel" || unit.Name == "リテイナーベル" || unit.Name == "传唤铃")
                {
                    unit.Interact();
                    break;
                }
            }

            if (!await Coroutine.Wait(5000, () => RetainerList.IsOpen))
            {
                return(isDone = true);
            }

            while (retainersLeft < RetainerCount)
            {
                Log("Checking Retainer Nº {0}", retainersLeft + 1);
                // Open specified retainer
                await retainerList.OpenRetainer(retainersLeft);

                retainersLeft++;
                await Coroutine.Wait(5000, () => Talk.DialogOpen);

                // Skip dialog
                Talk.Next();
                await Coroutine.Wait(5000, () => SelectString.IsOpen);

                foreach (var retainer in GameObjectManager.GetObjectsOfType <BattleCharacter>(true).OrderBy(r => r.Distance()))
                {
                    if (retainer.Type.ToString() == "Retainer")
                    {
                        retainerName = retainer.Name;
                        break;
                    }
                }

                switch (await CheckRetainer())
                {
                case VentureCheck.Completed:
                    Log("Venture complete! Sent {0} out again.", retainerName);
                    break;

                case VentureCheck.InProgress:
                    Log("Looks like {0} is still out on a venture! Skipping.", retainerName);
                    break;

                case VentureCheck.None:
                    Log("{0} isn't assigned any ventures. Skipping.", retainerName);
                    break;

                default:
                    Log("Something went wrong?");
                    break;
                }
                await CloseRetainer();
            }

            Log("Checked all retainers.");
            // Close retainers window.
            if (!retainerList.IsValid)
            {
                await retainerList.Refresh(1000);
            }
            await retainerList.CloseInstance(300);

            return(isDone = true);
        }