Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }