-
Notifications
You must be signed in to change notification settings - Fork 11
/
objdefs.h
218 lines (218 loc) · 49.6 KB
/
objdefs.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
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
// Generated at 01-14-21 13:45:01
#pragma once
const ObjectDefinition objects[] = {
{{ "BUTTO" }, { }, "", { }},
{{ "!!!!!" }, { }, "", { }},
{{ "GHOST", "SPIRI", "FIEND" }, { }, "number of ghosts", { ovison, vicbit } , obj_funcs::ghost_function},
{{ "GATES", "GATE" }, { }, "gates", { }},
{{ "FBASK", "CAGE", "DUMBW", "BASKE" }, { "LOWER" }, "lowered basket", { ovison } , obj_funcs::dumbwaiter},
{{ "FOOD", "SANDW", "LUNCH", "DINNE" }, { "HOT", "PEPPE" }, "lunch", { ovison, takebit, foodbit } , nullptr, { }, { OP(ksl_odesc1, "A hot pepper sandwich is here.") }},
{{ "TBAR", "T-BAR", "BAR" }, { "T" }, "T-bar", { ovison, ndescbit } },
{{ "GNOME", "TROLL" }, { "VOLCA" }, "Volcano Gnome", { ovison, vicbit } , obj_funcs::gnome_function, { }, { OP(ksl_odesc1, "There is a nervous Volcano Gnome here.") }},
{{ "BAGCO", "BAG", "COINS" }, { "OLD", "LEATH" }, "bag of coins", { ovison, takebit } , nullptr, { }, { OP(ksl_odesc1, "An old leather bag, bulging with coins, is here."), OP(ksl_osize, 15), OP(ksl_ofval, 10), OP(ksl_otval, 5) }},
{{ "BARRE" }, { "WOODE", "MAN-S" }, "wooden barrel", { ovison, vehbit, openbit, burnbit } , obj_funcs::barrel, { }, { OP(ksl_odesc1, "There is a man-sized barrel here which you might be able to enter."), OP(ksl_ocapac, 100), OP(ksl_osize, 70) }},
{{ "BALLO", "BASKE" }, { "WICKE" }, "basket", { ovison, vehbit, openbit } , obj_funcs::balloon, { "CBAG", "BROPE", "RECEP"}, { OP(ksl_odesc1, "There is a very large and extremely heavy wicker basket with a cloth\nbag here. Inside the basket is a metal receptacle of some kind. \nAttached to the basket on the outside is a piece of wire."), OP(ksl_ocapac, 100), OP(ksl_osize, 70), OP(ksl_ovtype, rairbit) }},
{{ "TBASK", "CAGE", "DUMBW", "BASKE" }, { }, "basket", { ovison, transbit, contbit, openbit } , obj_funcs::dumbwaiter, { }, { OP(ksl_odesc1, "At the end of the chain is a basket."), OP(ksl_ocapac, 50) }},
{{ "BAT", "VAMPI" }, { "VAMPI" }, "bat", { ovison, ndescbit, trytakebit } , obj_funcs::fly_me},
{{ "BELL" }, { "SMALL", "BRASS" }, "bell", { ovison, takebit } , nullptr, { }, { OP(ksl_odesco, "Lying in a corner of the room is a small brass bell."), OP(ksl_odesc1, "There is a small brass bell here.") }},
{{ "HBELL", "BELL" }, { "BRASS", "HOT", "RED" }, "red hot brass bell", { ovison, trytakebit } , obj_funcs::hbell_function, { }, { OP(ksl_odesc1, "On the ground is a red hot bell.") }},
{{ "BLWAL", "WALL", "PANEL" }, { "BLACK" }, "black panel", { ovison, ndescbit } , obj_funcs::mpanels},
{{ "AXE" }, { "BLOOD" }, "bloody axe", { ovison, weaponbit } , obj_funcs::axe_function, { }, { OP(ksl_odesc1, "There is a bloody axe here."), OP(ksl_osize, 25) }},
{{ "BLBK", "BOOK" }, { "BLUE" }, "blue book", { ovison, readbit, takebit, contbit, burnbit } , nullptr, { }, { OP(ksl_odesc1, "There is a blue book here."), OP(ksl_ocapac, 2), OP(ksl_osize, 10), OP(ksl_oread, greek_to_me) }},
{{ "BLABE", "LABEL" }, { "BLUE" }, "blue label", { ovison, readbit, takebit, burnbit } , nullptr, { }, { OP(ksl_odesc1, "There is a blue label here."), OP(ksl_osize, 1), OP(ksl_oread, "\n !!!! FROBOZZ MAGIC BALLOON COMPANY !!!!\n\nHello, Aviator!\n\nInstructions for use:\n \n To get into balloon, say 'Board'\n To leave balloon, say 'Disembark'\n To land, say 'Land'\n \nWarranty:\n \n No warranty is expressed or implied. You're on your own, sport!\n\n Good Luck.\n") }},
{{ "BOLT", "BOLT", "NUT" }, { "METAL" }, "bolt", { ovison, doorbit, ndescbit, turnbit } , obj_funcs::bolt_function},
{{ "BOOK", "PRAYE", "BIBLE", "GOODB" }, { "LARGE", "BLACK" }, "book", { ovison, readbit, takebit, contbit, burnbit } , obj_funcs::black_book, { }, { OP(ksl_odesco, "On the altar is a large black book, open to page 569."), OP(ksl_odesc1, "There is a large black book here."), OP(ksl_osize, 10), OP(ksl_oread, " COMMANDMENT #12592\nOh ye who go about saying unto each: \"Hello sailor\":\ndost thou know the magnitude of thy sin before the gods?\nYea, verily, thou shalt be ground between two stones.\nShall the angry gods cast thy body into the whirlpool?\nSurely, thy eye shall be put out with a sharp stick!\nEven unto the ends of the earth shalt thou wander and\nunto the land of the dead shalt thou be sent at last.\nSurely thou shalt repent of thy cunning.") }},
{{ "SAFE", "BOX" }, { "STEEL" }, "box", { ovison, contbit } , obj_funcs::safe_function, { "CROWN", "CARD"}, { OP(ksl_ocapac, 15) }},
{{ "BROPE", "WIRE" }, { "BRAID" }, "braided wire", { ovison, tiebit } , obj_funcs::wire_function},
{{ "BRICK", "BRICK" }, { "SQUAR", "CLAY" }, "brick", { ovison, takebit, burnbit, searchbit, openbit } , obj_funcs::brick_function, { }, { OP(ksl_odesc1, "There is a square brick here which feels like clay."), OP(ksl_ocapac, 2), OP(ksl_osize, 9) }},
{{ "DBALL", "BALLO", "BASKE" }, { "BROKE" }, "broken balloon", { ovison, takebit } , nullptr, { }, { OP(ksl_odesc1, "There is a balloon here, broken into pieces."), OP(ksl_osize, 40) }},
{{ "BLAMP", "LAMP", "LANTE" }, { "BROKE", "BRASS" }, "broken lamp", { ovison, takebit } , nullptr, { }, { OP(ksl_odesc1, "There is a broken brass lantern here.") }},
{{ "STICK" }, { "SHARP", "BROKE" }, "broken sharp stick", { ovison, takebit } , obj_funcs::stick_function, { }, { OP(ksl_odesco, "A sharp stick, which appears to have been broken at one end, is here."), OP(ksl_odesc1, "There is a broken sharp stick here."), OP(ksl_osize, 3) }},
{{ "OTIMB", "TIMBE", "PILE" }, { "WOODE", "BROKE" }, "broken timber", { ovison, takebit } , obj_funcs::timbers, { }, { OP(ksl_odesc1, timber_untied), OP(ksl_osize, 50) }},
{{ "ODOOR", "DOOR" }, { "BRONZ" }, "bronze door", { doorbit, ndescbit } , obj_funcs::bronze_door},
{{ "SBAG", "BAG", "SACK" }, { "BROWN", "ELONG" }, "brown sack", { ovison, takebit, contbit, burnbit } , nullptr, { "GARLI", "FOOD"}, { OP(ksl_odesco, "On the table is an elongated brown sack, smelling of hot peppers."), OP(ksl_odesc1, "A brown sack is here."), OP(ksl_ocapac, 15), OP(ksl_osize, 3) }},
{{ "BUBBL" }, { "GREEN", "PLAST" }, "green bubble", { ovison, ndescbit } },
{{ "COKES", "BOTTL", "BUNCH" }, { "COKE" }, "bunch of Coke bottles", { ovison, takebit } , obj_funcs::coke_bottles, { }, { OP(ksl_odesco, "There is a large pile of empty Coke bottles here, evidently produced\nby the implementers during their long struggle to win totally."), OP(ksl_odesc1, "Many empty Coke bottles are here. Alas, they can't hold water."), OP(ksl_osize, 15) }},
{{ "BLANT", "LANTE", "LAMP" }, { "USED", "BURNE", "DEAD", "USELE" }, "burned-out lantern", { ovison, takebit } , nullptr, { }, { OP(ksl_odesco, "The deceased adventurer's useless lantern is here."), OP(ksl_odesc1, "There is a burned-out lantern here."), OP(ksl_osize, 20) }},
{{ "YBUTT", "BUTTO", "SWITC" }, { "YELLO" }, "yellow button", { ovison, ndescbit } , obj_funcs::dbuttons},
{{ "BRBUT", "BUTTO", "SWITC" }, { "BROWN" }, "brown button", { ovison, ndescbit } , obj_funcs::dbuttons},
{{ "RBUTT", "BUTTO", "SWITC" }, { "RED" }, "red button", { ovison, ndescbit } , obj_funcs::dbuttons},
{{ "BLBUT", "BUTTO", "SWITC" }, { "BLUE" }, "blue button", { ovison, ndescbit } , obj_funcs::dbuttons},
{{ "RNBUT", "BUTTO" }, { "ROUND" }, "round button", { ovison, ndescbit } , obj_funcs::buttons},
{{ "SQBUT", "BUTTO" }, { "SQUAR" }, "square button", { ovison, ndescbit } , obj_funcs::buttons},
{{ "TRBUT", "BUTTO" }, { "TRIAN" }, "triangular button", { ovison, ndescbit } , obj_funcs::buttons},
{{ "CARD", "NOTE" }, { "PLAIN" }, "card", { ovison, readbit, takebit, burnbit } , nullptr, { }, { OP(ksl_odesc1, "There is a card with writing on it here."), OP(ksl_osize, 1), OP(ksl_oread, "\nWarning:\n This room was constructed over very weak rock strata. Detonation\nof explosives in this room is strictly prohibited!\n Frobozz Magic Cave Company\n per M. Agrippa, foreman\n") }},
{{ "RUG", "CARPE" }, { "ORIEN" }, "carpet", { ovison, ndescbit, trytakebit } , obj_funcs::rug},
{{ "CDOOR", "DOOR" }, { "WOOD", "WOODE", "CELL" }, "cell door", { ovison, doorbit, ndescbit } , obj_funcs::cell_door},
{{ "CHALI", "CUP", "GOBLE", "SILVE" }, { "SILVE" }, "chalice", { ovison, takebit, contbit } , obj_funcs::chalice, { }, { OP(ksl_odesc1, "There is a silver chalice, intricately engraved, here."), OP(ksl_ocapac, 5), OP(ksl_osize, 10), OP(ksl_ofval, 10), OP(ksl_otval, 10) }},
{{ "CBAG", "BAG" }, { "CLOTH" }, "cloth bag", { ovison } , obj_funcs::bcontents},
{{ "GARLI", "CLOVE" }, { }, "clove of garlic", { ovison, takebit, foodbit } , nullptr, { }, { OP(ksl_odesc1, "There is a clove of garlic here.") }},
{{ "ARROW", "POINT" }, { "COMPA" }, "compass arrow", { ovison, ndescbit } },
{{ "CROWN" }, { "GAUDY" }, "crown", { ovison, takebit } , nullptr, { }, { OP(ksl_odesco, "The excessively gaudy crown of Lord Dimwit Flathead is here."), OP(ksl_odesc1, "Lord Dimwit's crown is here."), OP(ksl_osize, 10), OP(ksl_ofval, 15), OP(ksl_otval, 10) }},
{{ "TOMB", "CRYPT", "GRAVE", "TOMB", "DOOR" }, { "MARBL" }, "crypt door", { ovison, doorbit, ndescbit } , obj_funcs::crypt_object, { }, { OP(ksl_oread, "Here lie the implementers, whose heads were placed on poles by the\nKeeper of the Dungeon for amazing untastefulness.") }},
{{ "SPHER", "BALL", "PALAN", "STONE" }, { "CRYST", "SEEIN", "GLASS", "WHITE" }, "white crystal sphere", { ovison, sacredbit, trytakebit } , obj_funcs::sphere_function, { }, { OP(ksl_odesc1, "There is a beautiful white crystal sphere here."), OP(ksl_osize, 10), OP(ksl_ofval, 6), OP(ksl_otval, 6) }},
{{ "TRIDE", "FORK" }, { "CRYST" }, "crystal trident", { ovison, takebit } , nullptr, { }, { OP(ksl_odesco, "On the shore lies Poseidon's own crystal trident."), OP(ksl_odesc1, "Poseidon's own crystal trident is here."), OP(ksl_osize, 20), OP(ksl_ofval, 4), OP(ksl_otval, 11) }},
{{ "CYCLO", "ONE-E", "MONST" }, { }, "cyclops", { ovison, vicbit, villain } , obj_funcs::cyclops, { }, { OP(ksl_ostrength, 10000), OP(ksl_ofmsgs, cyclops_melee) }},
{{ "DAM", "GATE", "GATES", "FCD" }, { }, "dam", { ovison, ndescbit } },
{{ "WDOOR", "DOOR" }, { "WOODE", "WEST", "WESTE" }, "wooden door", { ovison, readbit, doorbit, ndescbit } , obj_funcs::ddoor_function, { }, { OP(ksl_oread, "The engravings translate to 'This space intentionally left blank'") }},
{{ "DOOR", "TRAPD", "TRAP-" }, { "TRAP" }, "trap door", { doorbit, ndescbit } , obj_funcs::trap_door},
{{ "SDOOR", "DOOR" }, { "STONE" }, "stone door", { ovison, doorbit, ndescbit } , obj_funcs::ddoor_function},
{{ "FDOOR", "DOOR" }, { "FRONT" }, "door", { ovison, doorbit, ndescbit } , obj_funcs::ddoor_function},
{{ "STRAD", "VIOLI" }, { "FANCY" }, "fancy violin", { ovison, takebit } , nullptr, { }, { OP(ksl_odesc1, "There is a Stradivarius here."), OP(ksl_osize, 10), OP(ksl_ofval, 10), OP(ksl_otval, 10) }},
{{ "ICE", "MASS", "GLACI" }, { }, "glacier", { ovison, vicbit } , obj_funcs::glacier, { }, { OP(ksl_odesc1, "A mass of ice fills the western half of the room.") }},
{{ "BOTTL", "CONTA" }, { "CLEAR", "GLASS" }, "glass bottle", { ovison, takebit, transbit, contbit } , obj_funcs::bottle_function, { "WATER"}, { OP(ksl_odesco, "A bottle is sitting on the table."), OP(ksl_odesc1, "A clear glass bottle is here."), OP(ksl_ocapac, 4) }},
{{ "FLASK" }, { "GLASS" }, "glass flask filled with liquid", { ovison, takebit, transbit } , obj_funcs::flask_function, { }, { OP(ksl_odesc1, "A stoppered glass flask with a skull-and-crossbones marking is here.\nThe flask is filled with some clear liquid."), OP(ksl_ocapac, 5), OP(ksl_osize, 10) }},
{{ "COFFI", "CASKE" }, { "GOLD" }, "gold coffin", { ovison, takebit, contbit, sacredbit } , obj_funcs::timbers, { }, { OP(ksl_odesc1, coffin_untied), OP(ksl_ocapac, 35), OP(ksl_osize, 55), OP(ksl_ofval, 3), OP(ksl_otval, 7) }},
{{ "GRAIL" }, { "HOLY" }, "grail", { ovison, takebit, contbit } , nullptr, { }, { OP(ksl_odesc1, "There is an extremely valuable (perhaps original) grail here."), OP(ksl_ocapac, 5), OP(ksl_osize, 10), OP(ksl_ofval, 2), OP(ksl_otval, 5) }},
{{ "GRATE", "GRATI" }, { }, "grating", { ovison, doorbit, ndescbit } , obj_funcs::grate_function},
{{ "GRBK", "BOOK" }, { "GREEN" }, "green book", { ovison, readbit, takebit, contbit, burnbit } , nullptr, { }, { OP(ksl_odesc1, "There is a green book here."), OP(ksl_ocapac, 2), OP(ksl_osize, 10), OP(ksl_oread, greek_to_me) }},
{{ "RBTLB", "PAPER", "PIECE" }, { "GREEN" }, "green piece of paper", { ovison, readbit, takebit, burnbit } , nullptr, { }, { OP(ksl_odesc1, "There is a green piece of paper here."), OP(ksl_osize, 3), OP(ksl_oread, " !!!! FROBOZZ MAGIC ROBOT COMPANY !!!!\n\nHello, Master!\n \n I am a late-model robot, trained at MIT Tech to perform various\nsimple household functions. \n\nInstructions for use:\n To activate me, use the following formula:\n >TELL ROBOT '<something to do>' <cr>\n The quotation marks are required!\n \nWarranty:\n No warranty is expressed or implied.\n \n At your service!\n") }},
{{ "PUMP", "AIR-P", "AIRPU" }, { "SMALL", "HAND-" }, "hand-held air pump", { ovison, takebit, toolbit } , nullptr, { }, { OP(ksl_odesc1, "There is a small pump here.") }},
{{ "HPOLE", "HEAD" }, { }, "head on a pole", { ovison } },
{{ "SSLOT", "SLOT", "HOLE" }, { }, "hole", { ovison, openbit } , nullptr, { }, { OP(ksl_ocapac, 10) }},
{{ "HOOK2", "HOOK" }, { "SMALL" }, "hook", { ovison } , nullptr, { }, { OP(ksl_odesc1, hook_desc) }},
{{ "HOOK1", "HOOK" }, { "SMALL" }, "hook", { ovison } , nullptr, { }, { OP(ksl_odesc1, hook_desc) }},
{{ "DIAMO" }, { "HUGE", "ENORM" }, "huge diamond", { ovison, takebit } , nullptr, { }, { OP(ksl_odesc1, "There is an enormous diamond (perfectly cut) here."), OP(ksl_ofval, 10), OP(ksl_otval, 6) }},
{{ "GUANO", "CRAP", "SHIT", "HUNK" }, { }, "hunk of bat guano", { ovison, takebit, digbit } , obj_funcs::guano_function, { }, { OP(ksl_odesc1, "There is a hunk of bat guano here."), OP(ksl_osize, 20) }},
{{ "JADE", "FIGUR" }, { "JADE" }, "jade figurine", { ovison, takebit } , nullptr, { }, { OP(ksl_odesc1, "There is an exquisite jade figurine here."), OP(ksl_osize, 10), OP(ksl_ofval, 5), OP(ksl_otval, 5) }},
{{ "KNIFE", "BLADE" }, { "NASTY", "UNRUS", "PLAIN" }, "knife", { ovison, takebit, weaponbit } , nullptr, { }, { OP(ksl_odesco, "On a table is a nasty-looking knife."), OP(ksl_odesc1, "There is a nasty-looking knife lying here."), OP(ksl_ofmsgs, knife_melee) }},
{{ "LAMP", "LANTE", "LIGHT" }, { "BRASS" }, "lamp", { ovison, takebit, lightbit } , obj_funcs::lantern, { }, { OP(ksl_odesco, "A battery-powered brass lantern is on the trophy case."), OP(ksl_odesc1, "There is a brass lantern (battery-powered) here."), OP(ksl_osize, 15), OP(ksl_olint, olint_t(0, false,lntin,350)) }},
{{ "DBUTT", "BUTTO" }, { "LARGE" }, "large button", { ovison, ndescbit } , obj_funcs::dialbutton},
{{ "LCASE", "CASE" }, { "LARGE" }, "large case", { ovison, transbit } , nullptr, { }, { OP(ksl_odesc1, "There is a large case here, containing objects which you used to\npossess.") }},
{{ "EMERA" }, { "LARGE" }, "large emerald", { ovison, takebit } , nullptr, { }, { OP(ksl_odesc1, "There is an emerald here."), OP(ksl_ofval, 5), OP(ksl_otval, 10) }},
{{ "ATABL", "TABLE" }, { "LARGE", "OBLON" }, "large oblong table", { ovison } },
{{ "ADVER", "PAMPH", "LEAFL", "BOOKL", "MAIL" }, { "SMALL" }, "leaflet", { ovison, readbit, takebit, burnbit } , nullptr, { }, { OP(ksl_odesc1, "There is a small leaflet here."), OP(ksl_osize, 2), OP(ksl_oread, " WELCOME TO ZORK\n\n ZORK is a game of adventure, danger, and low cunning. In it you\nwill explore some of the most amazing territory ever seen by mortal\nman. Hardened adventurers have run screaming from the terrors\ncontained within!\n\n In ZORK the intrepid explorer delves into the forgotten secrets\nof a lost labyrinth deep in the bowels of the earth, searching for\nvast treasures long hidden from prying eyes, treasures guarded by\nfearsome monsters and diabolical traps!\n\n No PDP-10 should be without one!\n\n ZORK was created at the MIT Laboratory for Computer Science, by\nTim Anderson, Marc Blank, Bruce Daniels, and Dave Lebling. It was\ninspired by the ADVENTURE game of Crowther and Woods, and the long\ntradition of fantasy and science fiction adventure. ZORK is written\nin MDL (alias MUDDLE).\n\n On-line information may be available using the HELP and INFO\ncommands (most systems).\n\n Direct inquiries, comments, etc. by Net mail to ZORK@MIT-DMS.\n\n (c) Copyright 1978,1979 Massachusetts Institute of Technology. \n All rights reserved.\n\n This version was ported to C++ from the original MDL sources by\nJeff Claar, who apparently does not have better things to do with \nhis time. However, it is still maintained (albeit sporadically) so\npull requests or bug reports are encouraged if any problems are found.\n\nIssues can be reported at https://bitbucket.org/jclaar3/zork/issues.\n") }},
{{ "*BUN*" }, { }, "", { ovison, bunchbit } , nullptr, { }, { OP(ksl_obverb, nullptr) }},
{{ "LEAK", "DRIP", "HOLE" }, { }, "leak", { ndescbit } , obj_funcs::leak_function},
{{ "MDOOR", "DOOR" }, { "LOCKE", "WOOD", "WOODE", "CELL" }, "locked door", { ovison, doorbit, ndescbit } , obj_funcs::locked_door},
{{ "LDOOR", "DOOR" }, { "LOCKE", "WOOD", "WOODE", "CELL" }, "locked door", { ovison, doorbit, ndescbit } , obj_funcs::locked_door},
{{ "LPOLE", "POLE", "POST" }, { "LONG", "CENTE" }, "long pole", { ovison, ndescbit } },
{{ "MACHI", "PDP10", "DRYER", "LID" }, { }, "machine", { ovison, contbit } , obj_funcs::machine_function, { }, { OP(ksl_ocapac, 50) }},
{{ "RBOAT", "BOAT" }, { "MAGIC", "PLAST", "SEAWO" }, "magic boat", { ovison, takebit, burnbit, vehbit, openbit } , obj_funcs::rboat_function, { "LABEL"}, { OP(ksl_odesc1, "There is an inflated boat here."), OP(ksl_ocapac, 100), OP(ksl_osize, 20), OP(ksl_ovtype, rwaterbit) }},
{{ "OAKND", "WALL", "PANEL" }, { "MAHOG" }, "mahogany wall", { ovison, ndescbit } , obj_funcs::mends},
{{ "MAILB", "BOX" }, { "SMALL" }, "mailbox", { ovison, contbit } , nullptr, { "ADVER"}, { OP(ksl_odesc1, "There is a small mailbox here."), OP(ksl_ocapac, 10) }},
{{ "CAGE" }, { "MANGL", "STEEL" }, "steel cage", { ovison, ndescbit } , nullptr, { }, { OP(ksl_odesc1, "There is a mangled steel cage here."), OP(ksl_osize, 60) }},
{{ "MATCH", "FLINT" }, { }, "matchbook", { ovison, readbit, takebit } , obj_funcs::match_function, { }, { OP(ksl_odesc1, "There is a matchbook whose cover says 'Visit Beautiful FCD#3' here."), OP(ksl_osize, 2), OP(ksl_omatch, 5), OP(ksl_oread, " [close cover before striking BKD]\n\n YOU too can make BIG MONEY in the exciting field of\n PAPER SHUFFLING!\n\nMr. TAA of Muddle, Mass. says: \"Before I took this course I used\nto be a lowly bit twiddler. Now with what I learned at MIT Tech\nI feel really important and can obfuscate and confuse with the best.\"\n\nMr. MARC had this to say: \"Ten short days ago all I could look\nforward to was a dead-end job as a doctor. Now I have a promising\nfuture and make really big Zorkmids.\"\n\nMIT Tech can't promise these fantastic results to everyone. But when\nyou earn your MDL degree from MIT Tech your future will be brighter.\n\n Send for our free brochure today.") }},
{{ "REFL2", "MIRRO" }, { }, "mirror", { ovison, vicbit, trytakebit } , obj_funcs::mirror_mirror},
{{ "REFL1", "MIRRO" }, { }, "mirror", { ovison, vicbit, trytakebit } , obj_funcs::mirror_mirror},
{{ "PAPER", "NEWSP", "ISSUE", "REPOR", "MAGAZ", "NEWS" }, { }, "newspaper", { ovison, readbit, takebit, burnbit } , nullptr, { }, { OP(ksl_odesc1, "There is an issue of US NEWS & DUNGEON REPORT dated 12/01/17 here."), OP(ksl_osize, 2), OP(ksl_oread, " US NEWS & DUNGEON REPORT\n12/01/17 Last G.U.E. Edition\n\nThis version of ZORK is no longer being supported on this or any other\nmachine. In particular, bugs and feature requests will, most likely, be\nread and ignored. There are updated versions of ZORK, including some\naltogether new problems, available for PDP-11s and various\nmicrocomputers (TRS-80, APPLE, maybe more later). For information, send\na SASE to:\n\n Infocom, Inc.\n P.O. Box 120, Kendall Station\n Cambridge, Ma. 02142\n\nJust kidding. Please don't send anything to this address. This PO box\ncould now be used by a plumbing supply company, a dropbox for Russian\nspies, a cover for a bank VP's mistress, or any number of other things.\nWhat it is most certainly NOT used for is a location to get more information\nabout Infocom products. Search the internet for all of them. If you really\nwant more information about something, perhaps you should send for a \nbrochure? It might be worth a point or two...\n") }},
{{ "EIGHT", "8" }, { }, "number eight", { ovison, ndescbit } },
{{ "FIVE", "5" }, { }, "number five", { ovison, ndescbit } , obj_funcs::take_five},
{{ "FOUR", "4" }, { }, "number four", { ovison, ndescbit } },
{{ "ONE", "1" }, { }, "number one", { ovison, ndescbit } },
{{ "SEVEN", "7" }, { }, "number seven", { ovison, ndescbit } },
{{ "SIX", "6" }, { }, "number six", { ovison, ndescbit } },
{{ "THREE", "3" }, { }, "number three", { ovison, ndescbit } },
{{ "TWO", "2" }, { }, "number two", { ovison, ndescbit } },
{{ "PAINT", "ART", "CANVA", "MASTE", "PICTU", "WORK" }, { }, "painting", { ovison, takebit, burnbit } , obj_funcs::painting, { }, { OP(ksl_odesco, "Fortunately, there is still one chance for you to be a vandal, for on\nthe far wall is a work of unparalleled beauty."), OP(ksl_odesc1, "A masterpiece by a neglected genius is here."), OP(ksl_osize, 15), OP(ksl_ofval, 4), OP(ksl_otval, 7) }},
{{ "CANDL", "PAIR" }, { }, "pair of candles", { ovison, takebit, lightbit, flamebit, onbit } , obj_funcs::candles, { }, { OP(ksl_odesco, "On the two ends of the altar are burning candles."), OP(ksl_odesc1, "There are two candles here."), OP(ksl_osize, 10), OP(ksl_olint, olint_t(0, false,cndin,50)) }},
{{ "PEARL", "NECKL" }, { "PEARL" }, "pearl necklace", { ovison, takebit } , nullptr, { }, { OP(ksl_odesc1, "There is a pearl necklace here with hundreds of large pearls."), OP(ksl_osize, 10), OP(ksl_ofval, 9), OP(ksl_otval, 5) }},
{{ "ECAKE", "CAKE" }, { "EATME", "EAT-M" }, "piece of 'Eat-Me' cake", { ovison, takebit, foodbit } , obj_funcs::eatme_function, { }, { OP(ksl_odesc1, "There is a piece of cake here with the words 'Eat-Me' on it."), OP(ksl_osize, 10) }},
{{ "BLICE", "CAKE", "ICING" }, { "BLUE", "ECCH" }, "piece of cake with blue icing", { ovison, readbit, takebit, foodbit } , obj_funcs::cake_function, { }, { OP(ksl_odesc1, "There is a piece of cake with blue (ecch) icing here."), OP(ksl_osize, 4) }},
{{ "ORICE", "CAKE", "ICING" }, { "ORANG" }, "piece of cake with orange icing", { ovison, readbit, takebit, foodbit } , obj_funcs::cake_function, { }, { OP(ksl_odesc1, "There is a piece of cake with orange icing here."), OP(ksl_osize, 4) }},
{{ "RDICE", "CAKE", "ICING" }, { "RED" }, "piece of cake with red icing", { ovison, readbit, takebit, foodbit } , obj_funcs::cake_function, { }, { OP(ksl_odesc1, "There is a piece of cake with red icing here."), OP(ksl_osize, 4) }},
{{ "GUNK", "PIECE", "SLAG" }, { "VITRE" }, "piece of vitreous slag", { ovison, takebit, trytakebit } , obj_funcs::gunk_function, { }, { OP(ksl_odesc1, "There is a small piece of vitreous slag here."), OP(ksl_osize, 10) }},
{{ "BODIE", "BODY", "CORPS", "PILE" }, { }, "pile of bodies", { ovison, ndescbit, trytakebit } , obj_funcs::body_function},
{{ "CORPS", "PILE" }, { "MANGL" }, "pile of corpses", { ovison } },
{{ "LEAVE", "LEAF", "PILE" }, { }, "pile of leaves", { ovison, takebit, burnbit } , obj_funcs::leaf_pile, { }, { OP(ksl_odesc1, "There is a pile of leaves on the ground."), OP(ksl_osize, 25) }},
{{ "PINND", "WALL", "PANEL", "DOOR" }, { "PINE" }, "pine wall", { ovison, doorbit, ndescbit } , obj_funcs::mends},
{{ "DBOAT", "BOAT", "PILE", "PLAST" }, { "PLAST" }, "plastic boat (with hole)", { ovison, takebit, burnbit } , obj_funcs::dboat_function, { }, { OP(ksl_odesc1, "There is a pile of plastic here with a large hole in it."), OP(ksl_osize, 20) }},
{{ "IBOAT", "BOAT", "PILE", "PLAST" }, { "PLAST" }, "pile of plastic", { ovison, takebit, burnbit } , obj_funcs::iboat_function, { }, { OP(ksl_odesc1, "There is a folded pile of plastic here which has a small valve\nattached."), OP(ksl_osize, 20) }},
{{ "BAR", "PLATI" }, { "PLATI", "LARGE" }, "platinum bar", { ovison, takebit, sacredbit } , nullptr, { }, { OP(ksl_odesc1, "There is a large platinum bar here."), OP(ksl_osize, 20), OP(ksl_ofval, 12), OP(ksl_otval, 10) }},
{{ "PLEAK", "LEAK" }, { "LARGE" }, "leak", { ovison, ndescbit } , obj_funcs::pleak},
{{ "POOL", "SEWAG", "GOOP" }, { "LARGE", "BROWN" }, "pool of sewage", { ovison, vicbit } , nullptr, { }, { OP(ksl_odesc1, "The leak has submerged the depressed area in a pool of sewage.") }},
{{ "POT", "GOLD" }, { "GOLD" }, "pot of gold", { takebit } , nullptr, { }, { OP(ksl_odesco, "At the end of the rainbow is a pot of gold."), OP(ksl_odesc1, "There is a pot of gold here."), OP(ksl_osize, 15), OP(ksl_ofval, 10), OP(ksl_otval, 10) }},
{{ "PRAYE", "INSCR" }, { "ANCIE", "OLD" }, "prayer", { ovison, readbit, sacredbit } , nullptr, { }, { OP(ksl_oread, "The prayer is inscribed in an ancient script which is hardly\nremembered these days, much less understood. What little of it can\nbe made out seems to be a philippic against small insects,\nabsent-mindedness, and the picking up and dropping of small objects. \nThe final verse seems to consign trespassers to the land of the\ndead. All evidence indicates that the beliefs of the ancient\nZorkers were obscure.") }},
{{ "COIN", "ZORKM", "GOLD" }, { "GOLD", "PRICE" }, "priceless zorkmid", { ovison, readbit, takebit } , nullptr, { }, { OP(ksl_odesco, "On the floor is a gold zorkmid coin (a valuable collector's item)."), OP(ksl_odesc1, "There is an engraved zorkmid coin here."), OP(ksl_osize, 10), OP(ksl_ofval, 10), OP(ksl_otval, 12), OP(ksl_oread, "\n --------------------------\n / Gold Zorkmid \\\n / T e n T h o u s a n d \\\n / Z O R K M I D S \\\n / \\\n / |||||||||||||||||| \\\n / !|||| ||||! \\\n | ||| ^^ ^^ ||| |\n | ||| OO OO ||| |\n | In Frobs ||| << ||| We Trust |\n | || (______) || |\n | | | |\n | |__________| |\n \\ /\n \\ -- Lord Dimwit Flathead -- /\n \\ -- Beloved of Zorkers -- /\n \\ /\n \\ * 722 G.U.E. * /\n \\ /\n --------------------------\n") }},
{{ "PUBK", "BOOK" }, { "PURPL" }, "purple book", { ovison, readbit, takebit, contbit, burnbit } , nullptr, { "STAMP"}, { OP(ksl_odesc1, "There is a purple book here."), OP(ksl_ocapac, 2), OP(ksl_osize, 10), OP(ksl_oread, greek_to_me) }},
{{ "WATER", "QUANT", "LIQUI", "H2O" }, { }, "quantity of water", { ovison, takebit, drinkbit } , obj_funcs::water_function, { }, { OP(ksl_odesc1, "There is some water here"), OP(ksl_osize, 4) }},
{{ "RAILI", "RAIL" }, { "WOODE" }, "wooden railing", { ovison, ndescbit } },
{{ "RAINB" }, { }, "rainbow", { ovison, ndescbit } },
{{ "RECEP" }, { "METAL" }, "receptacle", { ovison, contbit, searchbit } , obj_funcs::bcontents, { }, { OP(ksl_ocapac, 6) }},
{{ "RBEAM", "BEAM", "LIGHT" }, { "RED" }, "red beam of light", { ovison, ndescbit, openbit } , obj_funcs::beam_function, { }, { OP(ksl_ocapac, 1000) }},
{{ "BUOY" }, { "RED" }, "red buoy", { ovison, takebit, contbit, findmebit } , nullptr, { "EMERA"}, { OP(ksl_odesc1, "There is a red buoy here (probably a warning)."), OP(ksl_ocapac, 20), OP(ksl_osize, 10) }},
{{ "RSWIT", "SWITC", "BUTTO" }, { "RED" }, "red button", { ovison, ndescbit } , obj_funcs::mrswitch},
{{ "RDWAL", "WALL", "PANEL" }, { "RED" }, "red panel", { ovison, ndescbit } , obj_funcs::mpanels},
{{ "ROBOT", "R2D2", "C3PO", "ROBBY" }, { }, "robot", { ovison, vicbit, sacredbit, actorbit } , obj_funcs::robot_function, { }, { OP(ksl_odesc1, "There is a robot here."), OP(ksl_oactor, oa_robot) }},
{{ "ROPE", "HEMP", "COIL" }, { "LARGE" }, "rope", { ovison, takebit, tiebit, sacredbit } , obj_funcs::rope_function, { }, { OP(ksl_odesco, "A large coil of rope is lying in the corner."), OP(ksl_odesc1, "There is a large coil of rope here."), OP(ksl_osize, 10) }},
{{ "RUBY" }, { "MOBY" }, "ruby", { ovison, takebit } , nullptr, { }, { OP(ksl_odesco, "On the floor lies a moby ruby."), OP(ksl_odesc1, "There is a moby ruby lying here."), OP(ksl_ofval, 15), OP(ksl_otval, 8) }},
{{ "RKNIF", "KNIFE" }, { "RUSTY" }, "rusty knife", { ovison, takebit, weaponbit } , obj_funcs::rusty_knife, { }, { OP(ksl_odesco, "Beside the skeleton is a rusty knife."), OP(ksl_odesc1, "There is a rusty knife here."), OP(ksl_osize, 20), OP(ksl_ofmsgs, knife_melee) }},
{{ "SAND", "BEACH" }, { "SANDY" }, "sandy beach", { ovison, digbit } , obj_funcs::sand_function},
{{ "BRACE", "JEWEL", "SAPPH" }, { "SAPPH" }, "sapphire bracelet", { ovison, takebit } , nullptr, { }, { OP(ksl_odesc1, "There is a sapphire-encrusted bracelet here."), OP(ksl_osize, 10), OP(ksl_ofval, 5), OP(ksl_otval, 3) }},
{{ "SCREW" }, { }, "screwdriver", { ovison, takebit, toolbit } , nullptr, { }, { OP(ksl_odesc1, "There is a screwdriver here.") }},
{{ "HEADS", "HEAD", "POLE", "POLES", "PDL", "BKD", "TAA", "MARC", "IMPLE", "LOSER" }, { }, "set of poled heads", { ovison, sacredbit, trytakebit } , obj_funcs::head_function, { }, { OP(ksl_odesc1, "There are four heads here, mounted securely on poles.") }},
{{ "KEYS", "SET", "KEY" }, { }, "set of skeleton keys", { ovison, takebit, toolbit } , nullptr, { }, { OP(ksl_odesc1, "There is a set of skeleton keys here."), OP(ksl_osize, 10) }},
{{ "SPOLE", "POLE", "POST", "HANDG", "GRIP" }, { "SHORT", "SMALL" }, "short pole", { ovison, ndescbit } , obj_funcs::short_pole},
{{ "SHOVE" }, { "LARGE" }, "shovel", { ovison, takebit, toolbit } , nullptr, { }, { OP(ksl_odesc1, "There is a large shovel here."), OP(ksl_osize, 15) }},
{{ "BONES", "SKELE", "BODY" }, { }, "skeleton", { ovison, trytakebit } , obj_funcs::skeleton, { }, { OP(ksl_odesc1, "A skeleton, probably the remains of a luckless adventurer, lies here.") }},
{{ "COAL", "PILE", "HEAP" }, { "SMALL" }, "small pile of coal", { ovison, takebit, burnbit } , nullptr, { }, { OP(ksl_odesc1, "There is a small heap of coal here."), OP(ksl_osize, 20) }},
{{ "LISTS", "PAPER", "LIST", "PRINT", "LISTI", "STACK", "OUTPU" }, { "GIGAN", "LINE-" }, "stack of listings", { ovison, readbit, takebit, burnbit } , nullptr, { }, { OP(ksl_odesco, "There is a gigantic pile of line-printer output here. Although the\npaper once contained useful information, almost nothing can be\ndistinguished now."), OP(ksl_odesc1, "There is an enormous stack of line-printer paper here. It is barely\nreadable."), OP(ksl_osize, 70), OP(ksl_oread, "<DEFINE FEEL-FREE (LOSER)\n <TELL \"FEEL FREE, CHOMPER!\">>\n ...\nThe rest is, alas, unintelligible (as were the implementers).") }},
{{ "STAMP" }, { "FLATH" }, "Flathead stamp", { ovison, readbit, takebit, burnbit } , nullptr, { }, { OP(ksl_odesc1, "There is a Flathead stamp here."), OP(ksl_osize, 1), OP(ksl_ofval, 4), OP(ksl_otval, 10), OP(ksl_oread, "\n---v----v----v----v----v----v----v----v---\n| |\n| |||||||||| LORD |\n> !|||| | DIMWIT <\n| |||| ---| FLATHEAD |\n| |||C CC \\ |\n> |||| _\\ <\n| ||| (____| |\n| || | |\n> |______| Our <\n| / \\ Excessive |\n| / \\ Leader |\n> | | <\n| | | |\n| |\n> G.U.E. POSTAGE 3 Zorkmids <\n| |\n---^----^----^----^----^----^----^----^---\n") }},
{{ "STATU", "SCULP", "ROCK" }, { "BEAUT" }, "statue", { takebit } , nullptr, { }, { OP(ksl_odesc1, "There is a beautiful statue here."), OP(ksl_osize, 8), OP(ksl_ofval, 10), OP(ksl_otval, 13) }},
{{ "IRBOX", "BOX" }, { "STEEL", "DENTE" }, "steel box", { takebit, contbit } , nullptr, { "STRAD"}, { OP(ksl_odesc1, "There is a dented steel box here."), OP(ksl_ocapac, 20), OP(ksl_osize, 40) }},
{{ "RCAGE", "CAGE" }, { "STEEL" }, "steel cage", { ovison } , nullptr, { }, { OP(ksl_odesc1, "There is a steel cage in the middle of the room.") }},
{{ "STILL" }, { "VICIO" }, "stiletto", { ovison, weaponbit } , nullptr, { }, { OP(ksl_odesc1, "There is a vicious-looking stiletto here."), OP(ksl_osize, 10) }},
{{ "DIAL", "SUNDI" }, { "SUN" }, "sundial", { ovison, ndescbit, turnbit } , obj_funcs::dial},
{{ "MSWIT", "SWITC" }, { }, "switch", { ovison, ndescbit, turnbit } , obj_funcs::mswitch_function},
{{ "SWORD", "ORCRI", "GLAMD", "BLADE" }, { "ELVIS" }, "sword", { ovison, takebit, weaponbit } , obj_funcs::sword, { }, { OP(ksl_odesco, "On hooks above the mantelpiece hangs an elvish sword of great\nantiquity."), OP(ksl_odesc1, "There is an elvish sword here."), OP(ksl_osize, 30), OP(ksl_ofmsgs, sword_melee), OP(ksl_otval, 0) }},
{{ "LABEL", "FINEP", "PRINT" }, { "TAN", "FINE" }, "tan label", { ovison, readbit, takebit, burnbit } , nullptr, { }, { OP(ksl_odesc1, "There is a tan label here."), OP(ksl_osize, 2), OP(ksl_oread, " !!!! FROBOZZ MAGIC BOAT COMPANY !!!!\n\nHello, Sailor!\n\nInstructions for use:\n \n To get into boat, say 'Board'\n To leave boat, say 'Disembark'\n\n To get into a body of water, say 'Launch'\n To get to shore, say 'Land'\n \nWarranty:\n\n This boat is guaranteed against all defects in parts and\nworkmanship for a period of 76 milliseconds from date of purchase or\nuntil first used, whichever comes first.\n\nWarning:\n This boat is made of plastic. Good Luck!\n") }},
{{ "THIEF", "ROBBE", "CROOK", "CRIMI", "BANDI", "GENT", "GENTL", "MAN", "INDIV" }, { "SHADY", "SUSPI" }, "thief", { ovison, vicbit, villain } , obj_funcs::robber_function, { "STILL"}, { OP(ksl_odesc1, "There is a suspicious-looking individual, holding a bag, leaning\nagainst one wall. He is armed with a vicious-looking stiletto."), OP(ksl_ostrength, 5), OP(ksl_ofmsgs, thief_melee) }},
{{ "SAFFR", "TIN", "SPICE" }, { "RARE" }, "tin of spices", { takebit } , nullptr, { }, { OP(ksl_odesc1, "There is a tin of rare spices here."), OP(ksl_osize, 8), OP(ksl_ofval, 5), OP(ksl_otval, 5) }},
{{ "TORCH", "IVORY" }, { "IVORY" }, "torch", { ovison, takebit, lightbit, flamebit, toolbit, onbit } , obj_funcs::torch_object, { }, { OP(ksl_odesco, "Sitting on the pedestal is a flaming torch, made of ivory."), OP(ksl_odesc1, "There is an ivory torch here."), OP(ksl_osize, 20), OP(ksl_ofval, 14), OP(ksl_otval, 6) }},
{{ "GUIDE", "BOOK" }, { "TOUR" }, "tour guidebook", { ovison, readbit, takebit, burnbit } , nullptr, { }, { OP(ksl_odesco, "Some guidebooks entitled 'Flood Control Dam #3' are on the reception\ndesk."), OP(ksl_odesc1, "There are tour guidebooks here."), OP(ksl_oread, "\" Guide Book to\n Flood Control Dam #3\n\n Flood Control Dam #3 (FCD#3) was constructed in year 783 of the\nGreat Underground Empire to harness the destructive power of the\nFrigid River. This work was supported by a grant of 37 million\nzorkmids from the Central Bureaucracy and your omnipotent local\ntyrant Lord Dimwit Flathead the Excessive. This impressive\nstructure is composed of 3.7 cubic feet of concrete, is 256 feet\ntall at the center, and 193 feet wide at the top. The reservoir\ncreated behind the dam has a volume of 37 billion cubic feet, an\narea of 12 million square feet, and a shore line of 36 thousand\nfeet.\n\n The construction of FCD#3 took 112 days from ground breaking to\nthe dedication. It required a work force of 384 slaves, 34 slave\ndrivers, 12 engineers, 2 turtle doves, and a partridge in a pear\ntree. The work was managed by a command team composed of 2345\nbureaucrats, 2347 secretaries (at least two of whom can type),\n12,256 paper shufflers, 52,469 rubber stampers, 245,193 red tape\nprocessors, and nearly one million dead trees.\n\n We will now point out some of the more interesting features\nof FCD#3 as we conduct you on a guided tour of the facilities:\n 1) You start your tour here in the Dam Lobby.\n You will notice on your right that .........") }},
{{ "TROLL" }, { "NASTY" }, "troll", { ovison, vicbit, villain } , obj_funcs::troll, { "AXE"}, { OP(ksl_odesc1, "A nasty-looking troll, brandishing a bloody axe, blocks all passages\nout of the room."), OP(ksl_ostrength, 2), OP(ksl_ofmsgs, troll_melee) }},
{{ "TCASE", "CASE" }, { "TROPH" }, "trophy case", { ovison, transbit, contbit } , obj_funcs::trophy_case, { }, { OP(ksl_odesc1, "There is a trophy case here."), OP(ksl_ocapac, bigfix) }},
{{ "TRUNK", "CHEST", "JEWEL" }, { "OLD" }, "trunk of jewels", { takebit } , nullptr, { }, { OP(ksl_odesco, "Lying half buried in the mud is an old trunk, bulging with jewels."), OP(ksl_odesc1, "There is an old trunk here, bulging with assorted jewels."), OP(ksl_osize, 35), OP(ksl_ofval, 15), OP(ksl_otval, 8) }},
{{ "TUBE", "TOOTH" }, { }, "tube", { ovison, takebit, contbit, readbit } , obj_funcs::tube_function, { "PUTTY"}, { OP(ksl_odesc1, "There is an object which looks like a tube of toothpaste here."), OP(ksl_ocapac, 7), OP(ksl_osize, 10), OP(ksl_oread, "---> Frobozz Magic Gunk Company <---\n All-Purpose Gunk") }},
{{ "PUTTY", "MATER", "GUNK", "GLUE" }, { "VISCO" }, "viscous material", { ovison, takebit, toolbit } , nullptr, { }, { OP(ksl_odesc1, "There is some gunk here"), OP(ksl_osize, 6) }},
{{ "ENGRA", "INSCR" }, { "OLD", "ANCIE" }, "wall with engravings", { ovison, readbit, sacredbit } , nullptr, { }, { OP(ksl_odesc1, "There are old engravings on the walls here."), OP(ksl_oread, "The engravings were incised in the living rock of the cave wall by\nan unknown hand. They depict, in symbolic form, the beliefs of the\nancient peoples of Zork. Skillfully interwoven with the bas reliefs\nare excerpts illustrating the major tenets expounded by the sacred\ntexts of the religion of that time. Unfortunately a later age seems\nto have considered them blasphemous and just as skillfully excised\nthem.") }},
{{ "ETCH2", "ETCHI", "WALLS", "WALL" }, { }, "wall with etchings", { ovison, readbit, ndescbit, findmebit } , nullptr, { }, { OP(ksl_oread, " o b o\n r z\n f M A G I C z\n c W E L L y\n o n\n m p a\n") }},
{{ "ETCH1", "ETCHI", "WALLS", "WALL" }, { }, "wall with etchings", { ovison, readbit, ndescbit, findmebit } , nullptr, { }, { OP(ksl_oread, " o b o\n\n A G I\n E L\n\n m p a\n") }},
{{ "TTREE", "TREE" }, { "LARGE" }, "large tree", { ovison, ndescbit, climbbit } },
{{ "FTREE", "TREE" }, { "LARGE" }, "large tree", { ovison, ndescbit, climbbit } },
{{ "CCLIF", "CLIFF", "LEDGE" }, { "ROCKY", "SHEER" }, "cliff", { ovison, ndescbit, climbbit } },
{{ "WCLIF", "CLIFF" }, { "WHITE" }, "white cliffs", { ovison, ndescbit, climbbit } , obj_funcs::wclif_object},
{{ "WHBK", "BOOK" }, { "WHITE" }, "white book", { ovison, readbit, takebit, contbit, burnbit } , nullptr, { }, { OP(ksl_odesc1, "There is a white book here."), OP(ksl_ocapac, 2), OP(ksl_osize, 10), OP(ksl_oread, greek_to_me) }},
{{ "WHWAL", "WALL", "PANEL" }, { "WHITE" }, "white panel", { ovison, ndescbit } , obj_funcs::mpanels},
{{ "WINDO" }, { }, "window", { ovison, doorbit, ndescbit } , obj_funcs::window_function},
{{ "FUSE", "COIL", "WIRE" }, { "SHINY", "THIN" }, "wire coil", { ovison, takebit, burnbit } , obj_funcs::fuse_function, { }, { OP(ksl_odesc1, "There is a coil of thin shiny wire here."), OP(ksl_osize, 1), OP(ksl_olint, olint_t(0, false,fusin,2)) }},
{{ "WDBAR", "BAR" }, { "WOOD", "WOODE", "CROSS" }, "wooden bar", { ovison, ndescbit } },
{{ "BUCKE" }, { "WOODE" }, "wooden bucket", { ovison, vehbit, openbit } , obj_funcs::bucket, { }, { OP(ksl_odesc1, "There is a wooden bucket here, 3 feet in diameter and 3 feet high."), OP(ksl_ocapac, 100), OP(ksl_osize, 100), OP(ksl_ovtype, rbuckbit) }},
{{ "QDOOR", "DOOR" }, { "WOOD", "WOODE" }, "wooden door", { ovison, doorbit, ndescbit } , obj_funcs::wood_door},
{{ "POSTS", "POST" }, { "WOODE" }, "group of wooden posts", { ovison } },
{{ "WRENC" }, { }, "wrench", { ovison, takebit, toolbit } , nullptr, { }, { OP(ksl_odesc1, "There is a wrench here."), OP(ksl_osize, 10) }},
{{ "YLWAL", "WALL", "PANEL" }, { "YELLO" }, "yellow panel", { ovison, ndescbit } , obj_funcs::mpanels},
{{ "TCHST", "CHEST" }, { "TOOL" }, "group of tool chests", { ovison, ndescbit } , obj_funcs::tool_chest},
{{ "CPANL", "PANEL" }, { "CONTR" }, "control panel", { ovison, ndescbit } },
{{ "BROCH" }, { "FREE" }, "free brochure", { ovison, takebit, burnbit, contbit, openbit, readbit } , obj_funcs::brochure, { "DSTMP"}, { OP(ksl_odesco, "In the mailbox is a large brochure."), OP(ksl_odesc1, "There is a large brochure here."), OP(ksl_osize, 30), OP(ksl_ocapac, 1) }},
{{ "DSTMP", "STAMP" }, { "DON", "WOODS", "DWOOD" }, "Don Woods stamp", { ovison, takebit, burnbit, readbit } , obj_funcs::brochure, { }, { OP(ksl_odesc1, "There is a Don Woods Commemorative stamp here."), OP(ksl_osize, 1), OP(ksl_otval, 1), OP(ksl_oread, "\n---v----v----v----v----v---\n| _______ |\n> One / \\ G <\n| Lousy / \\ U |\n> Point | ___ | E <\n| | (___) | |\n> <--)___(--> P <\n| / / \\ \\ o |\n> / / \\ \\ s <\n| |-|---------|-| t |\n> | | \\ _ / | | a <\n| | | --(_)-- | | g |\n> | | /| |\\ | | e <\n| |-|---|_|---|-| |\n> \\ \\__/_\\__/ / <\n| _/_______\\_ |\n> | f.m.l.c. | <\n| ------------- |\n> <\n| Donald Woods, Editor |\n> Spelunker Today <\n| |\n---^----^----^----^----^---") }},
{{ "BILLS", "STACK", "PILE" }, { "NEAT", "200", "ZORKM" }, "stack of zorkmid bills", { ovison, readbit, takebit, burnbit } , obj_funcs::bills_object, { }, { OP(ksl_odesc1, "200 neatly stacked zorkmid bills are here."), OP(ksl_odesco, "On the floor sit 200 neatly stacked zorkmid bills."), OP(ksl_osize, 10), OP(ksl_otval, 15), OP(ksl_ofval, 10), OP(ksl_oread, "\n______________________________________________________________\n| 1 0 0 GREAT UNDERGROUND EMPIRE 1 0 0 |\n| 1 0 0 0 0 1 0 0 0 0|\n| 1 0 0 0 0 1 0 0 0 0|\n| 1 0 0 DIMWIT 1 0 0 |\n| |||||||||||||||| |\n| || __ __ || B30332744D |\n| || -OO OO- || |\n| IN FROBS \\|| >> ||/ WE TRUST |\n| || ______ || |\n| B30332744D | ------ | |\n| \\\\________// |\n| 1 0 0 Series FLATHEAD LD Flathead 1 0 0 |\n| 1 0 0 0 0 719GUE Treasurer 1 0 0 0 0|\n| 1 0 0 0 0 1 0 0 0 0|\n| 1 0 0 One Hundred Royal Zorkmids 1 0 0 |\n|_____________________________________________________________|\n\n") }},
{{ "PORTR", "PAINT", "ART" }, { "FLATH" }, "portrait of J. Pierpont Flathead", { ovison, readbit, takebit, burnbit } , nullptr, { }, { OP(ksl_odesc1, "The portrait of J. Pierpont Flathead is here."), OP(ksl_odesco, "A portrait of J. Pierpont Flathead hangs on the wall."), OP(ksl_osize, 25), OP(ksl_otval, 5), OP(ksl_ofval, 10), OP(ksl_oread, " \n ||||||||||||||\n || __ __ ||\n || $$ $$ ||\n \\|| >> ||/\n || ______ || \n | -//-- | \n \\\\_//_____// \n ___//| | \n /__// | |\n | |\n __________// \\\\__________\n / $ / **** \\ $ \\\n / / ** \\ \\\n / /| ** |\\ \\\n / / | ** | \\ \\\n / / | ** | \\ \\\n ^ ^__|______$Z$**$Z$______|___^ ^\n \\ * $Z$**$Z$ * /\n \\________*___$Z$**$Z$___*________/\n | $Z$**$Z$ |\n\n J. PIERPONT FLATHEAD\n CHAIRMAN\n") }},
{{ "VAULT", "CUBE", "LETTE" }, { "STONE", "LARGE" }, "large stone cube", { ovison, readbit } , nullptr, { }, { OP(ksl_oread, " Bank of Zork\n VAULT\n *722 GUE*\n Frobozz Magic Vault Company\n") }},
{{ "SCOL", "CURTA", "LIGHT" }, { "SHIMM" }, "shimmering curtain of light", { ovison} , obj_funcs::scol_object},
{{ "ZGNOM", "GNOME" }, { "ZURIC" }, "Gnome of Zurich", { ovison, vicbit, villain } , obj_funcs::zgnome_function, { }, { OP(ksl_odesc1, "There is a Gnome of Zurich here.") }},
{{ "NEST" }, { "BIRDS", "SMALL" }, "birds nest", { ovison, takebit, burnbit, openbit } , nullptr, { "EGG"}, { OP(ksl_odesc1, "There is a small birds nest here."), OP(ksl_odesco, "On the branch is a small birds nest."), OP(ksl_ocapac, 20) }},
{{ "EGG" }, { "BIRDS", "ENCRU" }, "jewel-encrusted egg", { ovison, takebit, contbit } , obj_funcs::egg_object, { "GCANA"}, { OP(ksl_ofval, 5), OP(ksl_otval, 5), OP(ksl_odesc1, "There is a jewel-encrusted egg here."), OP(ksl_ocapac, 6), OP(ksl_odesco, "In the bird's nest is a large egg encrusted with precious jewels,\napparently scavenged somewhere by a childless songbird. The egg is \ncovered with fine gold inlay, and ornamented in lapis lazuli and\nmother-of-pearl. Unlike most eggs, this one is hinged and has a\ndelicate looking clasp holding it closed. The egg appears extremely\nfragile.") }},
{{ "BEGG", "EGG" }, { "BROKE", "BIRDS", "ENCRU" }, "broken jewel-encrusted egg", { ovison, takebit, contbit, openbit } , nullptr, { "BCANA"}, { OP(ksl_ocapac, 6), OP(ksl_odesc1, "There is a somewhat ruined egg here.") }},
{{ "BAUBL" }, { "BRASS", "BEAUT" }, "beautiful brass bauble", { ovison, takebit } , nullptr, { }, { OP(ksl_ofval, 1), OP(ksl_otval, 1), OP(ksl_odesc1, "There is a beautiful brass bauble here.") }},
{{ "GCANA", "CANAR" }, { "CLOCK", "MECHA", "GOLD", "GOLDE" }, "clockwork canary", { ovison, takebit } , obj_funcs::canary_object, { }, { OP(ksl_ofval, 6), OP(ksl_otval, 2), OP(ksl_odesc1, "There is golden clockwork canary here."), OP(ksl_odesco, "There is a golden clockwork canary nestled in the egg. It has ruby\neyes and a silver beak. Through a crystal window below its left\nwing you can see intricate machinery inside. It appears to have\nwound down.") }},
{{ "BCANA", "CANAR" }, { "BROKE", "CLOCK", "MECHA", "GOLD", "GOLDE" }, "broken clockwork canary", { ovison, takebit } , obj_funcs::canary_object, { }, { OP(ksl_odesc1, "There is a non-functional canary here."), OP(ksl_odesco, "There is a golden clockwork canary nestled in the egg. It seems to\nhave recently had a bad experience. The mountings for its jewel-like\neyes are empty, and its silver beak is crumpled. Through a cracked\ncrystal window below its left wing you can see the remains of\nintricate machinery. It is not clear what result winding it would\nhave, as the mainspring seems sprung.") }},
{{ "WARNI", "NOTE", "PAPER", "PIECE" }, { }, "note of warning", { ovison, takebit, readbit, burnbit } , nullptr, { }, { OP(ksl_odesc1, "There is a piece of paper on the ground here."), OP(ksl_oread, "\nThe paper is rather worn; although the writing is barely legible (the\nauthor probably had only a used pencil), it is a very elegant\ncopperplate.\n \nTo Whom It May Concern:\n\n I regret to report that the rumours regarding treasure contained\nin the chamber to which this passage leads have no basis in fact.\nShould you nevertheless be sufficiently foolhardy to enter, it will\nbe quite impossible for you to exit.\n \n Sincerely yours,\n The Thief\n") }},
{{ "CPSLT", "SLIT", "SLOT" }, { "SMALL" }, "small slit", { ovison, ndescbit, openbit } , obj_funcs::cpslt_object, { }, { OP(ksl_ocapac, 4) }},
{{ "CPDR2", "DOOR" }, { "STEEL" }, "steel door", { ovison, ndescbit } },
{{ "CPDOR", "DOOR" }, { "STEEL" }, "steel door", { ovison, ndescbit } },
{{ "GCARD", "CARD" }, { "GOLD" }, "gold card", { takebit, ovison, readbit } , nullptr, { }, { OP(ksl_odesc1, "There is a solid gold engraved card here."), OP(ksl_odesco, "Nestled inside the niche is an engraved gold card."), OP(ksl_oread, "\n ____________________________________________________________\n| |\n| FROBOZZ MAGIC SECURITY SYSTEMS |\n| Door Pass Royal Zork Puzzle Museum |\n| |\n| #632-988-496-XTHF |\n| |\n| |\n| USE OF THIS PASS BY UNAUTHORIZED PERSONS OR AFTER |\n| EXPIRATION DATE WILL RESULT IN IMMEDIATE CONFISCATION |\n| |\n| |\n| (approved) |\n| Will Weng |\n| 789 G.U.E. |\n| |\n| Expires 792 G.U.E. |\n|____________________________________________________________|\n"), OP(ksl_otval, 15), OP(ksl_ofval, 10), OP(ksl_osize, 4) }},
{{ "PDOOR", "DOOR" }, { "WOODE", "OAK" }, "door made of oak", { ovison, doorbit, contbit } , obj_funcs::pdoor_function},
{{ "PWIND", "WINDO" }, { "BARRE" }, "barred window", { ovison, doorbit } , obj_funcs::pwind_function},
{{ "PLID1", "LID" }, { "METAL" }, "metal lid", { ovison, ndescbit, contbit } , obj_funcs::plid_function},
{{ "PLID2", "LID" }, { "METAL" }, "metal lid", { ovison, ndescbit, contbit, openbit } , obj_funcs::plid_function},
{{ "PTABL", "TABLE" }, { "DUSTY", "WOODE" }, "table", { ovison, ndescbit } },
{{ "PCRAK", "CRACK" }, { "NARRO" }, "narrow crack", { ovison, ndescbit } },
{{ "PKH1", "KEYHO", "HOLE" }, { }, "keyhole", { ovison, ndescbit, openbit } , obj_funcs::pkh_function, { }, { OP(ksl_ocapac, 12) }},
{{ "PKH2", "KEYHO", "HOLE" }, { }, "keyhole", { ovison, ndescbit, openbit } , obj_funcs::pkh_function, { "PKEY"}, { OP(ksl_ocapac, 12) }},
{{ "PKEY", "KEY" }, { "IRON", "RUSTY" }, "rusty iron key", { ovison, takebit, ndescbit, turnbit, toolbit } , obj_funcs::pkey_function, { }, { OP(ksl_odesco, ""), OP(ksl_odesc1, "There is a rusty iron key here.") }},
{{ "PALAN", "STONE", "SPHER" }, { "GLASS", "SEEIN", "CRYST", "BLUE" }, "blue crystal sphere", { ovison, takebit } , obj_funcs::palantir, { }, { OP(ksl_otval, 5), OP(ksl_ofval, 10), OP(ksl_odesco, "In the center of the table sits a blue crystal sphere."), OP(ksl_odesc1, "There is blue crystal sphere here.") }},
{{ "MAT" }, { "WELCO", "RUBBE" }, "welcome mat", { ovison, takebit, readbit } , obj_funcs::mat_function, { }, { OP(ksl_odesco, "A rubber mat saying 'Welcome to Zork!' lies by the door."), OP(ksl_odesc1, "There is a welcome mat here."), OP(ksl_oread, "Welcome to Zork!"), OP(ksl_osize, 12) }},
{{ "STOVE" }, { "OLD" }, "old coal stove", { ovison, ndescbit, flamebit, onbit } , obj_funcs::stove_function},
{{ "PAL3", "PALAN", "STONE", "SPHER" }, { "GLASS", "SEEIN", "CRYST", "RED" }, "red crystal sphere", { ovison, takebit } , obj_funcs::palantir, { }, { OP(ksl_otval, 5), OP(ksl_ofval, 10), OP(ksl_odesco, "On the floor sits a red crystal sphere."), OP(ksl_odesc1, "There is red crystal sphere here.") }},
};