double CalcDamage(Combatant attacker, Combatant defender, Attack attack) { System.Random gen = new System.Random(); double crit = 1.0; double attackPower = 0.0; double defensePower = 0.0; //does hit if(gen.NextDouble() * 100 > (attack.accuracy + attacker.perception)) { return 0.0; } //is crit if(gen.NextDouble()*100 < (0.05+0.02 * attacker.luck)) { crit = 1.5; } //do damage attackPower = attack.power * attacker.strength; defensePower = defender.defense + defender.getArmorValue(); //return return (attackPower / defensePower) * crit; }