public void ApplySpell(SpellDamageCalculatorData data, SpellDamageModifier damageModifier) { foreach (SecondarySkill skill in SecondarySkills) { skill.ApplySpell(data, damageModifier); } }
public void ApplySpell(SpellDamageCalculatorData data, SpellDamageModifier damageModifier) { if (data.Spell.IsAffectedBySecondarySkillType(MagicType)) { damageModifier.DamageMultipliers.Add(1.5); } }
public void CalculateDamage(SpellDamageCalculatorData data, out int damage) { int baseDamage = data.Spell.BaseDamage(data.Target); SpellDamageModifier damageModifier = data.Spell.BaseModifier(data.Target); UnitUniqueTraitManager.Instance.ApplySpell(data, damageModifier); data.CasterHeroStats.ApplySpell(data, damageModifier); if (data.TargetProtectionSpells != null) { foreach (ProtectionSpell protectionSpell in data.TargetProtectionSpells) { protectionSpell.ApplySpell(data, damageModifier); } } if (data.CasterMagicOrbs != null) { foreach (MagicOrb magicOrb in data.CasterMagicOrbs) { magicOrb.ApplySpell(data, damageModifier); } } // TODO: orb of vulnerability damage = PerformCalculation(baseDamage, damageModifier); }
public override void ApplySpell(SpellDamageCalculatorData data, SpellDamageModifier damageModifier) { if (SkillLevel == SecondarySkillLevel.None) { return; } double multiplier; if (SkillLevel == SecondarySkillLevel.Basic) { multiplier = 1.05; } else if (SkillLevel == SecondarySkillLevel.Advanced) { multiplier = 1.1; } else { multiplier = 1.15; } if (IsSpecialized) { multiplier *= (1.0 + 0.05 * HeroStats.Level); } damageModifier.DamageMultipliers.Add(multiplier); }
public virtual SpellDamageModifier BaseModifier(Unit unit) { SpellDamageModifier damageModifier = new SpellDamageModifier(); if (CasterStats.IsSpecialized) { damageModifier.DamageMultipliers.Add(SpecializationMultiplier(unit)); } return(damageModifier); }
private int PerformCalculation(int baseDamage, SpellDamageModifier damageModifier) { double result = baseDamage; foreach (double damageMultiplier in damageModifier.DamageMultipliers) { result *= damageMultiplier; } result = Math.Floor(result); int intResult = (int)result; return intResult; }
public void ApplySpell(SpellDamageCalculatorData data, SpellDamageModifier damageModifier) { if (data.Spell.IsAffectedBySecondarySkillType(SecondarySkillType)) { if (CasterStats.SkillLevel <= SecondarySkillLevel.Basic) { damageModifier.DamageMultipliers.Add(0.7); } else { damageModifier.DamageMultipliers.Add(0.5); } } }
private int PerformCalculation(int baseDamage, SpellDamageModifier damageModifier) { double result = baseDamage; foreach (double damageMultiplier in damageModifier.DamageMultipliers) { result *= damageMultiplier; } result = Math.Floor(result); int intResult = (int)result; return(intResult); }
public void ApplySpell(SpellDamageCalculatorData data, SpellDamageModifier damageModifier) { Unit unit = data.Target; Spell spell = data.Spell; // TODO: orb of vulnerability bool isImmune = false; isImmune |= (spell.IsAffectedBySecondarySkillType(unit.ImmuneMagic)); isImmune |= (unit.ImmuneSpells != null && unit.ImmuneSpells.Contains(spell.GetType())); isImmune |= (unit.ImmuneSpellLevel >= spell.Level); if (isImmune) { damageModifier.DamageMultipliers.Add(0); return; } if (unit.VulnerableSpells != null && unit.VulnerableSpells.Contains(spell.GetType())) { damageModifier.DamageMultipliers.Add(2); } if (unit.Id == 32) // Stone Golem { damageModifier.DamageMultipliers.Add(0.5); } else if (unit.Id == 33) // Iron Golem { damageModifier.DamageMultipliers.Add(0.25); } else if (unit.Id == 134) // Gold Golem { damageModifier.DamageMultipliers.Add(0.15); } else if (unit.Id == 135) // Diamond Golem { damageModifier.DamageMultipliers.Add(0.05); } }
public virtual void ApplySpell(SpellDamageCalculatorData data, SpellDamageModifier damageModifier) { }
public virtual SpellDamageModifier BaseModifier(Unit unit) { SpellDamageModifier damageModifier = new SpellDamageModifier(); if (CasterStats.IsSpecialized) { damageModifier.DamageMultipliers.Add(SpecializationMultiplier(unit)); } return damageModifier; }