From be1fd6b9eef41731976b64af9ba27e377fab5a3b Mon Sep 17 00:00:00 2001 From: zelgadis Date: Wed, 2 Jul 2008 22:37:48 +0000 Subject: Oops, wasn't properly shifting sanctuary center when doing an Abyss area shift. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6355 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/abyss.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'crawl-ref/source/abyss.cc') diff --git a/crawl-ref/source/abyss.cc b/crawl-ref/source/abyss.cc index 28897a7fe9..d3c23c8243 100644 --- a/crawl-ref/source/abyss.cc +++ b/crawl-ref/source/abyss.cc @@ -411,6 +411,7 @@ void area_shift(void) // area shift. // // Also shift sanctuary center if it's close. + bool sanct_shifted = false; coord_def sanct_pos(0, 0); FixedArray fprops; const coord_def los_delta(LOS_RADIUS, LOS_RADIUS); @@ -419,12 +420,15 @@ void area_shift(void) { fprops(you.pos() - *ri + los_delta) = env.map(*ri).property; if (env.sanctuary_pos == *ri && env.sanctuary_time > 0) - sanct_pos = *ri; + { + sanct_pos = *ri - you.pos(); + sanct_shifted = true; + } } // If sanctuary center is outside of preserved area then just get // rid of it. - if (env.sanctuary_time > 0 && sanct_pos == coord_def(0, 0)) + if (env.sanctuary_time > 0 && !sanct_shifted) { remove_sanctuary(false); @@ -531,9 +535,9 @@ void area_shift(void) for ( ; ri2; ++ri2 ) env.map(*ri2).property = fprops(you.pos() - *ri2 + los_delta); - if (sanct_pos != coord_def(0, 0)) + if (sanct_shifted) { - env.sanctuary_pos = sanct_pos; + env.sanctuary_pos = sanct_pos + you.pos(); } mgen_data mons; -- cgit v1.2.3-54-g00ecf