fixed bug about enemies dying to potions

This commit is contained in:
2024-07-18 23:00:08 -04:00
parent a5290c4754
commit af1522ba2f

View File

@ -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;
}