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);
            }
        }
    }
Пример #2
0
 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);
             }
         }
     }
 }