act3.1 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. ; "SUBTITLE TOMB OF THE UNKNOWN IMPLEMENTER"
  2. <DEFINE COKE-BOTTLES ()
  3. <COND (<VERB? "THROW" "MUNG">
  4. <TELL
  5. "Congratulations! You've managed to break all those bottles.
  6. Fortunately for your feet, they were made of magic glass and disappear
  7. immediately." ,LONG-TELL1>
  8. <TRZ <PRSO> ,OVISON>
  9. <OSIZE <PRSO> 0>
  10. T)>>
  11. <DEFINE HEAD-FUNCTION ("AUX" (NL ()) (LCASE <FIND-OBJ "LCASE">))
  12. #DECL ((NL) <LIST [REST OBJECT]> (LCASE) OBJECT)
  13. <COND (<VERB? "HELLO">
  14. <TELL "The implementers are dead; therefore they do not respond.">)
  15. (<NOT <VERB? "READ">>
  16. <TELL
  17. "Although the implementers are dead, they foresaw that some cretin
  18. would tamper with their remains. Therefore, they took steps to
  19. punish such actions." ,LONG-TELL1>
  20. <SET NL <ROB-ADV ,WINNER .NL>>
  21. <SET NL <ROB-ROOM ,HERE .NL 100>>
  22. <COND (<NOT <EMPTY? .NL>>
  23. <OR <OROOM .LCASE> <INSERT-OBJECT .LCASE <FIND-ROOM "LROOM">>>
  24. <PUT .LCASE ,OCONTENTS (!<OCONTENTS .LCASE> !.NL)>)>
  25. <JIGS-UP
  26. "Unfortunately, we've run out of poles. Therefore, in punishment for
  27. your most grievous sin, we shall deprive you of all your valuables,
  28. and of your life.">
  29. T)>>
  30. <SETG THEN 0>
  31. \
  32. ; "SUBTITLE A DROP IN THE BUCKET"
  33. <SETG BUCKET-TOP!-FLAG <>>
  34. <DEFINE BUCKET ("OPTIONAL" (ARG <>)
  35. "AUX" (W <FIND-OBJ "WATER">) (BUCK <FIND-OBJ "BUCKE">))
  36. #DECL ((ARG) <OR FALSE ATOM> (W BUCK) OBJECT)
  37. <COND (<==? .ARG READ-IN> <>)
  38. (<AND <VERB? "C-INT">
  39. <COND (<MEMQ .W <OCONTENTS .BUCK>>
  40. <REMOVE-OBJECT .W>
  41. <>)
  42. (T)>>)
  43. (<==? .ARG READ-OUT>
  44. <COND (<AND <==? <OCAN .W> .BUCK> <NOT ,BUCKET-TOP!-FLAG>>
  45. <TELL "The bucket rises and comes to a stop.">
  46. <SETG BUCKET-TOP!-FLAG T>
  47. <PASS-THE-BUCKET <FIND-ROOM "TWELL"> .BUCK>
  48. <CLOCK-INT ,BCKIN 100>
  49. <>)
  50. (<AND ,BUCKET-TOP!-FLAG <N==? <OCAN .W> .BUCK>>
  51. <TELL "The bucket descends and comes to a stop.">
  52. <SETG BUCKET-TOP!-FLAG <>>
  53. <PASS-THE-BUCKET <FIND-ROOM "BWELL"> .BUCK>)>)>>
  54. <DEFINE PASS-THE-BUCKET (R B "AUX" (PRSO <PRSO>) (PRSVEC ,PRSVEC))
  55. #DECL ((R) ROOM (B) OBJECT (PRSVEC) VECTOR (PRSO) OBJECT)
  56. <PUT .PRSVEC 2 <>>
  57. <REMOVE-OBJECT .B>
  58. <INSERT-OBJECT .B .R>
  59. <COND (<==? <AVEHICLE ,WINNER> .B>
  60. <GOTO .R>
  61. <ROOM-INFO>)>
  62. <PUT .PRSVEC 2 .PRSO>>
  63. \
  64. ; "SUBTITLE CHOMPERS IN WONDERLAND"
  65. <DEFINE EATME-FUNCTION ("AUX" R C (HERE ,HERE))
  66. #DECL ((C) OBJECT (HERE R) ROOM)
  67. <COND (<AND <VERB? "EAT">
  68. <==? <PRSO> <SET C <FIND-OBJ "ECAKE">>>
  69. <==? .HERE <FIND-ROOM "ALICE">>>
  70. <TELL
  71. "Suddenly, the room appears to have become very large.">
  72. <REMOVE-OBJECT .C>
  73. <SET R <FIND-ROOM "ALISM">>
  74. <TRZ <FIND-OBJ "ROBOT"> ,OVISON>
  75. <PUT .R ,ROBJS <ROBJS .HERE>>
  76. <MAPF <>
  77. <FUNCTION (X) #DECL ((X) OBJECT)
  78. <OSIZE .X <* 64 <OSIZE .X>>>
  79. <PUT .X ,OROOM .R>>
  80. <ROBJS .HERE>>
  81. <GOTO .R>)>>
  82. <DEFINE CAKE-FUNCTION ("AUX" (RICE <FIND-OBJ "RDICE">) (OICE <FIND-OBJ "ORICE">)
  83. (BICE <FIND-OBJ "BLICE">) (HERE ,HERE) R)
  84. #DECL ((RICE OICE BICE) OBJECT (HERE R) ROOM)
  85. <COND (<VERB? "READ">
  86. <COND (<NOT <EMPTY? <PRSI>>>
  87. <COND (<==? <PRSI> <FIND-OBJ "BOTTL">>
  88. <TELL
  89. "The letters appear larger, but still are too small to be read.">)
  90. (<==? <PRSI> <FIND-OBJ "FLASK">>
  91. <TELL "The icing, now visible, says '"
  92. 1
  93. <COND (<==? <PRSO> .RICE> "Evaporate")
  94. (<==? <PRSO> .OICE> "Explode")
  95. ("Enlarge")>
  96. "'.">)
  97. (<TELL "You can't see through that!">)>)
  98. (<TELL
  99. "The only writing legible is a capital E. The rest is too small to
  100. be clearly visible.">)>)
  101. (<AND <VERB? "EAT"> <MEMBER "ALI" <STRINGP <RID .HERE>>>>
  102. <COND (<==? <PRSO> .OICE>
  103. <REMOVE-OBJECT <PRSO>>
  104. <ICEBOOM>)
  105. (<==? <PRSO> .BICE>
  106. <REMOVE-OBJECT <PRSO>>
  107. <TELL "The room around you seems to be getting smaller.">
  108. <COND (<==? .HERE <FIND-ROOM "ALISM">>
  109. <SET R <FIND-ROOM "ALICE">>
  110. <TRO <FIND-OBJ "ROBOT"> ,OVISON>
  111. <PUT .R ,ROBJS <ROBJS .HERE>>
  112. <MAPF <>
  113. <FUNCTION (X) #DECL ((X) OBJECT)
  114. <PUT .X ,OROOM .R>
  115. <OSIZE .X </ <OSIZE .X> 64>>>
  116. <ROBJS .HERE>>
  117. <GOTO .R>)
  118. (<JIGS-UP ,CRUSHED>)>)>)
  119. (<AND <VERB? "THROW">
  120. <==? <PRSO> .OICE>
  121. <MEMBER "ALI" <STRINGP <RID .HERE>>>>
  122. <REMOVE-OBJECT <PRSO>>
  123. <ICEBOOM>)
  124. (<AND <VERB? "THROW">
  125. <==? <PRSO> .RICE>
  126. <==? <PRSI> <FIND-OBJ "POOL">>>
  127. <REMOVE-OBJECT <PRSI>>
  128. <TELL
  129. "The pool of water evaporates, revealing a tin of rare spices.">
  130. <TRO <FIND-OBJ "SAFFR"> ,OVISON>)>>
  131. <DEFINE FLASK-FUNCTION ()
  132. <COND (<VERB? "OPEN">
  133. <MUNG-ROOM ,HERE "Noxious vapors prevent your entry.">
  134. <JIGS-UP ,VAPORS>)
  135. (<VERB? "MUNG" "THROW">
  136. <TELL "The flask breaks into pieces.">
  137. <TRZ <PRSO> ,OVISON>
  138. <JIGS-UP ,VAPORS>)>>
  139. <DEFINE ICEBOOM ()
  140. <MUNG-ROOM ,HERE ,ICEMUNG>
  141. <JIGS-UP ,ICEBLAST>>
  142. <DEFINE MAGNET-ROOM ()
  143. <COND (<VERB? "LOOK">
  144. <TELL
  145. "You are in a room with a low ceiling which is circular in shape.
  146. There are exits to the east and the southeast.">)
  147. (<AND <VERB? "GO-IN"> ,CAROUSEL-FLIP!-FLAG>
  148. <COND (,CAROUSEL-ZOOM!-FLAG
  149. <JIGS-UP <COND (<==? ,PLAYER ,WINNER> ,SPINDIZZY)
  150. (ELSE ,SPINROBOT)>>)
  151. (<TELL
  152. "As you enter, your compass starts spinning wildly.">
  153. <>)>)>>
  154. <DEFINE MAGNET-ROOM-EXIT ("AUX" (PV ,PRSVEC) (DIR <2 .PV>))
  155. #DECL ((DIR) DIRECTION (PV) <VECTOR [3 ANY]>)
  156. <COND (,CAROUSEL-FLIP!-FLAG
  157. <TELL "You cannot get your bearings...">
  158. <COND (<PROB 50>
  159. <FIND-ROOM "CMACH">)
  160. (<FIND-ROOM "ALICE">)>)
  161. (<==? .DIR <FIND-DIR "E">>
  162. <FIND-ROOM "CMACH">)
  163. (<OR <==? .DIR <FIND-DIR "SE">>
  164. <==? .DIR <FIND-DIR "OUT">>>
  165. <FIND-ROOM "ALICE">)>>
  166. <DEFINE CMACH-ROOM ()
  167. <COND (<VERB? "LOOK">
  168. <TELL ,CMACH-DESC ,LONG-TELL1>)>>
  169. <SETG CAROUSEL-ZOOM!-FLAG <>>
  170. <SETG CAROUSEL-FLIP!-FLAG <>>
  171. <DEFINE BUTTONS ("AUX" I)
  172. #DECL ((I) OBJECT)
  173. <COND (<VERB? "PUSH">
  174. <COND (<==? ,WINNER ,PLAYER>
  175. <JIGS-UP
  176. "There is a giant spark and you are fried to a crisp.">)
  177. (<==? <PRSO> <FIND-OBJ "SQBUT">>
  178. <COND (,CAROUSEL-ZOOM!-FLAG
  179. <TELL "Nothing seems to happen.">)
  180. (<SETG CAROUSEL-ZOOM!-FLAG T>
  181. <TELL "The whirring increases in intensity slightly.">)>)
  182. (<==? <PRSO> <FIND-OBJ "RNBUT">>
  183. <COND (,CAROUSEL-ZOOM!-FLAG
  184. <SETG CAROUSEL-ZOOM!-FLAG <>>
  185. <TELL "The whirring decreases in intensity slightly.">)
  186. (<TELL "Nothing seems to happen.">)>)
  187. (<==? <PRSO> <FIND-OBJ "TRBUT">>
  188. <SETG CAROUSEL-FLIP!-FLAG <NOT ,CAROUSEL-FLIP!-FLAG>>
  189. <COND (<==? <OROOM <SET I <FIND-OBJ "IRBOX">>>
  190. <FIND-ROOM "CAROU">>
  191. <TELL
  192. "A dull thump is heard in the distance.">
  193. <TRC .I ,OVISON>
  194. <COND (<TRNN .I ,OVISON>
  195. <RTRZ <FIND-ROOM "CAROU"> ,RSEENBIT>)>
  196. T)
  197. (<TELL "Click.">)>)>)>>
  198. <SETG CAGE-SOLVE!-FLAG <>>
  199. <DEFINE SPHERE-FUNCTION ("AUX" (R <FIND-OBJ "ROBOT">) C FL RACT)
  200. #DECL ((C) ROOM (R) OBJECT (FL) <OR ATOM FALSE> (RACT) ADV)
  201. <SET FL <AND <NOT ,CAGE-SOLVE!-FLAG> <VERB? "TAKE">>>
  202. <COND (<AND .FL <==? ,PLAYER ,WINNER>>
  203. <TELL
  204. "As you reach for the sphere, a steel cage falls from the ceiling
  205. to entrap you. To make matters worse, poisonous gas starts coming
  206. into the room." ,LONG-TELL1>
  207. <COND (<==? <OROOM .R> ,HERE>
  208. <GOTO <SET C <FIND-ROOM "CAGED">>>
  209. <REMOVE-OBJECT .R>
  210. <INSERT-OBJECT .R .C>
  211. <PUT <SET RACT <OACTOR .R>> ,AROOM .C>
  212. <TRO .R ,NDESCBIT>
  213. <SETG SPHERE-CLOCK <CLOCK-INT ,SPHIN 10>>
  214. T)
  215. (ELSE
  216. <TRZ <FIND-OBJ "SPHER"> ,OVISON>
  217. <MUNG-ROOM <FIND-ROOM "CAGER">
  218. "You are stopped by a cloud of poisonous gas.">
  219. <JIGS-UP ,POISON>)>)
  220. (.FL
  221. <TRZ <FIND-OBJ "SPHER"> ,OVISON>
  222. <JIGS-UP ,ROBOT-CRUSH>
  223. <REMOVE-OBJECT .R>
  224. <TRZ <PRSO> ,OVISON>
  225. <INSERT-OBJECT <FIND-OBJ "RCAGE"> ,HERE>
  226. T)
  227. (<VERB? "C-INT">
  228. <MUNG-ROOM <FIND-ROOM "CAGER">
  229. "You are stopped by a cloud of poisonous gas.">
  230. <JIGS-UP ,POISON>)>>
  231. <DEFINE CAGED-ROOM ()
  232. <COND (,CAGE-SOLVE!-FLAG <SETG HERE <FIND-ROOM "CAGER">>)>>
  233. <GDECL (SPHERE-CLOCK) CEVENT (ROBOT-ACTIONS) <UVECTOR [REST VERB]>>
  234. <DEFINE ROBOT-ACTOR ("AUX" C CAGE (R <FIND-OBJ "ROBOT">) RACT)
  235. #DECL ((C) ROOM (CAGE) OBJECT (R) OBJECT (RACT) ADV)
  236. <COND (<AND <VERB? "RAISE"> <==? <PRSO> <FIND-OBJ "CAGE">>>
  237. <TELL "The cage shakes and is hurled across the room.">
  238. <CLOCK-DISABLE ,SPHERE-CLOCK>
  239. <SETG WINNER ,PLAYER>
  240. <GOTO <SET C <FIND-ROOM "CAGER">>>
  241. <INSERT-OBJECT <SET CAGE <FIND-OBJ "CAGE">> .C>
  242. <TRO .CAGE ,TAKEBIT>
  243. <TRZ .CAGE ,NDESCBIT>
  244. <TRZ .R ,NDESCBIT>
  245. <TRO <FIND-OBJ "SPHER"> ,TAKEBIT>
  246. <REMOVE-OBJECT .R>
  247. <INSERT-OBJECT .R .C>
  248. <PUT <SET RACT <OACTOR .R>> ,AROOM .C>
  249. <SETG CAGE-SOLVE!-FLAG T>)
  250. (<VERB? "EAT" "DRINK">
  251. <TELL
  252. "\"I am sorry but that action is difficult for a being with no mouth.\"">)
  253. (<VERB? "READ">
  254. <TELL
  255. "\"My vision is not sufficiently acute to read such small type.\"">)
  256. (<MEMQ <PRSA> ,ROBOT-ACTIONS> <>)
  257. (<TELL
  258. "\"I am only a stupid robot and cannot perform that command.\"">)>>
  259. <DEFINE CRETIN ("AUX" (ME ,PLAYER))
  260. #DECL ((ME) ADV)
  261. <COND (<AND <VERB? "GIVE"> <NOT <TRNN <PRSO> ,NO-CHECK-BIT>>>
  262. <REMOVE-OBJECT <PRSO>>
  263. <PUT .ME ,AOBJS (<PRSO> !<AOBJS .ME>)>
  264. <TELL "Done.">)
  265. (<VERB? "KILL" "MUNG">
  266. <JIGS-UP
  267. "If you insist.... Poof, you're dead!">)
  268. (<VERB? "TAKE">
  269. <TELL "How romantic!">)>>
  270. <DEFINE ROBOT-FUNCTION ("AUX" AA)
  271. #DECL ((AA) ADV)
  272. <COND (<VERB? "GIVE">
  273. <SET AA <OACTOR <PRSI>>>
  274. <REMOVE-OBJECT <PRSO>>
  275. <PUT .AA ,AOBJS (<PRSO> !<AOBJS .AA>)>
  276. <TELL "The robot gladly takes the "
  277. 1
  278. <ODESC2 <PRSO>>
  279. "
  280. and nods his head-like appendage in thanks.">)
  281. (<VERB? "THROW" "MUNG">
  282. <TELL
  283. "The robot is injured (being of shoddy construction) and falls to the
  284. floor in a pile of garbage, which disintegrates before your eyes." ,LONG-TELL1>
  285. <REMOVE-OBJECT <COND (<VERB? "THROW"> <PRSI>) (<PRSO>)>>)>>
  286. \
  287. ; "SUBTITLE MORE RANDOM VERBS"
  288. <DEFINE KNOCK ()
  289. <COND (<OBJECT-ACTION>)
  290. (<MEMQ <PSTRING "DOOR"> <ONAMES <PRSO>>>
  291. <TELL "I don't think that anybody's home.">)
  292. (<TELL "Why knock on a " 0 <ODESC2 <PRSO>> "?">)>>
  293. <DEFINE CHOMP ()
  294. <TELL "I don't know how to do that. I win in all cases!">>
  295. <DEFINE FROBOZZ ()
  296. <TELL "The FROBOZZ Corporation created, owns, and operates this dungeon.">>
  297. <DEFINE WIN ()
  298. <TELL "Naturally!">>
  299. <DEFINE YELL ()
  300. <TELL "Aaaarrrrrrrrgggggggggggggghhhhhhhhhhhhhh!">>