예제 #1
0
        public static double CalculateDamage(
            this Obj_AI_Base source,
            Obj_AI_Base target,
            DamageType damageType,
            float amount,
            float forceDamageModifier = 0f)
        {
            var damage = 0d;

            switch (damageType)
            {
            case DamageType.Magical:
                damage = source.CalculateDamageOnUnit(target, damageType, amount);
                break;

            case DamageType.Physical:
                damage = source.CalculateDamageOnUnit(target, damageType, amount);
                break;

            case DamageType.True:
                damage = amount;
                break;
            }

            return(Math.Max(damage, 0d));
        }
예제 #2
0
        public static float GetAutoAttackDamageOverride(this Obj_AI_Base Attacker, Obj_AI_Base Target, bool IncludePassive)
        {
            // in case of Bugs or not updated stuff inside the SDK
            if (Attacker != null && Target != null && Attacker.Type == GameObjectType.AIHeroClient)
            {
                var attacker = (AIHeroClient)Attacker;
                switch (attacker.Hero)
                {
                case Champion.MissFortune:
                    switch (Target.Type)
                    {
                    case GameObjectType.AIHeroClient:
                        return(Attacker.GetAutoAttackDamage(Target, IncludePassive) +
                               Attacker.CalculateDamageOnUnit(Target, DamageType.Physical,
                                                              Attacker.BaseAttackDamage * (0.5f + (0.5f / 17 * (attacker.Level - 1) * 0.95f))));

                    case GameObjectType.obj_AI_Minion:
                    case GameObjectType.obj_AI_Turret:
                        return(Attacker.GetAutoAttackDamage(Target, IncludePassive) +
                               Attacker.CalculateDamageOnUnit(Target, DamageType.Physical,
                                                              Attacker.BaseAttackDamage * (0.25f + (0.25f / 17 * (attacker.Level - 1) * 0.95f))));
                    }
                    break;

                case Champion.Thresh:
                    if (Attacker.Spellbook.GetSpell(SpellSlot.E).Level >= 1)
                    {
                        float passivePercent = 0;
                        if (Attacker.HasBuff("Threshqpassive1") && Attacker.HasBuff("Threshqpassive2") &&
                            Attacker.HasBuff("Threshqpassive3") && Attacker.HasBuff("Threshqpassive4"))
                        {
                            if (Attacker.HasBuff("Threshqpassive4"))
                            {
                                passivePercent = 1;
                            }
                            else
                            {
                                var timegone = Game.Time - Attacker.GetBuff("Threshqpassive").StartTime;
                                passivePercent = 10 / timegone - 0.05f;
                            }
                            if (passivePercent >= 1)
                            {
                                passivePercent = 1;
                            }
                        }
                        var     souls   = Attacker.HasBuff("threshpassivesoulsgain") ? Attacker.GetBuff("threshpassivesoulsgain").Count : 0;
                        float[] passive = { 0.8f, 1.1f, 1.4f, 1.7f, 2.0f };
                        return(Attacker.CalculateDamageOnUnit(Target, DamageType.Physical, Attacker.BaseAttackDamage) +
                               Attacker.CalculateDamageOnUnit(Target, DamageType.Magical,
                                                              (passivePercent * passive[Attacker.Spellbook.GetSpell(SpellSlot.E).Level]) * attacker.BaseAttackDamage + souls));
                    }
                    break;
                }
            }
            return(Attacker.GetAutoAttackDamage(Target, IncludePassive));
        }
예제 #3
0
        public static float GetSoldierDamage(Obj_AI_Base target)
        {
            var   damage = 45f;
            float calcdamage;
            var   AP = Program._Player.FlatMagicDamageMod;

            foreach (var soldier in Orbwalker.ValidAzirSoldiers)
            {
                if (soldier.IsValid && soldier != null)
                {
                    if (Orbwalker.ValidAzirSoldiers.Count == 2)
                    {
                        damage += (((Program._Player.Level * 5) + ((60f / 100f) * AP)) * 2);
                    }
                    if (Orbwalker.ValidAzirSoldiers.Count == 1)
                    {
                        damage += (((Program._Player.Level * 5) + ((60f / 100f) * AP)));
                    }
                }
            }

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit) ||
                Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear))
            {
                damage = (Program.Menu["mDamageBuffer"].Cast <Slider>().CurrentValue / 100f) * damage;
            }

            calcdamage = target.CalculateDamageOnUnit(target, DamageType.Magical, damage);
            return(calcdamage);
        }
예제 #4
0
        private static float GetCalculatedDamage(Obj_AI_Base target, DamageType type, float rawdamage)
        {
            var damage = 0f;
            damage += target.CalculateDamageOnUnit(target, type, rawdamage);

            return damage;
        }
예제 #5
0
파일: Program.cs 프로젝트: Ouija01/EloBuddy
        private static double IsRapeble(Obj_AI_Base victim)
        {
            double comboDamage = 0d;

            if (Q.IsReady())
            {
                comboDamage += Q.GetSpellDamage(victim) + Player.Instance.CalculateDamageOnUnit(victim, DamageType.Magical, (float)(45 + 35 * Q.Level + 0.5 * player.FlatMagicDamageMod));
            }
            if (E.IsReady())
            {
                comboDamage += E.GetSpellDamage(victim);
            }

            if (hasBuff(victim, "AkaliMota"))
            {
                comboDamage += Player.Instance.CalculateDamageOnUnit(victim, DamageType.Magical, (float)(45 + 35 * Q.Level + 0.5 * player.FlatMagicDamageMod));
            }
            //comboDamage += player.GetAutoAttackDamage(victim, true);

            comboDamage += player.CalculateDamageOnUnit(victim, DamageType.Magical, (float)CalcPassiveDmg());
            comboDamage += player.CalculateDamageOnUnit(victim, DamageType.Magical, (float)CalcItemsDmg(victim));

            foreach (var item in player.InventoryItems)
            {
                if ((int)item.Id == 3128)
                {
                    if (player.Spellbook.CanUseSpell((SpellSlot)item.Slot) == SpellState.Ready)
                    {
                        comboDamage *= 1.2;
                    }
                }
            }
            if (hasBuff(victim, "deathfiregraspspell"))
            {
                comboDamage *= 1.2;
            }

            if (ultiCount() > 0)
            {
                comboDamage += Player.Instance.GetSpellDamage(victim, SpellSlot.Unknown) * (ultiCount() - (int)(victim.Distance(player.Position) / R.Range));
            }
            if (IgniteSlot != SpellSlot.Unknown && player.Spellbook.CanUseSpell(IgniteSlot) == SpellState.Ready)
            {
                comboDamage += ObjectManager.Player.GetSummonerSpellDamage(victim, DamageLibrary.SummonerSpells.Ignite);
            }
            return(comboDamage);
        }
예제 #6
0
파일: Program.cs 프로젝트: volder1/EloBuddy
 /// <summary>
 /// Gets Lux Passive Damage
 /// </summary>
 /// <param name="target">The Target</param>
 /// <returns>The damage that the passive will do.</returns>
 private static float LuxPassiveDamage(Obj_AI_Base target)
 {
     if (target.HasBuff("luxilluminatingfraulein"))
     {
         return(target.CalculateDamageOnUnit(target, DamageType.Magical, (float)(10 + (8 * Player.Instance.Level) * (Player.Instance.FlatMagicDamageMod * 0.2))));
     }
     return(0);
 }
예제 #7
0
        private static float GetCalculatedDamage(Obj_AI_Base target, DamageType type, float rawdamage)
        {
            var damage = 0f;

            damage += target.CalculateDamageOnUnit(target, type, rawdamage);

            return(damage);
        }
예제 #8
0
파일: Program.cs 프로젝트: kunoz/EloBuddy
 /// <summary>
 /// Gets Lux Passive Damage
 /// </summary>
 /// <param name="target">The Target</param>
 /// <returns>The damage that the passive will do.</returns>
 private static float LuxPassiveDamage(Obj_AI_Base target)
 {
     if (target.HasBuff("luxilluminatingfraulein"))
     {
         return target.CalculateDamageOnUnit(target, DamageType.Magical, (float)(10 + (8 * Player.Instance.Level) * (Player.Instance.FlatMagicDamageMod * 0.2)));
     }
     return 0;
 }
예제 #9
0
 public static float DmgE(Obj_AI_Base target)
 {
     if (Player.Instance.HasBuff("cardmasterstackparticle"))
     {
         return(target.CalculateDamageOnUnit(target, DamageType.Magical,
                                             new[] { 0, 55, 80, 105, 130, 155 }[SpellManager.E.Level] +(Player.Instance.TotalMagicalDamage * 0.5f)));
     }
     return(0);
 }
예제 #10
0
        public static float GetKSQDamage(Obj_AI_Base target)
        {
            var   damage = 45f;
            float calcdamage;
            var   AP = Program._Player.FlatMagicDamageMod;

            damage += ((Program._Q.Level * 20) + ((50f / 100f) * AP));

            calcdamage = target.CalculateDamageOnUnit(target, DamageType.Magical, damage);
            return(calcdamage);
        }
예제 #11
0
        public static float GetWDamage(this Obj_AI_Base unit)
        {
            if (!SpellManager.W.IsLearned)
            {
                return(0);
            }

            var damage = RawWDamage[SpellManager.W.Level] + Player.Instance.GetTotalAP() * WAPScaling + Player.Instance.MaxMana * WManaScaling;

            return(unit.CalculateDamageOnUnit(unit, DamageType.Magical, damage));
        }
예제 #12
0
        public static float GetIgniteDamage(Obj_AI_Base target)
        {
            var   damage = 20f;
            float calcdamage;

            damage += (Program._Player.Level * 20);

            calcdamage = target.CalculateDamageOnUnit(target, DamageType.True, damage);

            if (Program._Ignite == null || !Program._Ignite.IsReady())
            {
                calcdamage = 0;
            }

            return(calcdamage);
        }
예제 #13
0
        public float CalculateDamage(Obj_AI_Base source, TrackedRecall recall)
        {
            if (recall.Caster == null)
            {
                return(-1f);
            }

            var rawDamage = this.Damage;

            if (source.BaseSkinName.Equals("Jinx"))
            {
                rawDamage += (0.2f + 0.05f * source.Spellbook.GetSpell(this.Slot).Level) * (recall.Caster.MaxHealth - Program.healthAfterTime(recall, TravelTime(recall.CastPosition(this, source))));
            }

            return(source.CalculateDamageOnUnit(recall.Caster, DamageType, rawDamage));
        }
예제 #14
0
        public static float GetWDamage(this Obj_AI_Base unit, bool all = false)
        {
            if (!SpellManager.W.IsLearned)
            {
                return(0);
            }

            var damage = RawWDamage[SpellManager.W.Level] + Player.Instance.GetTotalAP() * WScaling;

            if (all)
            {
                var secound = damage * WSecoundAndThirdHitMultiplier;
                damage = damage + secound * 2;
            }

            return(unit.CalculateDamageOnUnit(unit, DamageType.Magical, damage));
        }
예제 #15
0
        /// <summary>
        /// Gets Q + AA Damage Totally Done to Target
        /// </summary>
        /// <param name="target">The Target</param>
        /// <returns>Damage Totally Done to Target</returns>
        public static double GetDamage(Obj_AI_Base target)
        {
            double dmgItem = 0;

            if (Item.HasItem(3057) && (Item.CanUseItem(3057) || Player.HasBuff("sheen")) &&
                PlayerInstance.BaseAttackDamage > dmgItem)
            {
                dmgItem = PlayerInstance.GetAutoAttackDamage(target);
            }

            if (Item.HasItem(3025) && (Item.CanUseItem(3025) || Player.HasBuff("itemfrozenfist")) &&
                PlayerInstance.BaseAttackDamage * 1.25 > dmgItem)
            {
                dmgItem = PlayerInstance.GetAutoAttackDamage(target) * 1.25;
            }

            return(target.CalculateDamageOnUnit(target, DamageType.Mixed, new float[] { 0, 30, 50, 70, 90, 110 }[Q.Level] +PlayerInstance.FlatPhysicalDamageMod + PlayerInstance.GetBuffCount("NasusQStacks")) + PlayerInstance.GetAutoAttackDamage(target) + dmgItem);
        }
예제 #16
0
        public static float GetEDamage(Obj_AI_Base target)
        {
            var   damage = 30f;
            float calcdamage;
            var   AP = Program._Player.FlatMagicDamageMod;

            foreach (var soldier in Orbwalker.ValidAzirSoldiers)
            {
                if (Orbwalker.ValidAzirSoldiers.Count > 0)
                {
                    damage += ((Program._E.Level * 30) + ((60f / 100f) * AP));
                }
                if (Orbwalker.ValidAzirSoldiers.Count == 0)
                {
                    damage = 0;
                }
            }
            calcdamage = target.CalculateDamageOnUnit(target, DamageType.Magical, damage);
            return(calcdamage);
        }
예제 #17
0
 public static float DmgE(Obj_AI_Base target)
 {
     return(target.CalculateDamageOnUnit(target, DamageType.Magical,
                                         new[] { 0, 70, 110, 150, 190, 230 }[SpellManager.E.Level] +(Player.Instance.TotalMagicalDamage * 0.4f)));
 }
예제 #18
0
 public static float DmgE(Obj_AI_Base target)
 {
     return(target.CalculateDamageOnUnit(target, DamageType.Magical,
                                         new[] { 0, 55, 95, 135, 175, 215 }[SpellManager.E.Level] +(Player.Instance.TotalMagicalDamage * 0.6f)));
 }
예제 #19
0
 public static float DmgRedemption(Obj_AI_Base target)
 {
     return(target.CalculateDamageOnUnit(target, DamageType.True, target.MaxHealth * 0.1f));
 }
 /// <summary>
 /// Calculates the Damage done with Q
 /// </summary>
 /// <param name="target">The Target</param>
 /// <returns>Returns the Damage done with Q</returns>
 private static float QDamage(Obj_AI_Base target)
 {
     return(target.CalculateDamageOnUnit(target, DamageType.Magical,
                                         new[] { 0, 80, 125, 170, 215, 260 }[SpellManager.Q.Level] +(Player.Instance.TotalMagicalDamage * 0.8f)));
 }
 /// <summary>
 /// Calculates the Damage Done with R
 /// </summary>
 /// <param name="target">The Target</param>
 /// <returns>Returns the Damage done with R</returns>
 private static float RDamage(Obj_AI_Base target)
 {
     return(target.CalculateDamageOnUnit(target, DamageType.Magical,
                                         (float)
                                         (new[] { 0, 50, 81.25, 112.5 }[SpellManager.R.Level] +(Player.Instance.TotalMagicalDamage * 0.125f))));
 }
예제 #22
0
 public static float Q2Damage(Obj_AI_Base T)
 {
     return(T.CalculateDamageOnUnit(T, DamageType.Magical, new float[] { 60, 100, 140, 180, 220 }[Elise.Q2.Level - 1] +(0.08f + 0.03f / 100 * Player.Instance.TotalMagicalDamage) * (T.MaxHealth - T.Health)));
 }
예제 #23
0
        public static float GetSoldierDamage(Obj_AI_Base target)
        {
            var damage = 45f;
            float calcdamage;
            var AP = Program._Player.FlatMagicDamageMod;
            foreach (var soldier in Orbwalker.ValidAzirSoldiers)
            {
                if (soldier.IsValid && soldier != null)
                {
                    if (Orbwalker.ValidAzirSoldiers.Count == 2)
                    {
                        damage += (((Program._Player.Level * 5) + ((60f / 100f) * AP)) * 2);
                    }
                    if (Orbwalker.ValidAzirSoldiers.Count == 1)
                    {
                        damage += (((Program._Player.Level * 5) + ((60f / 100f) * AP)));
                    }
                }
            }

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit) ||
                Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear))
            {
                damage = (Program.Menu["mDamageBuffer"].Cast<Slider>().CurrentValue/100f)*damage;
            }

            calcdamage = target.CalculateDamageOnUnit(target, DamageType.Magical, damage);
            return calcdamage;
        }
예제 #24
0
        public static float GetIgniteDamage(Obj_AI_Base target)
        {
            var damage = 20f;
            float calcdamage;

            damage += (Program._Player.Level*20);

            calcdamage = target.CalculateDamageOnUnit(target, DamageType.True, damage);

            if (Program._Ignite == null || !Program._Ignite.IsReady())
                calcdamage = 0;

            return calcdamage;
        }
예제 #25
0
        public static float GetKSQDamage(Obj_AI_Base target)
        {
            var damage = 45f;
            float calcdamage;
            var AP = Program._Player.FlatMagicDamageMod;

            damage += ((Program._Q.Level*20) + ((50f/100f)*AP));

            calcdamage = target.CalculateDamageOnUnit(target, DamageType.Magical, damage);
            return calcdamage;
        }
예제 #26
0
 public static float QDamage(Obj_AI_Base T)
 {
     return(T.CalculateDamageOnUnit(T, DamageType.Physical, new float[] { 45, 55, 65, 75, 85 }[Draven.Q.Level - 1] / 100 * Player.Instance.BaseAttackDamage + Player.Instance.FlatPhysicalDamageMod));
 }
예제 #27
0
 public static float RDamage(Obj_AI_Base T)
 {
     return(T.CalculateDamageOnUnit(T, DamageType.Physical, new float[] { 175, 275, 375 }[Draven.R.Level - 1] +1.1f * Player.Instance.FlatPhysicalDamageMod));
 }
예제 #28
0
 /// <summary>
 /// Calculates the Damage Done with R
 /// </summary>
 /// <param name="target">The Target</param>
 /// <returns>Returns the Damage done with R</returns>
 private static float RDamage(Obj_AI_Base target)
 {
     return target.CalculateDamageOnUnit(target, DamageType.Magical,
         (float) (new[] {0, 50, 81.25, 112.5}[Program.R.Level] + (Player.Instance.TotalMagicalDamage*0.125f)));
 }
예제 #29
0
 /// <summary>
 /// Calculates the Damage done with E
 /// </summary>
 /// <param name="target">The Target</param>
 /// <returns>Returns the Damage done with E</returns>
 private static float EDamage(Obj_AI_Base target)
 {
     return target.CalculateDamageOnUnit(target, DamageType.Magical,
         new[] {0, 10, 20, 30, 40, 50}[Program.E.Level] + (Player.Instance.TotalMagicalDamage*0.3f));
 }
예제 #30
0
 /// <summary>
 /// Calculates the Damage done with Q
 /// </summary>
 /// <param name="target">The Target</param>
 /// <returns>Returns the Damage done with Q</returns>
 private static float QDamage(Obj_AI_Base target)
 {
     return target.CalculateDamageOnUnit(target, DamageType.Magical,
         new[] {0, 80, 125, 170, 215, 260}[Program.Q.Level] + (Player.Instance.TotalMagicalDamage*0.8f));
 }
예제 #31
0
 public static float DmgIgnite(Obj_AI_Base target)
 {
     return(target.CalculateDamageOnUnit(target, DamageType.True, 50 + 20 * Player.Instance.Level - (target.HPRegenRate / 5 * 3)));
 }
예제 #32
0
 /// <summary>
 /// Calculates the Damage done with E
 /// </summary>
 /// <param name="target">The Target</param>
 /// <returns>Returns the Damage done with E</returns>
 private static float EDamage(Obj_AI_Base target)
 {
     return(target.CalculateDamageOnUnit(target, DamageType.Magical,
                                         new[] { 0, 55, 95, 135, 175, 215 }[Program.E.Level] +(Player.Instance.TotalMagicalDamage * 0.6f)));
 }
예제 #33
0
 public static float QDamage(Obj_AI_Base T)
 {
     return(T.CalculateDamageOnUnit(T, DamageType.Magical, new float[] { 40, 75, 110, 145, 180 }[Elise.Q.Level - 1] +(0.08f + 0.03f / 100 * Player.Instance.TotalMagicalDamage) * T.Health));
 }
예제 #34
0
파일: Program.cs 프로젝트: kunoz/EloBuddy
        /// <summary>
        /// Gets Q + AA Damage Totally Done to Target
        /// </summary>
        /// <param name="target">The Target</param>
        /// <returns>Damage Totally Done to Target</returns>
        public static double GetDamage(Obj_AI_Base target)
        {
            double dmgItem = 0;

            if (Item.HasItem(3057) && (Item.CanUseItem(3057) || Player.HasBuff("sheen"))
                && PlayerInstance.BaseAttackDamage > dmgItem)
            {
                dmgItem = PlayerInstance.GetAutoAttackDamage(target);
            }

            if (Item.HasItem(3025) && (Item.CanUseItem(3025) || Player.HasBuff("itemfrozenfist"))
                && PlayerInstance.BaseAttackDamage * 1.25 > dmgItem)
            {
                dmgItem = PlayerInstance.GetAutoAttackDamage(target) * 1.25;
            }

            return target.CalculateDamageOnUnit(target, DamageType.Mixed, new float[] { 0, 30, 50, 70, 90, 110 }[Q.Level] + PlayerInstance.FlatPhysicalDamageMod + PlayerInstance.GetBuffCount("NasusQStacks")) + PlayerInstance.GetAutoAttackDamage(target) + dmgItem;
        }
예제 #35
0
 public static float WDamage(Obj_AI_Base T)
 {
     return(T.CalculateDamageOnUnit(T, DamageType.Magical, new float[] { 75, 125, 175, 225, 275 }[Elise.W.Level - 1] +0.08f * Player.Instance.TotalMagicalDamage));
 }
예제 #36
0
 public static float GetQDamage(Obj_AI_Base target)
 {
     var damage = 45f;
     float calcdamage;
     var AP = Program._Player.FlatMagicDamageMod;
     foreach (var soldier in Orbwalker.ValidAzirSoldiers)
     {
         if (Orbwalker.ValidAzirSoldiers.Count == 2)
         {
             damage += ((Program._Q.Level * 20) + ((50f / 100f) * AP) * 2);
         }
         if (Orbwalker.ValidAzirSoldiers.Count == 1)
         {
             damage += ((Program._Q.Level * 20) + ((50f / 100f) * AP));
         }
         if (Orbwalker.ValidAzirSoldiers.Count == 0)
         {
             damage = 0;
         }
     }
     calcdamage = target.CalculateDamageOnUnit(target, DamageType.Magical, damage);
     return calcdamage;
 }
예제 #37
0
 public static float EDamage(Obj_AI_Base T)
 {
     return(T.CalculateDamageOnUnit(T, DamageType.Physical, new float[] { 70, 105, 140, 175, 210 }[Draven.E.Level - 1] +0.05f * Player.Instance.FlatPhysicalDamageMod));
 }
예제 #38
0
 /// <summary>
 /// Calculates the Damage done with E
 /// </summary>
 /// <param name="target">The Target</param>
 /// <returns>Returns the Damage done with E</returns>
 private static float EDamage(Obj_AI_Base target)
 {
     return target.CalculateDamageOnUnit(target, DamageType.Magical,
         new[] {0, 55, 95, 135, 175, 215}[Program.E.Level] + (Player.Instance.TotalMagicalDamage*0.6f));
 }
예제 #39
0
 public static float PDamage(Obj_AI_Base T)
 {
     return(T.CalculateDamageOnUnit(T, DamageType.Physical, 0.45f + (Player.Instance.BaseAttackDamage + Player.Instance.FlatPhysicalDamageMod)));
 }
예제 #40
0
 private static float EDamage(Obj_AI_Base target)
 {
     return(target.CalculateDamageOnUnit(target, DamageType.Magical,
                                         new[] { 0, 10, 20, 30, 40, 50 }[Program.E.Level] +(Player.Instance.TotalMagicalDamage * 0.3f)));
 }
예제 #41
0
 private static float RDamage(Obj_AI_Base target)
 {
     return(target.CalculateDamageOnUnit(target, DamageType.Magical,
                                         (float)(new[] { 0, 200, 325, 450 }[Program.R.Level] +(Player.Instance.TotalMagicalDamage * 0.125f))));
 }
예제 #42
0
 /// <summary>
 /// Calculates the Damage done with W
 /// </summary>
 /// <param name="target">The Target</param>
 /// <returns>Returns the Damage done with W</returns>
 private static float WDamage(Obj_AI_Base target)
 {
     return target.CalculateDamageOnUnit(target, DamageType.Magical,
         new[] { 0, 120, 170, 220, 270, 320 }[Program.Q.Level] + (Player.Instance.TotalMagicalDamage * 1.0f));
 }