approximations of the frequency they did in 0.4 (see end of dat/rooms.des for the 0.4 frequencies). Only bee-hives and jelly pits appear in the Lair, and only morgues appear in the Crypt.
The depths at which special rooms appear is now entirely controlled by the DEPTH lines in dat/rooms.des, so they can appear at any depth except for D:1, since D:1 is constructed by differnt code than the other levels. With the current set of depths this means that special rooms on roguey levels can start appearing 3 levels earlier than in crawl 0.4
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7643 c06c8d41-db1a-0410-9941-cceddc491573
43NBC6HJOFQQTASUMC5W7MWLS355ASIUS7SEFRO6PJWQDY7MRZZQC
FKRLQJYHK3GB6HHSNNFQ7L57ZAR52LSTBG5B6SNJBYZ2LQ36P67AC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
B7MSPF6X2RLGWN4M6ZZF3WSOPKGYPTTD7LIJVST7DXN27DG6JHNAC
2EUWVLBXTKBIYLS7HVCIL6R7EERHRAIVFAXQPBRKDEMH5BGFEDQQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
3UKFCWWS5BLFQWZRB5FUA46CE2XGX5VRCEWC3K3XH5RCGQK64N2AC
74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC
if (!sr.created && level_number > 5 && one_chance_in(5))
_special_room(level_number, sr);
if (!sr.created && one_chance_in(5))
{
const map_def *sroom = random_map_for_tag("special_room", true, true);
// Might not be any special room definitions appropriate for
// this branch and depth.
if (sroom != NULL)
_special_room(level_number, sr, sroom);
}
if (level_number < 7)
spec_room_type = SROOM_LAIR_KOBOLD;
else
{
spec_room_type = random2(NUM_SPECIAL_ROOMS);
if (level_number < 23 && one_chance_in(4))
spec_room_type = SROOM_BEEHIVE;
// Replace overly dangerous special rooms with a room full of orcs.
if (level_number > 13 && spec_room_type == SROOM_LAIR_KOBOLD
|| level_number < 16 && spec_room_type == SROOM_MORGUE
|| level_number < 14 && spec_room_type == SROOM_JELLY_PIT
|| level_number < 17 && one_chance_in(4))
{
spec_room_type = SROOM_LAIR_ORC;
}
if (level_number > 19 && coinflip())
spec_room_type = SROOM_MORGUE;
if (level_number > 13 &&
one_chance_in(6 - (level_number > 23) - (level_number > 18)))
{
spec_room_type = SROOM_JELLY_PIT;
}
}
##########################
NAME: special_room_kobold
DEPTH: 6-14, !Lair, !Crypt
TAGS: special_room allow_dup
WEIGHT: 11
: fill_special_room("kobold")
MAP
ENDMAP
NAME: special_room_orc_a
DEPTH: 8-14, !Lair, !Crypt
TAGS: special_room allow_dup
WEIGHT: 59
: fill_special_room("orc")
MAP
ENDMAP
NAME: special_room_bee_a
DEPTH: 8-14, !Crypt
TAGS: special_room allow_dup
WEIGHT: 30
: fill_special_room("killer bee")
MAP
ENDMAP
################################
NAME: special_room_orc_b
DEPTH: 15-16, !Lair, !Crypt
TAGS: special_room allow_dup
WEIGHT: 50
: fill_special_room("orc")
MAP
ENDMAP
NAME: special_room_bee_b
DEPTH: 15-16, !Crypt
TAGS: special_room allow_dup
WEIGHT: 25
: fill_special_room("killer bee")
MAP
ENDMAP
NAME: special_room_morgue_b
DEPTH: 15-16, !Lair
TAGS: special_room allow_dup
WEIGHT: 25
: fill_special_room("rat zombie")
MAP
ENDMAP
#################################
NAME: special_room_orc_c
DEPTH: 17, !Lair, !Crypt
TAGS: special_room allow_dup
WEIGHT: 40
: fill_special_room("orc")
MAP
ENDMAP
NAME: special_room_bee_c
DEPTH: 17, !Crypt
TAGS: special_room allow_dup
WEIGHT: 25
: fill_special_room("killer bee")
MAP
ENDMAP
NAME: special_room_morgue_c
DEPTH: 17, !Lair
TAGS: special_room allow_dup
WEIGHT: 27
: fill_special_room("rat zombie")
MAP
ENDMAP
NAME: special_room_jelly_c
DEPTH: 17, !Crypt
TAGS: special_room allow_dup
WEIGHT: 9
: fill_special_room("jelly")
MAP
ENDMAP
#################################
NAME: special_room_orc_d
DEPTH: 18-20, !Lair, !Crypt
TAGS: special_room allow_dup
WEIGHT: 25
: fill_special_room("orc")
MAP
ENDMAP
NAME: special_room_bee_d
DEPTH: 18-20, !Crypt
TAGS: special_room allow_dup
WEIGHT: 33
: fill_special_room("killer bee")
MAP
ENDMAP
NAME: special_room_morgue_d
DEPTH: 18-20, !Lair
TAGS: special_room allow_dup
WEIGHT: 29
: fill_special_room("rat zombie")
MAP
ENDMAP
NAME: special_room_jelly_d
DEPTH: 18-20, !Crypt
TAGS: special_room allow_dup
WEIGHT: 13
: fill_special_room("jelly")
MAP
ENDMAP
#################################
NAME: special_room_orc_e
DEPTH: 21-, !Lair, !Crypt
TAGS: special_room allow_dup
WEIGHT: 15
: fill_special_room("orc")
MAP
ENDMAP
NAME: special_room_bee_e
DEPTH: 21-, !Crypt
TAGS: special_room allow_dup
WEIGHT: 8
: fill_special_room("killer bee")
MAP
ENDMAP
NAME: special_room_morgue_e
DEPTH: 21-, !Lair
TAGS: special_room allow_dup
WEIGHT: 32
: fill_special_room("rat zombie")
NAME: special_room_jelly_e
DEPTH: 21-, !Crypt
TAGS: special_room allow_dup
WEIGHT: 45
: fill_special_room("jelly")
MAP
ENDMAP
#########################################################################
#########################################################################
# 0.4 crawl C code for randomly determining which special room type to
# use
# if (level_number < 7)
# spec_room_type = SROOM_LAIR_KOBOLD;
# else
# {
# spec_room_type = random2(NUM_SPECIAL_ROOMS);
#
# if (level_number < 23 && one_chance_in(4))
# spec_room_type = SROOM_BEEHIVE;
#
# // Replace overly dangerous special rooms with a room full of orcs.
# if (level_number > 13 && spec_room_type == SROOM_LAIR_KOBOLD
# || level_number < 16 && spec_room_type == SROOM_MORGUE
# || level_number < 14 && spec_room_type == SROOM_JELLY_PIT
# || level_number < 17 && one_chance_in(4))
# {
# spec_room_type = SROOM_LAIR_ORC;
# }
#
# if (level_number > 19 && coinflip())
# spec_room_type = SROOM_MORGUE;
#
# if (level_number > 13 &&
# one_chance_in(6 - (level_number > 23) - (level_number > 18)))
# {
# spec_room_type = SROOM_JELLY_PIT;
# }
# }
#
####################################
# 0.4 crawl percentages for each room type generated per level (for 10,000
# randomly generated vaults per level)
# | K | O | B | M | J |
#-----------------------------------------------
# 0| 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
# 1| 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
# 2| 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
# 3| 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
# 4| 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
# 5| 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
# 6|100.00 | 0.00 | 0.00 | 0.00 | 0.00 |
# 7| 11.39 | 59.25 | 29.36 | 0.00 | 0.00 |
# 8| 11.07 | 58.43 | 30.50 | 0.00 | 0.00 |
# 9| 11.23 | 57.98 | 30.79 | 0.00 | 0.00 |
#10| 11.46 | 58.39 | 30.15 | 0.00 | 0.00 |
#11| 11.30 | 58.78 | 29.92 | 0.00 | 0.00 |
#12| 11.21 | 58.65 | 30.14 | 0.00 | 0.00 |
#13| 10.92 | 58.96 | 30.12 | 0.00 | 0.00 |
#14| 0.00 | 49.58 | 24.99 | 25.43 | 0.00 |
#15| 0.00 | 49.74 | 24.56 | 25.70 | 0.00 |
#16| 0.00 | 39.51 | 24.77 | 27.04 | 8.68 |
#17| 0.00 | 24.23 | 33.07 | 29.57 | 13.13 |
#18| 0.00 | 25.31 | 32.99 | 29.06 | 12.64 |
#19| 0.00 | 24.52 | 32.53 | 31.09 | 11.86 |
#20| 0.00 | 11.63 | 15.84 | 25.52 | 47.01 |
#21| 0.00 | 12.06 | 17.33 | 25.60 | 45.01 |
#22| 0.00 | 12.12 | 15.97 | 25.50 | 46.41 |
#23| 0.00 | 14.94 | 8.64 | 27.63 | 48.79 |
#24| 0.00 | 15.20 | 7.29 | 32.14 | 45.37 |
#25| 0.00 | 14.82 | 7.88 | 33.04 | 44.26 |
#26| 0.00 | 14.99 | 7.91 | 31.94 | 45.16 |
#27| 0.00 | 14.96 | 7.28 | 32.06 | 45.70 |
#28| 0.00 | 15.12 | 7.88 | 32.11 | 44.89 |
#29| 0.00 | 15.48 | 7.40 | 33.17 | 43.95 |
#30| 0.00 | 15.08 | 7.84 | 31.97 | 45.11 |