summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dungeon.cc
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2008-11-24 20:43:26 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2008-11-24 20:43:26 +0000
commit376669c4079cfc19380a15b7791f744d06fe0ed1 (patch)
tree51a7bba01b01c48dd5b6a6461a04303e2dab30a2 /crawl-ref/source/dungeon.cc
parentb369e7edc13b4f3528ffcaa93dfc427281e70758 (diff)
downloadcrawl-ref-376669c4079cfc19380a15b7791f744d06fe0ed1.tar.gz
crawl-ref-376669c4079cfc19380a15b7791f744d06fe0ed1.zip
Add pillars to ziggurat, more utility functions for Lua to handle maps.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7591 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/dungeon.cc')
-rw-r--r--crawl-ref/source/dungeon.cc21
1 files changed, 12 insertions, 9 deletions
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index 4217c8bcd0..8cde1a11b4 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -236,6 +236,7 @@ static bool _fixup_interlevel_connectivity();
// A mask of vaults and vault-specific flags.
map_mask dgn_Map_Mask;
std::vector<vault_placement> Level_Vaults;
+std::vector<vault_placement> Temp_Vaults;
std::set<std::string> Level_Unique_Maps;
std::set<std::string> Level_Unique_Tags;
std::string dgn_Build_Method;
@@ -298,10 +299,6 @@ bool builder(int level_number, int level_type)
mapgen_report_map_build_start();
#endif
- dgn_level_vetoed = false;
- Level_Unique_Maps.clear();
- Level_Unique_Tags.clear();
-
_reset_level();
// If we're getting low on available retries, disable random vaults
@@ -356,6 +353,7 @@ void level_welcome_messages()
void level_clear_vault_memory()
{
Level_Vaults.clear();
+ Temp_Vaults.clear();
dgn_Map_Mask.init(0);
}
@@ -467,7 +465,7 @@ static void _dgn_register_vault(const map_def &map)
if (!map.has_tag("allow_dup"))
you.uniq_map_names.insert(map.name);
- if (map.has_tag("uniq"))
+ if (map.has_tag("luniq"))
Level_Unique_Maps.insert(map.name);
std::vector<std::string> tags = split_string(" ", map.tags);
@@ -755,9 +753,10 @@ static void _mask_vault(const vault_placement &place, unsigned mask)
}
}
-static void _register_place(const vault_placement &place)
+void dgn_register_place(const vault_placement &place, bool register_vault)
{
- _dgn_register_vault(place.map);
+ if (register_vault)
+ _dgn_register_vault(place.map);
if (!place.map.has_tag("layout"))
_mask_vault(place, MMT_VAULT | MMT_NO_DOOR);
@@ -869,6 +868,10 @@ static bool _valid_dungeon_level(int level_number, int level_type)
static void _reset_level()
{
+ dgn_level_vetoed = false;
+ Level_Unique_Maps.clear();
+ Level_Unique_Tags.clear();
+
dgn_Build_Method.clear();
dgn_Layout_Type.clear();
level_clear_vault_memory();
@@ -3963,7 +3966,7 @@ static bool _build_minivaults(int level_number, const map_def *vault,
mapgen_report_map_use(place.map);
#endif
- _register_place(place);
+ dgn_register_place(place, true);
place.apply_grid();
@@ -4488,7 +4491,7 @@ static bool _build_vaults(int level_number, const map_def *vault,
return (false);
place.apply_grid();
- _register_place(place);
+ dgn_register_place(place, true);
std::vector<coord_def> &target_connections = place.exits;
if (target_connections.empty() && gluggy != MAP_ENCOMPASS)