-
Notifications
You must be signed in to change notification settings - Fork 11
/
roomdefs.h
196 lines (196 loc) · 53.7 KB
/
roomdefs.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
mr("WHOUS", "This is an open field west of a white house, with a boarded front door.", "West of House", { Ex(North, "NHOUS"), Ex(South, "SHOUS"), Ex(West, "FORE1"), Ex(East, NExit("The door is locked, and there is evidently no key.")) }, { "FDOOR", "MAILB", "MAT"}, nullptr, { rlandbit, rlightbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ housebit })) }),
mr("NHOUS", "You are facing the north side of a white house. There is no door here,\nand all the windows are barred.", "North of House", { Ex(West, "WHOUS"), Ex(East, "EHOUS"), Ex(North, "FORE3"), Ex(South, NExit("The windows are all barred.")) }, { }, nullptr, { rlandbit, rlightbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ dwindow, housebit })) }),
mr("SHOUS", "You are facing the south side of a white house. There is no door here,\nand all the windows are barred.", "South of House", { Ex(West, "WHOUS"), Ex(East, "EHOUS"), Ex(South, "FORE2"), Ex(North, NExit("The windows are all barred.")) }, { }, nullptr, { rlandbit, rlightbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ dwindow, housebit })) }),
mr("EHOUS", "", "Behind House", { Ex(North, "NHOUS"), Ex(South, "SHOUS"), Ex(East, "CLEAR"), Ex(West, kitchen_window_EHOUS), Ex(Enter, kitchen_window_EHOUS) }, { "WINDO"}, room_funcs::east_house, { rlandbit, rlightbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ housebit })) }),
mr("KITCH", "", "Kitchen", { Ex(East, kitchen_window_KITCH), Ex(West, "LROOM"), Ex(Exit, kitchen_window_KITCH), Ex(Up, "ATTIC"), Ex(Down, NExit("Only Santa Claus climbs down chimneys.")) }, { "WINDO", "SBAG", "BOTTL"}, room_funcs::kitchen, { rlandbit, rlightbit, rhousebit, rsacredbit } , { RP(ksl_rval, 10) }),
mr("ATTIC", "This is the attic. The only exit is stairs that lead down.", "Attic", { Ex(Down, "KITCH") }, { "BRICK", "ROPE", "KNIFE"}, nullptr, { rlandbit, rhousebit } ),
mr("LROOM", "", "Living Room", { Ex(East, "KITCH"), Ex(West, std::make_shared<CExit>(magic_flag, "BLROO", "The door is nailed shut.")), Ex(Down, std::make_shared<DoorExit>("DOOR", "LROOM", "CELLA")) }, { "WDOOR", "DOOR", "TCASE", "LAMP", "RUG", "PAPER", "SWORD"}, room_funcs::living_room, { rlandbit, rlightbit, rhousebit, rsacredbit } ),
mr("FORE1", stfore, forest, { Ex(Up, notree_FORE1), Ex(North, "FORE1"), Ex(East, "FORE3"), Ex(South, "FORE2"), Ex(West, "FORE1") }, { }, room_funcs::forest_room, { rlandbit, rlightbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ treebit, birdbit, housebit })) }),
mr("FORE2", fordes, forest, { Ex(Up, notree_FORE2), Ex(North, "SHOUS"), Ex(East, "CLEAR"), Ex(South, "FORE4"), Ex(West, "FORE1") }, { }, room_funcs::forest_room, { rlandbit, rlightbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ treebit, birdbit, housebit })) }),
mr("FORE3", fortree, forest, { Ex(Up, "TREE"), Ex(North, "FORE2"), Ex(East, "CLEAR"), Ex(South, "CLEAR"), Ex(West, "NHOUS") }, { "FTREE"}, room_funcs::forest_room, { rlandbit, rlightbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ birdbit, housebit })) }),
mr("TREE", "", "Up a Tree", { Ex(Down, "FORE3"), Ex(Up, NExit("You cannot climb any higher.")) }, { "NEST", "TTREE"}, room_funcs::tree_room, { rlandbit, rlightbit, rnwallbit } , { RP(ksl_rglobal, std::vector<Bits>({ birdbit, housebit })) }),
mr("FORE4", "This is a large forest, with trees obstructing all views except\nto the east, where a small clearing may be seen through the trees.", forest, { Ex(Up, notree_FORE4), Ex(East, "CLTOP"), Ex(North, "FORE5"), Ex(South, "FORE4"), Ex(West, "FORE2") }, { }, room_funcs::forest_room, { rlandbit, rlightbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ treebit, birdbit, housebit })) }),
mr("FORE5", stfore, forest, { Ex(Up, notree_FORE5), Ex(North, "FORE5"), Ex(Se, "CLTOP"), Ex(South, "FORE4"), Ex(West, "FORE2") }, { }, room_funcs::forest_room, { rlandbit, rlightbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ treebit, birdbit, housebit })) }),
mr("CLEAR", "", "Clearing", { Ex(Sw, "EHOUS"), Ex(Se, "FORE5"), Ex(North, "CLEAR"), Ex(East, "CLEAR"), Ex(West, "FORE3"), Ex(South, "FORE2"), Ex(Down, std::make_shared<DoorExit>("GRATE", "MGRAT", "CLEAR", "You can't go through the closed grating.")) }, { "GRATE", "LEAVE"}, room_funcs::clearing, { rlandbit, rlightbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ housebit })) }),
mr("CELLA", "", "Cellar", { Ex(East, "MTROL"), Ex(South, "CHAS2"), Ex(Up, std::make_shared<DoorExit>("DOOR", "LROOM", "CELLA")), Ex(West, NExit("You try to ascend the ramp, but it is impossible, and you slide back down.")) }, { "DOOR"}, room_funcs::cellar, { rlandbit} , { RP(ksl_rval, 25) }),
mr("MTROL", "This is a small room with passages off in all directions. \nBloodstains and deep scratches (perhaps made by an axe) mar the\nwalls.", "The Troll Room", { Ex(West, "CELLA"), Ex(East, std::make_shared<CExit>(troll_flag, "CRAW4", tchomp)), Ex(North, std::make_shared<CExit>(troll_flag, "PASS1", tchomp)), Ex(South, std::make_shared<CExit>(troll_flag, "MAZE1", tchomp)) }, { "TROLL"}),
mr("STUDI", "This is what appears to have been an artist's studio. The walls\nand floors are splattered with paints of 69 different colors. \nStrangely enough, nothing of value is hanging here. At the north and\nnorthwest of the room are open doors (also covered with paint). An\nextremely dark and narrow chimney leads up from a fireplace; although\nyou might be able to get up it, it seems unlikely you could get back\ndown.", "Studio", { Ex(North, "CRAW4"), Ex(Nw, "GALLE"), Ex(Up, std::make_shared<CExit>(light_load, "KITCH", "The chimney is too narrow for you and all of your baggage.", false, exit_funcs::chimney_function)) }, { }),
mr("GALLE", "This is an art gallery. Most of the paintings which were here\nhave been stolen by vandals with exceptional taste. The vandals\nleft through either the north, south, or west exits.", "Gallery", { Ex(North, "CHAS2"), Ex(South, "STUDI"), Ex(West, "BKENT") }, { "PAINT"}, nullptr, { rlandbit, rlightbit } ),
mr("MAZE1", mazedesc, smazedesc, { Ex(West, "MTROL"), Ex(North, "MAZE1"), Ex(South, "MAZE2"), Ex(East, "MAZE4") }, { }),
mr("MAZE2", mazedesc, smazedesc, { Ex(South, "MAZE1"), Ex(North, "MAZE4"), Ex(East, "MAZE3") }, { }),
mr("MAZE3", mazedesc, smazedesc, { Ex(West, "MAZE2"), Ex(North, "MAZE4"), Ex(Up, "MAZE5") }, { }),
mr("MAZE4", mazedesc, smazedesc, { Ex(West, "MAZE3"), Ex(North, "MAZE1"), Ex(East, "DEAD1") }, { }),
mr("DEAD1", deadend, sdeadend, { Ex(South, "MAZE4") }, { }),
mr("MAZE5", mazedesc, smazedesc, { Ex(East, "DEAD2"), Ex(North, "MAZE3"), Ex(Sw, "MAZE6") }, { "BONES", "BAGCO", "KEYS", "BLANT", "RKNIF"}),
mr("DEAD2", deadend, sdeadend, { Ex(West, "MAZE5") }, { }),
mr("MAZE6", mazedesc, smazedesc, { Ex(Down, "MAZE5"), Ex(East, "MAZE7"), Ex(West, "MAZE6"), Ex(Up, "MAZE9") }, { }),
mr("MAZE7", mazedesc, smazedesc, { Ex(Up, "MAZ14"), Ex(West, "MAZE6"), Ex(Ne, "DEAD1"), Ex(East, "MAZE8"), Ex(South, "MAZ15") }, { }),
mr("MAZE8", mazedesc, smazedesc, { Ex(Ne, "MAZE7"), Ex(West, "MAZE8"), Ex(Se, "DEAD3") }, { }),
mr("DEAD3", deadend, deadend, { Ex(North, "MAZE8") }, { }),
mr("MAZE9", mazedesc, smazedesc, { Ex(North, "MAZE6"), Ex(East, "MAZ11"), Ex(Down, "MAZ10"), Ex(South, "MAZ13"), Ex(West, "MAZ12"), Ex(Nw, "MAZE9") }, { }),
mr("MAZ10", mazedesc, smazedesc, { Ex(East, "MAZE9"), Ex(West, "MAZ13"), Ex(Up, "MAZ11") }, { }),
mr("MAZ11", mazedesc, smazedesc, { Ex(Ne, "MGRAT"), Ex(Down, "MAZ10"), Ex(Nw, "MAZ13"), Ex(Sw, "MAZ12") }, { }),
mr("MGRAT", "", "Grating Room", { Ex(Sw, "MAZ11"), Ex(Up, std::make_shared<DoorExit>("GRATE", "MGRAT", "CLEAR", "The grating is locked.")) }, { "GRATE"}, room_funcs::maze_11),
mr("MAZ12", mazedesc, smazedesc, { Ex(West, "MAZE5"), Ex(Sw, "MAZ11"), Ex(East, "MAZ13"), Ex(Up, "MAZE9"), Ex(North, "DEAD4") }, { }),
mr("DEAD4", deadend, deadend, { Ex(South, "MAZ12") }, { }),
mr("MAZ13", mazedesc, smazedesc, { Ex(East, "MAZE9"), Ex(Down, "MAZ12"), Ex(South, "MAZ10"), Ex(West, "MAZ11") }, { }),
mr("MAZ14", mazedesc, smazedesc, { Ex(West, "MAZ15"), Ex(Nw, "MAZ14"), Ex(Ne, "MAZE7"), Ex(South, "MAZE7") }, { }),
mr("MAZ15", mazedesc, smazedesc, { Ex(West, "MAZ14"), Ex(South, "MAZE7"), Ex(Ne, "CYCLO") }, { }),
mr("CYCLO", "", "Cyclops Room", { Ex(West, "MAZ15"), Ex(North, std::make_shared<CExit>(magic_flag, "BLROO", "The north wall is solid rock.")), Ex(Up, std::make_shared<CExit>(cyclops_flag, "TREAS", "The cyclops doesn't look like he'll let you past.")) }, { "CYCLO"}, room_funcs::cyclops_room),
mr("BLROO", "This is a long passage. To the south is one entrance. On the\neast there is an old wooden door, with a large hole in it (about\ncyclops sized).", "Strange Passage", { Ex(South, "CYCLO"), Ex(East, "LROOM") }, { }, room_funcs::time, { rlandbit} , { RP(ksl_rval, 10) }),
mr("TREAS", "This is a large room, whose north wall is solid granite. A number\nof discarded bags, which crumble at your touch, are scattered about\non the floor. There is an exit down and what appears to be a newly\ncreated passage to the east.", "Treasure Room", { Ex(Down, "CYCLO"), Ex(East, "CPANT") }, { "CHALI"}, room_funcs::treasure_room, { rlandbit} , { RP(ksl_rval, 25) }),
mr("RAVI1", "This is a deep ravine at a crossing with an east-west crawlway. \nSome stone steps are at the south of the ravine and a steep staircase\ndescends.", "Deep Ravine", { Ex(South, "PASS1"), Ex(Down, std::make_shared<CExit>(egypt_flag, "RESES", "The stairs are to steep for you with your burden.", true, exit_funcs::coffin_cure)), Ex(East, "CHAS1"), Ex(West, "CRAW1") }, { }),
mr("CRAW1", "This is a crawlway with a three-foot high ceiling. Your footing\nis very unsure here due to the assortment of rocks underfoot. \nPassages can be seen in the east, west, and northwest corners of the\npassage.", "Rocky Crawl", { Ex(West, "RAVI1"), Ex(East, "DOME"), Ex(Nw, std::make_shared<CExit>(egypt_flag, "EGYPT", "The passage is too narrow to accommodate coffins.", true, exit_funcs::coffin_cure)) }, { }),
mr("RESES", "", "Reservoir South", { Ex(South, std::make_shared<CExit>(egypt_flag, "RAVI1", "The coffin will not fit through this passage.", true, exit_funcs::coffin_cure)), Ex(West, "STREA"), Ex(Cross, std::make_shared<CExit>(low_tide, "RESER", "You are not equipped for swimming.")), Ex(North, std::make_shared<CExit>(low_tide, "RESER", "You are not equipped for swimming.")), Ex(Launc, "RESER"), Ex(Up, std::make_shared<CExit>(egypt_flag, "CANY1", "The stairs are too steep for carrying the coffin.", true, exit_funcs::coffin_cure)) }, { }, room_funcs::reservoir_south, { rlandbit} , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("RESER", "", "Reservoir", { Ex(North, "RESEN"), Ex(South, "RESES"), Ex(Up, "INSTR"), Ex(Down, NExit("The dam blocks your way.")), Ex(Land, NExit("You must specify direction.")) }, { "TRUNK"}, room_funcs::reservoir, { rwaterbit, rnwallbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("RESEN", "", "Reservoir North", { Ex(North, "ATLAN"), Ex(Launc, "RESER"), Ex(Cross, std::make_shared<CExit>(low_tide, "RESER", "You are not equipped for swimming.")), Ex(South, std::make_shared<CExit>(low_tide, "RESER", "You are not equipped for swimming.")) }, { "PUMP"}, room_funcs::reservoir_north, { rlandbit} , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("STREA", "You are standing on a path beside a gently flowing stream. The path\ntravels to the north and the east.", "Stream View", { Ex(Launc, "INSTR"), Ex(East, "RESES"), Ex(North, "ICY") }, { "FUSE"}, nullptr, { rlandbit} , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("INSTR", "You are on the gently flowing stream. The upstream route is too narrow\nto navigate and the downstream route is invisible due to twisting\nwalls. There is a narrow beach to land on.", "Stream", { Ex(Up, NExit("The way is too narrow.")), Ex(Land, "STREA"), Ex(Down, "RESER") }, { }, nullptr, { rwaterbit, rnwallbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("EGYPT", "This is a room which looks like an Egyptian tomb. There is an\nascending staircase in the room as well as doors, east and south.", "Egyptian Room", { Ex(Up, "ICY"), Ex(South, "LEDG3"), Ex(East, std::make_shared<CExit>(egypt_flag, "CRAW1", "The passage is too narrow to accommodate coffins.", true, exit_funcs::coffin_cure)) }, { "COFFI"}),
mr("ICY", "", "Glacier Room", { Ex(North, "STREA"), Ex(East, "EGYPT"), Ex(West, std::make_shared<CExit>(glacier_flag, "RUBYR", "")) }, { "ICE"}, room_funcs::glacier_room),
mr("RUBYR", "This is a small chamber behind the remains of the Great Glacier.\nTo the south and west are small passageways.", "Ruby Room", { Ex(West, "LAVA"), Ex(South, "ICY") }, { "RUBY"}),
mr("ATLAN", "This is an ancient room, long under water. There are exits here\nto the southeast and upward.", "Atlantis Room", { Ex(Se, "RESEN"), Ex(Up, "CAVE1") }, { "TRIDE"}),
mr("CANY1", "You are on the south edge of a deep canyon. Passages lead off\nto the east, south, and northwest. You can hear the sound of\nflowing water below.", "Deep Canyon", { Ex(Nw, std::make_shared<CExit>(egypt_flag, "RESES", "The passage is too steep for carrying the coffin.", true, exit_funcs::coffin_cure)), Ex(East, "DAM"), Ex(South, "CAROU") }, { }),
mr("ECHO", "This is a large room with a ceiling which cannot be detected from\nthe ground. There is a narrow passage from east to west and a stone\nstairway leading upward. The room is extremely noisy. In fact, it is\ndifficult to hear yourself think.", "Loud Room", { Ex(East, "CHAS3"), Ex(West, "PASS5"), Ex(Up, "CAVE3") }, { "BAR"}, room_funcs::echo_room),
mr("MIRR1", "", "Mirror Room", { Ex(West, "PASS3"), Ex(North, "CRAW2"), Ex(East, "CAVE1") }, { "REFL1"}, room_funcs::mirror_room),
mr("MIRR2", "", "Mirror Room", { Ex(West, "PASS4"), Ex(North, "CRAW3"), Ex(East, "CAVE2") }, { "REFL2"}, room_funcs::mirror_room, { rlandbit, rlightbit } ),
mr("CAVE1", "This is a small cave with an entrance to the north and a stairway\nleading down.", "Cave", { Ex(North, "MIRR1"), Ex(Down, "ATLAN") }, { }),
mr("CAVE2", "This is a tiny cave with entrances west and north, and a dark,\nforbidding staircase leading down.", "Cave", { Ex(North, "CRAW3"), Ex(West, "MIRR2"), Ex(Down, "LLD1") }, { }, room_funcs::cave2_room),
mr("CRAW2", "This is a steep and narrow crawlway. There are two exits nearby to\nthe south and southwest.", "Steep Crawlway", { Ex(South, "MIRR1"), Ex(Sw, "PASS3") }, { }),
mr("CRAW3", "This is a narrow crawlway. The crawlway leads from north to south.\nHowever the south passage divides to the south and southwest.", "Narrow Crawlway", { Ex(South, "CAVE2"), Ex(Sw, "MIRR2"), Ex(North, "MGRAI") }, { }),
mr("PASS3", "This is a cold and damp corridor where a long east-west passageway\nintersects with a northward path.", "Cold Passage", { Ex(East, "MIRR1"), Ex(West, "SLIDE"), Ex(North, "CRAW2") }, { }),
mr("PASS4", "This is a winding passage. It seems that there is only an exit\non the east end although the whirring from the round room can be\nheard faintly to the north.", "Winding Passage", { Ex(East, "MIRR2"), Ex(North, NExit("You hear the whir from the round room but can find no entrance.")) }, { }),
mr("ENTRA", "You are standing at the entrance of what might have been a coal\nmine. To the northeast and the northwest are entrances to the mine,\nand there is another exit on the south end of the room.", "Mine Entrance", { Ex(South, "SLIDE"), Ex(Nw, "SQUEE"), Ex(Ne, "TSHAF") }, { }),
mr("SQUEE", "You are a small room. Strange squeaky sounds may be heard coming from\nthe passage at the west end. You may also escape to the south.", "Squeaky Room", { Ex(West, "BATS"), Ex(South, "ENTRA") }, { }),
mr("TSHAF", "This is a large room, in the middle of which is a small shaft\ndescending through the floor into darkness below. To the west and\nthe north are exits from this room. Constructed over the top of the\nshaft is a metal framework to which a heavy iron chain is attached.", "Shaft Room", { Ex(Down, NExit("You wouldn't fit and would die if you could.")), Ex(West, "ENTRA"), Ex(North, "TUNNE") }, { "TBASK"}),
mr("TUNNE", "This is a narrow tunnel with large wooden beams running across\nthe ceiling and around the walls. A path from the south splits into\npaths running west and northeast.", "Wooden Tunnel", { Ex(South, "TSHAF"), Ex(West, "SMELL"), Ex(Ne, "MINE1") }, { }),
mr("SMELL", "This is a small non-descript room. However, from the direction\nof a small descending staircase a foul odor can be detected. To the\neast is a narrow path.", "Smelly Room", { Ex(Down, "BOOM"), Ex(East, "TUNNE") }, { }),
mr("BOOM", "This is a small room which smells strongly of coal gas.", "Gas Room", { Ex(Up, "SMELL") }, { "BRACE"}, room_funcs::boom_room, { rlandbit, rsacredbit } ),
mr("TLADD", "This is a very small room. In the corner is a rickety wooden\nladder, leading downward. It might be safe to descend. There is\nalso a staircase leading upward.", "Ladder Top", { Ex(Down, "BLADD"), Ex(Up, "MINE7") }, { }),
mr("BLADD", "This is a rather wide room. On one side is the bottom of a\nnarrow wooden ladder. To the northeast and the south are passages\nleaving the room.", "Ladder Bottom", { Ex(Ne, "DEAD7"), Ex(South, "TIMBE"), Ex(Up, "TLADD") }, { }),
mr("DEAD7", deadend, deadend, { Ex(South, "BLADD") }, { "COAL"}),
mr("TIMBE", "This is a long and narrow passage, which is cluttered with broken\ntimbers. A wide passage comes from the north and turns at the \nsouthwest corner of the room into a very narrow passageway.", "Timber Room", { Ex(North, "BLADD"), Ex(Sw, std::make_shared<SetgExit>("dark_room", std::make_shared<CExit>(empty_handed, "BSHAF", nofit))) }, { "OTIMB"}, room_funcs::no_objs, { rlandbit, rsacredbit } ),
mr("BSHAF", "This is a small square room which is at the bottom of a long\nshaft. To the east is a passageway and to the northeast a very narrow\npassage. In the shaft can be seen a heavy iron chain.", "Lower Shaft", { Ex(East, "MACHI"), Ex(Out, std::make_shared<CExit>(empty_handed, "TIMBE", nofit)), Ex(Ne, std::make_shared<CExit>(empty_handed, "TIMBE", nofit)), Ex(Up, NExit("The chain is not climbable.")) }, { "FBASK"}, room_funcs::no_objs, { rlandbit, rsacredbit } ),
mr("MACHI", "", "Machine Room", { Ex(Nw, "BSHAF") }, { "MSWIT", "MACHI"}, room_funcs::machine_room),
mr("BATS", "", "Bat Room", { Ex(East, "SQUEE") }, { "JADE", "BAT"}, room_funcs::bats_room, { rlandbit, rsacredbit } ),
mr("MINE1", mindesc, smindesc, { Ex(North, "MINE4"), Ex(Sw, "MINE2"), Ex(East, "TUNNE") }, { }),
mr("MINE2", mindesc, smindesc, { Ex(South, "MINE1"), Ex(West, "MINE5"), Ex(Up, "MINE3"), Ex(Ne, "MINE4") }, { }),
mr("MINE3", mindesc, smindesc, { Ex(West, "MINE2"), Ex(Ne, "MINE5"), Ex(East, "MINE5") }, { }),
mr("MINE4", mindesc, smindesc, { Ex(Up, "MINE5"), Ex(Ne, "MINE6"), Ex(South, "MINE1"), Ex(West, "MINE2") }, { }),
mr("MINE5", mindesc, smindesc, { Ex(Down, "MINE6"), Ex(North, "MINE7"), Ex(West, "MINE2"), Ex(South, "MINE3"), Ex(Up, "MINE3"), Ex(East, "MINE4") }, { }),
mr("MINE6", mindesc, smindesc, { Ex(Se, "MINE4"), Ex(Up, "MINE5"), Ex(Nw, "MINE7") }, { }),
mr("MINE7", mindesc, smindesc, { Ex(East, "MINE1"), Ex(West, "MINE5"), Ex(Down, "TLADD"), Ex(South, "MINE6") }, { }),
mr("DOME", "", "Dome Room", { Ex(East, "CRAW1"), Ex(Down, std::make_shared<CExit>(dome_flag, "MTORC", "You cannot go down without fracturing many bones.")) }, { "RAILI"}, room_funcs::dome_room),
mr("MTORC", "", "Torch Room", { Ex(Up, NExit("You cannot reach the rope.")), Ex(West, "PRM"), Ex(Down, "CRAW4") }, { "TORCH"}, room_funcs::torch_room),
mr("CRAW4", "This is a north-south crawlway; a passage goes to the east also.\nThere is a hole above, but it provides no opportunities for climbing.", "North-South Crawlway", { Ex(North, "CHAS2"), Ex(South, "STUDI"), Ex(East, "MTROL"), Ex(Up, NExit("Not even a human fly could get up it.")) }, { }),
mr("CHAS2", "You are on the west edge of a chasm, the bottom of which cannot be\nseen. The east side is sheer rock, providing no exits. A narrow\npassage goes west, and the path you are on continues to the north and\nsouth.", "West of Chasm", { Ex(West, "CELLA"), Ex(North, "CRAW4"), Ex(South, "GALLE"), Ex(Down, NExit("The chasm probably leads straight to the infernal regions.")) }, { }),
mr("PASS1", "This is a narrow east-west passageway. There is a narrow stairway\nleading down at the north end of the room.", "East-West Passage", { Ex(East, "CAROU"), Ex(West, "MTROL"), Ex(Down, "RAVI1"), Ex(North, "RAVI1") }, { }, nullptr, { rlandbit} , { RP(ksl_rval, 5) }),
mr("CAROU", "", "Round room", { Ex(North, std::make_shared<CExit>(carousel_flip, "CAVE4", "", false, exit_funcs::carousel_exit)), Ex(South, std::make_shared<CExit>(carousel_flip, "CAVE4", "", false, exit_funcs::carousel_exit)), Ex(East, std::make_shared<CExit>(carousel_flip, "MGRAI", "", false, exit_funcs::carousel_exit)), Ex(West, std::make_shared<CExit>(carousel_flip, "PASS1", "", false, exit_funcs::carousel_exit)), Ex(Nw, std::make_shared<CExit>(carousel_flip, "CANY1", "", false, exit_funcs::carousel_exit)), Ex(Ne, std::make_shared<CExit>(carousel_flip, "PASS5", "", false, exit_funcs::carousel_exit)), Ex(Se, std::make_shared<CExit>(carousel_flip, "PASS4", "", false, exit_funcs::carousel_exit)), Ex(Sw, std::make_shared<CExit>(carousel_flip, "MAZE1", "", false, exit_funcs::carousel_exit)), Ex(Exit, std::make_shared<CExit>(carousel_flip, "PASS3", "", false, exit_funcs::carousel_out)) }, { "IRBOX"}, room_funcs::carousel_room),
mr("PASS5", "This is a high north-south passage, which forks to the northeast.", "North-South Passage", { Ex(North, "CHAS1"), Ex(Ne, "ECHO"), Ex(South, "CAROU") }, { }),
mr("CHAS1", "A chasm runs southwest to northeast. You are on the south edge; the\npath exits to the south and to the east.", "Chasm", { Ex(South, "RAVI1"), Ex(East, "PASS5"), Ex(Down, NExit("Are you out of your mind?")) }, { }),
mr("CAVE3", "This is a cave. Passages exit to the south and to the east, but\nthe cave narrows to a crack to the west. The earth is particularly\ndamp here.", "Damp Cave", { Ex(South, "ECHO"), Ex(East, "DAM"), Ex(West, NExit("It is too narrow for most insects.")) }, { }),
mr("CHAS3", "A chasm, evidently produced by an ancient river, runs through the\ncave here. Passages lead off in all directions.", "Ancient Chasm", { Ex(South, "ECHO"), Ex(East, "TCAVE"), Ex(North, "DEAD5"), Ex(West, "DEAD6") }, { }),
mr("DEAD5", deadend, deadend, { Ex(Sw, "CHAS3") }, { }),
mr("DEAD6", deadend, deadend, { Ex(East, "CHAS3") }, { }),
mr("CAVE4", "You have entered a cave with passages leading north and southeast.", "Engravings Cave", { Ex(North, "CAROU"), Ex(Se, "RIDDL") }, { "ENGRA"}),
mr("RIDDL", "This is a room which is bare on all sides. There is an exit down. \nTo the east is a great door made of stone. Above the stone, the\nfollowing words are written: 'No man shall enter this room without\nsolving this riddle:\n\n What is tall as a house,\n round as a cup, \n and all the king's horses can't draw it up?'\n\n(Reply via 'ANSWER \"answer\"')", "Riddle Room", { Ex(Down, "CAVE4"), Ex(East, std::make_shared<CExit>(riddle_flag, "MPEAR", "Your way is blocked by an invisible force.")) }, { "SDOOR"}),
mr("MPEAR", "This is a former broom closet. The exits are to the east and west.", "Pearl Room", { Ex(East, "BWELL"), Ex(West, "RIDDL") }, { "PEARL"}),
mr("LLD1", "", "Entrance to Hades", { Ex(East, std::make_shared<CExit>(lld_flag, "LLD2", "Some invisible force prevents you from passing through the gate.")), Ex(Up, "CAVE2"), Ex(Enter, std::make_shared<CExit>(lld_flag, "LLD2", "Some invisible force prevents you from passing through the gate.")) }, { "CORPS", "GATES", "GHOST"}, room_funcs::lld_room, { rlandbit, rlightbit } ),
mr("LLD2", "", "Land of the Living Dead", { Ex(East, "TOMB"), Ex(Exit, "LLD1"), Ex(West, "LLD1") }, { "BODIE"}, room_funcs::lld2_room, { rlandbit, rlightbit } , { RP(ksl_rval, 30) }),
mr("MGRAI", "You are standing in a small circular room with a pedestal. A set of\nstairs leads up, and passages leave to the east and west.", "Grail Room", { Ex(West, "CAROU"), Ex(East, "CRAW3"), Ex(Up, "TEMP1") }, { "GRAIL"}),
mr("TEMP1", "This is the west end of a large temple. On the south wall is an \nancient inscription, probably a prayer in a long-forgotten language. \nThe north wall is solid granite. The entrance at the west end of the\nroom is through huge marble pillars.", "Temple", { Ex(West, "MGRAI"), Ex(East, "TEMP2") }, { "PRAYE", "BELL"}, nullptr, { rlandbit, rlightbit, rsacredbit } ),
mr("TEMP2", "This is the east end of a large temple. In front of you is what\nappears to be an altar.", "Altar", { Ex(West, "TEMP1") }, { "BOOK", "CANDL"}, nullptr, { rlandbit, rlightbit, rsacredbit } ),
mr("DAM", "", "Dam", { Ex(South, "CANY1"), Ex(Down, "DOCK"), Ex(East, "CAVE3"), Ex(North, "LOBBY") }, { "BOLT", "DAM", "BUBBL", "CPANL"}, room_funcs::dam_room, { rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("LOBBY", "This room appears to have been the waiting room for groups touring\nthe dam. There are exits here to the north and east marked\n'Private', though the doors are open, and an exit to the south.", "Dam Lobby", { Ex(South, "DAM"), Ex(North, "MAINT"), Ex(East, "MAINT") }, { "MATCH", "GUIDE"}, nullptr, { rlandbit, rlightbit } ),
mr("MAINT", "This is what appears to have been the maintenance room for Flood\nControl Dam #3, judging by the assortment of tool chests around the\nroom. Apparently, this room has been ransacked recently, for most of\nthe valuable equipment is gone. On the wall in front of you is a\ngroup of buttons, which are labelled in EBCDIC. However, they are of\ndifferent colors: Blue, Yellow, Brown, and Red. The doors to this\nroom are in the west and south ends.", "Maintenance Room", { Ex(South, "LOBBY"), Ex(West, "LOBBY") }, { "LEAK", "TUBE", "WRENC", "BLBUT", "RBUTT", "BRBUT", "YBUTT", "SCREW", "TCHST"}, room_funcs::maint_room, { rlandbit} ),
mr("DOCK", "You are at the base of Flood Control Dam #3, which looms above you\nand to the north. The river Frigid is flowing by here. Across the\nriver are the White Cliffs which seem to form a giant wall stretching\nfrom north to south along the east shore of the river as it winds its\nway downstream.", "Dam Base", { Ex(North, "DAM"), Ex(Up, "DAM"), Ex(Launc, "RIVR1") }, { "IBOAT", "STICK"}, nullptr, { rlandbit, rlightbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("RIVR1", "You are on the River Frigid in the vicinity of the Dam. The river\nflows quietly here. There is a landing on the west shore.", riverdesc, { Ex(Up, current_RIVR1), Ex(West, "DOCK"), Ex(Land, "DOCK"), Ex(Down, "RIVR2"), Ex(East, cliffs_RIVR1) }, { }, nullptr, { rwaterbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("RIVR2", "The River turns a corner here making it impossible to see the\nDam. The White Cliffs loom on the east bank and large rocks prevent\nlanding on the west.", riverdesc, { Ex(Up, current_RIVR2), Ex(Down, "RIVR3"), Ex(East, cliffs_RIVR2) }, { }, nullptr, { rwaterbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("RIVR3", "The river descends here into a valley. There is a narrow beach on\nthe east below the cliffs and there is some shore on the west which\nmay be suitable. In the distance a faint rumbling can be heard.", riverdesc, { Ex(Up, current_RIVR3), Ex(Down, "RIVR4"), Ex(East, "WCLF1"), Ex(West, "RCAVE"), Ex(Land, NExit("You must specify which direction here.")) }, { }, nullptr, { rwaterbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("WCLF1", "You are on a narrow strip of beach which runs along the base of the\nWhite Cliffs. The only path here is a narrow one, heading south\nalong the Cliffs.", "White Cliffs Beach", { Ex(South, std::make_shared<CExit>(deflate, "WCLF2", narrow)), Ex(Launc, "RIVR3") }, { "WCLIF"}, room_funcs::cliff_function, { rlandbit, rsacredbit, rnwallbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("WCLF2", "You are on a rocky, narrow strip of beach beside the Cliffs. A\nnarrow path leads north along the shore.", "White Cliffs Beach", { Ex(North, std::make_shared<CExit>(deflate, "WCLF1", narrow)), Ex(Launc, "RIVR4") }, { "WCLIF"}, room_funcs::cliff_function, { rnwallbit, rlandbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("RIVR4", "The river is running faster here and the sound ahead appears to be\nthat of rushing water. On the west shore is a sandy beach. A small\narea of beach can also be seen below the Cliffs.", riverdesc, { Ex(Up, current_RIVR4), Ex(Down, "RIVR5"), Ex(East, "WCLF2"), Ex(West, "BEACH"), Ex(Land, NExit("Specify the direction to land.")) }, { "BUOY"}, room_funcs::rivr4_room, { rwaterbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("RIVR5", "The sound of rushing water is nearly unbearable here. On the west\nshore is a large landing area.", riverdesc, { Ex(Up, current_RIVR5), Ex(Down, "FCHMP"), Ex(Land, "FANTE") }, { }, nullptr, { rwaterbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("FCHMP", "", "Moby lossage", { Ex(North, NExit("")) }, { }, room_funcs::over_falls),
mr("FANTE", "You are on the shore of the River. The river here seems somewhat\ntreacherous. A path travels from north to south here, the south end\nquickly turning around a sharp corner.", "Shore", { Ex(Launc, "RIVR5"), Ex(North, "BEACH"), Ex(South, "FALLS") }, { }, nullptr, { rnwallbit, rlandbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("BEACH", "You are on a large sandy beach at the shore of the river, which is\nflowing quickly by. A path runs beside the river to the south here.", "Sandy Beach", { Ex(Launc, "RIVR4"), Ex(South, "FANTE") }, { "STATU", "SAND"}, nullptr, { rnwallbit, rlandbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("RCAVE", "You are on the west shore of the river. An entrance to a cave is\nto the northwest. The shore is very rocky here.", "Rocky Shore", { Ex(Launc, "RIVR3"), Ex(Nw, "TCAVE") }, { }, nullptr, { rnwallbit, rlandbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("TCAVE", "This is a small cave whose exits are on the south and northwest.", "Small Cave", { Ex(South, "RCAVE"), Ex(Nw, "CHAS3") }, { "GUANO", "SHOVE"}),
mr("FALLS", "", "Aragain Falls", { Ex(East, std::make_shared<CExit>(rainbow, "RAINB", "")), Ex(Down, NExit("It's a long way...")), Ex(North, "FANTE"), Ex(Up, std::make_shared<CExit>(rainbow, "RAINB", "")) }, { "RAINB", "BARRE"}, room_funcs::falls_room, { rnwallbit, rlandbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("RAINB", "You are on top of a rainbow (I bet you never thought you would walk\non a rainbow), with a magnificent view of the Falls. The rainbow\ntravels east-west here. There is an NBC Commissary here.", "Rainbow Room", { Ex(East, "POG"), Ex(West, "FALLS") }, { }, nullptr, { rlandbit, rlightbit, rnwallbit, rsacredbit } ),
mr("POG", "You are on a small, rocky beach on the continuation of the Frigid\nRiver past the Falls. The beach is narrow due to the presence of the\nWhite Cliffs. The river canyon opens here and sunlight shines in\nfrom above. A rainbow crosses over the falls to the west and a narrow\npath continues to the southeast.", "End of Rainbow", { Ex(Up, crain_POG), Ex(Nw, crain_POG), Ex(West, crain_POG), Ex(Se, "CLBOT"), Ex(Launc, NExit("The sharp rocks endanger your boat.")) }, { "RAINB", "POT"}, nullptr, { rlandbit, rlightbit, rnwallbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("CLBOT", "You are beneath the walls of the river canyon which may be climbable\nhere. There is a small stream here, which is the lesser part of the\nrunoff of Aragain Falls. To the north is a narrow path.", "Canyon Bottom", { Ex(Up, "CLMID"), Ex(North, "POG") }, { "CCLIF"}, nullptr, { rlandbit, rlightbit, rnwallbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ rgwater })) }),
mr("CLMID", "You are on a ledge about halfway up the wall of the river canyon.\nYou can see from here that the main flow from Aragain Falls twists\nalong a passage which it is impossible to enter. Below you is the\ncanyon bottom. Above you is more cliff, which still appears\nclimbable.", "Rocky Ledge", { Ex(Up, "CLTOP"), Ex(Down, "CLBOT") }, { "CCLIF"}, nullptr, { rlandbit, rlightbit, rnwallbit, rsacredbit } ),
mr("CLTOP", "You are at the top of the Great Canyon on its south wall. From here\nthere is a marvelous view of the Canyon and parts of the Frigid River\nupstream. Across the canyon, the walls of the White Cliffs still\nappear to loom far above. Following the Canyon upstream (north and\nnorthwest), Aragain Falls may be seen, complete with rainbow. \nFortunately, my vision is better than average and I can discern the\ntop of the Flood Control Dam #3 far to the distant north. To the\nwest and south can be seen an immense forest, stretching for miles\naround. It is possible to climb down into the canyon from here.", "Canyon View", { Ex(Down, "CLMID"), Ex(South, "FORE4"), Ex(West, "FORE5") }, { "CCLIF"}, nullptr, { rlandbit, rlightbit, rnwallbit, rsacredbit } ),
mr("VLBOT", "You are at the bottom of a large dormant volcano. High above you\nlight may be seen entering from the cone of the volcano. The only\nexit here is to the north.", "Volcano Bottom", { Ex(North, "LAVA") }, { "BALLO"}),
mr("VAIR1", "You are about one hundred feet above the bottom of the volcano. The\ntop of the volcano is clearly visible here.", "Volcano Core", { }, { }, nullptr, { rairbit, rnwallbit, rsacredbit } ),
mr("VAIR2", "You are about two hundred feet above the volcano floor. Looming\nabove is the rim of the volcano. There is a small ledge on the west\nside.", "Volcano near small ledge", { Ex(West, "LEDG2"), Ex(Land, "LEDG2") }, { }, nullptr, { rairbit, rnwallbit, rsacredbit } ),
mr("VAIR3", "You are high above the floor of the volcano. From here the rim of\nthe volcano looks very narrow and you are very near it. To the \neast is what appears to be a viewing ledge, too thin to land on.", "Volcano near viewing ledge", { }, { }, nullptr, { rairbit, rnwallbit, rsacredbit } ),
mr("VAIR4", "You are near the rim of the volcano which is only about 15 feet\nacross. To the west, there is a place to land on a wide ledge.", "Volcano near wide ledge", { Ex(Land, "LEDG4"), Ex(East, "LEDG4") }, { }, nullptr, { rairbit, rnwallbit, rsacredbit } ),
mr("LEDG2", "You are on a narrow ledge overlooking the inside of an old dormant\nvolcano. This ledge appears to be about in the middle between the\nfloor below and the rim above. There is an exit here to the south.", "Narrow Ledge", { Ex(Down, NExit("I wouldn't jump from here.")), Ex(Launc, "VAIR2"), Ex(West, cxgnome_LEDG2), Ex(South, "LIBRA") }, { "HOOK1", "COIN"}),
mr("LIBRA", "This is a room which must have been a large library, probably\nfor the royal family. All of the shelves appear to have been gnawed\nto pieces by unfriendly gnomes. To the north is an exit.", "Library", { Ex(North, "LEDG2"), Ex(Out, "LEDG2") }, { "BLBK", "GRBK", "PUBK", "WHBK"}),
mr("LEDG3", "You are on a ledge in the middle of a large volcano. Below you\nthe volcano bottom can be seen and above is the rim of the volcano.\nA couple of ledges can be seen on the other side of the volcano;\nit appears that this ledge is intermediate in elevation between\nthose on the other side. The exit from this room is to the east.", "Volcano View", { Ex(Down, NExit("I wouldn't try that.")), Ex(Cross, NExit("It is impossible to cross this distance.")), Ex(East, "EGYPT") }, { }),
mr("LEDG4", "", "Wide Ledge", { Ex(Down, NExit("It's a long way down.")), Ex(Launc, "VAIR4"), Ex(West, cxgnome_LEDG4), Ex(South, "SAFE") }, { "HOOK2"}, room_funcs::ledge_function),
mr("SAFE", "", "Dusty Room", { Ex(North, "LEDG4") }, { "SSLOT", "SAFE"}, room_funcs::safe_room, { rlandbit, rlightbit } ),
mr("LAVA", "This is a small room, whose walls are formed by an old lava flow.\nThere are exits here to the west and the south.", "Lava Room", { Ex(South, "VLBOT"), Ex(West, "RUBYR") }, { }),
mr("MAGNE", "", "Low Room", { Ex(North, magcmach_MAGNE), Ex(South, magcmach_MAGNE), Ex(West, magcmach_MAGNE), Ex(Ne, magcmach_MAGNE), Ex(Nw, magalice_MAGNE), Ex(Sw, magalice_MAGNE), Ex(Se, magalice_MAGNE), Ex(East, magcmach_MAGNE), Ex(Out, magalice_MAGNE) }, { "RBTLB", "ROBOT"}, room_funcs::magnet_room),
mr("CMACH", "", "Machine Room", { Ex(West, "MAGNE"), Ex(South, "CAGER") }, { "SQBUT", "RNBUT", "TRBUT"}, room_funcs::cmach_room),
mr("CAGER", "This is a dingy closet adjacent to the machine room. On one wall\nis a small sticker which says\n Protected by\n FROBOZZ\n Magic Alarm Company\n (Hello, footpad!)\n", "Dingy Closet", { Ex(North, "CMACH") }, { "SPHER"}, nullptr, { rlightbit, rlandbit } ),
mr("CAGED", "You are trapped inside a steel cage.", "Cage", { Ex(North, NExit("")) }, { "CAGE"}, room_funcs::caged_room, { rlandbit, rnwallbit } ),
mr("TWELL", "You are at the top of the well. Well done. There are etchings on\nthe side of the well. There is a small crack across the floor at the\nentrance to a room on the east, but it can be crossed easily.", "Top of Well", { Ex(East, "ALICE"), Ex(Down, NExit("It's a long way down!")) }, { "ETCH2"}, nullptr, { rlandbit, rbuckbit } , { RP(ksl_rval, 10), RP(ksl_rglobal, std::vector<Bits>({ wellbit })) }),
mr("BWELL", "This is a damp circular room, whose walls are made of brick and\nmortar. The roof of this room is not visible, but there appear to be\nsome etchings on the walls. There is a passageway to the west.", "Circular Room", { Ex(West, "MPEAR"), Ex(Up, NExit("The walls cannot be climbed.")) }, { "BUCKE", "ETCH1"}, nullptr, { rlandbit, rbuckbit } , { RP(ksl_rglobal, std::vector<Bits>({ wellbit })) }),
mr("ALICE", "This is a small square room, in the center of which is a large\noblong table, no doubt set for afternoon tea. It is clear from the\nobjects on the table that the users were indeed mad. In the eastern\ncorner of the room is a small hole (no more than four inches high). \nThere are passageways leading away to the west and the northwest.", "Tea Room", { Ex(East, NExit("Only a mouse could get in there.")), Ex(West, "TWELL"), Ex(Nw, "MAGNE") }, { "ATABL", "ECAKE", "ORICE", "RDICE", "BLICE"}),
mr("ALISM", "This is an enormous room, in the center of which are four wooden\nposts delineating a rectangular area, above which is what appears to\nbe a wooden roof. In fact, all objects in this room appear to be\nabnormally large. To the east is a passageway. There is a large\nchasm on the west and the northwest.", "Posts Room", { Ex(Nw, smdrop_ALISM), Ex(East, "ALITR"), Ex(West, smdrop_ALISM), Ex(Down, smdrop_ALISM) }, { "POSTS"}),
mr("ALITR", "This is a large room, one half of which is depressed. There is a\nlarge leak in the ceiling through which brown colored goop is\nfalling. The only exit to this room is to the west.", "Pool Room", { Ex(Exit, "ALISM"), Ex(West, "ALISM") }, { "FLASK", "POOL", "PLEAK", "SAFFR"}),
mr("BKENT", "This is the large entrance hall of the Bank of Zork, the largest\nbanking institution of the Great Underground Empire. A partial\naccount of its history is in 'The Lives of the Twelve Flatheads' with\nthe chapter on J. Pierpont Flathead. A more detailed history (albeit\nless objective) may be found in Flathead's outrageous autobiography\n'I'm Rich and You Aren't - So There!'.\nMost of the furniture has been ravaged by passing scavengers. All\nthat remains are two signs at the Northwest and Northeast corners of\nthe room, which say\n \n <-- WEST VIEWING ROOM EAST VIEWING ROOM --> \n", "Bank Entrance", { Ex(Nw, "BKTW"), Ex(Ne, "BKTE"), Ex(South, "GALLE") }, { }),
mr("BKTW", "", "West Teller's Room", { Ex(North, "BKVW"), Ex(South, "BKENT"), Ex(West, "BKBOX") }, { }, room_funcs::teller_room),
mr("BKTE", "", "East Teller's Room", { Ex(North, "BKVE"), Ex(South, "BKENT"), Ex(East, "BKBOX") }, { }, room_funcs::teller_room),
mr("BKVW", view_room, "Viewing Room", { Ex(South, "BKENT") }, { }, nullptr, { rlandbit} , { RP(ksl_rglobal, std::vector<Bits>({ wall_eswbit, wall_nbit })) }),
mr("BKVE", view_room, "Viewing Room", { Ex(South, "BKENT") }, { }, nullptr, { rlandbit} , { RP(ksl_rglobal, std::vector<Bits>({ wall_eswbit, wall_nbit })) }),
mr("BKTWI", "This is a small, bare room with no distinguishing features. There\nare no exits from this room.", "Small Room", { }, { }, nullptr, { rlandbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ wall_eswbit, wall_nbit })) }),
mr("BKVAU", "This is the Vault of the Bank of Zork, in which there are no doors.", "Vault", { }, { "BILLS"}, nullptr, { rsacredbit, rlandbit } , { RP(ksl_rglobal, std::vector<Bits>({ wall_eswbit, wall_nbit })) }),
mr("BKBOX", "This is a large rectangular room. The east and west walls here\nwere used for storing safety deposit boxes. As might be expected,\nall have been carefully removed by evil persons. To the east, west,\nand south of the room are large doorways. The northern 'wall'\nof the room is a shimmering curtain of light. In the center of the\nroom is a large stone cube, about 10 feet on a side. Engraved on \nthe side of the cube is some lettering.", "Safety Depository", { Ex(North, NExit("There is a curtain of light there.")), Ex(West, std::make_shared<CExit>(frobozz, "BKTW", bkalarm, false, exit_funcs::bkleavew)), Ex(East, std::make_shared<CExit>(frobozz, "BKTE", bkalarm, false, exit_funcs::bkleavee)), Ex(South, "BKEXE") }, { "VAULT", "SCOL"}, room_funcs::bkbox_room, { rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ wall_nbit })) }),
mr("BKEXE", "This room was the office of the Chairman of the Bank of Zork.\nLike the other rooms here, it has been extensively vandalized.\nThe lone exit is to the north.", "Chairman's Office", { Ex(North, "BKBOX") }, { "PORTR"}),
mr("CPANT", "This is a small square room, in the middle of which is a recently \ncreated hole through which you can barely discern the floor some ten\nfeet below. It doesn't seem likely you could climb back up. There\nare exits to the west and south.", "Small Square Room", { Ex(South, "CPOUT"), Ex(West, "TREAS"), Ex(Down, std::make_shared<CExit>(frobozz, "FCHMP", "", false, exit_funcs::cpenter)) }, { "WARNI"}, nullptr, { rlandbit, rlightbit } ),
mr("CPOUT", "", "Side Room", { Ex(North, "CPANT"), Ex(East, std::make_shared<CExit>(cpout, "CP", "The steel door bars the way.")) }, { "CPDR2"}, room_funcs::cpout_room),
mr("CP", "", "Room in a Puzzle", { Ex(North, std::make_shared<CExit>(frobozz, "FCHMP", "", false, exit_funcs::cpexit)), Ex(South, std::make_shared<CExit>(frobozz, "FCHMP", "", false, exit_funcs::cpexit)), Ex(East, std::make_shared<CExit>(frobozz, "FCHMP", "", false, exit_funcs::cpexit)), Ex(West, std::make_shared<CExit>(frobozz, "FCHMP", "", false, exit_funcs::cpexit)), Ex(Ne, std::make_shared<CExit>(frobozz, "FCHMP", "", false, exit_funcs::cpexit)), Ex(Nw, std::make_shared<CExit>(frobozz, "FCHMP", "", false, exit_funcs::cpexit)), Ex(Se, std::make_shared<CExit>(frobozz, "FCHMP", "", false, exit_funcs::cpexit)), Ex(Up, std::make_shared<CExit>(frobozz, "FCHMP", "", false, exit_funcs::cpexit)), Ex(Sw, std::make_shared<CExit>(frobozz, "FCHMP", "", false, exit_funcs::cpexit)) }, { }, room_funcs::cp_room, { rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ cpladder, cpwall })) }),
mr("PALAN", "", "Dreary Room", { Ex(South, palandoor_PALAN), Ex(Exit, palandoor_PALAN), Ex(NullExit, palanwind_PALAN) }, { "PDOOR", "PWIND", "PLID2", "PKH2", "PALAN", "PTABL", "PCRAK"}, room_funcs::palantir_room, { rlandbit, rlightbit, rsacredbit } ),
mr("PRM", "", "Tiny Room", { Ex(North, palandoor_PRM), Ex(Enter, palandoor_PRM), Ex(NullExit, palanwind_PRM), Ex(East, "MTORC") }, { "PDOOR", "PWIND", "PLID1", "PKH1"}, room_funcs::prm_room),
mr("SLIDE", "", "Slide Room", { Ex(East, "PASS3"), Ex(North, "ENTRA"), Ex(Down, std::make_shared<CExit>(frobozz, "CAVE4", "", false, exit_funcs::slide_exit)) }, { }, room_funcs::slide_room, { rlandbit} , { RP(ksl_rglobal, std::vector<Bits>({ slidebit })) }),
mr("SLID1", "This is an uncomfortable spot within the coal chute. The rope to\nwhich you are clinging can be seen rising into the darkness above.\nThere is more rope dangling below you.", "Slide", { Ex(Down, "SLID2"), Ex(Up, "SLIDE") }, { }, room_funcs::inslide, { rlandbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ ropebit, slidebit })) }),
mr("SLID2", "This is another spot within the coal chute. Above you the rope\nclimbs into darkness and the end of the rope is dangling five feet\nbeneath you.", "Slide", { Ex(Down, "SLID3"), Ex(Up, "SLID1") }, { }, room_funcs::inslide, { rlandbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ ropebit, slidebit })) }),
mr("SLID3", "You have reached the end of your rope. Below you is darkness as\nthe chute makes a sharp turn. On the east here is a small ledge\nwhich you might be able to stand on.", "Slide", { Ex(Down, "CELLA"), Ex(Up, "SLID2"), Ex(East, "SLEDG") }, { }, room_funcs::inslide, { rlandbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ ropebit, slidebit })) }),
mr("SLEDG", "This is a narrow ledge abutting the coal chute, in which a rope can\nbe seen passing downward. Behind you, to the south, is a small room.", "Slide Ledge", { Ex(Down, "CELLA"), Ex(Up, "SLID2"), Ex(South, "SPAL") }, { }, room_funcs::sledg_room, { rlandbit, rsacredbit } , { RP(ksl_rglobal, std::vector<Bits>({ ropebit, slidebit })) }),
mr("SPAL", "This is a small room with rough walls, and a ceiling which is steeply\nsloping from north to south. There is coal dust covering almost\neverything, and little bits of coal are scattered around the only exit\n(which is a narrow passage to the north). In one corner of the room is\nan old coal stove which lights the room with a cheery red glow. There\nis a very narrow crack in the north wall.", "Sooty Room", { Ex(North, "SLEDG") }, { "PAL3", "STOVE"}, nullptr, { rlandbit, rsacredbit, rlightbit } ),
mr("MRD", "", "Hallway", { Ex(North, "FDOOR"), Ex(Ne, "FDOOR"), Ex(Nw, "FDOOR"), Ex(South, mr_g_MRD), Ex(Se, mr_g_MRD), Ex(Sw, mr_g_MRD) }, { }, room_funcs::mrdf, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ rosebit, chanbit, guardbit })) }),
mr("MRG", "", "Hallway", { Ex(North, mr_d_MRG), Ex(South, mr_c_MRG) }, { }, room_funcs::guardians, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ guardbit })) }),
mr("MRC", "", "Hallway", { Ex(North, mr_g_MRC), Ex(Nw, mr_g_MRC), Ex(Ne, mr_g_MRC), Ex(Enter, mirex_MRC), Ex(South, mr_b_MRC), Ex(Sw, mr_b_MRC), Ex(Se, mr_b_MRC) }, { }, room_funcs::mrcf, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ mirrorbit, panelbit, rosebit, chanbit, guardbit })) }),
mr("MRB", "", "Hallway", { Ex(North, mr_c_MRB), Ex(Nw, mr_c_MRB), Ex(Ne, mr_c_MRB), Ex(Enter, mirex_MRB), Ex(South, mr_a_MRB), Ex(Sw, mr_a_MRB), Ex(Se, mr_a_MRB) }, { }, room_funcs::mrbf, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ mirrorbit, panelbit, rosebit, chanbit })) }),
mr("MRA", "", "Hallway", { Ex(North, mr_b_MRA), Ex(Nw, mr_b_MRA), Ex(Ne, mr_b_MRA), Ex(Enter, mirex_MRA), Ex(South, "MREYE") }, { }, room_funcs::mraf, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ mirrorbit, panelbit, rosebit, chanbit })) }),
mr("MRDE", "", "Narrow Room", { }, { }, room_funcs::guardians, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ mirrorbit, panelbit, guardbit })) }),
mr("MRDW", "", "Narrow Room", { }, { }, room_funcs::guardians, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ mirrorbit, panelbit, guardbit })) }),
mr("MRGE", "", "Narrow Room", { }, { }, room_funcs::guardians, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ mirrorbit, panelbit, guardbit })) }),
mr("MRGW", "", "Narrow Room", { }, { }, room_funcs::guardians, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ mirrorbit, panelbit, guardbit })) }),
mr("MRCE", "", "Narrow Room", { Ex(Enter, mirex_MRCE), Ex(West, mirex_MRCE), Ex(North, "MRG"), Ex(South, "MRB") }, { }, room_funcs::mrcew, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ mirrorbit, panelbit, guardbit })) }),
mr("MRCW", "", "Narrow Room", { Ex(Enter, mirex_MRCW), Ex(East, mirex_MRCW), Ex(North, "MRG"), Ex(South, "MRB") }, { }, room_funcs::mrcew, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ mirrorbit, panelbit, guardbit })) }),
mr("MRBE", "", "Narrow Room", { Ex(Enter, mirex_MRBE), Ex(West, mirex_MRBE), Ex(North, "MRC"), Ex(South, "MRA") }, { }, room_funcs::mrbew, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ mirrorbit, panelbit })) }),
mr("MRBW", "", "Narrow Room", { Ex(Enter, mirex_MRBW), Ex(East, mirex_MRBW), Ex(North, "MRC"), Ex(South, "MRA") }, { }, room_funcs::mrbew, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ mirrorbit, panelbit })) }),
mr("MRAE", "", "Narrow Room", { Ex(Enter, mirex_MRAE), Ex(West, mirex_MRAE), Ex(North, "MRB"), Ex(South, "MREYE") }, { }, room_funcs::mraew, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ mirrorbit, panelbit })) }),
mr("MRAW", "", "Narrow Room", { Ex(Enter, mirex_MRAW), Ex(East, mirex_MRAW), Ex(North, "MRB"), Ex(South, "MREYE") }, { }, room_funcs::mraew, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ mirrorbit, panelbit })) }),
mr("INMIR", "", "Inside Mirror", { Ex(North, mout_INMIR), Ex(South, mout_INMIR), Ex(East, mout_INMIR), Ex(West, mout_INMIR), Ex(Ne, mout_INMIR), Ex(Nw, mout_INMIR), Ex(Se, mout_INMIR), Ex(Sw, mout_INMIR), Ex(Exit, mout_INMIR) }, { "YLWAL", "WHWAL", "RDWAL", "BLWAL", "OAKND", "PINND", "WDBAR", "LPOLE", "SPOLE", "TBAR", "ARROW"}, room_funcs::magic_mirror, { rendgame, rlandbit, rlightbit } , { RP(ksl_rval, 15), RP(ksl_rglobal, std::vector<Bits>({ rosebit, chanbit, guardbit })) }),
mr("MRANT", "You are standing near one end of a long, dimly lit hall. At the\nsouth stone stairs ascend. To the north the corridor is illuminated\nby torches set high in the walls, out of reach. On one wall is a red\nbutton.", "Stone Room", { Ex(South, "TSTRS"), Ex(Up, "TSTRS"), Ex(North, "MREYE") }, { "RSWIT"}, nullptr, { rendgame, rlandbit, rlightbit } ),
mr("MREYE", "", "Small Room", { Ex(North, mr_a_MREYE), Ex(Nw, mr_a_MREYE), Ex(Ne, mr_a_MREYE), Ex(South, "MRANT") }, { "RBEAM"}, room_funcs::mreye_room, { rendgame, rlandbit, rlightbit } ),
mr("TOMB", "", "Tomb of the Unknown Implementer", { Ex(West, "LLD2"), Ex(North, cd_TOMB), Ex(Enter, cd_TOMB) }, { "TOMB", "HEADS", "COKES", "LISTS"}, room_funcs::tomb_function),
mr("CRYPT", "", "Crypt", { Ex(South, cd_CRYPT), Ex(Leave, cd_CRYPT) }, { "TOMB"}, room_funcs::crypt_function, { rendgame, rlandbit } , { RP(ksl_rval, 5) }),
mr("TSTRS", "You are standing at the top of a flight of stairs that lead down to\na passage below. Dim light, as from torches, can be seen in the\npassage. Behind you the stairs lead into untouched rock.", "Top of Stairs", { Ex(North, "MRANT"), Ex(Down, "MRANT"), Ex(South, NExit("The wall is solid rock.")) }, { }, nullptr, { rendgame, rlandbit, rlightbit } , { RP(ksl_rval, 10) }),
mr("ECORR", "This is a corridor with polished marble walls. The corridor\nwidens into larger areas as it turns west at its northern and\nsouthern ends.", "East Corridor", { Ex(North, "NCORR"), Ex(South, "SCORR") }, { }, nullptr, { rendgame, rlandbit, rlightbit } ),
mr("WCORR", "This is a corridor with polished marble walls. The corridor\nwidens into larger areas as it turns east at its northern and\nsouthern ends.", "West Corridor", { Ex(North, "NCORR"), Ex(South, "SCORR") }, { }, nullptr, { rendgame, rlandbit, rlightbit } ),
mr("SCORR", "", "South Corridor", { Ex(West, "WCORR"), Ex(East, "ECORR"), Ex(North, od_SCORR), Ex(South, "BDOOR") }, { "ODOOR"}, room_funcs::scorr_room, { rendgame, rlandbit, rlightbit } ),
mr("BDOOR", "", "Narrow Corridor", { Ex(North, "SCORR"), Ex(South, wd_BDOOR) }, { "MASTE", "QDOOR"}, room_funcs::bdoor_function, { rendgame, rlandbit, rlightbit } , { RP(ksl_rval, 20) }),
mr("FDOOR", "", "Dungeon Entrance", { Ex(North, wd_FDOOR), Ex(Enter, wd_FDOOR), Ex(South, mr_d_FDOOR), Ex(Se, mr_d_FDOOR), Ex(Sw, mr_d_FDOOR) }, { "QDOOR"}, room_funcs::fdoor_function, { rendgame, rlandbit, rlightbit } , { RP(ksl_rval, 15), RP(ksl_rglobal, std::vector<Bits>({ masterbit })) }),
mr("NCORR", "", "North Corridor", { Ex(East, "ECORR"), Ex(West, "WCORR"), Ex(North, "PARAP"), Ex(South, cd_NCORR), Ex(Enter, cd_NCORR) }, { "CDOOR"}, room_funcs::ncorr_room, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ masterbit })) }),
mr("PARAP", "", "Parapet", { Ex(South, "NCORR"), Ex(North, NExit("You would be burned to a crisp in no time.")) }, { "DBUTT", "DIAL", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT"}, room_funcs::parapet, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ masterbit })) }),
mr("CELL", "", "Prison Cell", { Ex(Exit, cd_CELL), Ex(North, cd_CELL), Ex(South, od_CELL) }, { "CDOOR", "ODOOR"}, room_funcs::cell_room, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ masterbit })) }),
mr("PCELL", "", "Prison Cell", { Ex(Exit, fout_PCELL) }, { "LDOOR"}, room_funcs::pcell_room, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ masterbit })) }),
mr("NCELL", "", "Prison Cell", { Ex(South, fout_NCELL), Ex(Exit, nd_NCELL), Ex(North, nd_NCELL) }, { "ODOOR", "MDOOR"}, room_funcs::ncell_room, { rendgame, rlandbit, rlightbit } , { RP(ksl_rglobal, std::vector<Bits>({ masterbit })) }),
mr("NIRVA", " This is a room of large size, richly appointed and decorated\nin a style that bespeaks exquisite taste. To judge from its\ncontents, it is the ultimate storehouse of the treasures of Zork.\n There are chests here containing precious jewels, mountains of\nzorkmids, rare paintings, ancient statuary, and beguiling curios.\n In one corner of the room is a bookcase boasting such volumes as\n'The History of the Great Underground Empire,' 'The Lives of the\nTwelve Flatheads,' 'The Wisdom of the Implementors,' and other\ninformative and inspiring works.\n On one wall is a completely annotated map of the Great Underground\nEmpire, showing points of interest, various troves of treasure, and\nindicating the locations of several superior scenic views.\n On a desk at the far end of the room may be found stock\ncertificates representing a controlling interest in FrobozzCo\nInternational, the multinational conglomerate and parent company of\nthe Frobozz Magic Boat Co., etc.", "Treasury of Zork", { }, { "ODOOR"}, room_funcs::nirvana, { rendgame, rlandbit, rlightbit } , { RP(ksl_rval, 35) }),