From a80ff6341075008c60dfd2efc6a43dd65ba90903 Mon Sep 17 00:00:00 2001 From: zelgadis Date: Sun, 14 Oct 2007 05:20:15 +0000 Subject: Give a message and interrupt activity if a visible door is opened or eaten by an unseen monster (either invisible or out of line of sight). git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2457 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/monstuff.cc | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'crawl-ref/source') diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc index 15efbd4177..a6eda2d160 100644 --- a/crawl-ref/source/monstuff.cc +++ b/crawl-ref/source/monstuff.cc @@ -4777,10 +4777,26 @@ static bool is_trap_safe(const monsters *monster, const trap_struct &trap) static void mons_open_door(monsters* monster, const coord_def &pos) { - if (grd(pos) == DNGN_SECRET_DOOR && !see_grid(pos)) + bool was_secret = (grd(pos) == DNGN_SECRET_DOOR); + + if (was_secret && !see_grid(pos)) set_terrain_changed(pos); grd(pos) = DNGN_OPEN_DOOR; + if (see_grid(pos)) + { + viewwindow(true, false); + + if (was_secret) + mpr("The rock wall was actually a secret door!"); + + if (!you.can_see(monster)) + { + mpr("Something unseen opens the door."); + interrupt_activity(AI_FORCE_INTERRUPT); + } + } + monsterentry *entry = get_monster_data(monster->type); monster->speed_increment -= entry->energy_usage.move; } @@ -5090,6 +5106,17 @@ static bool monster_move(monsters *monster) grd[monster->x + mmov_x][monster->y + mmov_y] = DNGN_FLOOR; jelly_grows(monster); + + if (see_grid(monster->x + mmov_x, monster->y + mmov_y)) + { + viewwindow(true, false); + + if (!you.can_see(monster)) + { + mpr("The door mysteriously vanishes."); + interrupt_activity( AI_FORCE_INTERRUPT ); + } + } } // done door-eating jellies -- cgit v1.2.3-54-g00ecf