diff --git a/src/game.cc b/src/game.cc index 92cf0bd..e9b78b4 100644 --- a/src/game.cc +++ b/src/game.cc @@ -57,30 +57,39 @@ enemy_list game::sort_enemies(const enemy_list &elist) { } character *game::move_enemies() { - if (the_world) - return nullptr; - auto enemies = sort_enemies(levels[curr_level]->get_elist()); for (auto ch : enemies) { - bool hostile = ch->get_race() == rmerchant ? - hostile_merchants : true; ch->start_turn(); ch->calc_effects(); + + if (ch->is_dead()) { + int g = ch->dies(levels[curr_level].get()); + + if (g) + levels[curr_level]->add_gold(gold{ch->get_pos(), g}); + msg += ch->get_abbrev() + " was killed by a potion. "; + } + } + + if (the_world) + return nullptr; + + + for (auto ch : enemies) { + if (ch->is_dead()) { + levels[curr_level]->erase_enemy(ch); + continue; + } + + bool hostile = ch->get_race() == rmerchant ? + hostile_merchants : true; auto res = ch->act(levels[curr_level].get(), player.get(), hostile); if (player->is_dead()) return ch; - if (ch->is_dead()) { - int g = ch->dies(levels[curr_level].get()); - levels[curr_level]->erase_enemy(ch); - - if (g) - levels[curr_level]->add_gold(gold{ch->get_pos(), g}); - } - msg += res.msg; }