X-Git-Url: https://jxself.org/git/?p=mudsync.git;a=blobdiff_plain;f=mudsync%2Fplayer.scm;h=bfa7ca88b0e8911810a43246cbe59ad905ba0845;hp=1063955b6d4ba56371d82b5952ca84943d7d3991;hb=106536778bbd8ad0cc850cb3ef7dcc5e2499eee2;hpb=754bd427883ab189433fad90293e05d9aced2f70 diff --git a/mudsync/player.scm b/mudsync/player.scm index 1063955..bfa7ca8 100644 --- a/mudsync/player.scm +++ b/mudsync/player.scm @@ -41,22 +41,24 @@ ;; aliases... ;; @@: Should use an "alias" system for common aliases? (empty-command "inv" 'cmd-inventory) - (empty-command "i" 'cmd-inventory))) + (empty-command "i" 'cmd-inventory) + (empty-command "help" 'cmd-help))) (define-class () (username #:init-keyword #:username #:getter player-username) - (self-commands #:init-value player-self-commands) + (self-commands #:init-value (wrap player-self-commands)) (actions #:allocation #:each-subclass - #:init-value + #:init-thunk (build-actions (init player-init) (handle-input player-handle-input) (tell player-tell) (disconnect-self-destruct player-disconnect-self-destruct) - (cmd-inventory player-cmd-inventory)))) + (cmd-inventory player-cmd-inventory) + (cmd-help player-cmd-help)))) ;;; player message handlers @@ -82,7 +84,7 @@ (apply <- winner-id cmd-action message-args)) (#f (<- (gameobj-gm player) 'write-home - #:text "Huh?\n")))) + #:text "Sorry, I didn't understand that? (type \"help\" for common commands)\n")))) (define* (player-tell player message #:key text) (<- (gameobj-gm player) 'write-home @@ -103,7 +105,7 @@ (define inv-names (map (lambda (inv-item) - (msg-val (<-wait inv-item 'get-name))) + (mbody-val (<-wait inv-item 'get-name))) (gameobj-occupants player))) (define text-to-show (if (eq? inv-names '()) @@ -115,6 +117,27 @@ inv-names)))) (<- (actor-id player) 'tell #:text text-to-show)) +(define (player-cmd-help player message) + (<- (actor-id player) 'tell + #:text '((strong "** Mudsync Help **")(br) + (p "You're playing Mudsync, a multiplayer text-adventure. " + "Type different commands to interact with your surroundings " + "and other players.") + (p "Some common commands:" + (ul (li (strong "say ") " -- " + "Chat with other players in the same room. " + "(Also aliased to the " (b "\"") " character.)") + (li (strong "look") " -- " + "Look around the room you're in.") + (li (strong "look [at] ") " -- " + "Examine a particular object.") + (li (strong "go ") " -- " + "Move to another room in direction."))) + (p "Different objects can be interacted with in different ways. " + "For example, if there's a bell in the same room as you, " + "you might try typing " (em "ring bell") + " and see what happens.")))) + ;;; Command handling ;;; ================ @@ -133,7 +156,7 @@ ;; Ask the room for its commands (define room-commands ;; TODO: Map room id and sort - (msg-receive (_ #:key commands) + (mbody-receive (_ #:key commands) (<-wait player-loc 'get-container-commands #:verb verb) commands)) @@ -142,7 +165,7 @@ (define co-occupants (remove (lambda (x) (equal? x (actor-id player))) - (msg-receive (_ #:key occupants) + (mbody-receive (_ #:key occupants) (<-wait player-loc 'get-occupants) occupants))) @@ -155,7 +178,7 @@ (define co-occupant-commands (fold (lambda (co-occupant prev) - (msg-receive (_ #:key commands goes-by) + (mbody-receive (_ #:key commands goes-by) (<-wait co-occupant 'get-commands #:verb verb) (append @@ -180,7 +203,7 @@ (define inv-item-commands (fold (lambda (inv-item prev) - (msg-receive (_ #:key commands goes-by) + (mbody-receive (_ #:key commands goes-by) (<-wait inv-item 'get-contained-commands #:verb verb) (append