public static void ApplyDamage(DamageProperty prop, Unit source, GridCell target, int level) { if (prop.targetCasterOverride) { int damage = BattleCalculations.CalculateDamage(source, source, prop.damagePerLevel [level].min, prop.damagePerLevel [level].max, prop.element, prop.scaleFactor); source.Damage(damage, prop.element); } else if (target.currentUnit != null) { if (target.currentUnit == source) { if (prop.affectsCaster) { int damage = BattleCalculations.CalculateDamage(source, source, prop.damagePerLevel [level].min, prop.damagePerLevel [level].max, prop.element, prop.scaleFactor); source.Damage(damage, prop.element); } } else if (prop.affectedUnits.Contains(target.currentUnit.unitType)) { int damage = BattleCalculations.CalculateDamage(source, target.currentUnit, prop.damagePerLevel [level].min, prop.damagePerLevel [level].max, prop.element, prop.scaleFactor); target.currentUnit.Damage(damage, prop.element); } } }
public override void ApplyEffect(Unit caster, GridCell target, int level, bool crit) { if (target.currentUnit != null) { if (affectsAll) { int damage = BattleCalculations.CalculateDamage(caster, target.currentUnit, minDamagePerLevel [level - 1], maxDamagePerLevel [level - 1], element, scaleFactor); target.currentUnit.Damage(damage, element); } else if (affectedUnits.Contains(target.currentUnit.unitType)) { if (target.currentUnit == caster) { if (affectsCaster) { int damage = BattleCalculations.CalculateDamage(caster, target.currentUnit, minDamagePerLevel [level - 1], maxDamagePerLevel [level - 1], element, scaleFactor); target.currentUnit.Damage(damage, element); } } else { int damage = BattleCalculations.CalculateDamage(caster, target.currentUnit, minDamagePerLevel [level - 1], maxDamagePerLevel [level - 1], element, scaleFactor); target.currentUnit.Damage(damage, element); } } } }