Esempio n. 1
0
        public override float GetSpellDamage(SpellSlot slot, Obj_AI_Base target)
        {
            if (target != null)
            {
                var level = slot.GetSpellDataInst().Level;
                switch (slot)
                {
                case SpellSlot.Q:
                    return(MyHero.CalculateDamageOnUnit(target, DamageType.Physical,
                                                        15f * level + 35f + (0.25f + 0.05f * level) * MyHero.TotalAttackDamage + 0.6f * MyHero.FlatMagicDamageMod));

                case SpellSlot.W:
                    return(MyHero.CalculateDamageOnUnit(target, DamageType.Physical,
                                                        (target is AIHeroClient ? 1f : 0.65f) * (15f * level + 15f + 0.7f * MyHero.TotalAttackDamage)));

                case SpellSlot.E:
                    return(MyHero.CalculateDamageOnUnit(target, DamageType.Magical,
                                                        (target is AIHeroClient ? 1f : 0.60f) * (55f * level - 40f + 1.2f * MyHero.TotalAttackDamage + 1f * MyHero.FlatMagicDamageMod)));

                case SpellSlot.R:
                    var shotDamage =
                        MyHero.CalculateDamageOnUnit(target, DamageType.Physical, 70f * level - 25f + 0.25f * MyHero.TotalAttackDamage) * (1f + 0.02f * (target.MaxHealth - target.Health) / target.MaxHealth * 100f);
                    var normalShotsDamage = (Stacks - 1) * shotDamage;
                    var lastShotDamage    = (2f + (MyHero.HasItem(ItemId.Infinity_Edge) ? 0.5f : 0f)) * shotDamage;
                    return(normalShotsDamage + lastShotDamage);
                }
            }
            return(base.GetSpellDamage(slot, target));
        }
Esempio n. 2
0
        public override float GetSpellDamage(SpellSlot slot, Obj_AI_Base target)
        {
            if (target != null)
            {
                var level = slot.GetSpellDataInst().Level;
                switch (slot)
                {
                case SpellSlot.Q:
                    return(MyHero.CalculateDamageOnUnit(target, DamageType.Magical,
                                                        40f * level + 40f + 0.75f * MyHero.FlatMagicDamageMod));

                case SpellSlot.W:
                    return(MyHero.CalculateDamageOnUnit(target, DamageType.Magical,
                                                        30f * level + 30f + 0.6f * MyHero.FlatMagicDamageMod));

                case SpellSlot.E:
                    return(MyHero.CalculateDamageOnUnit(target, DamageType.Magical,
                                                        50f * level + 30f + 0.45f * MyHero.FlatMagicDamageMod));

                case SpellSlot.R:
                    return(MyHero.CalculateDamageOnUnit(target, DamageType.Magical,
                                                        55f * level + 135f + 0.43f * MyHero.FlatMagicDamageMod));
                }
            }
            return(base.GetSpellDamage(slot, target));
        }
Esempio n. 3
0
        public override float GetSpellDamage(SpellSlot slot, Obj_AI_Base target)
        {
            if (target != null)
            {
                var level = slot.GetSpellDataInst().Level;
                switch (slot)
                {
                case SpellSlot.Q:
                    return(MyHero.CalculateDamageOnUnit(target, DamageType.Magical,
                                                        45f * level + 30f + 0.45f * MyHero.FlatMagicDamageMod));

                case SpellSlot.W:
                    return(MyHero.CalculateDamageOnUnit(target, DamageType.Magical,
                                                        15f * level + 5f + 0.15f * MyHero.FlatMagicDamageMod) * 2.5f);

                case SpellSlot.E:
                    return(MyHero.CalculateDamageOnUnit(target, DamageType.Magical,
                                                        4f * level + 48f + 0.1f * MyHero.FlatMagicDamageMod + (IsPoisoned(target) ? (-20 + 30 * level + 0.35f * MyHero.FlatMagicDamageMod) : 0f)));

                case SpellSlot.R:
                    return(MyHero.CalculateDamageOnUnit(target, DamageType.Magical,
                                                        100f * level + 50f + 0.5f * MyHero.FlatMagicDamageMod));
                }
            }
            return(base.GetSpellDamage(slot, target));
        }
Esempio n. 4
0
        public override float GetSpellDamage(SpellSlot slot, Obj_AI_Base target)
        {
            if (target != null)
            {
                var level = slot.GetSpellDataInst().Level;
                switch (slot)
                {
                case SpellSlot.Q:
                    return((target.Type == GameObjectType.AIHeroClient && level == 5 ? 1.15f : 1) * MyHero.CalculateDamageOnUnit(target, DamageType.Magical,
                                                                                                                                 45f * level + 5f + 0.75f * MyHero.FlatMagicDamageMod));

                case SpellSlot.W:
                    return(MyHero.CalculateDamageOnUnit(target, DamageType.Magical,
                                                        40f * level + 40f + 0.7f * MyHero.FlatMagicDamageMod));

                case SpellSlot.E:
                    return(MyHero.CalculateDamageOnUnit(target, DamageType.Magical,
                                                        45f * level + 25f + 0.4f * MyHero.FlatMagicDamageMod));

                case SpellSlot.R:
                    return((Spheres.Count + 3) * MyHero.CalculateDamageOnUnit(target, DamageType.Magical,
                                                                              45f * level + 45f + 0.2f * MyHero.FlatMagicDamageMod));
                }
            }
            return(base.GetSpellDamage(slot, target));
        }
Esempio n. 5
0
        public float GetCurrentShotDamage(Obj_AI_Base target)
        {
            var level = R.Slot.GetSpellDataInst().Level;

            return((Stacks == 1 ? (2f + (MyHero.HasItem(ItemId.Infinity_Edge) ? 0.5f : 0f)) : 1f) *
                   MyHero.CalculateDamageOnUnit(target, DamageType.Physical,
                                                75f * level - 25f + 0.25f * MyHero.TotalAttackDamage) *
                   (1f + 0.02f * (target.MaxHealth - target.Health) / target.MaxHealth * 100f));
        }
Esempio n. 6
0
        public override float GetSpellDamage(SpellSlot slot, Obj_AI_Base target)
        {
            if (target != null)
            {
                var level  = slot.GetSpellDataInst().Level;
                var result = 0f;
                switch (slot)
                {
                case SpellSlot.Q:
                    return(MyHero.CalculateDamageOnUnit(target, DamageType.Physical,
                                                        40f * level + 35f + 1f * MyHero.FlatPhysicalDamageMod));

                case SpellSlot.W:
                    if (WShadowIsValid || (IsW1 && W.IsReady))
                    {
                        if (Q.IsReady)
                        {
                            result += GetSpellDamage(SpellSlot.Q, target) / 2f;
                        }
                    }
                    return(result);

                case SpellSlot.E:
                    return(MyHero.CalculateDamageOnUnit(target, DamageType.Physical,
                                                        30f * level + 30f + 0.8f * MyHero.FlatPhysicalDamageMod));

                case SpellSlot.R:
                    var hero = target as AIHeroClient;
                    if (hero == null)
                    {
                        return(0f);
                    }
                    if (RShadowIsValid || (IsR1 && R.IsReady))
                    {
                        if (Q.IsReady)
                        {
                            result += GetSpellDamage(SpellSlot.Q, target) / 2f;
                        }
                    }
                    if (RShadowIsValid)
                    {
                        if (TargetHaveR(hero))
                        {
                            return(result);
                        }
                        return(0f);
                    }
                    return(result +
                           MyHero.CalculateDamageOnUnit(target, DamageType.Physical, 1f * MyHero.TotalAttackDamage));
                }
            }
            return(base.GetSpellDamage(slot, target));
        }
Esempio n. 7
0
 private float GetPassiveDamage(Obj_AI_Base target, float health = 0)
 {
     if (Math.Abs(health) < float.Epsilon)
     {
         health = target.Health;
     }
     if (100 * health / target.MaxHealth <= 50f)
     {
         if (target.TargetHaveBuff("zedpassivecd"))
         {
             return(0f);
         }
         return(MyHero.CalculateDamageOnUnit(target, DamageType.Magical,
                                             target.MaxHealth * ((int)Math.Truncate((MyHero.Level - 1f) / 6f) * 2f + 6f) / 100f));
     }
     return(0);
 }