#:init-thunk (build-actions
(cmd-read readable-cmd-read))))
-(define (readable-cmd-read actor message)
+(define (readable-cmd-read actor message . _)
(<- (message-from message) 'tell
- #:text (string-append (slot-ref actor 'read-text) "\n")))
+ #:text (slot-ref actor 'read-text)))
;; This one allows you to take from items that are proxied by it
<sign-in-form> 'lobby
#:name "sign-in form"
#:goes-by '("sign-in form" "form" "signin form")
- #:desc "It looks like you could sign this form and set your name.")
+ #:desc '("It looks like you could sign this form and set your name like so: "
+ (i "sign form as <my-name-here>")))
;; Object: curio cabinets
;; TODO: respond to attempts to open the curio cabinet
#:exclude player)
(gameobj-self-destruct gameobj))
+\f
+;;; Grand hallway
+
+(define lobby-map-text
+ "\
+ | : : |
+ .----------.----------. : & : .----------.----------.
+ | computer | |& :YOU ARE: &| smoking | *UNDER* |
+ | room + playroom + : HERE : + parlor | *CONS- |
+ | > | |& : : &| | TRUCTION*|
+ '----------'----------'-++-------++-'-------+--'----------'
+ | '-----' | | |
+ : LOBBY : '---'
+ '. .'
+ '---------'")
+
(define grand-hallway
(lol
('grand-hallway
(make <exit>
#:name "east"
#:to 'smoking-parlor)))
+ ('grand-hallway:map
+ <readable> 'grand-hallway
+ #:name "the hotel map"
+ #:desc '("This appears to be a map of the hotel. "
+ "Like the hotel itself, it seems to be "
+ "incomplete."
+ "You could read it if you want to.")
+ #:read-text `(pre ,lobby-map-text)
+ #:goes-by '("map" "hotel map"))
('grand-hallway:carpet
<gameobj> 'grand-hallway
#:name "the Grand Hallway carpet"
('computer-room
<room> #f
#:name "Computer Room"
- #:desc '((p "A sizable computer cabinet covers a good portion of the left
-wall. It emits a pleasant hum which covers the room like a warm blanket.
-Connected to a computer is a large hard drive.")
- (p "On the floor is a large steel panel. It is closed, but it has
-hinges which suggest it could be opened."))
+ #:desc (lambda (gameobj whos-looking)
+ (define panel-open
+ (mbody-val (<-wait (dyn-ref gameobj 'computer-room:floor-panel)
+ 'open?)))
+ `((p "A sizable computer cabinet covers a good portion of the left
+ wall. It emits a pleasant hum which covers the room like a warm blanket.
+ Connected to a computer is a large hard drive.")
+ (p "On the floor is a large steel panel. "
+ ,(if panel-open
+ '("It is wide open, exposing a spiral staircase "
+ "which descends into darkness.")
+ '("It is closed, but it has hinges which "
+ "suggest it could be opened.")))))
#:exits
(list (make <exit>
#:name "east"
#:invisible? #t
#:goes-by '("floor panel" "panel"))))
+\f
+;;; * UNDERGROUND SECTION OF THE GAME! *
+
+\f
+;;; The lab
+
+(define underground-map-text
+ "\
+ _______ |
+ .-' @ '-. \\ ?????
+ .' '. .\\
+ | [8sync Hive] |======' '-_____
+ ', M ,'
+ '. @ .'
+ \\ @ /
+ '-__+__-'
+ '. @ .'
+ .--------------. \\ /
+ | [Guile Async | .-------+------.
+ | Museum] | | [Lab] #!#| .-------------.
+ | @| | MM | |[Federation |
+ | & ^ +##+@ || < +##| Station]|
+ | | | @ | | |
+ | & # | |*You-Are-Here*| '-------------'
+ | # ^ | #+-------+------'
+ '-------+------' # #
+ # # #
+ # # .-----------.
+ .-+----. # |# F |
+ |@?+%? +#### | ^ f## |
+ '------' | f f %|
+ |F [Mudsync |
+ | $ Swamp] |
+ '-----------'")
(define underground-lab
(lol
#:exits
(list (make <exit>
#:name "up"
- #:to 'computer-room)))))
+ #:to 'computer-room
+ #:traverse-check
+ (lambda (exit room whos-exiting)
+ (values #t "You climb the spiral staircase.")))))
+
+ ;; Test tubes
+ ;; map
+ ('underground-lab:map
+ <readable> 'underground-lab
+ #:name "the underground map"
+ #:desc '("This appears to be a map of the surrounding area. "
+ "You could read it if you want to.")
+ #:read-text `(pre ,underground-map-text)
+ #:goes-by '("map" "underground map" "lab map"))))
+
+
+
\f