예제 #1
0
        public static float GetComboDamage(this Obj_AI_Base unit,
                                           bool q,
                                           bool w,
                                           bool e,
                                           bool r,
                                           bool calculateUltTick = false,
                                           bool damageIndicator  = false)
        {
            if (!unit.LSIsValidTarget())
            {
                return(0);
            }

            var d = 0f;

            if (q)
            {
                d += SpellManager.Q.GetDamage(unit);

                if (unit.HasBuff("katarinaqmark"))
                {
                    d += SpellManager.Q.GetDamage(unit, 1);
                }
            }

            if (w)
            {
                d += SpellManager.W.GetDamage(unit);
            }

            if (e)
            {
                d += SpellManager.E.GetDamage(unit);
            }

            if (r)
            {
                if (!calculateUltTick)
                {
                    d += SpellManager.R.GetDamage(unit, 1);
                }
                else
                {
                    d += unit.GetCalculatedRDamage(Katarina.UltTicks);
                }
            }

            d += ObjectManager.Player.GetAutoAttackDamage(unit, true);

            var dl = ObjectManager.Player.GetMastery(MasteryData.Ferocity.DoubleEdgedSword);

            if (dl != null && dl.IsActive())
            {
                d *= 1.03f;
            }

            var assasin = ObjectManager.Player.GetMastery((MasteryData.Cunning) 83);

            if (assasin != null && assasin.IsActive() && ObjectManager.Player.CountAlliesInRange(800) == 0)
            {
                d *= 1.015f;
            }

            var igniteSlot = ObjectManager.Player.GetSpellSlot("summonerdot");

            if (!igniteSlot.Equals(SpellSlot.Unknown))
            {
                if (igniteSlot.IsReady())
                {
                    d += (float)ObjectManager.Player.GetSummonerSpellDamage(unit, Damage.SummonerSpell.Ignite);
                }
            }

            if (damageIndicator)
            {
                var tl = ObjectManager.Player.GetMastery(MasteryData.Cunning.ThunderlordsDecree);
                if (tl != null && tl.IsActive() && !ObjectManager.Player.HasBuff("masterylordsdecreecooldown"))
                {
                    d += 10 * ObjectManager.Player.Level + .3f * ObjectManager.Player.FlatPhysicalDamageMod +
                         .1f * ObjectManager.Player.TotalMagicalDamage;
                }
            }

            if (ItemManager.LudensEcho != null)
            {
                var b = ObjectManager.Player.GetBuff("itemmagicshankcharge");
                if (b != null && b.IsActive && b.Count >= (damageIndicator ? 70 : 100))
                {
                    d += 100 + ObjectManager.Player.TotalMagicalDamage * .1f;
                }
            }

            return(d);
        }