fixed bug about enemies dying to potions
This commit is contained in:
35
src/game.cc
35
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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user