home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / vmsnet / monhl104 / part28 < prev    next >
Internet Message Format  |  1992-08-02  |  45KB

  1. Path: uunet!mcsun!news.funet.fi!hydra!klaava!hurtta
  2. From: Kari.Hurtta@Helsinki.FI (Kari E. Hurtta)
  3. Newsgroups: vmsnet.sources.games
  4. Subject: Monster Helsinki V 1.04 - part 28/32
  5. Keywords: Monster, a multiplayer adventure game
  6. Message-ID: <1992Jun14.094907.13854@klaava.Helsinki.FI>
  7. Date: 14 Jun 92 09:49:07 GMT
  8. Sender: hurtta@klaava.Helsinki.FI (Kari Hurtta)
  9. Followup-To: vmsnet.sources.d
  10. Organization: University of Helsinki
  11. Lines: 941
  12.  
  13. Archieve-name: monster_helsinki_104/part28
  14. Author: Kari.Hurtta@Helsinki.FI
  15. Product: Monster Helsinki V 1.04
  16. Environment: VMS, Pascal
  17. Part: 28/32
  18.  
  19. -+-+-+-+-+-+-+-+ START OF PART 28 -+-+-+-+-+-+-+-+
  20. X        o Specify how game objects function
  21. X        o Provide text descriptions for events that may happen
  22. X`032
  23. X  For example, a player in Monster could create a room named "Great`032
  24. X  Hall", provide a textual description for it (which other players`032
  25. X  would see upon entering the rooms), and describe special features`032
  26. X  of the room (for instance, a brass plaque on the wall).
  27. X`032
  28. X  Here's what another player who walked into the room described above`032
  29. X  would see (lines beginning with > are the player's input):
  30. X`032
  31. X  > look
  32. X  You're in Great Hall
  33. X  You're in the middle of a vast hall stretching out of sight to the
  34. X  east and west.  Strange shadows play across the high vaulted ceiling.
  35. X  The floor is set with smooth rectangular stones.  The walls feel slightly
  36. X  cold to the touch, and damp with condensation.  A copper plaque, slightly
  37. X  green with age, is set into one wall.
  38. X`032
  39. X  > look plaque
  40. X`032
  41. X  The plaque looks very old and corroded.   However, you can still make out
  42. X  the writing:
  43. X`032
  44. X  " Monster, created by Rich Skrenta, 1988.  Play at your own risk. "
  45. X`032
  46. X  Now the creator of the rooms could add a secret passage, perhaps`032
  47. X  hidden underneath some stones in the floor.  To do this, first the`032
  48. X  player would describe what the stones looked like, then make a hidden`032
  49. X  exit to another location with a special command which would activate`032
  50. X  it.  Here's what the player would see after making these changes:
  51. X`032
  52. X  > show details
  53. X  Details here that you may inspect:
  54. X      stones
  55. X      plaque
  56. X  > look stones
  57. X  The stones are rough and black, and cold to the touch.  Although the
  58. X  mortar work appears to have been expertly done, it has decayed with time.
  59. X  Many stones are cracked, and narrow spaces fracture the carefully laid
  60. X  pattern.  Some of the stones are quite loose.  You might be able to lift
  61. X  one of them with some effort.
  62. X  > lift
  63. X  With great effort, you manage to lift the stone enough to fit inside.
  64. X`032
  65. X  Once below the stone, it falls back into place, sealing out the light
  66. X  from above.  You squirm down the narrow tunnel . . .
  67. X`032
  68. X  This example only hints at the details that actually go into the`032
  69. X  creation of a realistic game puzzle.  To set up a rich game location,`032
  70. X  a player would have to
  71. X  specify:
  72. X`032
  73. X        o A textual description of the room, as well as separate description
  74. Vs
  75. X          for various rooms details (in the example above, the plaque and
  76. X          the stones are room details)
  77. X        o A description of each of the possible exits from the rooms (there
  78. X          might be no description if the exit is hidden)
  79. X        o What happens when an object is dropped at the location (for exampl
  80. Ve,
  81. X          if a player is swimming and he drops something, the object should
  82. X          sink) as well as a message describing what happened to the object
  83. X        o For each exit, a set of messages and parameters including:
  84. X                - the name of the exit
  85. X                - whether the exit requires a special object to pass (for
  86. X                  example, a door key or some magic object)
  87. X                - a message displayed to the player if he can't successfully
  88. X                  leave through the exit (if he doesn't have the key, for
  89. X                  instance)
  90. X                - an optional message that the player sees when he goes
  91. X                  through an exit (in the example above, the text "Once belo
  92. Vw
  93. X                  the stone, it falls back into place...." is such a message
  94. V)
  95. X                - a message that players inside the room see when someone
  96. X                  leaves through the exit
  97. X                - a message that players inside the room see when another
  98. X                  player enters the room through the exit
  99. X`009`009- special features specific to this exit
  100. X                - miscellaneous other parameters
  101. X`032
  102. X`032
  103. X`032
  104. X3 Technical_Aspects
  105. X`032
  106. X  Each player who plays the Monster game runs a separate copy of the`032
  107. X  game.  Each individual Monster process shares a database containing`032
  108. X  all of the information about the simulated world, including:
  109. X`032
  110. X        o Records describing all of the rooms, interconnections between`032
  111. X          rooms, objects, and descriptions for the above
  112. X        o The locations of every player and object
  113. X        o A special shared file used for interprocess communication
  114. X`032
  115. X  Each of the Monster database files are organized as a linear collection
  116. X  of fixed-length records.  Monster uses the following files:
  117. X`032
  118. X        roomfile:       file of records containing data on Monster locations
  119. X        namfile:        file containing names for objects, rooms and people
  120. X        descfile:       file of text description blocks (10 lines maximum)
  121. X        linefile:       file of short (one line) descriptions
  122. X        intfile:        file of various integer parameters
  123. X        objfile:        file of records containing data on Monster objects
  124. X        indexfile:      file of bitmaps for the other files; used to mark
  125. X                        free/inuse records for dynamic allocation
  126. X        eventfile:      file of records used for interprocess communication
  127. X`009spellfile:      contains player's spell information
  128. X`032
  129. X`032
  130. X4 Record_Locking
  131. X`032
  132. X  When Monster tries to access a record in one of the shared data`032
  133. X  files, it first makes a read attempt on the record.  If the record`032
  134. X  is available (no other Monster process is reading or writing it) VMS`032
  135. X  will lock and read the record and return successfully.  If another`032
  136. X  process has locked the record, VMS will return an error condition. `032
  137. X  In this case the Monster process will wait a small random amount of`032
  138. X  time and attempt to read the record again.  Then if the Monster program`03
  139. V2
  140. X  cannot successfully read and lock the record after a certain number of
  141. X  retries, it prints an error message and aborts.
  142. X`032
  143. X  In initial versions of Monster a count was kept of how many times`032
  144. X  two processes would "collide" when both wanted to read one record. `032
  145. X  The random wait dramatically reduced this hit count.
  146. X`032
  147. X  Monster's response time using this scheme is acceptable when the`032
  148. X  load on the VAX is not too high.  However, it does have some`032
  149. X  drawbacks.  The first is that a data record being read by a Monster`032
  150. X  process is locked for a short time, even if the process has no`032
  151. X  intention of writing to it.  Also, the collide-and-wait approach is`032
  152. X  somewhat crude considering VMS has extensive record locking facilities`032
  153. X  which are capable not only of allowing multiple-read access to a`032
  154. X  record but also of queueing processes desiring to write-lock a record.
  155. X  Unfortunately, the use of these facilities requires special VMS`032
  156. X  priviliges not available to ordinary users.  During testing on a`032
  157. X  VAX 8800 running VMS 5.1 with over 50 interactive users and 14`032
  158. X  players response time was fast enough for most picky users.
  159. X`032
  160. X`032
  161. X4 Interprocess_Communication
  162. X`032
  163. X  Monster processes communicate through a shared file.  A communication`032
  164. X  from one process to another is referred to as an event; the shared`032
  165. X  file for communication is called the event file.  Two player processes`032
  166. X  will only need to communicate if both players are in the same location,`03
  167. V2
  168. X  since actions in one room won't affect gamers elsewhere.  However,`032
  169. X  when two or more players are in the same location, quite a lot of events`0
  170. V32
  171. X  may happen:
  172. X`032
  173. X        o Notification of entry and exit -- players in the room must see whe
  174. Vn
  175. X          other players come and go
  176. X        o Notification of various actions -- such as picking up and dropping
  177. X          objects, taking inventory and closely examining things
  178. X        o Messages when players talk to each other in the game
  179. X        o Primary, target and third-party events for fighting -- the player
  180. X          throwing the punch sees one thing, the person being hit another,
  181. X          and somone else watching sees a third message.
  182. X`032
  183. X  Because only player processes in the same Monster game location`032
  184. X  need to communicate, each room has an associated event file record. `032
  185. X  Each event file record contains a circular list of events with a`032
  186. X  pointer to the most recent event.  When a player enters a new room,`032
  187. X  either by moving or joining the game, the Monster process reads the`032
  188. X  event file record for the room and makes a local copy of the current`032
  189. X  event pointer.  At periodic intervals, the Monster process will reread`032
  190. X  the event file record and compare its local pointer to the one in the`032
  191. X  event file.  If they are different, other player processes have logged
  192. X  events to the event record, and the Monster process will pull them`032
  193. X  off the list, handle them, and update its own local pointer.  When`032
  194. X  a process needs to log an event, it write-locks the event file record,`032
  195. X  writes a new event, and updates the event file pointer.
  196. X`032
  197. X  There are over sixty different events that a Monster process can`032
  198. X  initiate or handle; each event can be interpreted differently`032
  199. X  according to circumstances. For example, player A may whisper`032
  200. X  something to player B.  Suppose player C is also in the room. `032
  201. X  Player A's process logs an event containing the message, the event`032
  202. X  type ("whisper") and the target of the whisper (player B) to the
  203. X  event file record associated with their current location.
  204. X`032
  205. X  > whisper b
  206. X  >> Hey b, this is something I whispered to you.
  207. X`032
  208. X  Player B's process will receive and handle the event:
  209. X`032
  210. X  A whispers, "Hey b, this is something I whispered to you."
  211. X`032
  212. X  Player C's process will also receive and handle the event. `032
  213. X  Usually C will only see A and B whispering together:
  214. X`032
  215. X  A is whispering to B.
  216. X`032
  217. X  However, there is a small chance that C will overhear the message:
  218. X`032
  219. X  You overhear A whispering to B:
  220. X    "Hey b, this is something I whispered to you."
  221. X`032
  222. X  This method of interprocess communication requires that all`032
  223. X  Monster processes frequently read the event file to see if any`032
  224. X  events have occured.  This might seem less efficient than another`032
  225. X  scheme possibly using VMS mailboxes or shared memory.  Lack of`032
  226. X  sufficient VMS privileges prevented me from using shared memory. `032
  227. X  Mailboxes might be more efficient, especially if used with the Vax's
  228. X  interrupt system.  However, several problems would be present:
  229. X`032
  230. X        o In order to allow any process to communicate with any other,
  231. X          full interconnection would be necessary.  In addition, since VMS
  232. X          mailboxes only transmit data in one direction, n Monster processes
  233. X          would require 2n mailboxes.  A scheme using mailboxes would quickl
  234. Vy
  235. X          exhaust process quota limits.
  236. X`032
  237. X        o It is somewhat awkward to set up mailboxes and even more difficult
  238. X          to inform other processes of their presence.  Once again, I believ
  239. Ve
  240. X          that special VMS privileges might be necessary to do this.
  241. X`032
  242. X  The event file scheme of communication has proven flexible and is`032
  243. X  fast enough when the VAX load is not high.
  244. X`032
  245. X`032
  246. X4 Maintaining_a_Player's_Existence_in_the_Database
  247. X`032
  248. X  When a user runs Monster, it first checks a playerlog to see if`032
  249. X  he has ever played before.  If so, the player is restored to the`032
  250. X  state he was in when he last played, just before issuing the QUIT`032
  251. X  command.  In the user is not found in the playerlog, he is started`032
  252. X  out at an initial location, somewhat in the center of the world.
  253. X`032
  254. X  To place a player into a location, Monster scans the room record`032
  255. X  for a free "person" slot to put the player's index into.  Once the`032
  256. X  player is part of the room record, he will be visible to other`032
  257. X  players who are also in that room (providing he hasn't hidden`032
  258. X  himself), and they will be able to interact with him.
  259. X`032
  260. X  A dangerous situation occurs when a player process dies or becomes`032
  261. X  disconnected for some reason.  In this case, the room record shows`032
  262. X  that a certain player is in a location, but in fact there is no`032
  263. X  controlling Monster process for that player.  There will be no`032
  264. X  process to handle events directed at that player. This is a bad`032
  265. X  situation because they player is not obviously "dead" to the
  266. X  other Monster programs, as interprocess communication only involves`032
  267. X  sending an event, and does not provide for receipt acknowledgement.
  268. X`032
  269. X  These "zombie" players were a serious nuisance in an early version`032
  270. X  of Monster. The Monster world appeared to be full of players, when`032
  271. X  in fact they were just ghosts left from players typing the VAX`032
  272. X  interrupt character or becoming disconnected from modems (Monster`032
  273. X  now inhibits the interrupt character to help prevent the casual`032
  274. X  creation of zombies).
  275. X`032
  276. X  There are two cases where a zombie game character may be detected: `032
  277. X  when another player suspects that a game character is not being`032
  278. X  controlled by a real user (either from a lack of response from the`032
  279. X  game character or by checking the VAX user list); or when the player`032
  280. X  who created the zombie character attempts to play Monster again (only`032
  281. X  one player per account is allow to play Monster at a time, so if a`032
  282. X  player tries to enter Monster and also appears to be currently playing`032
  283. X  the game, either 1) two players on one account are trying
  284. X  to play Monster at the same time, or 2) the player character that`032
  285. X  appears to be currently playing Monster is really a zombie).
  286. X`032
  287. X  To handle the first case, when one player suspects another of being`032
  288. X  a zombie, the player can issue the PING command.  PING sends repeated`032
  289. X  events directed at the suspected zombie, with short pauses between the`032
  290. X  sends.  If PING does not receive a response within a certain amount of`032
  291. X  time (currently about three seconds) it attempts to smoothly return the`03
  292. V2
  293. X  zombie character to the "inactive" (not playing) state.  This involves`032
  294. X  taking every object the player character was holding and dropping them`032
  295. X  on the ground, updating the "time of last play" record and modifying`032
  296. X  the playerlog to show that the player is not currently playing.
  297. X`032
  298. X  In the second case, when no other player has PINGed away the zombie`032
  299. X  and the original player (the one responsible for the zombie character)`032
  300. X  attempts to reenter Monster, Monster will inform him:
  301. X`032
  302. X        There may have been some trouble the last time you played.
  303. X        Trying to fix it . . .
  304. X`032
  305. X  At this point, Monster itself attempts to PING the player's character. `03
  306. V2
  307. X  If two people on the same account are trying to play Monster at the`032
  308. X  same time the PING will be answered and Monster will not let the`032
  309. X  second player into the game.  Otherwise, the player will enter Monster`032
  310. X  normally after a short pause:
  311. X`032
  312. X        All should be fixed now.
  313. X`032
  314. X        Welcome back, Faust.  Your last play was on 13-MAY-1988 at 8:31pm.
  315. X`032
  316. X  Even with this solution, there are still situations where trouble can`032
  317. X  arise with zombie characters.  For example, suppose a player is on a`032
  318. X  modem playing Monster and becomes disconnected.  Another player PINGs`032
  319. X  away the zombie character.  The dialup player calls up the VAX again,`032
  320. X  and reconnects to his disconnected process.  Now his Monster process`032
  321. X  still thinks the player character is alive in the room (it has no`032
  322. X  knowledge of the disconnect) but the database shows that the player`032
  323. X  is inactive.
  324. X`032
  325. X  If only a few events have been logged in the associated event file`032
  326. X  record, the reconnnected Monster process will notice the fatal PING`032
  327. X  to itself (lingering in the event file record) and will abort. `032
  328. X  However, if many events have occured while the process was disconnected,`0
  329. V32
  330. X  it will not be aware of the change to the database. This will leave the`03
  331. V2
  332. X  database in an inconsistent state until the player QUITs the game. `032
  333. X  Fortunately, when the player quits the database will be fixed.
  334. X`032
  335. X  Since this problem will eventually correct itself (when the player`032
  336. X  quits) and because checking for this very rare situation would slow`032
  337. X  response time considerably (Monster would have to verify its existence`032
  338. X  in the database continuously) I decided to ignore this exception.
  339. X`032
  340. X  I had originally hoped for a smoother solution to the "disconnected`032
  341. X  player" problem.  In a system where a central process drives all of`032
  342. X  the player terminals, this is possible.  However, because control in`032
  343. X  Monster is shared between many identical processes, the problem is`032
  344. X  much harder.
  345. X`032
  346. X`032
  347. X4 Reflections_on_the_Project
  348. X
  349. X  How the "Installed Base" Stagnated New Development:
  350. X `032
  351. X`032
  352. X  During the development of Monster I would periodically change the
  353. X  records that held the Monster database.  Once changed in the program,`032
  354. X  this would render the existing database unusable, as the new program`032
  355. X  could no longer open the old files.  Thus, I would have to destroy`032
  356. X  the existing world if I wanted to add any fields to the records that`032
  357. X  comprised the shared files.
  358. X`032
  359. X  In order to provide a stable environment for players who did not want`032
  360. X  to see their hard work making Monster rooms destroyed every time I made`03
  361. V2
  362. X  a change to the structure of the database, I installed a version with`032
  363. X  a separate set of data files than the copy I worked on for development. `0
  364. V32
  365. X  Players created rooms and tested the installed version, while I continued`
  366. V032
  367. X  to develop my own copy. Eventually, the world in the first release of`032
  368. X  Monster had about 60 rooms.
  369. X`032
  370. X  About a month after installing the original Monster I replaced it`032
  371. X  with the new, greatly enhanced version I had been working on (the`032
  372. X  executable was about 4 times the size of the original) and started`032
  373. X  over with an empty world.  I had provided expansion fields in the`032
  374. X  data records for the new release of Monster so I could continue to`032
  375. X  develop the game without having to work on my own private copy.
  376. X`032
  377. X  The second release of Monster was very popular.  I continued to add`032
  378. X  features to the program, and made use of the expansion fields when`032
  379. X  possible.  However, I felt more and more constrained by the limits of`032
  380. X  my database.  I needed to change more about the data records than the`032
  381. X  expansion fields would allow. I wanted to erase the world a second time;`0
  382. V32
  383. X  however, players had put much work into creating over 100 rooms, and`032
  384. X  became quite angry when I suggested that I might throw away the current`03
  385. V2
  386. X  world to make a new one.
  387. X`032
  388. X  Some suggested that I write a program which would convert the existing`032
  389. X  database to a new format.  However, I felt that the work to do this`032
  390. X  would be much greater than the work I was planning to spend to make`032
  391. X  enhancements to the game. Also, the style of my changes during development
  392. V`032
  393. X  called for small frequent changes. I abandoned the idea of trying to`032
  394. X  write a translation program, and instead attempted to work around the`032
  395. X  limitations of the database structure.  Eventually, however, my work`032
  396. X  stagnated, and new development on Monster ceased.
  397. X`032
  398. X  I never anticipated the work of my playtesters holding back further`032
  399. X  development. If I were to rewrite Monster, I would use a more flexible`032
  400. X  storage approach, one probably involving a form of dynamic typing which`03
  401. V2
  402. X  would let me add new parameters to the database without actually`032
  403. X  changing the record structure or size.
  404. X`032
  405. X3 Appendixs `032
  406. X4 A
  407. XAppendix A:  Specifyable Parameters for Monster Locations and Objects
  408. X`032
  409. X  Rooms:
  410. X  ------
  411. X  `032
  412. X  nicename:       the name of the room
  413. X  nameprint:      formatting control for the nicename
  414. X  primary,
  415. X  secondary:      textual descriptions of the room
  416. X  which:          control for which room description prints:
  417. X                          0 - only print primary room description
  418. X                          1 - only print secondary room description
  419. X                          2 - print both primary and secondary room descript
  420. Vions
  421. X                          3 - print primary description; then print secondar
  422. Vy
  423. X                              description if the player is holding the speci
  424. Vfied
  425. X                              magic object for the room
  426. X  magicobj:       the magic object for the room
  427. X  trapto,
  428. X  trapchance:     allows a player to semi-randomly be thrust through an exit
  429. X  rndmsg:         eerie message that randomly prints
  430. X  details:        details that may be looked at in the room
  431. X  `032
  432. X  `032
  433. X  Exits:
  434. X  ------
  435. X  `032
  436. X  toloc:          where the exit goes
  437. X  kind:           type of the exit:
  438. X                          0 - no exit; always fails
  439. X                          1 - open exit; always succeeds
  440. X                          2 - exits succeeds if player has key object
  441. X                          3 - exit fails if player has key object
  442. X                          4 - exit randomly fails
  443. X                          5 - potential exit; doesn't exist yet
  444. X                          7 - exit cycles between being open and closed
  445. X  exitdesc:       short textual descrption of the exit
  446. X  fail:           description if player fails to go through exit
  447. X  success:        description if player succeeds to go through exit
  448. X  goin:           what other players see when someone goes into the exit
  449. X  comeout:        what others see when a player comes out of the exit
  450. X  hidden:         what the player sees when he finds the exit (if it's hidde
  451. Vn)
  452. X  objreq:         key object for exit
  453. X  alias:          name of the exit
  454. X  reqverb:        requires the player to use the alias only (without "go") t
  455. Vo
  456. X                  use the exit
  457. X  reqalias:       requires the player to know the exit alias; can't use the
  458. X                  compass point
  459. X  autolook:       surpresses the automatic "look" done upon entering the
  460. X                  new room
  461. X  `032
  462. X  Objects:
  463. X  --------
  464. X  `032
  465. X  oname:          the name of the object
  466. X  kind:           type parameter for the object
  467. X  linedesc:       short description of the object (the "on the floor" descri
  468. Vption)
  469. X  examine:        close inspection description for the object
  470. X  numexist:       how many copies of the object exist
  471. X  sticky:         inhibits players from being able to pick up the object
  472. X  getobjreq:      requires the player to be holding another object before
  473. X                  he can pick up this one
  474. X  getfail:        message printed if a player fails to get an object
  475. X  getsuccess:     message printed when an object is successfully picked up
  476. X  useobjreq:      object player must be holding to use this object
  477. X  uselocreq:      place player must be in to use this object
  478. X  usefail:        message printed if player fails in use of the object
  479. X  usesuccess:     message printed if object is successfully used
  480. X  usealias:       alias word to "use"
  481. X  reqalias:       require player to know the alias to use the object
  482. X  article:        whether "a", "an", "some", "the" should precede the object
  483. V name
  484. X  `032
  485. X`032
  486. X4 B
  487. XAppendix B:  Monster Command List
  488. X`032
  489. X  Accept/Refuse #  Allow others to Link an exit here at direction # `124 Und
  490. Vo Accept
  491. X  Brief            Toggle printing of room descriptions
  492. X  Customize `091#`093    Customize this room `124 Customize exit # `124 Cust
  493. Vomize object #
  494. X  Describe `091#`093     Describe this room `124 Describe a feature (#) in d
  495. Vetail
  496. X  Destroy #        Destroy an instance of object # (you must be holding it)
  497. X  Duplicate #      Make a duplicate of an already-created object.
  498. X  Form/Zap #       Form a new room with name # `124 Destroy room named #
  499. X  Get/Drop #       Get/Drop an object
  500. X  #,Go #           Go towards # (Some: N/North S/South E/East W/West U/Up D/
  501. VDown)
  502. X  Health           Show how healthy you are
  503. X  Hide/Reveal `091#`093  Hide/Reveal yoursef `124 Hide object (#)
  504. X  I,Inventory      See what you or someone else is carrying
  505. X  Link/Unlink #    Link/Unlink this room to/from another via exit at directi
  506. Von #
  507. X  Look,L `091#`093       Look here `124 Look at something or someone (#) clo
  508. Vsely
  509. X  Make #           Make a new object named #
  510. X  Name #           Set your game name to #
  511. X  Players          List people who have played Monster
  512. X  Punch #          Punch person #
  513. X  Quit             Leave the game
  514. X  Relink           Move an exit
  515. X  Rooms            Show information about rooms you have made
  516. X  Say, ' (quote)   Say line of text following command to others in the room
  517. X  Search           Look around the room for anything hidden
  518. X  Self #           Edit a description of yourself `124 View #'s self-descrip
  519. Vtion
  520. X  Show #           Show option # (type SHOW ? for a list)
  521. X  Unmake #         Remove the form definition of object #
  522. X  Use #            Use object #
  523. X  Wear #           Wear the object #
  524. X  Wield #          Wield the weapon #;  you must be holding it first
  525. X  Whisper #        Whisper something (prompted for) to person #
  526. X  Who              List of people playing Monster now
  527. X  Whois #          What is a player's username
  528. X  ?,Help           This list
  529. X  . (period)       Repeat last command
  530. X`032
  531. X
  532. X4 C`032
  533. XAppendix C:  Customization Subsystem Menus
  534. X`032
  535. X  Room Customization:
  536. X  -------------------
  537. X  `032
  538. X  Custom> ?
  539. X  `032
  540. X  D       Alter the way the room description prints
  541. X  N       Change how the room Name prints
  542. X  P       Edit the Primary room description `091the default one`093 (same as
  543. V desc)
  544. X  S       Edit the Secondary room description
  545. X  X       Define a mystery message
  546. X  `032
  547. X  G       Set the location that a dropped object really Goes to
  548. X  O       Edit the object drop description (for drop effects)
  549. X  B       Edit the target room (G) "bounced in" description
  550. X  `032
  551. X  T       Set the direction that the Trapdoor goes to
  552. X  C       Set the Chance of the trapdoor functioning
  553. X  `032
  554. X  M       Define the magic object for this room
  555. X  R       Rename the room
  556. X  `032
  557. X  V       View settings on this room
  558. X  E       Exit (same as quit)
  559. X  Q       Quit (same as exit)
  560. X  ?       This list
  561. X  `032
  562. X  `032
  563. X  Exit customization:
  564. X  -------------------
  565. X  `032
  566. X  Custom `091direction`093> ?
  567. X  `032
  568. X  A       Set an Alias for the exit
  569. X  C       Conceal an exit
  570. X  D       Edit the exit's main Description
  571. X  E       EXIT custom (saves changes)
  572. X  F       Edit the exit's failure line
  573. X  I       Edit the line that others see when a player goes Into an exit
  574. X  K       Set the object that is the Key to this exit
  575. X  L       Automatically look `091default`093 / don't look on exit
  576. X  O       Edit the line that people see when a player comes Out of an exit
  577. X  Q       QUIT Custom (saves changes)
  578. X  R       Require/don't require alias for exit; ignore direction
  579. X  S       Edit the success line
  580. X  T       Alter Type of exit (passage, door, etc)
  581. X  V       View exit information
  582. X  X       Require/don't require exit name to be a verb
  583. X  ?       This list
  584. X  `032
  585. X  `032
  586. X  Object Customization:
  587. X  ---------------------
  588. X  `032
  589. X  Custom object> ?
  590. X  `032
  591. X  A       "a", "an", "some", etc.
  592. X  D       Edit a Description of the object
  593. X  F       Edit the GET failure message
  594. X  G       Set the object required to pick up this object
  595. X  1       Set the get success message
  596. X  K       Set the Kind of object this is
  597. X  L       Edit the label description ("There is a ... here.")
  598. X  P       Program the object based on the kind it is
  599. X  R       Rename the object
  600. X  S       Toggle the sticky bit
  601. X  `032
  602. X  U       Set the object required for use
  603. X  2       Set the place required for use
  604. X  3       Edit the use failure description
  605. X  4       Edit the use success description
  606. X  V       View attributes of this object
  607. X  `032
  608. X  X       Edit the extra description
  609. X  5       Edit extra desc #2
  610. X  E       Exit (same as Quit)
  611. X  Q       Quit (same as Exit)
  612. X  ?       This list
  613. X  `032
  614. X4 D`032
  615. XAppendix D:  Monster Playerlist as of June 5, 1988
  616. X`032
  617. X  dolpher       ! Monster Manager        5-JUN-1988  1:48pm * great baths
  618. X  dasun_c       ! Iceman                 4-JUN-1988 10:30pm * the transporte
  619. Vr room
  620. X  kirsten       ! Kirsten                4-JUN-1988 11:20pm * ffoirefirma
  621. X  isakson       ! Satan                  3-JUN-1988 10:13am * satan's privat
  622. Ve hell
  623. X  tlb05405      ! Tlb05405               3-JUN-1988 11:59am * east hall
  624. X  nate          ! Smaug                  3-JUN-1988  7:41pm * platform 1
  625. X  skrenta       ! Faust                  3-JUN-1988  8:37pm * tower room
  626. X  gary          ! Monster Vice Manager   2-JUN-1988  9:50pm * inner office
  627. X  laura         ! Laura                  2-JUN-1988 10:36pm * turbolift cham
  628. Vber
  629. X  james         ! James                  1-JUN-1988  7:54pm * chuk's elevato
  630. Vr
  631. X  chuk          ! SoulStorm              1-JUN-1988  9:57pm * east hall
  632. X  peter_t       ! Peter_t               31-MAY-1988  8:33pm * pine forest
  633. X  cary          ! Cary                  31-MAY-1988 11:20pm * maelstrom
  634. X  francisco     ! Prof. Anthrax         30-MAY-1988  3:54pm * waterbed
  635. X  sundeep       ! Sundeep               29-MAY-1988  2:21pm * mta office
  636. X  bkc04916      ! Cheekster             28-MAY-1988 10:51am * the 'ell stop
  637. X  ktl04905      ! Corwin                28-MAY-1988 11:44am * west hall
  638. X  perry         ! Bufu Master!!!        28-MAY-1988  8:40pm * pinkie's place
  639. X  maryahn       ! pinkie                27-MAY-1988 12:39pm * the sewer tunn
  640. Vel
  641. X  immell        ! hurricane eye         26-MAY-1988  2:25am * post office 3
  642. X  robert        ! Hungry Wolf           26-MAY-1988  2:26am * roll6
  643. X  linda         ! linlop                26-MAY-1988 10:47am * terminal room
  644. X  jeff          ! Pringle               25-MAY-1988  7:12pm * ic
  645. X  mic00229      ! Mic00229              22-MAY-1988  8:33pm * great hall
  646. X  jeffoire      ! Ffoire Zen Salad      20-MAY-1988  1:41pm * bar
  647. X  schroder      ! Schroder              19-MAY-1988 10:09am * burrow
  648. X  lunde         ! Purple Peril          18-MAY-1988 12:55pm * cloud 9.5
  649. X  pib           ! Great Pib             17-MAY-1988 11:51pm * great pib's la
  650. Vir
  651. X  ahrens        ! it                    15-MAY-1988  4:56pm * landing
  652. X  mborsetti     ! Mborsetti             12-MAY-1988 10:20pm * sewer crossroa
  653. Vds
  654. X  brian         ! Mr. Raven             11-MAY-1988 11:24am * a damp and dar
  655. Vk hole
  656. X  wen05563      ! Gary                  11-MAY-1988  9:00pm * great hall
  657. X  jimbo         ! Jimbo                  8-MAY-1988 10:02pm * great hall
  658. X  lentz         ! Lentz                  7-MAY-1988  8:24am * front of isp n
  659. Voyes
  660. X  miller        ! Mungus                 5-MAY-1988  1:14pm * starbase
  661. X  otto          ! Otto                   4-MAY-1988  8:45pm * heidi's nightm
  662. Vare
  663. X  chris         ! House Manager          3-MAY-1988  3:54am * home base
  664. X  liao          ! Liao                  30-APR-1988  1:21pm * white house
  665. X  chaz          ! Chaz                  29-APR-1988  4:05pm * post office 2
  666. X  jmc           ! Run JMC               29-APR-1988  4:37pm * isp heaven
  667. X  rod           ! Rod                   29-APR-1988  9:00pm * great hall
  668. X  choi          ! Choi                  28-APR-1988  8:25pm * east hall
  669. X  bo            ! God                   26-APR-1988  1:58pm * great hall
  670. X  jonathan      ! Jonathan              26-APR-1988  5:26pm * eye of the hur
  671. Vricane
  672. X  swift         ! Swift                 26-APR-1988  8:53pm * post office ha
  673. Vll
  674. X  ric05787      ! Deadhead              26-APR-1988 10:57pm * nightmarish ro
  675. Vom
  676. X  mccoy         ! The Scribe            26-APR-1988 11:41pm * scribe home
  677. X  g_wenslow     ! Gary II               24-APR-1988 11:58pm * east hall
  678. X  kri04333      ! Kri04333              18-APR-1988 12:11am * great hall
  679. X  dissett       ! Kronos                18-APR-1988 10:13pm * kronos' room
  680. X  wantz         ! Wantz                 17-APR-1988  2:51pm * great hall
  681. X  cheezer       ! Cheezer               16-APR-1988  7:55pm * the pine fores
  682. Vt
  683. X  ahr04465      ! Ivo                   16-APR-1988  7:56pm * sewer transpor
  684. Vt
  685. X  joey          ! geek                  15-APR-1988  8:03pm * forest crossro
  686. Vads
  687. X  wargaski      ! Wargaski              14-APR-1988  4:01pm * toxicated
  688. X  eric          ! Eric                  13-APR-1988  3:51pm * the hall of ch
  689. Vuk
  690. X  rwc00220      ! Rwc00220              12-APR-1988  1:32pm * great hall
  691. X  kstull        ! Kstull                12-APR-1988  5:01pm * post office 3
  692. X  tim           ! Tim                   11-APR-1988  8:26pm * great hall
  693. X  sean          ! Sean                  10-APR-1988  4:27pm * great hall
  694. X  sam           ! Sam                   10-APR-1988 12:54pm * great hall
  695. X  dean          ! Artagel                9-APR-1988  8:21am * turbolift cham
  696. Vber
  697. X  supercom      ! Cursor                 8-APR-1988 12:00am * forest paths
  698. X  anne          ! Anne                   7-APR-1988  6:55pm * great hall
  699. X  lisa          ! Lisa                   7-APR-1988  6:56pm * great hall
  700. X  mouse         ! Mouse                  3-APR-1988 11:26pm * west hall
  701. X  mca04477      ! Mca04477               2-APR-1988  8:56pm * burrow
  702. X  sajiv         ! Sajiv                 30-MAR-1988  6:06pm * great hall
  703. X  chad          ! Chad                  30-MAR-1988  6:37pm * chuk's elevato
  704. Vr
  705. X  jennifer      ! Jennifer              30-MAR-1988  7:22pm * east hall
  706. X  lasonia       ! Lasonia               29-MAR-1988 11:22am * west hall
  707. X  brian_t       ! Brian_t               29-MAR-1988 11:59am * maelstrom
  708. X  mikk          ! Random                29-MAR-1988 11:19pm * ledge
  709. X  topher        ! Topher                28-MAR-1988  1:19pm * great hall
  710. X  spectre       ! Ghost in the machine  28-MAR-1988 11:43pm * ghost's mailro
  711. Vom
  712. X  dave          ! Dave                  18-MAR-1988 10:14am * post office ha
  713. Vll
  714. X  penguins      ! Penguins Amok         18-MAR-1988 11:52pm * chuk's elevato
  715. Vr
  716. X  lawson        ! Space Cowboy          18-MAR-1988 12:23pm * great hall
  717. X  heidi         ! Heidi                 17-MAR-1988  1:11am * digital purgat
  718. Vory
  719. X  bueno         ! Bueno                 17-MAR-1988  7:49pm * post office ha
  720. Vll
  721. X  dan           ! Grando                16-MAR-1988  8:18am * eye of the hur
  722. Vricane
  723. X  eric_yue      ! Samsok                16-MAR-1988  9:29pm * the yueguy's j
  724. Voint
  725. X  cra01453      ! Cra01453              15-MAR-1988  3:01am * great hall
  726. X  adam          ! Adam                  14-MAR-1988  6:45pm * round room
  727. X  was04906      ! Milt                  14-MAR-1988  9:48pm * great hall
  728. X  watson        ! Watson                14-MAR-1988 10:22pm * chuk's elevato
  729. Vr
  730. X  brianw        ! Brianw                12-MAR-1988         * ffoirefirma
  731. X  mike          ! Mike                  12-MAR-1988         * toxicated
  732. X  predator      ! Predator              12-MAR-1988         * east hall
  733. X  daniel        ! Daniel                11-MAR-1988         * west hall
  734. X  dav08345      ! Dav08345              11-MAR-1988         * great hall
  735. X  vlahos        ! otis                  11-MAR-1988         * post office
  736. X  ginter        ! Ginter                10-MAR-1988         * living room
  737. X  rob09549      ! Rob09549               9-MAR-1988         * great hall
  738. X  dora          ! Dora                   8-MAR-1988         * toxicated
  739. X  kim           ! kim                    8-MAR-1988         * post office 2
  740. X  michael       ! Prabdib                7-MAR-1988         * tunnel of love
  741. X  bradley       ! Bradley               29-FEB-1988         * eye of the hur
  742. Vricane
  743. X  john          ! Raunchmeister         29-FEB-1988         * underhall
  744. X  melvin        ! Killer Melvin         27-FEB-1988         * chuk's elevato
  745. Vr
  746. X  cliff         ! Cliff                 26-FEB-1988         * east hall
  747. X  `032
  748. X4 E`032
  749. XAppendix E:  An Actual Monster Game Log
  750. X`032
  751. X  $ monster
  752. X  Welcome to Monster!  Hit return to start:
  753. X  `032
  754. X  Welcome back, Faust.  Your last play was on 1-JUN-1988 at 10:47pm.
  755. X  `032
  756. X  You're in Great Hall
  757. X  You're in the middle of a vast hall stretching out of sight to the
  758. X  east and west.  Strange shadows play across the high vaulted ceiling.
  759. X  The floor is set with smooth rectangular stones.  The walls feel slightly
  760. X  cold to the touch, and damp with condensation.  A copper plaque, slightly
  761. X  green with age, is set into one wall.
  762. X  `032
  763. X  Monster Manager is here.
  764. X  >
  765. X  Monster Manager vanishes in a brilliant burst of multicolored light.
  766. X  > l
  767. X  You're in Great Hall
  768. X  You're in the middle of a vast hall stretching out of sight to the
  769. X  east and west.  Strange shadows play across the high vaulted ceiling.
  770. X  The floor is set with smooth rectangular stones.  The walls feel slightly
  771. X  cold to the touch, and damp with condensation.  A copper plaque, slightly
  772. X  green with age, is set into one wall.
  773. X  `032
  774. X  >
  775. X  Monster Manager appears in a brilliant burst of multicolored light.
  776. X  > who
  777. X                     Monster Status
  778. X                   1-JUN-1988 10:48pm
  779. X  `032
  780. X  Username        Game Name                 Where
  781. X  dolpher         Monster Manager           great hall
  782. X  skrenta         Faust                     great hall
  783. X  > look plaque
  784. X  `032
  785. X  The plaque looks very old and corroded.   However, you can still make out
  786. X  the writing:
  787. X  `032
  788. X   " Monster, created by Rich Skrenta, 1988.  Play at your own risk. "
  789. X  `032
  790. X  > show details
  791. X  Details here that you may inspect:
  792. X      stones
  793. X      plaque
  794. X  > look stones
  795. X  The stones are rough and black, and cold to the touch.  Although the
  796. X  mortar work appears to have been expertly done, it has decayed with time.
  797. X  Many stones are cracked, and narrow spaces fracture the carefully laid
  798. X  pattern.  Some of the stones are quite loose.  You might be able to lift
  799. X  one of them with some effort.
  800. X  >
  801. X  Monster Manager is looking at the stones.
  802. X  >
  803. X  Monster Manager is looking at the plaque.
  804. X  >
  805. X  Monster Manager says, "Hey Faust, let's go down to the Underhall."
  806. X  >
  807. X  Monster Manager manages to lift a stone in the floor and descends.
  808. X  > lift
  809. X  With great effort, you manage to lift the stone enought to fit inside.
  810. X  `032
  811. X  Once below the stone, it falls back into place, sealing out the light
  812. X  from above.  You squirm down the narrow tunnel . . .
  813. X  `032
  814. X  You're in UnderHall
  815. X  This is a cramped, humid room beneath the Great Hall.  The walls are
  816. X  dripping with water condensed from mist rising from the baths.  Some
  817. X  of the mist follows the ceiling and dissappears up the narrow tunnel.
  818. X  `032
  819. X  Stairs lead north down to the Great Baths.
  820. X  A neon sign flashes "Great PIB's Lair" over a door to the South.
  821. X  You could manage a crawl through a narrow tunnel leading upwards.
  822. X  `032
  823. X  Monster Manager is here.
  824. X  > look Monster Manager
  825. X  Monster Manager is the stereotype of a computer hacker.  He is wearing
  826. X  a flannel shirt with several snickers bars in the breast pocket.  On
  827. X  his belt is an ASCII-HEX conversion chart.  On his feet are a scuffed
  828. X  pair of hiking boots so he can tackle those dangerous mountains that
  829. X  crop up in operations.  Also dangling from his belt is a battered box
  830. X  with many buttons on the front and wires with sockets on the ends protrudi
  831. Vng
  832. X  from the back.  The switches seem to have been placed haphazardly, but
  833. X  the object is unmistakably one of great power nonetheless.
  834. X  `032
  835. X  Monster Manager is in perfect health.
  836. X  Monster Manager is empty handed.
  837. X  >
  838. X  Monster Manager is looking at you.
  839. X  >
  840. X  Monster Manager swings at you but misses.
  841. X  >
  842. X  You duck in time to avoid Monster Manager's punch.
  843. X  >
  844. X  You see stars as Monster Manager bashes you in the face.
  845. X  >
  846. X  You parry Monster Manager's attack.
  847. X  > punch Monster Manager
  848. X  You can't punch the Monster Manager.
  849. X  > l
  850. X  You're in UnderHall
  851. X  This is a cramped, humid room beneath the Great Hall.  The walls are
  852. X  dripping with water condensed from mist rising from the baths.  Some
  853. X  of the mist follows the ceiling and dissappears up the narrow tunnel.
  854. X  `032
  855. X  Stairs lead north down to the Great Baths.
  856. X  A neon sign flashes "Great PIB's Lair" over a door to the South.
  857. X  You could manage a crawl through a narrow tunnel leading upwards.
  858. X  `032
  859. X  Monster Manager is here.
  860. X  > n
  861. X  You're in Great Baths
  862. X  These are the luxurious Great Baths where tired adventurers may come
  863. X  to relax and try to regain their health and youth from the mineral waters.
  864. X  From where you stand at the entrance, you can see below you the bubbling
  865. X  soapy pools of water churning violently in tile-lined pits.  The pools
  866. X  are fed by hot springs from deep in the rock beneath you.  Steam and
  867. X  huge soapy bubbles rise out of the hot pools of water.  The bubbles
  868. X  dance through the air, climbing higher and higher, until they either
  869. X  burst on the sharp walls of the cave or are lost in the mist above you.
  870. X  `032
  871. X  Shallow tiled steps, wet and slick from the hot soapy waters of the
  872. X  springs, lead down to the pools.
  873. X  `032
  874. X  Rough stone stairs lead up to the south.
  875. X  `032
  876. X  >
  877. X  In an explosion of orange smoke Monster Vice Manager poofs into the room.
  878. X  >
  879. X  Monster Manager has come down the stairs from the Underhall.
  880. X  >
  881. X  Monster Vice Manager produces a "who" list and reads it.
  882. X  > system
  883. X  System> v
  884. X  `032
  885. X                 used   free   total
  886. X  Block file    1008     92    1100
  887. X  Line file     1501    109    1610
  888. X  Room file      283     27     310
  889. X  Object file    139     41     180
  890. X  Integer file     6      0       6
  891. X  `032
  892. X  System>
  893. X  Monster Vice Manager is in system maintenance mode.
  894. X  System> exit
  895. X  >
  896. X  Monster Vice Manager is no longer in system maintenance mode.
  897. X  > 'Hey Gary
  898. X  >
  899. X  Monster Vice Manager says, "Hi, Faust."
  900. X  > look Monster Vice Manager
  901. X  The Monster Vice Manager is dressed in a conservative three piece
  902. X  suit.  The stern expression on his face is just a facade, he really
  903. X  is a warm and sensitive guy underneath.  He is willing to answer
  904. X  any questions and help out with any problems.  He can best be
  905. X  described by the phrase:
  906. X  `032
  907. X              "Do what thou wilt, so mete it be."
  908. X  `032
  909. X  He returns your gaze with a hint of understanding and amusement.
  910. X  `032
  911. X  Monster Vice Manager is in perfect health.
  912. X  Monster Vice Manager is empty handed.
  913. X  >
  914. X  Monster Vice Manager is looking at you.
  915. X  > punch Monster Vice Manager
  916. X  You swing wild and miss.
  917. X  > .
  918. X  Monster Vice Manager ducks and avoids your punch.
  919. X  > .
  920. X  A quick punch, but it only grazes Monster Vice Manager.
  921. X  >
  922. X  You only feel the breeze as Monster Vice Manager swings wildly.
  923. X  > .
  924. X  You swing wild and miss.
  925. X  >
  926. X  You see stars as Monster Vice Manager bashes you in the face.
  927. X  >
  928. X  You only feel the breeze as Monster Vice Manager swings wildly.
  929. X  > .
  930. X  You deliver a quick jab to Monster Vice Manager's jaw.
  931. X  >
  932. X  Monster Vice Manager's swing misses you by a yard.
  933. X  > .
  934. X  Your roundhouse blow sends Monster Vice Manager reeling.
  935. X  >
  936. X  You double over after Monster Vice Manager lands a mean jab to your stomac
  937. Vh!
  938. X  Monster Vice Manager looks a little dazed.
  939. X  >
  940. X  Monster Vice Manager vanishes from the room in a cloud of orange smoke.
  941. X  > who
  942. X                     Monster Status
  943. X                   1-JUN-1988 10:56pm
  944. X  `032
  945. X  Username        Game Name                 Where
  946. X  dolpher         Monster Manager           great baths
  947. X  skrenta         Faust                     great baths
  948. X  gary            Monster Vice Manager      inner office
  949. X  > poof inner office
  950. X  `032
  951. X  This rooms is a conservatively decorated office.  A large
  952. X  desk dominates the room.  Several pictures hang on the walls
  953. +-+-+-+-+-+-+-+-  END  OF PART 28 +-+-+-+-+-+-+-+-
  954.