diff options
author | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-06-20 21:07:35 +0000 |
---|---|---|
committer | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-06-20 21:07:35 +0000 |
commit | 9b5ee487ebe26e03f3b1d70520492f5d0bf54de0 (patch) | |
tree | 410bda44a760a55d1477adc3dfa1449b647af160 /crawl-ref | |
parent | e867a0f0bf9cc17df941665d43a87094c7e35657 (diff) | |
download | crawl-ref-9b5ee487ebe26e03f3b1d70520492f5d0bf54de0.tar.gz crawl-ref-9b5ee487ebe26e03f3b1d70520492f5d0bf54de0.zip |
Improve level exit handling again.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6008 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref')
-rw-r--r-- | crawl-ref/source/mon-util.cc | 1 | ||||
-rw-r--r-- | crawl-ref/source/monstuff.cc | 25 |
2 files changed, 25 insertions, 1 deletions
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index 79d5709bdf..496bc3919d 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -6185,7 +6185,6 @@ bool monsters::move_to_pos(const coord_def &newpos) return (true); } - // Returns true if the trap should be revealed to the player. bool monsters::do_shaft() { diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc index 407cda3829..d355440273 100644 --- a/crawl-ref/source/monstuff.cc +++ b/crawl-ref/source/monstuff.cc @@ -2418,6 +2418,23 @@ static bool _mons_find_nearest_level_exit(const monsters *mon, level_exit &e) return (old_dist != -1); } +// If _mons_find_level_exits() is ever expanded to handle more trap +// types, this should be expanded along with it. +static void _mons_handle_trap_level_exit(const monsters *mon, trap_type trap) +{ + switch (trap) + { + case TRAP_TELEPORT: + simple_monster_message(mon, " disappears!"); + break; + case TRAP_SHAFT: + simple_monster_message(mon, " falls through a shaft!"); + break; + default: + break; + } +} + static void _make_mons_leave_level(monsters *mon) { if (mons_is_leaving(mon)) @@ -3268,6 +3285,14 @@ static void _handle_behaviour(monsters *mon) || distance(mon->x, mon->y, mon->target_x, mon->target_y) == 1 && mon->travel_target == MTRAV_TRAP) { + if (mon->travel_target == MTRAV_TRAP) + { + _mons_handle_trap_level_exit( + mon, trap_type_at_xy(mon->target_x, mon->target_y)); + } + else if (mon->travel_target == MTRAV_SUBMERSIBLE) + mon->add_ench(ENCH_SUBMERGED); + _make_mons_leave_level(mon); return; } |