Example #1
0
 public void ClearAll()
 {
     LoadLevelList.Clear();
     StartTestDriveList.Clear();
     FinishTestDriveList.Clear();
     StartGameList.Clear();
     FinishGameList.Clear();
     RoundGameList.Clear();
     StartActiveBattleList.Clear();
     PlayerLoadList.Clear();
     DamageList.Clear();
     KillList.Clear();
     KillAssistList.Clear();
     ScoreList.Clear();
     DecalList.Clear();
 }
        private void OnUpdate()
        {
            var heroes = EntityManager <Hero> .Entities.Where(x => x.IsValid && !x.IsIllusion).ToList();

            DamageList.Clear();

            foreach (var target in heroes.Where(x => x.IsAlive && x.IsEnemy(Owner)).ToList())
            {
                List <BaseAbility> abilities = new List <BaseAbility>();

                var hitArcaneBolt = 0.0f;

                if (target.IsVisible)
                {
                    // AncientSeal
                    var ancientSeal = Abilities.AncientSeal;
                    if (ancientSeal.Ability.Level > 0 && Menu.AutoKillStealToggler.Value.IsEnabled(ancientSeal.ToString()))
                    {
                        abilities.Add(ancientSeal);
                    }

                    // Veil
                    var veil = Abilities.Veil;
                    if (veil != null && veil.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(veil.ToString()))
                    {
                        abilities.Add(veil);
                    }

                    // Ethereal
                    var ethereal = Abilities.Ethereal;
                    if (ethereal != null && ethereal.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(ethereal.ToString()))
                    {
                        abilities.Add(ethereal);
                    }

                    // Shivas
                    var shivas = Abilities.Shivas;
                    if (shivas != null && shivas.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(shivas.ToString()))
                    {
                        abilities.Add(shivas);
                    }

                    // ConcussiveShot
                    var concussiveShot = Abilities.ConcussiveShot;
                    if (concussiveShot.Ability.Level > 0 && Menu.AutoKillStealToggler.Value.IsEnabled(concussiveShot.ToString()) && target == concussiveShot.TargetHit)
                    {
                        abilities.Add(concussiveShot);
                    }

                    // ArcaneBolt
                    var arcaneBolt = Abilities.ArcaneBolt;
                    if (arcaneBolt.Ability.Level > 0 && Menu.AutoKillStealToggler.Value.IsEnabled(arcaneBolt.ToString()))
                    {
                        abilities.Add(arcaneBolt);

                        if (MultiSleeper.Sleeping($"arcanebolt_{ target.Name }"))
                        {
                            hitArcaneBolt += arcaneBolt.GetDamage(target);
                        }
                    }

                    // Dagon
                    var dagon = Abilities.Dagon;
                    if (dagon != null && dagon.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled("item_dagon_5"))
                    {
                        abilities.Add(dagon);
                    }
                }

                var damageCalculation = new Combo(abilities.ToArray());
                var damageReduction   = -DamageReduction(target, heroes);
                var damageBlock       = DamageBlock(target, heroes);

                var livingArmor = LivingArmor(target, heroes, damageCalculation.Abilities);
                var damage      = DamageHelpers.GetSpellDamage((damageCalculation.GetDamage(target) + hitArcaneBolt) + damageBlock, 0, damageReduction) - livingArmor;
                var readyDamage = DamageHelpers.GetSpellDamage(damageCalculation.GetDamage(target, true, false) + damageBlock, 0, damageReduction) - livingArmor;
                var totalDamage = DamageHelpers.GetSpellDamage(damageCalculation.GetDamage(target, false, false) + damageBlock, 0, damageReduction) - livingArmor;

                if (target.IsInvulnerable() || target.HasAnyModifiers(BlockModifiers))
                {
                    damage      = 0.0f;
                    readyDamage = 0.0f;
                }

                DamageList.Add(new Damage(target, damage, readyDamage, totalDamage, target.Health));
            }
        }
Example #3
0
        private void OnUpdate()
        {
            var heroes = EntityManager <Hero> .Entities.Where(x => !x.IsIllusion && x.IsValid).ToList();

            DamageList.Clear();

            foreach (var hero in heroes.Where(x => x.IsAlive && x.IsEnemy(Owner)).ToList())
            {
                List <BaseAbility> abilities = new List <BaseAbility>();

                var damage      = 0.0f;
                var readyDamage = 0.0f;
                var totalDamage = 0.0f;

                if (hero.IsVisible)
                {
                    // Veil
                    var Veil = Main.Veil;
                    if (Veil != null && Veil.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(Veil.ToString()))
                    {
                        abilities.Add(Veil);
                    }

                    // Ethereal
                    var Ethereal = Main.Ethereal;
                    if (Ethereal != null && Ethereal.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(Ethereal.ToString()))
                    {
                        abilities.Add(Ethereal);
                    }

                    // Shivas
                    var Shivas = Main.Shivas;
                    if (Shivas != null && Shivas.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(Shivas.ToString()))
                    {
                        abilities.Add(Shivas);
                    }

                    // StaticField
                    var StaticField = Main.StaticField;
                    if (StaticField.Ability.Level > 0 && Menu.AutoKillStealToggler.Value.IsEnabled(StaticField.ToString()))
                    {
                        abilities.Add(StaticField);
                    }

                    // LightningBolt
                    var LightningBolt = Main.LightningBolt;
                    if (LightningBolt.Ability.Level > 0 && Menu.AutoKillStealToggler.Value.IsEnabled(LightningBolt.ToString()))
                    {
                        abilities.Add(LightningBolt);
                    }

                    // Dagon
                    var Dagon = Main.Dagon;
                    if (Dagon != null && Dagon.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(Dagon.ToString()))
                    {
                        abilities.Add(Dagon);
                    }

                    // ArcLightning
                    var ArcLightning = Main.ArcLightning;
                    if (ArcLightning.Ability.Level > 0 && Menu.AutoKillStealToggler.Value.IsEnabled(ArcLightning.ToString()))
                    {
                        abilities.Add(ArcLightning);
                    }

                    // Nimbus
                    var Nimbus = Main.Nimbus;
                    if (Nimbus.Ability.Level > 0 && Menu.AutoKillStealToggler.Value.IsEnabled(Nimbus.ToString()))
                    {
                        abilities.Add(Nimbus);
                    }

                    // Thundergods Wrath
                    var ThundergodsWrath = Main.ThundergodsWrath;
                    if (ThundergodsWrath.Ability.Level > 0 && Menu.AutoKillStealToggler.Value.IsEnabled(ThundergodsWrath.ToString()))
                    {
                        abilities.Add(ThundergodsWrath);
                    }
                }

                var damageCalculation = new Combo(abilities.ToArray());
                var damageReduction   = -DamageReduction(hero, heroes);
                var damageBlock       = DamageBlock(hero, heroes);

                damage      += DamageHelpers.GetSpellDamage(damageCalculation.GetDamage(hero) + damageBlock, 0, damageReduction);
                readyDamage += DamageHelpers.GetSpellDamage(damageCalculation.GetDamage(hero, true, false) + damageBlock, 0, damageReduction);
                totalDamage += DamageHelpers.GetSpellDamage(damageCalculation.GetDamage(hero, false, false) + damageBlock, 0, damageReduction);

                damage      -= LivingArmor(hero, heroes, damageCalculation.Abilities);
                readyDamage -= LivingArmor(hero, heroes, damageCalculation.Abilities);
                totalDamage -= LivingArmor(hero, heroes, damageCalculation.Abilities);

                if (hero.HasModifier("modifier_abaddon_borrowed_time") ||
                    hero.HasModifier("modifier_templar_assassin_refraction_absorb") ||
                    hero.HasAnyModifiers("modifier_winter_wyvern_winters_curse_aura", "modifier_winter_wyvern_winters_curse") ||
                    hero.IsInvulnerable())
                {
                    damage      = 0.0f;
                    readyDamage = 0.0f;
                }

                DamageList.Add(new Damage(hero, damage, readyDamage, totalDamage, hero.Health));
            }
        }
        private void OnUpdate()
        {
            var heroes = EntityManager <Hero> .Entities.Where(x => x.IsValid && !x.IsIllusion).ToList();

            DamageList.Clear();

            foreach (var target in heroes.Where(x => x.IsAlive && x.IsEnemy(Owner)).ToList())
            {
                List <BaseAbility> magicalAbilities = new List <BaseAbility>();
                List <BaseAbility> pureAbilities    = new List <BaseAbility>();

                var damage      = 0.0f;
                var readyDamage = 0.0f;
                var totalDamage = 0.0f;

                if (target.IsVisible)
                {
                    // Veil
                    var Veil = Main.Veil;
                    if (Veil != null && Veil.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(Veil.ToString()))
                    {
                        magicalAbilities.Add(Veil);
                    }

                    // Ethereal
                    var Ethereal = Main.Ethereal;
                    if (Ethereal != null && Ethereal.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(Ethereal.ToString()))
                    {
                        magicalAbilities.Add(Ethereal);
                    }

                    // Shivas
                    var Shivas = Main.Shivas;
                    if (Shivas != null && Shivas.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(Shivas.ToString()))
                    {
                        magicalAbilities.Add(Shivas);
                    }

                    // Dagon
                    var Dagon = Main.Dagon;
                    if (Dagon != null && Dagon.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled("item_dagon_5"))
                    {
                        magicalAbilities.Add(Dagon);
                    }

                    // Impetus
                    var Impetus = Main.Impetus;
                    if (Impetus.Ability.Level > 0 && Menu.AutoKillStealToggler.Value.IsEnabled(Impetus.ToString()))
                    {
                        pureAbilities.Add(Impetus);
                    }
                }

                Combo[] combo           = { new Combo(magicalAbilities.ToArray()), new Combo(pureAbilities.ToArray()) };
                float[] block           = { MagicalDamageBlock(target, heroes), DamageBlock(target, heroes) };
                var     damageReduction = -DamageReduction(target, heroes);

                for (var i = 0; i < 2; i++)
                {
                    var livingArmor = LivingArmor(target, heroes, combo[i].Abilities);
                    damage      += DamageHelpers.GetSpellDamage(Math.Max(0, combo[i].GetDamage(target) + block[i]), 0, damageReduction) - livingArmor;
                    readyDamage += DamageHelpers.GetSpellDamage(Math.Max(0, combo[i].GetDamage(target, true, false) + block[i]), 0, damageReduction) - livingArmor;
                    totalDamage += DamageHelpers.GetSpellDamage(Math.Max(0, combo[i].GetDamage(target, false, false) + block[i]), 0, damageReduction) - livingArmor;
                }

                if (target.HasAnyModifiers("modifier_abaddon_borrowed_time", "modifier_item_combo_breaker_buff") ||
                    target.HasModifier("modifier_templar_assassin_refraction_absorb") ||
                    target.HasAnyModifiers("modifier_winter_wyvern_winters_curse_aura", "modifier_winter_wyvern_winters_curse") ||
                    target.IsInvulnerable())
                {
                    damage      = 0.0f;
                    readyDamage = 0.0f;
                }

                DamageList.Add(new Damage(target, damage, readyDamage, totalDamage, target.Health));
            }
        }
        private void OnUpdate()
        {
            var heroes = EntityManager <Hero> .Entities.Where(x => x.IsValid && !x.IsIllusion).ToList();

            DamageList.Clear();

            foreach (var target in heroes.Where(x => x.IsAlive && x.IsEnemy(Owner)).ToList())
            {
                List <BaseAbility> abilities   = new List <BaseAbility>();
                List <BaseAbility> abilityHook = new List <BaseAbility>();

                if (target.IsVisible)
                {
                    // Veil
                    var veil = Main.Veil;
                    if (veil != null && veil.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(veil.ToString()))
                    {
                        abilities.Add(veil);
                    }

                    // Ethereal
                    var ethereal = Main.Ethereal;
                    if (ethereal != null && ethereal.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(ethereal.ToString()))
                    {
                        abilities.Add(ethereal);
                    }

                    // Shivas
                    var shivas = Main.Shivas;
                    if (shivas != null && shivas.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(shivas.ToString()))
                    {
                        abilities.Add(shivas);
                    }

                    // hook
                    var hook = Main.Hook;
                    if (hook.Ability.Level > 0 && Menu.AutoKillStealToggler.Value.IsEnabled(hook.ToString()))
                    {
                        abilityHook.Add(hook);
                    }

                    // Dagon
                    var dagon = Main.Dagon;
                    if (dagon != null &&
                        dagon.Ability.IsValid &&
                        Menu.AutoKillStealToggler.Value.IsEnabled("item_dagon_5") &&
                        Extensions.ShouldCastHook(hook.GetPredictionOutput(hook.GetPredictionInput(target))))
                    {
                        abilities.Add(dagon);
                    }
                }

                Combo[] combo           = { new Combo(abilities.ToArray()), new Combo(abilityHook.ToArray()) };
                float[] block           = { MagicalDamageBlock(target, heroes), DamageBlock(target, heroes) };
                var     damageReduction = -DamageReduction(target, heroes);

                var damage      = 0.0f;
                var readyDamage = 0.0f;
                var totalDamage = 0.0f;

                for (var i = 0; i < 2; i++)
                {
                    var livingArmor = LivingArmor(target, heroes, combo[i].Abilities);
                    damage      += DamageHelpers.GetSpellDamage(Math.Max(0, combo[i].GetDamage(target) + block[i]), 0, damageReduction) - livingArmor;
                    readyDamage += DamageHelpers.GetSpellDamage(Math.Max(0, combo[i].GetDamage(target, true, false) + block[i]), 0, damageReduction) - livingArmor;
                    totalDamage += DamageHelpers.GetSpellDamage(Math.Max(0, combo[i].GetDamage(target, false, false) + block[i]), 0, damageReduction) - livingArmor;
                }

                if (target.IsInvulnerable() || target.HasAnyModifiers(BlockModifiers))
                {
                    damage      = 0.0f;
                    readyDamage = 0.0f;
                }

                DamageList.Add(new Damage(target, damage, readyDamage, totalDamage, target.Health));
            }
        }
        private void OnUpdate()
        {
            var heroes = EntityManager <Hero> .Entities.Where(x => x.IsValid && !x.IsIllusion).ToList();

            DamageList.Clear();

            foreach (var target in heroes.Where(x => x.IsAlive && x.IsEnemy(Owner)).ToList())
            {
                List <BaseAbility> abilities = new List <BaseAbility>();

                if (target.IsVisible)
                {
                    // Veil
                    var veil = Main.Veil;
                    if (veil != null && veil.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(veil.ToString()))
                    {
                        abilities.Add(veil);
                    }

                    // Ethereal
                    var ethereal = Main.Ethereal;
                    if (ethereal != null && ethereal.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(ethereal.ToString()))
                    {
                        abilities.Add(ethereal);
                    }

                    // Shivas
                    var shivas = Main.Shivas;
                    if (shivas != null && shivas.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(shivas.ToString()))
                    {
                        abilities.Add(shivas);
                    }

                    // ConcussiveShot
                    var soulAssumption = Main.SoulAssumption;
                    if (soulAssumption.Ability.Level > 0 && Menu.AutoKillStealToggler.Value.IsEnabled(soulAssumption.ToString()) && soulAssumption.MaxCharges)
                    {
                        abilities.Add(soulAssumption);
                    }

                    // Dagon
                    var dagon = Main.Dagon;
                    if (dagon != null && dagon.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled("item_dagon_5"))
                    {
                        abilities.Add(dagon);
                    }
                }

                var damageCalculation = new Combo(abilities.ToArray());
                var damageReduction   = -DamageReduction(target, heroes);
                var damageBlock       = DamageBlock(target, heroes);

                var livingArmor = LivingArmor(target, heroes, damageCalculation.Abilities);
                var damage      = DamageHelpers.GetSpellDamage(damageCalculation.GetDamage(target) + damageBlock, 0, damageReduction) - livingArmor;
                var readyDamage = DamageHelpers.GetSpellDamage(damageCalculation.GetDamage(target, true, false) + damageBlock, 0, damageReduction) - livingArmor;
                var totalDamage = DamageHelpers.GetSpellDamage(damageCalculation.GetDamage(target, false, false) + damageBlock, 0, damageReduction) - livingArmor;

                if (target.IsInvulnerable() ||
                    target.HasAnyModifiers("modifier_abaddon_borrowed_time", "modifier_item_combo_breaker_buff") ||
                    target.HasModifier("modifier_templar_assassin_refraction_absorb") ||
                    target.HasAnyModifiers("modifier_winter_wyvern_winters_curse_aura", "modifier_winter_wyvern_winters_curse"))
                {
                    damage      = 0.0f;
                    readyDamage = 0.0f;
                }

                DamageList.Add(new Damage(target, damage, readyDamage, totalDamage, target.Health));
            }
        }
        private void OnUpdate()
        {
            var heroes = EntityManager <Hero> .Entities.Where(x => x.IsValid && !x.IsIllusion).ToList();

            DamageList.Clear();

            foreach (var target in heroes.Where(x => x.IsAlive && x.IsEnemy(Owner)).ToList())
            {
                List <BaseAbility> abilities = new List <BaseAbility>();

                var damageOdds      = 0.0f;
                var readyDamageOdds = 0.0f;
                var totalDamageOdds = 0.0f;

                if (target.IsVisible)
                {
                    // Veil
                    var veil = Main.Veil;
                    if (veil != null && veil.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(veil.ToString()))
                    {
                        abilities.Add(veil);
                    }

                    // Ethereal
                    var ethereal = Main.Ethereal;
                    if (ethereal != null && ethereal.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(ethereal.ToString()))
                    {
                        abilities.Add(ethereal);
                    }

                    // Shivas
                    var shivas = Main.Shivas;
                    if (shivas != null && shivas.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(shivas.ToString()))
                    {
                        abilities.Add(shivas);
                    }

                    // Dagon
                    var dagon = Main.Dagon;
                    if (dagon != null && dagon.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled("item_dagon_5"))
                    {
                        abilities.Add(dagon);
                    }

                    // Overwhelming Odds
                    var overwhelmingOdds = Main.OverwhelmingOdds;
                    if (overwhelmingOdds.Ability.Level > 0 && Menu.AutoKillStealToggler.Value.IsEnabled(overwhelmingOdds.ToString()))
                    {
                        var input = new PredictionInput
                        {
                            Owner                   = Owner,
                            AreaOfEffect            = overwhelmingOdds.HasAreaOfEffect,
                            AreaOfEffectTargets     = UpdateMode.OverwhelmingOddsUnits,
                            CollisionTypes          = overwhelmingOdds.CollisionTypes,
                            Delay                   = overwhelmingOdds.CastPoint + overwhelmingOdds.ActivationDelay,
                            Speed                   = overwhelmingOdds.Speed,
                            Range                   = float.MaxValue,
                            Radius                  = overwhelmingOdds.Radius,
                            PredictionSkillshotType = overwhelmingOdds.PredictionSkillshotType
                        };

                        var castPosition = overwhelmingOdds.GetPredictionOutput(input.WithTarget(target)).CastPosition;
                        var damageUnits  = overwhelmingOdds.GetDamage(castPosition, target);

                        if (overwhelmingOdds.IsReady && !Owner.IsStunned() && !Owner.IsMuted() && !Owner.IsSilenced())
                        {
                            if (Owner.Distance2D(castPosition) <= overwhelmingOdds.CastRange)
                            {
                                damageOdds += damageUnits;
                            }

                            readyDamageOdds += damageUnits;
                        }

                        totalDamageOdds += damageUnits;
                    }
                }

                var damageCalculation = new Combo(abilities.ToArray());
                var damageReduction   = -DamageReduction(target, heroes);
                var damageBlock       = MagicalDamageBlock(target, heroes);

                var livingArmor = LivingArmor(target, heroes, damageCalculation.Abilities);
                var damage      = DamageHelpers.GetSpellDamage((damageCalculation.GetDamage(target) + damageOdds) + damageBlock, 0, damageReduction) - livingArmor;
                var readyDamage = DamageHelpers.GetSpellDamage((damageCalculation.GetDamage(target, true, false) + readyDamageOdds) + damageBlock, 0, damageReduction) - livingArmor;
                var totalDamage = DamageHelpers.GetSpellDamage((damageCalculation.GetDamage(target, false, false) + totalDamageOdds) + damageBlock, 0, damageReduction) - livingArmor;

                if (target.IsInvulnerable() || target.HasAnyModifiers(BlockModifiers))
                {
                    damage      = 0.0f;
                    readyDamage = 0.0f;
                }

                DamageList.Add(new Damage(target, damage, readyDamage, totalDamage, target.Health));
            }
        }
        private void OnUpdate()
        {
            var heroes = EntityManager <Hero> .Entities.Where(x => x.IsValid && !x.IsIllusion).ToList();

            DamageList.Clear();

            foreach (var target in heroes.Where(x => x.IsAlive && x.IsEnemy(Owner)).ToList())
            {
                List <BaseAbility> abilities = new List <BaseAbility>();

                var damage      = 0.0f;
                var readyDamage = 0.0f;
                var totalDamage = 0.0f;

                if (target.IsVisible)
                {
                    // Veil
                    var Veil = Main.Veil;
                    if (Veil != null && Veil.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(Veil.ToString()))
                    {
                        abilities.Add(Veil);
                    }

                    // Ethereal
                    var Ethereal = Main.Ethereal;
                    if (Ethereal != null && Ethereal.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(Ethereal.ToString()))
                    {
                        abilities.Add(Ethereal);
                    }

                    // Shivas
                    var Shivas = Main.Shivas;
                    if (Shivas != null && Shivas.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled(Shivas.ToString()))
                    {
                        abilities.Add(Shivas);
                    }

                    // Impale
                    var Impale = Main.Impale;
                    if (Impale.Ability.Level > 0 && Menu.AutoKillStealToggler.Value.IsEnabled(Impale.ToString()))
                    {
                        abilities.Add(Impale);
                    }

                    // ManaBurn
                    var ManaBurn = Main.ManaBurn;
                    if (ManaBurn.Ability.Level > 0 && Menu.AutoKillStealToggler.Value.IsEnabled(ManaBurn.ToString()) && target.Mana > 80)
                    {
                        abilities.Add(ManaBurn);
                    }

                    // Dagon
                    var Dagon = Main.Dagon;
                    if (Dagon != null && Dagon.Ability.IsValid && Menu.AutoKillStealToggler.Value.IsEnabled("item_dagon_5"))
                    {
                        abilities.Add(Dagon);
                    }

                    // Vendetta
                    var Vendetta = Main.Vendetta;
                    if (Vendetta.Ability.Level > 0)
                    {
                        if (Owner.HasModifier(Vendetta.ModifierName))
                        {
                            damage += Vendetta.GetDamage(target);
                        }
                        else if (Vendetta.CanBeCasted)
                        {
                            readyDamage += Vendetta.GetDamage(target);
                        }

                        totalDamage += Vendetta.GetDamage(target);
                    }
                }

                var damageCalculation = new Combo(abilities.ToArray());
                var damageReduction   = -DamageReduction(target, heroes);
                var damageBlock       = DamageBlock(target, heroes);

                damage      += DamageHelpers.GetSpellDamage(damageCalculation.GetDamage(target) + damageBlock, 0, damageReduction);
                readyDamage += DamageHelpers.GetSpellDamage(damageCalculation.GetDamage(target, true, false) + damageBlock, 0, damageReduction);
                totalDamage += DamageHelpers.GetSpellDamage(damageCalculation.GetDamage(target, false, false) + damageBlock, 0, damageReduction);

                damage      -= LivingArmor(target, heroes, damageCalculation.Abilities, damage);
                readyDamage -= LivingArmor(target, heroes, damageCalculation.Abilities, readyDamage);
                totalDamage -= LivingArmor(target, heroes, damageCalculation.Abilities, totalDamage);

                if (target.HasAnyModifiers("modifier_abaddon_borrowed_time", "modifier_item_combo_breaker_buff") ||
                    target.HasModifier("modifier_templar_assassin_refraction_absorb") ||
                    target.HasAnyModifiers("modifier_winter_wyvern_winters_curse_aura", "modifier_winter_wyvern_winters_curse") ||
                    target.IsInvulnerable())
                {
                    damage      = 0.0f;
                    readyDamage = 0.0f;
                }

                DamageList.Add(new Damage(target, damage, readyDamage, totalDamage, target.Health));
            }
        }
Example #9
0
        public void OnUpdate()
        {
            var heroes = EntityManager <Hero> .Entities.Where(x => x.IsValid && !x.IsIllusion).ToList();

            DamageList.Clear();

            foreach (var target in heroes.Where(x => x.IsAlive && x.IsEnemy(Owner)).ToList())
            {
                List <BaseAbility> abilities = new List <BaseAbility>();

                var  damageByAura    = 0.0f;
                var  extendUltDamage = 0.0f;
                var  damageByAttack  = 0.0f;
                var  damageOfMisc    = 0f;
                bool canAttack       = true;
                if (target.IsVisible)
                {
                    // Veil
                    var veil = _abilities.Veil;
                    if (veil != null && veil.Ability.IsValid)
                    {
                        abilities.Add(veil);
                    }

                    // Ethereal
                    var ethereal = _abilities.Ethereal;
                    if (ethereal != null && ethereal.Ability.IsValid)
                    {
                        abilities.Add(ethereal);
                        canAttack = false;
                    }

                    // Shivas
                    var shivas = _abilities.Shivas;
                    if (shivas != null && shivas.Ability.IsValid)
                    {
                        abilities.Add(shivas);
                    }
                    //1
                    var pulseSkill = _abilities.Pulse;
                    if (pulseSkill.Ability.Level > 0)
                    {
                        abilities.Add(pulseSkill);
                    }
                    // Dagon
                    var dagon = _abilities.Dagon;
                    if (dagon != null && dagon.Ability.IsValid)
                    {
                        abilities.Add(dagon);
                    }

                    // ult
                    var ultSkill = _abilities.Scythe;
                    if (ultSkill.Ability.Level > 0)
                    {
                        abilities.Add(ultSkill);
                    }

                    var auraSkill = _abilities.HeartAura;
                    if (auraSkill.Ability.Level > 0)
                    {
                        damageByAura = auraSkill.GetDamage(target, 1);
                    }

                    if (canAttack)
                    {
                        damageByAttack = Owner.GetAttackDamage(target, true);
                    }

                    if (ultSkill.CanBeCasted && ultSkill.CanHit(target))
                    {
                        extendUltDamage = (damageByAttack + damageByAura) * ultSkill.DamagePerHealth;
                    }
                }

                var damageCalculation = new Combo(abilities.ToArray());
                var damageReduction   = -DamageReduction(target, heroes);
                var damageBlock       = DamageBlock(target, heroes);
                //没有计算来自装备的伤害加深
                damageOfMisc = damageByAttack + damageByAura + DamageHelpers.GetSpellDamage(extendUltDamage, Owner.GetSpellAmplification(), damageReduction);
                //Console.WriteLine($"{damageByAttack}/{damageByAura}/{extendUltDamage}/{DamageHelpers.GetSpellDamage(extendUltDamage, Owner.GetSpellAmplification(), damageReduction)}");
                var livingArmor = LivingArmor(target, heroes, damageCalculation.Abilities);
                //目前就能打死的
                var damage = DamageHelpers.GetSpellDamage((damageCalculation.GetDamage(target) + damageOfMisc) + damageBlock, 0, damageReduction) - livingArmor;
                //上去就能干死的
                var readyDamage = DamageHelpers.GetSpellDamage(damageCalculation.GetDamage(target, true, false) + damageOfMisc + damageBlock, 0, damageReduction) - livingArmor;
                //所有状态完美的总体伤害
                var totalDamage = DamageHelpers.GetSpellDamage(damageCalculation.GetDamage(target, false, false) + damageBlock, 0, damageReduction) - livingArmor;

                if (target.IsInvulnerable() || target.HasAnyModifiers(BlockModifiers))
                {
                    damage      = 0.0f;
                    readyDamage = 0.0f;
                }
                //Console.WriteLine($"{damage}/{readyDamage}/{totalDamage}");
                DamageList.Add(new Damage(target, damage, readyDamage, totalDamage, target.Health, abilities.ToArray()));
            }
        }