cleaning up hackthena's shield a bit
[mudsync.git] / worlds / bricabrac.scm
index e241fde278a9b92498a677279607597272069522..3f71ce71aef194b94786bc7012c023403654fd39 100644 (file)
@@ -20,8 +20,7 @@
 
 (use-modules (mudsync)
              (mudsync container)
-             (8sync actors)
-             (8sync agenda)
+             (8sync)
              (oop goops)
              (ice-9 control)
              (ice-9 format)
@@ -79,7 +78,7 @@
           (mbody-val (<-wait obj-id 'goes-by)))
         (when (ci-member direct-obj goes-by)
           (<- obj-id 'cmd-take #:direct-obj direct-obj #:player player)
-          (escape)))
+          (escape #f)))
       (slot-ref gameobj 'proxy-items))
 
      (<- player 'tell
@@ -132,6 +131,7 @@ or 'skribe'?  Now *that's* composition!"))
    #:allocation #:each-subclass
    #:init-thunk (build-commands
                  ("sign" ((prep-direct-command cmd-sign-form '("as"))))))
+
   (actions #:allocation #:each-subclass
            #:init-thunk (build-actions
                          (cmd-sign-form sign-cmd-sign-in))))
@@ -289,6 +289,7 @@ wanted to."
     #:desc "It looks like you could sign this form and set your name.")
 
    ;; Object: curio cabinets
+   ;; TODO: respond to attempts to open the curio cabinet
    ('lobby:cabinet
     <proxy-items> 'lobby
     #:proxy-items '(lobby:porcelain-doll
@@ -412,6 +413,46 @@ this general shape in the 1990s."
 ;;; Grand hallway
 ;;; -------------
 
+(define-actor <disc-shield> (<gameobj>)
+  ((cmd-take disc-shield-take)))
+
+(define* (disc-shield-take gameobj message
+                           #:key direct-obj
+                           (player (message-from message)))
+  (create-gameobj <glowing-disc> (gameobj-gm gameobj)
+                  player)  ;; set loc to player to put in player's inventory
+  (<- player 'tell
+      #:text '((p "As you attempt to pull the shield / disk platter
+from the statue, there is a bright glow...  and a completely separate,
+glowing copy of the disc materializes into your hands!")
+               (p "You hear a voice whispering in your ear: "
+                  (i "\"Share the software... and you'll be free...\"")))))
+
+;;; This is the disc that gets put in the player's inventory
+(define-actor <glowing-disc> (<gameobj>)
+  ((cmd-drop glowing-disc-drop-cmd))
+  (initial-props
+   #:allocation #:each-subclass
+   #:init-thunk (build-props
+                 '((hd-platter? . #t))))
+  (name #:allocation #:each-subclass
+        #:init-value "a glowing disc")
+  (desc #:allocation #:each-subclass
+        #:init-value "A brightly glowing disc.  It's shaped like a hard
+drive platter, not unlike the one from the statue it came from.  It's
+labeled \"RL02.5\".")
+  (goes-by #:init-value '("glowing disc" "glowing platter"
+                          "glowing disc platter" "glowing disk platter"
+                          "platter" "disc" "disk" "glowing shield")))
+
+(define* (glowing-disc-drop-cmd gameobj message
+                   #:key direct-obj
+                   (player (message-from message)))
+  (<- player 'tell
+      #:text "You drop the glowing disc, and it shatters into a million
+pieces!")
+  (gameobj-self-destruct gameobj))
+
 (define grand-hallway
   (lol
    ('grand-hallway
@@ -490,14 +531,12 @@ Hackthena must be an emacs user."
                          `("Are you seriously considering desecrating a statue?")))
     #:goes-by '("hackthena's horns" "horns" "horns of hacktena"))
    ('grand-hallway:disc-platter
-    <gameobj> 'grand-hallway
-    #:name "a hard disc platter"
-    #:desc "This isn't a shield after all, it seems to be a hard disc
-platter!  It looks kind of loose..."
+    <disc-shield> 'grand-hallway
+    #:name "Hackthena's shield"
+    #:desc "This isn't a shield after all, it seems to be a hard disk
+platter!  It has \"RL02.5\" written on it.  It looks kind of loose..."
     #:invisible? #t
-    #:goes-by '("hard disc platter" "disc platter" "disc"
-                "hard disk platter" "disk platter"
-                "shield" "platter"))))
+    #:goes-by '("hackthena's shield" "shield" "platter"))))
 
 \f
 ;;; Playroom