summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dungeon.cc
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-07-06 18:55:32 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-07-06 18:55:32 +0000
commit942fcc618e384eed001f538abe28912fd0d468d3 (patch)
treedb8fd9c4c50d98bc8820c516e5b8bd0fa9fb0e36 /crawl-ref/source/dungeon.cc
parent50c3e7b2427a5f93e0bcc763beb3130e4d2bc265 (diff)
downloadcrawl-ref-942fcc618e384eed001f538abe28912fd0d468d3.tar.gz
crawl-ref-942fcc618e384eed001f538abe28912fd0d468d3.zip
Fix level compiler to validate PLACE: declarations.
Places are saved as level_ids, not strings. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1776 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/dungeon.cc')
-rw-r--r--crawl-ref/source/dungeon.cc40
1 files changed, 11 insertions, 29 deletions
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index eaf07faed6..fa02233867 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -209,13 +209,6 @@ static std::vector<vault_placement> level_vaults;
static int minivault_chance = 3;
static bool dgn_level_vetoed = false;
-static std::string level_name(int subdepth)
-{
- return place_name(
- get_packed_place(
- you.where_are_you, subdepth, you.level_type ) );
-}
-
static void place_altars()
{
// No altars before level 5.
@@ -1099,26 +1092,15 @@ static bool place_portal_vault(int stair, const std::string &tag, int dlevel)
return build_secondary_vault(dlevel, vault, stair);
}
-static int random_map_for_dlevel(int level_number, bool wantmini = false)
+static int dgn_random_map_for_place(bool wantmini)
{
- int subdepth = subdungeon_depth(you.where_are_you, level_number);
- const std::string name = level_name(subdepth);
- std::string altname;
-
- // This dodge allows designers to specify PLACE: as Elf:$ or Slime:$ or
- // whatever:$ to say "last level in branch 'whatever'".
- if (subdepth == your_branch().depth)
- altname = level_name(0);
-
- int vault = random_map_for_place(name, wantmini);
-
- if (vault == -1)
- vault = random_map_for_place(altname, wantmini);
+ const level_id lid = level_id::current();
+ int vault = random_map_for_place(lid, wantmini);
// disallow entry vaults for tutorial (complicates things)
if (vault == -1
- && you.where_are_you == BRANCH_MAIN_DUNGEON
- && level_number == 0 && !Options.tutorial_left)
+ && lid.branch == BRANCH_MAIN_DUNGEON
+ && lid.depth == 1 && !Options.tutorial_left)
{
vault = random_map_for_tag("entry", wantmini);
}
@@ -1131,7 +1113,7 @@ static int random_map_for_dlevel(int level_number, bool wantmini = false)
// otherwise.
static builder_rc_type builder_by_branch(int level_number)
{
- const int vault = random_map_for_dlevel(level_number);
+ const int vault = dgn_random_map_for_place(false);
if (vault != -1)
{
@@ -1165,7 +1147,7 @@ static void place_special_minivaults(int level_number, int level_type)
std::set<int> used;
if (minivault_chance && one_chance_in(minivault_chance))
{
- const int vault = random_map_for_depth(level_id::current(), true);
+ const int vault = random_map_in_depth(level_id::current(), true);
if (vault != -1)
{
build_minivaults(level_number, vault);
@@ -1181,7 +1163,7 @@ static void place_special_minivaults(int level_number, int level_type)
int num_to_place = random2(3) + 4;
for ( int i = 0; i < num_to_place && tries > 0; ++i, --tries )
{
- const int vault = random_map_for_dlevel(level_number, true);
+ const int vault = dgn_random_map_for_place(true);
if (vault == -1)
{
@@ -1206,7 +1188,7 @@ static void place_special_minivaults(int level_number, int level_type)
int chance = level_number == 0? 50 : 100;
while (chance && random2(100) < chance)
{
- const int vault = random_map_for_dlevel(level_number, true);
+ const int vault = dgn_random_map_for_place(true);
if (vault == -1)
break;
@@ -1235,13 +1217,13 @@ static builder_rc_type builder_normal(int level_number, char level_type,
bool skipped = false;
bool done_city = false;
- int vault = random_map_for_dlevel(level_number);
+ int vault = dgn_random_map_for_place(false);
// Can't have vaults on you.where_are_you != BRANCH_MAIN_DUNGEON levels
if (vault == -1
&& player_in_branch( BRANCH_MAIN_DUNGEON )
&& one_chance_in(9))
- vault = random_map_for_depth(level_id::current());
+ vault = random_map_in_depth(level_id::current());
if (vault != -1)
{