private static async Task DoTrash(Hero killStealTarget, CancellationToken cancellationToken, bool isKillSteal = false) { var target = killStealTarget; var myInventory = new List <Ability>(Members.MyHero.Inventory.Items) { _laser, _rockets }; var allItems = myInventory.Where(x => Helper.IsItemEnableNew(x.StoredName())).ToList(); var blinkPos = new Vector3(); var inventory = allItems.Where( x => ((x.StoredName() == "item_blink" && x.CheckDaggerForUsable(target.Position, out blinkPos) /*&& distance <= daggerCastRange + CloseRange*/) || (x.GetCastRange() > 0 && x.CanHit(target) /* && distance <= x.GetCastRange() + 150*/ && x.StoredName() != "item_blink") || (x.GetCastRange() <= 0)) && Utils.SleepCheck($"{x.Handle}+item_usages")) .OrderBy(Helper.PriorityHelper) .ToList(); var slarkMod = target.HasModifiers(new[] { "modifier_slark_dark_pact", "modifier_slark_dark_pact_pulses" }, false); if (inventory.Any(x => x.StoredName() == "item_ethereal_blade" && x.CanBeCasted() && x.CanHit(target))) { _ethereal.Sleep(1000); } foreach (var v in inventory) { if (v.CanBeCasted() && (v.TargetTeamType == TargetTeamType.None || (v.CanHit(target) && !v.Equals(_rockets)) || (v.Equals(_rockets) && Helper.CanRockedHit(target)))) { var name = v.StoredName(); if (v.DamageType == DamageType.Magical || v.StoredName().Contains("dagon")) { if (_ethereal.Sleeping && !target.HasModifier("modifier_item_ethereal_blade_ethereal")) { continue; } } if (v.IsAbilityBehavior(AbilityBehavior.NoTarget)) { await UseAbility(v); } else if (v.IsAbilityBehavior(AbilityBehavior.UnitTarget)) { if (v.TargetTeamType == TargetTeamType.Enemy || v.TargetTeamType == TargetTeamType.All || v.TargetTeamType == TargetTeamType.Custom) { if (v.IsDisable()) { if (!slarkMod && !target.IsLinkensProtected()) { await UseAbility(v, target); } } else if (v.IsSilence()) { if (!slarkMod) { if (!target.IsSilenced()) { await UseAbility(v, target); } } } else if ((v.DamageType == DamageType.Magical || v.StoredName() == "item_ethereal_blade") && target.HasModifiers( new[] { /*"modifier_templar_assassin_refraction_absorb", * "modifier_templar_assassin_refraction_absorb_stacks",*/ "modifier_oracle_fates_edict", "modifier_abaddon_borrowed_time" }, false)) { continue; } else { await UseAbility(v, target); } } else { await UseAbility(v, Members.MyHero); } } else { if (name == "item_blink") { if (isKillSteal) { continue; } Printer.Print("blink!"); await UseAbility(v, point : blinkPos); continue; } await UseAbility(v, point : target.NetworkPosition); } } } if (!isKillSteal && inventory.Any( v => v.CanBeCasted() && ((v.CanHit(target) && !v.Equals(_rockets)) || (v.Equals(_rockets) && Helper.CanRockedHit(target))))) { var count = inventory.Count( v => v.CanBeCasted() && ((v.CanHit(target) && !v.Equals(_rockets)) || (v.Equals(_rockets) && Helper.CanRockedHit(target)))); Printer.Print("do it again! " + count); await Task.Delay(20, cancellationToken); await DoTrash(killStealTarget, cancellationToken); } }
private static async Task DoTrash(Hero killStealTarget, CancellationToken cancellationToken, bool isKillSteal = false) { var target = killStealTarget; var myInventory = new List <Ability>(Members.MyHero.Inventory.Items) { _laser, _rockets }; var allItems = myInventory.Where(x => Helper.IsItemEnableNew(x.StoredName())).ToList(); var distance = (int)(Members.MyHero.Distance2D(target) - target.HullRadius * 2); var daggerCastRange = 1150 + (myInventory.Any(x => x.StoredName() == "item_aether_lens") ? 220 : 0); if (!Members.ExtraRange) { Members.ExtraRange = Members.MyHero.Spellbook() .Spells.Any(x => x.StoredName() == "special_bonus_cast_range_75" && x.Level > 0); } if (Members.ExtraRange) { daggerCastRange += 75; } daggerCastRange = Math.Min(distance, daggerCastRange); var inventory = allItems.Where( x => ((x.StoredName() == "item_blink" /*&& distance <= daggerCastRange + CloseRange*/) || (x.GetCastRange() > 0 && x.CanHit(target) /* && distance <= x.GetCastRange() + 150*/) || (x.GetCastRange() <= 0)) && Utils.SleepCheck($"{x.Handle}+item_usages")) .OrderBy(Helper.PriorityHelper) .ToList(); var slarkMod = target.HasModifiers(new[] { "modifier_slark_dark_pact", "modifier_slark_dark_pact_pulses" }, false); if (inventory.Any(x => x.StoredName() == "item_ethereal_blade" && x.CanBeCasted() && x.CanHit(target))) { _ethereal.Sleep(1000); } foreach (var v in inventory) { if (v.CanBeCasted() && (v.TargetTeamType == TargetTeamType.None || (v.CanHit(target) && !v.Equals(_rockets)) || (v.Equals(_rockets) && Helper.CanRockedHit(target)))) { var name = v.StoredName(); if (v.DamageType == DamageType.Magical || v.StoredName().Contains("dagon")) { if (_ethereal.Sleeping && !target.HasModifier("modifier_item_ethereal_blade_ethereal")) { continue; } } if (v.IsAbilityBehavior(AbilityBehavior.NoTarget)) { await UseAbility(v); } else if (v.IsAbilityBehavior(AbilityBehavior.UnitTarget)) { if (v.TargetTeamType == TargetTeamType.Enemy || v.TargetTeamType == TargetTeamType.All || v.TargetTeamType == TargetTeamType.Custom) { if (v.IsDisable()) { if (!slarkMod && !target.IsLinkensProtected()) { await UseAbility(v, target); } } else if (v.IsSilence()) { if (!slarkMod) { if (!target.IsSilenced()) { await UseAbility(v, target); } } } else if ((v.DamageType == DamageType.Magical || v.StoredName() == "item_ethereal_blade") && target.HasModifiers( new[] { /*"modifier_templar_assassin_refraction_absorb", * "modifier_templar_assassin_refraction_absorb_stacks",*/ "modifier_oracle_fates_edict", "modifier_abaddon_borrowed_time" }, false)) { continue; } else { await UseAbility(v, target); } } else { await UseAbility(v, Members.MyHero); } } else { if (name == "item_blink") { if (isKillSteal) { continue; } var angle = Members.MyHero.FindAngleBetween(target.Position, true); var point = new Vector3( (float) (Members.MyHero.Position.X + daggerCastRange * Math.Cos(angle)), (float) (Members.MyHero.Position.Y + daggerCastRange * Math.Sin(angle)), Members.MyHero.Position.Z); await UseAbility(v, point : point); continue; } await UseAbility(v, point : target.NetworkPosition); } } } if (!isKillSteal && inventory.Any( v => v.CanBeCasted() && ((v.CanHit(target) && !v.Equals(_rockets)) || (v.Equals(_rockets) && Helper.CanRockedHit(target))))) { var count = inventory.Count( v => v.CanBeCasted() && ((v.CanHit(target) && !v.Equals(_rockets)) || (v.Equals(_rockets) && Helper.CanRockedHit(target)))); Printer.Print("do it again! " + count); await Task.Delay(20, cancellationToken); await DoTrash(killStealTarget, cancellationToken); } }