1. enemies spawning on the same tile as the player
2. start_turn in the wrong places
This commit is contained in:
2024-07-16 19:57:29 -04:00
parent ce0a31197c
commit 50e10509b3
3 changed files with 13 additions and 16 deletions

View File

@ -109,6 +109,8 @@ game_result game::run() {
std::to_string(curr_turn + 1) + std::to_string(curr_turn + 1) +
" turns!"}; " turns!"};
player->start_turn();
player->discard_level_effects(); player->discard_level_effects();
++curr_level; ++curr_level;
@ -130,6 +132,8 @@ game_result game::run() {
std::to_string(curr_turn + 1) + std::to_string(curr_turn + 1) +
" turns! Coward!"}; " turns! Coward!"};
player->start_turn();
player->discard_level_effects(); player->discard_level_effects();
--curr_level; --curr_level;
@ -153,6 +157,7 @@ game_result game::run() {
return {in_game, ""}; return {in_game, ""};
default: default:
player->start_turn();
break; break;
} }

View File

@ -7,6 +7,9 @@ level::level(character *player, RNG *rng, const feature enabled_features):
player{player} { player{player} {
auto tiles = map.get_room_list(); auto tiles = map.get_room_list();
for (size_t i = 0; i < tiles.size(); ++i)
remove_from_list(tiles[i], player->get_pos());
for (size_t i = 0; i < tiles.size(); ++i) for (size_t i = 0; i < tiles.size(); ++i)
remove_from_list(tiles[i], map.get_down_stairs()); remove_from_list(tiles[i], map.get_down_stairs());
@ -26,6 +29,9 @@ level::level(const std::string &map_data, character *player, RNG *rng,
map{player, map_data, rng, enabled_features}, player{player} { map{player, map_data, rng, enabled_features}, player{player} {
auto tiles = map.get_room_list(); auto tiles = map.get_room_list();
for (size_t i = 0; i < tiles.size(); ++i)
remove_from_list(tiles[i], player->get_pos());
for (size_t i = 0; i < tiles.size(); ++i) for (size_t i = 0; i < tiles.size(); ++i)
remove_from_list(tiles[i], map.get_down_stairs()); remove_from_list(tiles[i], map.get_down_stairs());

View File

@ -122,9 +122,6 @@ long_result player_base::interpret_command(level *lvl, game_command cmd) {
} else if (cmd >= move_north && cmd <= move_southwest) { } else if (cmd >= move_north && cmd <= move_southwest) {
auto res = move(lvl, pos + MOVE[cmd - move_north]); auto res = move(lvl, pos + MOVE[cmd - move_north]);
if (res.res == result::moved)
start_turn();
gold g = get_gold_at(pos, lvl->get_glist()); gold g = get_gold_at(pos, lvl->get_glist());
gold_cnt += g.amount; gold_cnt += g.amount;
@ -136,10 +133,6 @@ long_result player_base::interpret_command(level *lvl, game_command cmd) {
} else if (cmd >= apply_north && cmd <= apply_southwest) { } else if (cmd >= apply_north && cmd <= apply_southwest) {
auto res = apply(get_potion_at(pos + MOVE[cmd - apply_north], auto res = apply(get_potion_at(pos + MOVE[cmd - apply_north],
lvl->get_plist())); lvl->get_plist()));
if (res.res == result::applied)
start_turn();
return res; return res;
} else if (cmd == apply_panic) { } else if (cmd == apply_panic) {
return {result::fine, return {result::fine,
@ -148,9 +141,6 @@ long_result player_base::interpret_command(level *lvl, game_command cmd) {
enemy_base *tmp = get_enemy_at(pos + MOVE[cmd - attack_north], enemy_base *tmp = get_enemy_at(pos + MOVE[cmd - attack_north],
lvl->get_elist()); lvl->get_elist());
if (tmp != nullptr)
start_turn();
auto res = attack((character *)tmp); auto res = attack((character *)tmp);
if (tmp != nullptr && tmp->is_dead()) { if (tmp != nullptr && tmp->is_dead()) {
@ -165,18 +155,14 @@ long_result player_base::interpret_command(level *lvl, game_command cmd) {
return res; return res;
} else if (cmd == up_stairs) { } else if (cmd == up_stairs) {
if (lvl->get_up_stairs() == pos && if (lvl->get_up_stairs() == pos &&
enabled_features & FEATURE_REVISIT) { enabled_features & FEATURE_REVISIT)
start_turn();
return {go_up, "PC went up the stairs. "}; return {go_up, "PC went up the stairs. "};
}
return {result::fine, return {result::fine,
"PC tried to fly through the ceiling. "}; "PC tried to fly through the ceiling. "};
} else if (cmd == down_stairs) { } else if (cmd == down_stairs) {
if (lvl->get_down_stairs() == pos) { if (lvl->get_down_stairs() == pos)
start_turn();
return {go_down, "PC went down the stairs. "}; return {go_down, "PC went down the stairs. "};
}
return {result::fine, return {result::fine,
"PC tried to dig through the floor. "}; "PC tried to dig through the floor. "};