private void DoDamage(Character attackingCharacter, Character defendingCharacter) { int totalDamage = attackingCharacter.Strenght - (defendingCharacter.Defense + AddModifier(Modifiers.Defense, defendingCharacter)); int modifierDamage = 0; modifierDamage += AddModifier(Modifiers.Damage, attackingCharacter); totalDamage += modifierDamage; totalDamage = Math.Max(0, totalDamage); defendingCharacter.Health -= totalDamage; defendingCharacter.Health = Math.Max(0, defendingCharacter.Health); if (totalDamage == 0) { Console.WriteLine($"{attackingCharacter.Name} can't damage {defendingCharacter.Name}..."); Console.WriteLine($"Maybe {attackingCharacter.Name} should just run away..."); } else { Console.WriteLine($"{defendingCharacter.Name} takes " + totalDamage + $" damage! ({attackingCharacter.Strenght}" + (modifierDamage > 0 ? " + " + modifierDamage : "") + $" - {defendingCharacter.Defense})"); Console.WriteLine($"{defendingCharacter.Name} has {defendingCharacter.Health} health left!"); battleLog.AddToLog($"{attackingCharacter.Name} did damage to {defendingCharacter.Name}!"); } }
/// <summary> /// Main loop of game. /// </summary> internal void Play() { bool quitPlay = false; bool showMenu = true; ConsoleKey key; do { if (showMenu) { DisplayBattleMenu(); showMenu = false; } key = Console.ReadKey(false).Key; switch (key) { case ConsoleKey.E: { DisplayCharacterEquipment(player.PlayerCharacter); showMenu = true; break; } case ConsoleKey.Q: { quitPlay = true; break; } case ConsoleKey.H: { DoHeal(player.PlayerCharacter); showMenu = true; break; } case ConsoleKey.F: { DoCombat(); showMenu = true; break; } case ConsoleKey.C: { DisplayCharacterInfo(player.PlayerCharacter); showMenu = true; break; } case ConsoleKey.S: { DisplayItemShopMenu(); break; } case ConsoleKey.L: { ShowBattleLog(); showMenu = true; break; } case ConsoleKey.R: { Console.WriteLine($"\n{player.PlayerCharacter.Name} has choosen to quit fighting and retire to live a peaceful life..."); player.PlayerCharacter.Retired = true; quitPlay = true; battleLog.AddToLog($"{player.PlayerCharacter.Name} retired from fighting."); Console.ReadLine(); break; } } if (key != ConsoleKey.Enter) { Console.WriteLine(); } } while (!quitPlay && !player.PlayerCharacter.IsDefeated); BattleEnded = true; }