summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/monstuff.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/monstuff.cc')
-rw-r--r--crawl-ref/source/monstuff.cc21
1 files changed, 12 insertions, 9 deletions
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index b0f932e8f5..c5882d783a 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -1167,18 +1167,23 @@ static bool habitat_okay( struct monsters *monster, int targ )
// swap pets to their death, we can let that go). -- bwr
bool swap_places(struct monsters *monster)
{
- bool swap;
-
int loc_x = you.x_pos;
int loc_y = you.y_pos;
const int mgrid = grd[monster->x][monster->y];
- swap = habitat_okay( monster, grd[loc_x][loc_y] )
- && !is_grid_dangerous(mgrid);
+ const bool mon_dest_okay = habitat_okay( monster, grd[loc_x][loc_y] );
+ const bool you_dest_okay =
+ !is_grid_dangerous(mgrid)
+ || yesno("Do you really want to step there?", false, 'n');
+
+ if (!you_dest_okay)
+ return (false);
+
+ bool swap = mon_dest_okay;
// chose an appropiate habitat square at random around the target.
- if (!swap && !is_grid_dangerous(mgrid))
+ if (!swap)
{
int num_found = 0;
int temp_x, temp_y;
@@ -4534,9 +4539,8 @@ void mons_check_pool(monsters *mons, int killer)
return;
const int grid = grd(mons->pos());
- const int native_habitat = monster_habitat(mons->type);
if ((grid == DNGN_LAVA || grid == DNGN_DEEP_WATER)
- && grid != native_habitat)
+ && !monster_habitable_grid(mons, grid))
{
const bool message = mons_near(mons);
@@ -4549,8 +4553,7 @@ void mons_check_pool(monsters *mons, int killer)
// Even fire resistant monsters perish in lava, but undead can survive
// deep water.
- if (!monster_habitable_grid(mons, grid)
- && (grid == DNGN_LAVA || mons->holiness() != MH_UNDEAD))
+ if (grid == DNGN_LAVA || mons->holiness() != MH_UNDEAD)
{
if (message)
{