//Calculate damage when damage is already known public static int calculateDamage(Unit attacker, Unit defender, Attack attack, int dmg) { float attackFactor = 1f; float defenceFactor = 1f; foreach (DamageType x in attack.getTypes()) { attackFactor *= attacker.typeAtk[(int)x]; defenceFactor *= defender.typeDef[(int)x]; } return (int)((float)dmg *(attackFactor / defenceFactor)); }
//Calculate damage when damage is not known public static int calculateDamage(UnitBase attacker, UnitBase defender, Attack attack) { float attackFactor = 1f; float defenceFactor = 1f; float damage = rollDamage(attack.roll, attack.dmg, attack.nDice); foreach(DamageType x in attack.getTypes()) { attackFactor *= attacker.typeAtk[(int)x]; defenceFactor *= defender.typeDef[(int)x]; } return (int)(damage *= (attackFactor/defenceFactor)); }