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)); }
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)); }
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)); }
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)); }
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)); }
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)); }
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); }