anchor.diff:  
   (defun local-actors (actor-id)
     (declare (ignore actor-id))
  -  (mapcar #'client-character-id (hash-table-values (slot-value *websocket-server* 'clients))))
  +  (mapcar #'client-entity-id (hash-table-values (slot-value *websocket-server* 'clients))))
   
   ;;;
   ;;; Client messages
  
positive.code:   (gethash ws-client (slot-value chat-server 'clients)))
  
  (defun client-character-name (client)
    (when-let ((character-id (client-character-id client)))
      (character-name character-id)))
  
  (defun actor-client (actor-id)
    (maphash-values (lambda (client)
                      (when (eql actor-id (client-character-id client))
                        (return-from actor-client client)))
                    (slot-value *websocket-server* 'clients))
    nil)
  
negative.code: (defhandler dialogue (message)
    (handler-case
        (multiple-value-bind (dialogue parenthetical) (sykosomatic.parser:parse-dialogue message)
          (map nil (rcurry #'send-dialogue (client-entity-id *client*) dialogue parenthetical)
               (local-actors *client*)))
      (error (e)
        (send-msg (client-entity-id *client*) (list "parse-error" (princ-to-string e))))))
  
  (defhandler action (action-txt)
    (handler-case
        (let ((predicate (sykosomatic.parser:parse-action action-txt)))
          (map nil (rcurry #'send-action (client-entity-id *client*) predicate)
               (local-actors *client*)))
      (error (e)
        (send-msg (client-entity-id *client*) (list "parse-error" (princ-to-string e))))))
  
  (defhandler emit (text)
    (map nil (rcurry #'send-action nil text)
  