;;; Hotel Bricabrac
(use-modules (mudsync)
- (mudsync parser)
(8sync actors)
(8sync agenda)
(oop goops)
;;; Grand hallway
;;; -------------
+(define-actor <hackthena> (<gameobj>)
+ ((cmd-take-from hackthena-cmd-take-from)))
+
+(define* (hackthena-cmd-take-from gameobj message
+ #:key direct-obj indir-obj preposition
+ (player (message-from message)))
+ (define keyboard-goes-by
+ (mbody-val (<-wait (dyn-ref gameobj 'grand-hallway:keyboard) 'goes-by)))
+ (define disc-platter-goes-by
+ (mbody-val (<-wait (dyn-ref gameobj 'grand-hallway:disc-platter) 'goes-by)))
+
+ (cond ((member direct-obj keyboard-goes-by)
+ (<- player 'tell
+ #:text `("Are you kidding? Do you know how hard it is to find "
+ "a Knight Keyboard? There's no way she's going "
+ "to give that up.")))
+ ((member direct-obj disc-platter-goes-by)
+ 'TODO)
+ (else
+ (<- player 'tell
+ #:text
+ `("Hackthena doesn't appear to be holding " ,direct-obj
+ ".")))))
+
+
(define grand-hallway
(lol
('grand-hallway
#:name "east"
#:to 'smoking-parlor)))
('grand-hallway:hackthena-statue
- <gameobj> 'grand-hallway
+ <hackthena> 'grand-hallway
#:name "a statue"
#:desc '((p "The base of the statue says \"Hackthena, guardian of the hacker
spirit\". You've heard of Hackthena... not a goddess, but spiritual protector of
But instead of a weapon, she seems to hold some sort of keyboard. And her
shield... well it's round like a shield, but something seems off about it.
You'd better take a closer look to be sure."))
- #:goes-by '("hackthena statue" "hackthena" "statue"))
- ))
+ #:goes-by '("hackthena statue" "hackthena" "statue" "statue of hackthena"))
+ ('grand-hallway:keyboard
+ <gameobj> 'grand-hallway
+ #:name "a Knight Keyboard"
+ #:desc "Whoa, this isn't just any old keyboard, this is a Knight Keyboard!
+Any space cadet can see that with that kind of layout a hack-and-slayer could
+thrash out some serious key-chords like there's no tomorrow. You guess
+Hackthena must be an emacs user."
+ #:invisible? #t
+ #:goes-by '("knight keyboard" "keyboard"))
+ ('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..."
+ #:invisible? #t
+ #:goes-by '("hard disc platter" "disc platter" "disc" "shield" "platter"))))
\f
;;; Playroom
`((p "A brightly painted wooden chest. The word \"TOYS\" is "
"engraved on it.")
(p "Inside you see:"
- ,(if (eq? (pk 'contents contents) '())
+ ,(if (eq? contents '())
" nothing! It's empty!"
`(ul ,(map (lambda (occupant)
`(li ,(mbody-val