summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dungeon.cc
diff options
context:
space:
mode:
authorzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2007-10-05 07:05:22 +0000
committerzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2007-10-05 07:05:22 +0000
commit16bfc009e44684b7c3f0dc29febdfbb54ae7a2f3 (patch)
tree9a8f954685c7504159d7d75ca451a4e8bc117147 /crawl-ref/source/dungeon.cc
parent1db9c68406e0892e1ac7331dfd3b412b31741cb7 (diff)
downloadcrawl-ref-16bfc009e44684b7c3f0dc29febdfbb54ae7a2f3.tar.gz
crawl-ref-16bfc009e44684b7c3f0dc29febdfbb54ae7a2f3.zip
Oops, was calling dgn_set_floor_colours() in wrong place, leading to some
levels getting the wrong colours. Also, make dgn_set_colours_from_monsters() be paranoid about improprely set up env.mons_alloc[]. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2329 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/dungeon.cc')
-rw-r--r--crawl-ref/source/dungeon.cc25
1 files changed, 20 insertions, 5 deletions
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index 118f960e15..66a8cf0795 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -277,6 +277,7 @@ bool builder(int level_number, int level_type)
use_random_maps = false;
build_dungeon_level(level_number, level_type);
+ dgn_set_floor_colours();
#ifdef DEBUG_DIAGNOSTICS
if (dgn_level_vetoed)
@@ -630,6 +631,9 @@ static void reset_level()
for (int i = 0; i < MAX_MONSTERS; i++)
menv[i].type = -1;
+ for (int i = 0; i < 20; i++)
+ env.mons_alloc[i] = -1;
+
mgrd.init(NON_MONSTER);
igrd.init(NON_ITEM);
@@ -852,7 +856,6 @@ static void build_dungeon_level(int level_number, int level_type)
|| you.level_type == LEVEL_PORTAL_VAULT
|| dgn_level_vetoed)
{
- dgn_set_floor_colours();
return;
}
@@ -927,8 +930,6 @@ static void build_dungeon_level(int level_number, int level_type)
// Translate stairs for pandemonium levels:
if (level_type == LEVEL_PANDEMONIUM)
fixup_pandemonium_stairs();
-
- dgn_set_floor_colours();
} // end builder()
@@ -942,8 +943,22 @@ static char fix_black_colour(char incol)
void dgn_set_colours_from_monsters()
{
- env.floor_colour = fix_black_colour(mcolour[env.mons_alloc[9]]);
- env.rock_colour = fix_black_colour(mcolour[env.mons_alloc[8]]);
+ if (env.mons_alloc[9] < 0 || env.mons_alloc[9] == MONS_PROGRAM_BUG
+ || env.mons_alloc[9] >= NUM_MONSTERS)
+ {
+ env.floor_colour = LIGHTGREY;
+ }
+ else
+ env.floor_colour = fix_black_colour(mcolour[env.mons_alloc[9]]);
+
+
+ if (env.mons_alloc[8] < 0 || env.mons_alloc[8] == MONS_PROGRAM_BUG
+ || env.mons_alloc[8] >= NUM_MONSTERS)
+ {
+ env.rock_colour = BROWN;
+ }
+ else
+ env.rock_colour = fix_black_colour(mcolour[env.mons_alloc[8]]);
}
static void dgn_set_floor_colours()