Esempio n. 1
0
        public override async Task ExecuteComboAsync(Unit target, CancellationToken tk = new CancellationToken())
        {
            await HasNoLinkens(target, tk);
            await UseItems(target, tk);

            if (await DisableEnemy(target, tk) == DisabledState.UsedAbilityToDisable)
            {
                Log.Debug($"disabled!");
            }

            if (!MyHero.IsSilenced())
            {
                if (_stormboltAbility.IsAbilityEnabled() && _stormboltAbility.CanBeCasted(target) && _stormboltAbility.CanHit(target))
                {
                    _stormboltAbility.UseAbility(target);
                    Log.Debug($"stormbolt used");
                    await Await.Delay((int)(_stormboltAbility.FindCastPoint() * 1000.0 + Game.Ping), tk);
                }

                if (MyHero.Distance2D(target) <= 400)
                {
                    if (_warcryAbility.IsAbilityEnabled() && _warcryAbility.CanBeCasted())
                    {
                        _warcryAbility.UseAbility();
                        Log.Debug($"warcry used");
                        await Await.Delay(100, tk);
                    }

                    if (_ultAbility.IsAbilityEnabled() && _ultAbility.CanBeCasted())
                    {
                        Log.Debug($"use ult");
                        _ultAbility.UseAbility();
                        await Await.Delay(100, tk);
                    }
                }
            }

            // check if we are near the enemy
            if (!await MoveOrBlinkToEnemy(target, tk))
            {
                Log.Debug($"return because of blink");
                return;
            }
            //cast mom if all of our skills are on cooldown
            var mom = MyHero.GetItemById(ItemId.item_mask_of_madness);

            if (mom != null && mom.IsAbilityEnabled() && MyHero.CanAttack() && !_stormboltAbility.CanBeCasted() &&
                !_warcryAbility.CanBeCasted() && !_ultAbility.CanBeCasted() && mom.CanBeCasted())
            {
                Log.Debug($"Use mom");
                mom.UseAbility();
                await Await.Delay(250, tk);
            }

            if (ZaioMenu.ShouldUseOrbwalker && !target.IsStunned())
            {
                Orbwalk();
            }
        }