-(define-actor <hackthena> (<gameobj>)
- ((cmd-take-from hackthena-take-from-proxy)))
-
-(define* (hackthena-take-from-proxy gameobj message
- #:key direct-obj indir-obj preposition
- (player (message-from message)))
- (call/ec
- (lambda (escape)
- (for-each
- (lambda (obj-sym)
- (define obj-id (dyn-ref gameobj obj-sym))
- (define goes-by
- (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)))
- '(grand-hallway:keyboard
- grand-hallway:disc-platter grand-hallway:hackthena-horns))
-
- (<- player 'tell
- #:text
- `("Hackthena doesn't appear to be holding " ,direct-obj ".")))))
+(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))