public void Fight() { FightStages attacker = fightersManager.GetAttacker(); FightStages defender = fightersManager.GetDefender(); fightersManager.ManageRounds(attacker, defender); attacker.BuildAttackStats(); defender.BuildDefenseStats(); attacker.Attack.ProcessPowers(defender.Defense); defender.Defense.ProcessPowers(attacker.Attack); defender.Defense.CalculatePercentagesOfDamage(); CalculateDamage(attacker, defender); defender.ApplyDamage(attacker.Attack.DamageToAttack, attacker.Attack.DamageToDefense, attacker.Attack.DamageToSabotage); if (defender.ProcessInjuries()) { GameFinished = true; attacker.Won = true; } else { defender.RestoreHealth(); } }