From 5a675c5e6833e98b92b55396594bc0d607b98903 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Sat, 2 Nov 2024 13:18:50 +0100 Subject: clean up code + implement teleport consumable --- frontend/cmd/hit.cpp | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'frontend/cmd/hit.cpp') diff --git a/frontend/cmd/hit.cpp b/frontend/cmd/hit.cpp index 94bde03..cb5c56e 100644 --- a/frontend/cmd/hit.cpp +++ b/frontend/cmd/hit.cpp @@ -6,28 +6,27 @@ #include "backend/Exception.h" #include "../GameController.h" -#include "../strings.h" +#include "../util.h" using namespace std; void GameController::cmd_hit(string & target_name) { RNG & rng = RNG::get(); Player & player = this->dungeon->get_player(); - for (Enemy * enemy : player.get_location().get_enemies()) { - if (str_lower(enemy->get_name().c_str()) != str_lower(target_name)) continue; - if (rng.rand_double() > player.get_attack()) { - lprtf("Je hebt gemist!\n"); - } else { - unsigned damage = rng.rand_int(player.weapon->get_damage()); - enemy->take_damage(damage); - lprtf("Je hebt %s geraakt en %d schade aangericht!\n", enemy->get_displayname().c_str(), damage); - } + auto it = find_if_range(player.get_location().get_enemies(), by_name_case_insensitive(target_name)); + if (!it) + throw Exception("vijand \"%s\" niet gevonden", target_name.c_str()); + Enemy & enemy = **it; - this->dungeon->update(); - return; + if (rng.rand_double() > player.get_attack()) { + lprtf("Je hebt gemist!\n"); + } else { + unsigned damage = rng.rand_int(player.weapon->get_damage()); + enemy.take_damage(damage); + lprtf("Je hebt %s geraakt en %d schade aangericht!\n", enemy.get_displayname().c_str(), damage); } - throw Exception("vijand \"%s\" niet gevonden", target_name.c_str()); + this->dungeon->update(); } -- cgit v1.2.3