#:name "north"
#: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
;; 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.
"lobby sign"))
;; Object: curio cabinets
- ('thing:cabinet
+ ('thing:lobby:cabinet
<gameobj> 'room:lobby
#:name "a curio cabinet"
#:goes-by '("curio cabinet" "cabinet" "bricabrac cabinet")
(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")
#: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 '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
;;; 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
;;; ----
(define game-spec
- (append lobby grand-hallway))
+ (append lobby grand-hallway smoking-parlor))
;; TODO: Provide command line args
(define (run-game . args)