diff options
author | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-06-28 20:35:10 +0000 |
---|---|---|
committer | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-06-28 20:35:10 +0000 |
commit | 3183b13800fe91b715929ef5f08b5683c1856a87 (patch) | |
tree | 0b0824a4e20d62720f827a9b862bf91658ee17f2 /crawl-ref/source/monstuff.cc | |
parent | f05e54a08b3a192cb16ebe3c593c6f97d70226b4 (diff) | |
download | crawl-ref-3183b13800fe91b715929ef5f08b5683c1856a87.tar.gz crawl-ref-3183b13800fe91b715929ef5f08b5683c1856a87.zip |
Properly handle it when a pacified monster can't find a level exit.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6187 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/monstuff.cc')
-rw-r--r-- | crawl-ref/source/monstuff.cc | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc index 890b388c13..c1a9155ffd 100644 --- a/crawl-ref/source/monstuff.cc +++ b/crawl-ref/source/monstuff.cc @@ -3030,20 +3030,25 @@ static void _handle_behaviour(monsters *mon) if (mon->travel_target != MTRAV_PATROL && mon->travel_target != MTRAV_UNREACHABLE) { + mon->foe = MHITNOT; + patrolling = true; + mon->travel_path.clear(); + e_index = _mons_find_nearest_level_exit(mon, e); if (e_index != -1) { - mon->foe = MHITNOT; - - patrolling = true; mon->patrol_point = e[e_index].target; - mon->target_x = e[e_index].target.x; mon->target_y = e[e_index].target.y; - mon->travel_target = MTRAV_PATROL; - mon->travel_path.clear(); + } + else + { + mon->patrol_point = coord_def(0, 0); + mon->target_x = mon->x; + mon->target_y = mon->y; + mon->travel_target = MTRAV_NONE; } } |