Make additions from demoing during the talk
authorChristopher Allan Webber <cwebber@dustycloud.org>
Thu, 9 Feb 2017 21:00:51 +0000 (15:00 -0600)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Thu, 9 Feb 2017 21:00:51 +0000 (15:00 -0600)
worlds/bricabrac.scm

index 18885a4602d57f978130d8b4e05c26f6d552dd0a..701da14fcc8919376b321d7dc415c188968f8a5b 100644 (file)
@@ -760,10 +760,22 @@ platter!  It has \"RL02.5\" written on it.  It looks kind of loose."
     (set! (.filled rgb-item) #f))
   (apply rgb-item-reset rgb-item message rest-args))
 
+(define-actor <tinfoil-hat> (<gameobj>)
+  ((cmd-wear tinfoil-hat-wear))
+  (contained-commands
+   #:allocation #:each-subclass
+   #:init-thunk (build-commands
+                 ("wear" ((direct-command cmd-wear))))))
+
+(define (tinfoil-hat-wear tinfoil-hat message . _)
+  (<- (message-from message) 'tell
+      #:text '("You put on the tinfoil hat, and, to be perfectly honest with you "
+               "it's a lot harder to take you seriously.")))
+
+
 (define-actor <hot-tea> (<gameobj>)
   ((cmd-drink hot-tea-cmd-drink)
-   (cmd-sip hot-tea-cmd-sip)
-   (cmd-gotta-hold hot-tea-cmd-gotta-hold))
+   (cmd-sip hot-tea-cmd-sip))
   (contained-commands
    #:allocation #:each-subclass
    #:init-thunk (build-commands
@@ -809,6 +821,19 @@ platter!  It has \"RL02.5\" written on it.  It looks kind of loose."
         #:exclude player)
     (gameobj-self-destruct hot-tea)))
 
+(define-actor <fanny-pack> (<container>)
+  ((cmd-take-from-while-wearing cmd-take-from)
+   (cmd-put-in-while-wearing cmd-put-in))
+  (contained-commands
+   #:allocation #:each-subclass
+   #:init-thunk
+   (build-commands
+    (("l" "look") ((direct-command cmd-look-at)))
+    ("take" ((prep-indir-command cmd-take-from-while-wearing
+                                 '("from" "out of"))))
+    ("put" ((prep-indir-command cmd-put-in-while-wearing
+                                '("in" "inside" "into" "on")))))))
+
 (define playroom
   (lol
    ('playroom
@@ -862,6 +887,38 @@ if this room is intended for children or child-like adults.")
     #:take-me? #t
     #:desc "It's a yellow rubber duck with a bright orange beak.")
 
+   ('playroom:toy-chest:tinfoil-hat
+    <tinfoil-hat> 'playroom:toy-chest
+    #:name "a tinfoil hat"
+    #:goes-by '("tinfoil hat" "hat")
+    #:take-me? #t
+    #:desc "You'd have to be a crazy person to wear this thing!")
+
+   ('playroom:toy-chest:fanny-pack
+    <fanny-pack> 'playroom:toy-chest
+    #:name "a fanny pack"
+    #:goes-by '("fanny pack" "pack")
+    #:take-me? #t
+    #:desc
+    (lambda (toy-chest whos-looking)
+      (let ((contents (gameobj-occupants toy-chest)))
+        `((p "It's a leather fanny pack, so it's both tacky and kinda cool.")
+          (p "Inside you see:"
+             ,(if (eq? contents '())
+                  " nothing!  It's empty!"
+                  `(ul ,(map (lambda (occupant)
+                               `(li ,(mbody-val
+                                      (<-wait occupant 'get-name))))
+                             (gameobj-occupants toy-chest)))))))))
+
+   ;; Things inside the toy chest
+   ('playroom:toy-chest:fanny-pack:plastic-elephant
+    <gameobj> 'playroom:toy-chest:fanny-pack
+    #:name "a plastic elephant"
+    #:goes-by '("plastic elephant" "elephant")
+    #:take-me? #t
+    #:desc "It's a tiny little plastic elephant.  Small, but heartwarming.")
+
    ('playroom:rgb-machine
     <rgb-machine> 'playroom
     #:name "a Rube Goldberg machine"