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(); } }