room level messages, client disconnection
[mudsync.git] / mudsync / room.scm
index 10932c9314fa3ff9e3b2bb7285e57ac6e562ddee..0b0e10108411c0aa1086cfd682a346c51149e43c 100644 (file)
@@ -83,6 +83,7 @@
    (cmd-go (wrap-apply room-cmd-go))
    (cmd-go-where (wrap-apply room-cmd-go-where))
    (look-room (wrap-apply room-look-room))
+   (tell-room (wrap-apply room-tell-room))
    ;; in this case the command is the same version as the normal
    ;; look-room version
    (cmd-look-room (wrap-apply room-look-room))
@@ -257,3 +258,19 @@ claim to point to."
    (else
     (<- room (message-from message) 'tell
         #:text "You don't see that here, so you can't look at it.\n"))))
+
+(define-mhandler (room-tell-room room message text)
+  "Tell the room some messages."
+  (define exclude (message-ref message 'exclude #f))
+  (define wait-delivery (message-ref message 'wait-delivery #f))
+  (define who-to-tell (gameobj-occupants room #:exclude exclude))
+  (for-each
+   (lambda (tell-me)
+     ;; @@: Does anything really care?
+     (define deliver-method
+       (if wait-delivery
+           <-wait
+           <-))
+     (deliver-method room tell-me 'tell
+                     #:text text))
+   who-to-tell))