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() {
|
character *game::move_enemies() {
|
||||||
if (the_world)
|
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
auto enemies = sort_enemies(levels[curr_level]->get_elist());
|
auto enemies = sort_enemies(levels[curr_level]->get_elist());
|
||||||
|
|
||||||
for (auto ch : enemies) {
|
for (auto ch : enemies) {
|
||||||
bool hostile = ch->get_race() == rmerchant ?
|
|
||||||
hostile_merchants : true;
|
|
||||||
ch->start_turn();
|
ch->start_turn();
|
||||||
ch->calc_effects();
|
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 =
|
auto res =
|
||||||
ch->act(levels[curr_level].get(), player.get(), hostile);
|
ch->act(levels[curr_level].get(), player.get(), hostile);
|
||||||
|
|
||||||
if (player->is_dead())
|
if (player->is_dead())
|
||||||
return ch;
|
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;
|
msg += res.msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user