git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1255 c06c8d41-db1a-0410-9941-cceddc491573
3XZOL3FFQZITUJIGDD6B6V6ZYMBN524JKNN6ZPJAXEC7RY433I3QC
3LGOU6N53GZ2QSPWL7Y74JGIY7BDNBJHLNQAOGUDJNMFCKO7IZ2QC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
KCHX2F3JFEWOZT3WMJVZAAQUU2QSZ5Q7RDCD7WUJ7VE65J52JFUQC
6QWZDCP5HGYLTJO3WWYJJGRRT7QFY6IG64TC7TUB553Z7GAA2HIQC
5UVDIVD4NSXA52U4QMQIVST3GSZJ2A2YZK3RUEXKPM43YVQ7LI5AC
MSQI3TH6T62JAXQGLL52QZCWAMC372TGB6ZNNRDGUGMJKBNNV2VAC
SH6NU4H5TG4O7CRXRHZ7MDHABZLWWXQ77NJDBHI7KCVHXHQYK46QC
34C4U6EQWERY75GZJKUCM5KVGU2OUICETS5LGZF6RMKMZT4R5SQAC
static int builder_by_type(int level_number, char level_type);
static int builder_by_branch(int level_number);
static int builder_normal(int level_number, char level_type, spec_room &s);
static int builder_basic(int level_number);
static builder_rc_type builder_by_type(int level_number, char level_type);
static builder_rc_type builder_by_branch(int level_number);
static builder_rc_type builder_normal(int level_number, char level_type, spec_room &s);
static builder_rc_type builder_basic(int level_number);
int skip_build = builder_by_type(level_number, level_type);
if (skip_build < 0)
builder_rc_type skip_build = builder_by_type(level_number, level_type);
if (skip_build == BUILD_QUIT) // quit immediately
// Try to place minivaults that really badly want to be placed. Still
// no guarantees, seeing this is a minivault.
place_special_minivaults(level_number, level_type);
// hook up the special room (if there is one, and it hasn't
// been hooked up already in roguey_level()
if (sr.created && !sr.hooked_up)
specr_2(sr);
// now place items, monster, gates, etc.
// stairs must exist by this point. Some items and monsters
// already exist.
// time to make the swamp {dlb}:
if (player_in_branch( BRANCH_SWAMP ))
prepare_swamp();
if (mon_wanted > 60)
mon_wanted = 60;
if (player_in_hell())
mon_wanted += roll_dice( 3, 8 );
else if (player_in_branch( BRANCH_HALL_OF_BLADES ))
mon_wanted += roll_dice( 6, 8 );
// unlikely - now only possible in HoB {dlb} 10mar2000
if (mon_wanted > 60)
mon_wanted = 60;
}
place_branch_entrances( level_number, level_type );
check_doors();
if (!player_in_branch( BRANCH_DIS ) && !player_in_branch( BRANCH_VAULTS ))
hide_doors();
if (!player_in_branch( BRANCH_ECUMENICAL_TEMPLE ))
place_traps(level_number);
int items_wanted = 3 + roll_dice( 3, 11 );
if (level_number > 5 && one_chance_in(500 - 5 * level_number))
items_wanted = 10 + random2avg( 90, 2 ); // rich level!
// change pre-rock (105) to rock, and pre-floor (106) to floor
replace_area( 0,0,GXM-1,GYM-1, DNGN_BUILDER_SPECIAL_WALL, DNGN_ROCK_WALL );
replace_area( 0,0,GXM-1,GYM-1, DNGN_BUILDER_SPECIAL_FLOOR, DNGN_FLOOR );
// place items
builder_items(level_number, level_type, items_wanted);
// place monsters
builder_monsters(level_number, level_type, mon_wanted);
// place shops, if appropriate
if (player_in_branch( BRANCH_MAIN_DUNGEON )
|| player_in_branch( BRANCH_ORCISH_MINES )
|| player_in_branch( BRANCH_ELVEN_HALLS )
|| player_in_branch( BRANCH_LAIR )
|| player_in_branch( BRANCH_VAULTS )
|| player_in_branch( BRANCH_SNAKE_PIT )
|| player_in_branch( BRANCH_SWAMP ))
{
place_shops(level_number);
}
static void fixup_walls()
{
reset_level();
build_layout_skeleton(level_number, level_type, sr);
if (you.level_type == LEVEL_LABYRINTH)
return;
// Try to place minivaults that really badly want to be placed. Still
// no guarantees, seeing this is a minivault.
place_special_minivaults(level_number, level_type);
// hook up the special room (if there is one, and it hasn't
// been hooked up already in roguey_level()
if (sr.created && !sr.hooked_up)
specr_2(sr);
// now place items, monster, gates, etc.
// stairs must exist by this point. Some items and monsters
// already exist.
// time to make the swamp {dlb}:
if (player_in_branch( BRANCH_SWAMP ))
prepare_swamp();
place_branch_entrances( level_number, level_type );
check_doors();
if (!player_in_branch( BRANCH_DIS ) && !player_in_branch( BRANCH_VAULTS ))
hide_doors();
if (!player_in_branch( BRANCH_ECUMENICAL_TEMPLE ))
place_traps(level_number);
int items_wanted = 3 + roll_dice( 3, 11 );
if (level_number > 5 && one_chance_in(500 - 5 * level_number))
items_wanted = 10 + random2avg( 90, 2 ); // rich level!
// change pre-rock (105) to rock, and pre-floor (106) to floor
replace_area( 0,0,GXM-1,GYM-1, DNGN_BUILDER_SPECIAL_WALL, DNGN_ROCK_WALL );
replace_area( 0,0,GXM-1,GYM-1, DNGN_BUILDER_SPECIAL_FLOOR, DNGN_FLOOR );
// place items
builder_items(level_number, level_type, items_wanted);
// place monsters
builder_monsters(level_number, level_type, num_mons_wanted(level_type));
// place shops, if appropriate
if ( branches[(int)you.where_are_you].has_shops )
place_shops(level_number);
fixup_walls();
fixup_branch_stairs();
if (player_in_branch( BRANCH_CRYPT ))
{
if (one_chance_in(3))
mons_place( MONS_CURSE_SKULL, BEH_SLEEP, MHITNOT, false, 0, 0 );
if (one_chance_in(7))
mons_place( MONS_CURSE_SKULL, BEH_SLEEP, MHITNOT, false, 0, 0 );
}
place_altars();
&& !player_in_hell()
&& !player_in_branch( BRANCH_ORCISH_MINES )
&& !player_in_branch( BRANCH_HIVE )
&& !player_in_branch( BRANCH_LAIR )
&& !player_in_branch( BRANCH_SLIME_PITS )
&& !player_in_branch( BRANCH_ECUMENICAL_TEMPLE ))
&& branches[(int)you.where_are_you].has_uniques)