summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dungeon.cc
diff options
context:
space:
mode:
authorennewalker <ennewalker@c06c8d41-db1a-0410-9941-cceddc491573>2008-05-17 17:46:48 +0000
committerennewalker <ennewalker@c06c8d41-db1a-0410-9941-cceddc491573>2008-05-17 17:46:48 +0000
commit2c1931a103ed51b5cc3b9ee203de22e74d5b6843 (patch)
tree0bce06df297d6fa63022dae6a063ff69d04803d3 /crawl-ref/source/dungeon.cc
parent395a699d97cb02de24dc8710f766f725ecaa992d (diff)
downloadcrawl-ref-2c1931a103ed51b5cc3b9ee203de22e74d5b6843.tar.gz
crawl-ref-2c1931a103ed51b5cc3b9ee203de22e74d5b6843.zip
Adding _plan_1() (the donut room) into layout.des. Vaults can now have zero size.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5099 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/dungeon.cc')
-rw-r--r--crawl-ref/source/dungeon.cc76
1 files changed, 10 insertions, 66 deletions
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index 0e74a08826..b51759ba37 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -168,7 +168,7 @@ static void _build_lake(dungeon_feature_type lake_type); //mv
static void _spotty_level(bool seeded, int iterations, bool boxy);
static void _bigger_room();
static void _plan_main(int level_number, int force_plan);
-static char _plan_1();
+static char _plan_1(int level_number);
static char _plan_2(int level_number);
static char _plan_3();
static char _plan_4(char forbid_x1, char forbid_y1, char forbid_x2,
@@ -5770,7 +5770,7 @@ static void _plan_main(int level_number, int force_plan)
if (!force_plan)
force_plan = 1 + random2(12);
- do_stairs = ((force_plan == 1) ? _plan_1() :
+ do_stairs = ((force_plan == 1) ? _plan_1(level_number) :
(force_plan == 2) ? _plan_2(level_number) :
(force_plan == 3) ? _plan_3() :
(force_plan == 4) ? _plan_4(0, 0, 0, 0, NUM_FEATURES) :
@@ -5799,74 +5799,18 @@ static void _plan_main(int level_number, int force_plan)
_replace_area(0, 0, GXM-1, GYM-1, DNGN_ROCK_WALL, special_grid);
} // end plan_main()
-static char _plan_1()
+static char _plan_1(int level_number)
{
dgn_Build_Method = "plan_1";
- int temp_rand = 0; // probability determination {dlb}
-
- unsigned char width = (10 - random2(7)); // value range of [4,10] {dlb}
-
- _replace_area(10, 10, (GXM - 10), (10 + width), DNGN_ROCK_WALL, DNGN_FLOOR);
- _replace_area(10, (60 - width), (GXM - 10), (GYM - 10),
- DNGN_ROCK_WALL, DNGN_FLOOR);
- _replace_area(10, 10, (10 + width), (GYM - 10), DNGN_ROCK_WALL, DNGN_FLOOR);
- _replace_area((60 - width), 10, (GXM - 10), (GYM - 10),
- DNGN_ROCK_WALL, DNGN_FLOOR);
-
- // possible early returns {dlb}:
- temp_rand = random2(4);
-
- if (temp_rand > 2) // 25% chance {dlb}
- return 3;
- else if (temp_rand > 1) // 25% chance {dlb}
- return 2;
- else // 50% chance {dlb}
- {
- unsigned char width2 = (coinflip()? (1 + random2(5)) : 5);
-
- _replace_area(10, (35 - width2), (GXM - 10), (35 + width2),
- DNGN_ROCK_WALL, DNGN_FLOOR);
- _replace_area((40 - width2), 10, (40 + width2), (GYM - 10),
- DNGN_ROCK_WALL, DNGN_FLOOR);
- }
-
- // possible early returns {dlb}:
- temp_rand = random2(4);
-
- if (temp_rand > 2) // 25% chance {dlb}
- return 3;
- else if (temp_rand > 1) // 25% chance {dlb}
- return 2;
- else // 50% chance {dlb}
- {
- temp_rand = random2(15);
-
- if (temp_rand > 7) // 7 in 15 odds {dlb}
- {
- spec_room sr;
- sr.x1 = 25;
- sr.y1 = 25;
- sr.x2 = (GXM - 25);
- sr.y2 = (GYM - 25);
-
- int oblique_max = 0;
- if (coinflip())
- oblique_max = 5 + random2(20);
-
- temp_rand = random2(7);
+ const int vault = random_map_for_tag("layout", false, true);
+ ASSERT(vault != -1);
- dungeon_feature_type floor_type =
- ((temp_rand > 1) ? DNGN_FLOOR : // 5/7
- (temp_rand > 0) ? DNGN_DEEP_WATER// 1/7
- : DNGN_LAVA); // 1/7
- _octa_room(sr, oblique_max, floor_type);
- }
- }
+ bool success = _build_vaults(level_number, vault);
+ _ensure_vault_placed(success);
- // final return {dlb}:
- return (one_chance_in(5) ? 3 : 2);
-} // end plan_1()
+ return 0;
+} // end plan_2()
static char _plan_2(int level_number)
{
@@ -5878,7 +5822,7 @@ static char _plan_2(int level_number)
bool success = _build_vaults(level_number, vault);
_ensure_vault_placed(success);
- return (one_chance_in(4) ? 0 : 1);
+ return 0;
} // end plan_2()
static char _plan_3()