start of smoking room, and some namespacing
[mudsync.git] / worlds / bricabrac.scm
index 5465aa5176705e2d7e51425f353fa8e822ee2257..117e86af3af1d8351cf86fe002961d5adbddddbe 100644 (file)
@@ -183,9 +183,9 @@ kind of objects they found lying around.
     #:exits
     (list (make <exit>
             #:name "north"
-            #:to-symbol 'room:grand-hallway)))
+            #:to 'room:grand-hallway)))
    ;; NPC: hotel owner
-   ('npc:hotel-owner
+   ('npc:lobby:hotel-owner
     <chatty-npc> 'room:lobby
     #:name "a frumpy fellow"
     #:desc "  Whoever this is, they looks totally exhausted.  They're
@@ -205,7 +205,7 @@ though the conversation may be a bit one sided."
    ;;   complaining, then leaves.
    
    ;; Object: Sign
-   ('thing:lobby-sign
+   ('thing:lobby:sign
     <readable> 'room:lobby
     #:name "the Hotel Bricabrac sign"
     #:desc "  It strikes you that there's something funny going on with this sign.
@@ -220,7 +220,7 @@ Classy!"
                 "lobby sign"))
 
    ;; Object: curio cabinets
-   ('thing:cabinet
+   ('thing:lobby:cabinet
     <gameobj> 'room:lobby
     #:name "a curio cabinet"
     #:goes-by '("curio cabinet" "cabinet" "bricabrac cabinet")
@@ -228,7 +228,7 @@ Classy!"
              (format #f "  The curio cabinet is full of all sorts of oddities!
 Something catches your eye!
 Ooh, ~a!" (random-choice random-bricabrac))))
-   ('thing:sign-in-form
+   ('thing:lobby:sign-in-form
     <sign-in-form> 'room:lobby
     #:name "sign-in form"
     #:goes-by '("sign-in form" "form" "signin form")
@@ -255,13 +255,25 @@ Ooh, ~a!" (random-choice random-bricabrac))))
     #:desc "  A majestic red carpet runs down the center of the room.
 Busts of serious looking people line the walls, but there's no
 clear indication that they have any logical relation to this place.
+  In the center is a large statue of a bearded man.  You wonder what
+that's all about?
   To the south is the lobby.  All around are various doors, but
-they're all boarded up.  Guess this is still a work in progress, huh?"
+they're all boarded up.  One to the east goes to the smoking parlor,
+though."
     #:exits
     (list (make <exit>
             #:name "south"
-            #:to-symbol 'room:lobby))
-    )))
+            #:to 'room:lobby)
+          (make <exit>
+            #:name "east"
+            #:to 'room:smoking-parlor)))
+   ('thing:ignucius-statue
+    <gameobj> 'room:grand-hallway
+    #:name "a statue"
+    #:desc "  The statue is of a serious-looking bearded man with long, flowing hair.
+The inscription says \"St. Ignucius\".
+  It has a large physical halo.  It doesn't look like it would be hard to remove."
+    #:goes-by '("statue" "st ignucius" "st. ignucius"))))
 
 \f
 ;;; Playroom
@@ -281,6 +293,81 @@ they're all boarded up.  Guess this is still a work in progress, huh?"
 ;;; Smoking parlor
 ;;; --------------
 
+(define-class <furniture> (<gameobj>)
+  (sit-phrase #:init-keyword #:sit-phrase)
+  (sit-phrase-third-person #:init-keyword #:sit-phrase-third-person)
+  (sit-name #:init-keyword #:sit-name)
+
+  (commands
+   #:init-value
+   (list
+    (direct-command "sit" 'cmd-sit-furniture)))
+  (message-handler
+   #:init-value
+   (simple-dispatcher
+    (append
+     (build-actions
+      (cmd-sit-furniture (wrap-apply furniture-cmd-sit)))
+     gameobj-actions))))
+
+(define-mhandler (furniture-cmd-sit actor message direct-obj)
+  (define player-name
+    (message-ref
+     (<-wait actor (message-from message) 'get-name)
+     'val))
+  (<- actor (message-from message) 'tell
+      #:text (format #f "You ~a ~a.\n"
+                     (slot-ref actor 'sit-phrase)
+                     (slot-ref actor 'sit-name)))
+  (<- actor (slot-ref actor 'loc) 'tell-room
+      #:text (format #f "~a ~a on ~a.\n"
+                     player-name
+                     (slot-ref actor 'sit-phrase-third-person)
+                     (slot-ref actor 'sit-name))
+      #:exclude (message-from message)))
+
+
+(define smoking-parlor
+  (lol
+   ('room:smoking-parlor
+    <room> #f
+    #:name "Smoking Parlor"
+    #:desc "  This room looks quite posh.  There are huge comfy seats you can sit in
+if you like.
+  Strangely, you see a large sign saying \"No Smoking\".  The owners must
+have installed this place and then changed their mind later.
+  Nonetheless there are some candy cigarettes and cigars you can pick up
+at the bar.  (editor's note: or will be soon :])"
+    #:exits
+    (list (make <exit>
+            #:name "west"
+            #:to 'room:grand-hallway)))
+   ('thing:smoking-room:chair
+    <furniture> 'room:smoking-parlor
+    #:name "a comfy leather chair"
+    #:desc "  That leather chair looks really comfy!"
+    #:goes-by '("leather chair" "comfy leather chair" "chair")
+    #:sit-phrase "sink into"
+    #:sit-phrase-third-person "sinks into"
+    #:sit-name "the comfy leather chair")
+   ('thing:smoking-room:sofa
+    <furniture> 'room:smoking-parlor
+    #:name "a plush leather sofa"
+    #:desc "  That leather chair looks really comfy!"
+    #:goes-by '("leather sofa" "plush leather sofa" "chair"
+                "leather couch" "plush leather couch" "couch")
+    #:sit-phrase "sprawl out on"
+    #:sit-phrase-third-person "sprawls out on into"
+    #:sit-name "the plush leather couch")
+   ('thing:smoking-room:bar-stool
+    <furniture> 'room:smoking-parlor
+    #:name "a bar stool"
+    #:desc "  Conveniently located near the bar!  Not the most comfortable
+seat in the room, though."
+    #:goes-by '("stool" "bar stool")
+    #:sit-phrase "hop on"
+    #:sit-phrase-third-person "hops onto"
+    #:sit-name "the bar stool")))
 
 \f
 ;;; Ennpie's Sea Lounge
@@ -295,7 +382,7 @@ they're all boarded up.  Guess this is still a work in progress, huh?"
 ;;; ----
 
 (define game-spec
-  (append lobby grand-hallway))
+  (append lobby grand-hallway smoking-parlor))
 
 ;; TODO: Provide command line args
 (define (run-game . args)