/// Instrukcje, które są wykonywane podczas walki static bool fight() { currentEnemy = currentRoom.getEnemy(); int enemyHP = currentEnemy.getMaxHealth(); while (enemyHP > 0) { int heroAttackType = 4; int enemyAttackType = currentEnemy.getAttackType(); bool done = false; while (!done) { Console.WriteLine("Co robisz?"); Console.WriteLine("1. Atak Pięścią"); Console.WriteLine("2. Atak Mieczem"); Console.WriteLine("3. Mocne Uderzenie"); Console.WriteLine("4. Ulecz"); Console.WriteLine("5. Uciekaj"); string inp = CappedRead(); done = true; switch (inp) { case "1": heroAttackType = 0; break; case "2": if (hero.getWeapon() == null) { Console.WriteLine("\nNie masz broni"); done = false; } heroAttackType = 1; break; case "3": if (hero.getLevel() < 4) { Console.WriteLine("\nUmiejętność dostępna od 4 poziomu"); done = false; } heroAttackType = 2; break; case "4": if (hero.getBandage() == null) { Console.WriteLine("\nNie masz bandaży"); done = false; } else { heroAttackType = 4; int rest = hero.restoreHealth(hero.getBandage().healthPoints()); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Bohater używa bandaży. Ma teraz " + hero.causeDamage(0) + "punktów życia"); Console.ForegroundColor = ConsoleColor.White; if (rest > 0) { hero.pickUpBandage(new Bandage(rest)); } else { hero.pickUpBandage(null); } } break; case "5": if (rand.Next() % 4 + currentEnemy.getSpeed() < hero.getSpeed()) { Console.WriteLine("Udało Ci się uciec"); return(move()); } else { Console.WriteLine("Nie udało Ci się uciec"); } break; case "q": return(true); default: done = false; break; } } int enemyDamage = calculateDamage(currentEnemy.getAttack(), enemyAttackType, hero.getDefense(), null); int heroDamage = calculateDamage(hero.getAttack(), heroAttackType, currentEnemy.getDefense(), hero.getWeapon()); if (rand.Next() % 3 + currentEnemy.getSpeed() > hero.getSpeed()) { //przeciwnik gra pierwszy Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(currentEnemy + Attacks[enemyAttackType] + " za " + enemyDamage); Console.ForegroundColor = ConsoleColor.White; if (hero.causeDamage(enemyDamage) <= 0) { return(true); } Console.WriteLine("Bohater" + Attacks[heroAttackType] + " za " + heroDamage); enemyHP -= heroDamage; } else { Console.WriteLine("Bohater" + Attacks[heroAttackType] + " za " + heroDamage); enemyHP -= heroDamage; if (enemyHP > 0) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(currentEnemy + Attacks[enemyAttackType] + " za " + enemyDamage); Console.ForegroundColor = ConsoleColor.White; if (hero.causeDamage(enemyDamage) <= 0) { return(true); } } } } Console.WriteLine("Pokonałeś " + currentEnemy + " i dostałeś " + currentEnemy.getExp() + " punktów doświadczenia"); if (hero.addExp(currentEnemy.getExp())) { Console.WriteLine("NOWY POZIOM"); } currentEnemy.kill(); return(false); }