Fix the bell and start adding the hard disk
authorChristopher Allan Webber <cwebber@dustycloud.org>
Sun, 29 Jan 2017 18:02:35 +0000 (12:02 -0600)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Sun, 29 Jan 2017 18:02:35 +0000 (12:02 -0600)
worlds/bricabrac.scm

index ee0ff08806fee83f987274839ce00123df610225..e241fde278a9b92498a677279607597272069522 100644 (file)
@@ -280,7 +280,7 @@ Classy!"
     #:desc "  A shiny brass bell.  Inscribed on its wooden base is the text
 \"ring me for service\".  You probably could \"ring the bell\" if you 
 wanted to."
-    #:summons 'break-desk-clerk)
+    #:summons 'break-room:desk-clerk)
 
    ('lobby:sign-in-form
     <sign-in-form> 'lobby
@@ -495,7 +495,9 @@ Hackthena must be an emacs user."
     #:desc "This isn't a shield after all, it seems to be a hard disc
 platter!  It looks kind of loose..."
     #:invisible? #t
-    #:goes-by '("hard disc platter" "disc platter" "disc" "shield" "platter"))))
+    #:goes-by '("hard disc platter" "disc platter" "disc"
+                "hard disk platter" "disk platter"
+                "shield" "platter"))))
 
 \f
 ;;; Playroom
@@ -506,12 +508,16 @@ platter!  It looks kind of loose..."
    ('playroom
     <room> #f
     #:name "The Playroom"
-    #:desc "  There are toys scattered everywhere here.  It's really unclear
-if this room is intended for children or child-like adults."
+    #:desc '(p ("  There are toys scattered everywhere here.  It's really unclear
+if this room is intended for children or child-like adults.")
+               ("  There are doors to both the east and the west."))
     #:exits
     (list (make <exit>
             #:name "east"
-            #:to 'grand-hallway)))
+            #:to 'grand-hallway)
+          (make <exit>
+            #:name "west"
+            #:to 'computer-room)))
    ('playroom:cubey
     <gameobj> 'playroom
     #:name "Cubey"
@@ -925,13 +931,59 @@ the paint, but the wires themselves seem to be unusually sturdy."
 ;;; Computer room
 ;;; -------------
 
+;; Our computer and hard drive are based off the PDP-11 and the RL01 /
+;; RL02 disk drives.  However we increment both by .5 (a true heresy)
+;; to distinguish both from the real thing.
+
+(define-actor <hard-drive> (<gameobj>)
+  ()
+  ;; the state moves from: empty -> with-disc -> loading -> ready
+  (state #:init-value 'empty
+         #:accessor .state))
+
+(define* (hard-drive-desc hard-drive #:optional whos-looking)
+  `((p "The hard drive is labeled \"RL02.5\".  It's a little under a meter tall.")
+    (p "There is a slot where a disk platter could be inserted, "
+       ,(if (eq? (.state hard-drive) 'empty)
+            "which is currently empty"
+            "which contains a glowing platter")
+       ". There is a LOAD button "
+       ,(if (member (.state hard-drive) '(empty with-disc))
+            "which is glowing"
+            "which is pressed in and unlit")
+       ". There is a READY indicator "
+       ,(if (eq? (.state hard-drive) 'ready)
+            "which is glowing.  The machine emits a gentle whirring noise."
+            "which is unlit."))))
+
+(define computer-room
+  (lol
+   ('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."))
+    #:exits
+    (list (make <exit>
+            #:name "east"
+            #:to 'playroom)))
+   ('computer-room:hard-drive
+    <hard-drive> 'computer-room
+    #:name "a hard drive"
+    #:desc (wrap-apply hard-drive-desc)
+    #:goes-by '("hard drive" "drive" "hard disk"))))
+
+
 \f
 ;;; Game
 ;;; ----
 
 (define (game-spec)
   (append lobby grand-hallway smoking-parlor
-          playroom break-room))
+          playroom break-room computer-room))
 
 ;; TODO: Provide command line args
 (define (run-game . args)