Ejemplo n.º 1
0
        public async Task MountUp()
        {
            if (playerReader.Level >= minLevelToMount)
            {
                if (playerReader.Class == PlayerClassEnum.Druid)
                {
                    classConfig.Form
                    .Where(s => s.FormEnum == Form.Druid_Travel)
                    .ToList()
                    .ForEach(async k => await input.KeyPress(k.ConsoleKey, 50));
                }
                else
                {
                    if (playerReader.Bits.IsFalling)
                    {
                        (bool notfalling, double fallingElapsedMs) = await wait.InterruptTask(10000, () => !playerReader.Bits.IsFalling);

                        logger.LogInformation($"{GetType().Name}: waited for landing interrupted: {!notfalling} - {fallingElapsedMs}ms");
                    }

                    await stopMoving.Stop();

                    await wait.Update(1);

                    await input.TapMount();

                    (bool notStartedCasted, double castStartElapsedMs) = await wait.InterruptTask(400, () => playerReader.Bits.IsMounted || playerReader.IsCasting);

                    logger.LogInformation($"{GetType().Name}: casting: {!notStartedCasted} | Mounted: {playerReader.Bits.IsMounted} | Delay: {castStartElapsedMs}ms");

                    if (!playerReader.Bits.IsMounted)
                    {
                        (bool notmounted, double elapsedMs) = await wait.InterruptTask(mountCastTimeMs, () => playerReader.Bits.IsMounted || !playerReader.IsCasting);

                        logger.LogInformation($"{GetType().Name}: interrupted: {!notmounted} | Mounted: {playerReader.Bits.IsMounted} | Delay: {elapsedMs}ms");
                    }
                }
            }
        }