A working toy chest :)
[mudsync.git] / worlds / bricabrac.scm
index 301e2e9687176923bbef5b77df677d1c47b5ee02..28ba3dbbf172cd70531c96f7ffcebde097927593 100644 (file)
@@ -46,7 +46,7 @@
 ;;; Some simple object types.
 ;;; =========================
 
-(define-class <readable> (<thing>)
+(define-class <readable> (<gameobj>)
   (read-text #:init-value "All it says is: \"Blah blah blah.\""
              #:init-keyword #:read-text)
   (commands
@@ -140,7 +140,7 @@ Alphanumerics, _ and - only, 2-15 characters, starts with an alphabetic
 character.\n")))
 
 
-(define-class <summoning-bell> (<thing>)
+(define-class <summoning-bell> (<gameobj>)
   (summons #:init-keyword #:summons)
 
   (commands
@@ -275,31 +275,31 @@ Ooh, ~a!" (random-choice
     #:desc "It looks like you could sign this form and set your name.")
 
    ('thing:lobby:porcelain-doll
-    <thing> 'room:lobby
-    #:generally-visible #f
+    <gameobj> 'room:lobby
+    #:invisible? #t
     #:name "a creepy porcelain doll"
     #:desc "It strikes you that while the doll is technically well crafted,
 it's also the stuff of nightmares."
     #:goes-by '("porcelain doll" "doll"))
    ('thing:lobby:1950s-robots
-    <thing> 'room:lobby
-    #:generally-visible #f
+    <gameobj> 'room:lobby
+    #:invisible? #t
     #:name "a set of 1950s robots"
     #:desc "There's a whole set of these 1950s style robots.
 They seem to be stamped out of tin, and have various decorations of levers
 and buttons and springs.  Some of them have wind-up knobs on them."
     #:goes-by '("robot" "robots" "1950s robot" "1950s robots"))
    ('thing:lobby:tea-set
-    <thing> 'room:lobby
-    #:generally-visible #f
+    <gameobj> 'room:lobby
+    #:invisible? #t
     #:name "a tea set"
     #:desc "A complete tea set.  Some of the cups are chipped.
 You can imagine yourself joining a tea party using this set, around a
 nice table with some doilies, drinking some Earl Grey tea, hot.  Mmmm."
     #:goes-by '("tea set" "tea"))
    ('thing:lobby:mustard-pot
-    <thing> 'room:lobby
-    #:generally-visible #f
+    <gameobj> 'room:lobby
+    #:invisible? #t
     #:name "a mustard pot"
     #:desc '((p "It's a mustard pot.  I mean, it's kind of cool, it has a
 nice design, and it's an antique, but you can't imagine putting something
@@ -307,8 +307,8 @@ like this in a museum.")
              (p "Ha... imagine that... a mustard museum."))
     #:goes-by '("mustard pot" "antique mustard pot" "mustard"))
    ('thing:lobby:head-of-elvis
-    <thing> 'room:lobby
-    #:generally-visible #f
+    <gameobj> 'room:lobby
+    #:invisible? #t
     #:name "the pickled head of Elvis"
     #:desc '((p "It's a jar full of some briny-looking liquid and...
 a free floating head.  The head looks an awful lot like Elvis, and
@@ -321,8 +321,8 @@ everything you read."))
     #:goes-by '("pickled head of elvis" "pickled head of Elvis"
                 "elvis" "Elvis" "head" "pickled head"))
    ('thing:lobby:circuitboard-of-evlis
-    <thing> 'room:lobby
-    #:generally-visible #f
+    <gameobj> 'room:lobby
+    #:invisible? #t
     #:name "the pickled circuitboard of Evlis"
     #:desc '((p "It's a circuitboard from a Lisp Machine called EVLIS.
 This is quite the find, and you bet just about anyone interested in
@@ -335,8 +335,8 @@ Too bad..."))
                 "pickled circuitboard of EVLIS"
                 "evlis" "Evlis" "EVLIS" "circuitboard" "pickled circuitboard"))
    ('thing:lobby:teletype-scroll
-    <thing> 'room:lobby
-    #:generally-visible #f
+    <gameobj> 'room:lobby
+    #:invisible? #t
     #:name "a scroll of teletype"
     #:desc '((p "This is a scroll of teletype paper.  It's a bit old
 and yellowed but the type is very legible.  It says:")
@@ -356,8 +356,8 @@ English language surrounding the word 'free' have lead to a lot of terminology d
                 "scroll of teletype paper holding the software Four Freedoms"
                 "scroll of teletype paper holding the software four freedoms"))
    ('thing:lobby:orange-cat-phone
-    <thing> 'room:lobby
-    #:generally-visible #f
+    <gameobj> 'room:lobby
+    #:invisible? #t
     #:name "a telephone shaped like an orange cartoon cat"
     #:desc "It's made out of a cheap plastic, and it's very orange.
 It resembles a striped tabby, and it's eyes hold the emotion of
@@ -420,16 +420,42 @@ if this room is intended for children or child-like adults."
             #:name "east"
             #:to 'room:grand-hallway)))
    ('thing:playroom:cubey
-    <thing> 'room:playroom
+    <gameobj> 'room:playroom
     #:name "cubey"
-    #:takeable #t
+    #:take-me? #t
     #:desc "  It's a little foam cube with googly eyes on it.  So cute!")
-   ('thing:cuddles-plushie
-    <thing> 'room:playroom
+   ('thing:playroom:cuddles-plushie
+    <gameobj> 'room:playroom
     #:name "a cuddles plushie"
     #:goes-by '("plushie" "cuddles plushie" "cuddles")
-    #:takeable #t
-    #:desc "  A warm and fuzzy cuddles plushie!  It's a cuddlefish!")))
+    #:take-me? #t
+    #:desc "  A warm and fuzzy cuddles plushie!  It's a cuddlefish!")
+
+   ('thing:playroom:toy-chest
+    <gameobj> 'room:playroom
+    #:name "a toy chest"
+    #:goes-by '("toy chest" "chest")
+    #:desc (lambda (toy-chest whos-looking)
+             (let ((contents (gameobj-occupants toy-chest)))
+               `((p "A brightly painted wooden chest.  The word \"TOYS\" is "
+                    "engraved on it.")
+                 (p "Inside you see:"
+                    ,(if (eq? (pk 'contents contents) '())
+                         " nothing!  It's empty!"
+                         `(ul ,(map (lambda (occupant)
+                                      `(li ,(mbody-val
+                                             (<-wait occupant 'get-name))))
+                                    (gameobj-occupants toy-chest))))))))
+    #:take-from-me? #t
+    #:put-in-me? #t)
+
+   ;; Things inside the toy chest
+   ('thing:playroom:toy-chest:rubber-duck
+    <gameobj> 'thing:playroom:toy-chest
+    #:name "a rubber duck"
+    #:goes-by '("rubber duck" "duck")
+    #:take-me? #t
+    #:desc "It's a yellow rubber duck with a bright orange beak.")))
 
 
 \f
@@ -527,8 +553,8 @@ seat in the room, though."
     #:catchphrases prefect-quotes)
 
    ('thing:smoking-parlor:no-smoking-sign
-    <thing> 'room:smoking-parlor
-    #:generally-visible #f
+    <gameobj> 'room:smoking-parlor
+    #:invisible? #t
     #:name "No Smoking Sign"
     #:desc "This sign says \"No Smoking\" in big, red letters.
 It has some bits of bubble gum stuck to it... yuck."
@@ -542,7 +568,7 @@ It has some bits of bubble gum stuck to it... yuck."
 ;;; Breakroom
 ;;; ---------
 
-(define-class <desk-clerk> (<thing>)
+(define-class <desk-clerk> (<gameobj>)
   ;; The desk clerk has three states:
   ;;  - on-duty: Arrived, and waiting for instructions (and losing patience
   ;;    gradually)
@@ -780,14 +806,23 @@ the scenery tapers off nothingness.  But that can't be right, can it?"
     <desk-clerk> 'room:break-room
     #:name "the hotel desk clerk"
     #:desc "  The hotel clerk is wearing a neatly pressed uniform bearing the
-hotel insignia.  She looks like she'd much rather be somewhere else."
+hotel insignia.  She appears to be rather exhausted."
     #:goes-by '("hotel desk clerk" "clerk" "desk clerk"))
    ('thing:break-room:void
-    <thing> 'room:break-room
-    #:generally-visible #f
+    <gameobj> 'room:break-room
+    #:invisible? #t
     #:name "The Void"
     #:desc "As you stare into the void, the void stares back into you."
-    #:goes-by '("void" "abyss" "nothingness"))))
+    #:goes-by '("void" "abyss" "nothingness" "scenery"))
+   ('thing:break-room:fence
+    <gameobj> 'room:break-room
+    #:invisible? #t
+    #:name "break room cage"
+    #:desc "It's a mostly-cubical wire mesh surrounding the break area.
+You can see through the gaps, but they're too small to put more than a
+couple of fingers through.  There appears to be some wear and tear to
+the paint, but the wires themselves seem to be unusually sturdy."
+    #:goes-by '("fence" "cage" "wire cage"))))
 
 
 \f