diff options
Diffstat (limited to 'crawl-ref/source/acr.cc')
-rw-r--r-- | crawl-ref/source/acr.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/crawl-ref/source/acr.cc b/crawl-ref/source/acr.cc index 3dcb424d40..4ee02b279d 100644 --- a/crawl-ref/source/acr.cc +++ b/crawl-ref/source/acr.cc @@ -4257,13 +4257,15 @@ static void _move_player(int move_x, int move_y) return; } + coord_def mon_swap_dest; + if (targ_monst != NON_MONSTER && !mons_is_submerged(&menv[targ_monst])) { monsters *mon = &menv[targ_monst]; if (can_swap_places && !beholder) { - if (swap_places( mon )) + if (swap_check(mon, mon_swap_dest)) swap = true; else moving = false; @@ -4291,9 +4293,12 @@ static void _move_player(int move_x, int move_y) { you.time_taken *= player_movement_speed(); you.time_taken /= 10; - if (!move_player_to_grid(targ_x, targ_y, true, false, swap)) + if (!move_player_to_grid(targ_x, targ_y, true, false, swap, swap)) return; + if (swap) + swap_places(&menv[targ_monst], mon_swap_dest); + you.prev_move_x = move_x; you.prev_move_y = move_y; |