From 2c1931a103ed51b5cc3b9ee203de22e74d5b6843 Mon Sep 17 00:00:00 2001 From: ennewalker Date: Sat, 17 May 2008 17:46:48 +0000 Subject: 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 --- crawl-ref/source/dungeon.cc | 76 ++++++--------------------------------------- 1 file changed, 10 insertions(+), 66 deletions(-) (limited to 'crawl-ref/source/dungeon.cc') 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() -- cgit v1.2.3-54-g00ecf