summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source
diff options
context:
space:
mode:
authorzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2008-12-29 12:00:53 +0000
committerzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2008-12-29 12:00:53 +0000
commitf56d33e0674ecabd70016e1ed67362cd6eaa940c (patch)
tree9b25e23ebdccc79c0338ebb48d33ef85ca95a04b /crawl-ref/source
parentd725200391584c1c3e9402ab1f6e4325da6f9e3f (diff)
downloadcrawl-ref-f56d33e0674ecabd70016e1ed67362cd6eaa940c.tar.gz
crawl-ref-f56d33e0674ecabd70016e1ed67362cd6eaa940c.zip
If detached monsters were caused during level generation then list maps in
Level_Vaults and Temp_Vaults, show dgn_Build_Method and dgn_Layout_Type, and say if the level is a river level, lake level or many-pools level. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8013 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source')
-rw-r--r--crawl-ref/source/debug.cc29
-rw-r--r--crawl-ref/source/dungeon.cc25
2 files changed, 49 insertions, 5 deletions
diff --git a/crawl-ref/source/debug.cc b/crawl-ref/source/debug.cc
index 79664df68b..7aedcdb9e2 100644
--- a/crawl-ref/source/debug.cc
+++ b/crawl-ref/source/debug.cc
@@ -2259,6 +2259,35 @@ static void _announce_level_prob(bool warned)
{
mpr("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", MSGCH_ERROR);
mpr("mgrd problem occurred during level generation", MSGCH_ERROR);
+
+ extern std::string dgn_Build_Method;
+
+ mprf("dgn_Build_Method = %s", dgn_Build_Method.c_str());
+ mprf("dgn_Layout_Type = %s", dgn_Layout_Type.c_str());
+
+ extern bool river_level, lake_level, many_pools_level;
+
+ if (river_level)
+ mpr("river level");
+ if (lake_level)
+ mpr("lake level");
+ if (many_pools_level)
+ mpr("many pools level");
+
+ std::vector<std::string> vault_names;
+
+ for (unsigned int i = 0; i < Level_Vaults.size(); i++)
+ vault_names.push_back(Level_Vaults[i].map.name);
+
+ if (Level_Vaults.size() > 0)
+ mpr_comma_separated_list("Level_Vaults: ", vault_names);
+ vault_names.clear();
+
+ for (unsigned int i = 0; i < Temp_Vaults.size(); i++)
+ vault_names.push_back(Temp_Vaults[i].map.name);
+
+ if (Level_Vaults.size() > 0)
+ mpr_comma_separated_list("Temp_Vaults: ", vault_names);
}
}
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index aef1bd79dd..4df4bf78df 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -235,6 +235,10 @@ std::set<std::string> Level_Unique_Tags;
std::string dgn_Build_Method;
std::string dgn_Layout_Type;
+// Used by debug_mons_scan() when announcing that a just generated level
+// has floating/detached monsters.
+bool river_level, lake_level, many_pools_level;
+
bool Generating_Level = false;
static int can_create_vault = true;
@@ -309,17 +313,18 @@ bool builder(int level_number, int level_type)
if (!dgn_level_vetoed && _valid_dungeon_level(level_number, level_type))
{
- dgn_Layout_Type.clear();
- Level_Unique_Maps.clear();
- Level_Unique_Tags.clear();
- _dgn_map_colour_fixup();
-
#if DEBUG_MONS_SCAN
// If debug_mons_scan() find a problem while Generating_Level is
// still true then it will announce that a problem was caused
// during level generation.
debug_mons_scan();
#endif
+
+ dgn_Layout_Type.clear();
+ Level_Unique_Maps.clear();
+ Level_Unique_Tags.clear();
+ _dgn_map_colour_fixup();
+
return (true);
}
@@ -891,6 +896,10 @@ static void _reset_level()
level_clear_vault_memory();
dgn_colour_grid.reset(NULL);
+ river_level = false;
+ lake_level = false;
+ many_pools_level = false;
+
can_create_vault = true;
use_random_maps = true;
dgn_check_connectivity = false;
@@ -5319,6 +5328,8 @@ static void _place_pool(dungeon_feature_type pool_type, unsigned char pool_x1,
static void _many_pools(dungeon_feature_type pool_type)
{
+ many_pools_level = true;
+
if (player_in_branch( BRANCH_COCYTUS ))
pool_type = DNGN_DEEP_WATER;
else if (player_in_branch( BRANCH_GEHENNA ))
@@ -7534,6 +7545,8 @@ static void _build_river( dungeon_feature_type river_type ) //mv
if (player_in_branch( BRANCH_CRYPT ) || player_in_branch( BRANCH_TOMB ))
return;
+ river_level = true;
+
// if (one_chance_in(10))
// _build_river(river_type);
@@ -7582,6 +7595,8 @@ static void _build_lake(dungeon_feature_type lake_type) //mv
if (player_in_branch(BRANCH_CRYPT) || player_in_branch(BRANCH_TOMB))
return;
+ lake_level = true;
+
// if (one_chance_in (10))
// _build_lake(lake_type);