anchor.diff:         (setf (actor-of cxn) nil)
          (setf (state-of cxn) 'wait-for-menu)))))
   
  +(define-connection-state describe-character
  +  (menu (cxn)
  +    (send-section-header cxn "edit character description")
  +    (loop for player-record in (players-of (account-of cxn))
  +       as player-idnum = (idnum-of player-record)
  +       as player = (load-player-from-xml player-idnum)
  +       as idx from 1
  +       do (cxn-write cxn "    &c[&y~2d&c] &c~20a &n~10a ~10a ~6a ~a~%"
  +                     idx (name-of player)
  +                     (aref +player-races+ (race-of player))
  +                     (aref +class-names+ (char-class-of player))
  +                     (case (sex-of player)
  +                       (male "Male")
  +                       (female "Female")
  +                       (t "Neuter"))
  +                     (if (plusp (level-of player))
  +                         (format nil "lvl ~d" (level-of player))
  +                         " new")))
  +    (cxn-write cxn "&n~%"))
  +  (prompt (cxn)
  +    (cxn-write cxn "~%           &yWhich character's description do you want to edit:&n "))
  +  (input (cxn line)
  +    (let* ((idx (parse-integer line :junk-allowed t))
  +           (player-record (and idx (nth (1- idx) (players-of (account-of cxn)))))
  +           (idnum (and player-record (idnum-of player-record))))
  +      (cond
  +        ((zerop (length line))
  +         (setf (state-of cxn) 'main-menu))
  +        ((null idnum)
  +         (cxn-write cxn "~%That character selection doesn't exist.~%~%")
  +         (setf (state-of cxn) 'wait-for-menu))
  +        (t
  +         (setf (actor-of cxn) (gethash idnum *character-map*))
  +         (unless (actor-of cxn)
  +           (setf (actor-of cxn) (load-player-from-xml idnum)))
  +         (cond
  +           ((actor-of cxn)
  +            (setf (account-of (actor-of cxn)) (account-of cxn))
  +            (setf (state-of cxn) 'describe-editor))
  +           (t
  +            (cxn-write cxn "~%That character cannot be loaded.~%~%")
  +            (slog "Couldn't retrieve char idnum ~d" idnum)
  +            (setf (state-of cxn) 'wait-for-menu))))))))
  +
  +(define-connection-state describe-editor
  +  (menu (cxn)
  +    (send-section-header cxn "description")
  +    (cxn-write cxn "    Other players will usually be able to determine your general
  +size, as well as your race and gender, by looking at you.  What
  +else is noticable about your character?
  +")
  +    (start-text-editor cxn (actor-of cxn)
  +                       (format nil "the description of ~a"
  +                               (name-of (actor-of cxn)))
  +                       (fdesc-of (actor-of cxn))
  +                       (lambda (cxn ch buffer)
  +                         (setf (fdesc-of ch) buffer)
  +                         (save-player-to-xml ch)
  +                         (setf (state-of cxn) 'main-menu))
  +                       (lambda (cxn ch)
  +                         (declare (ignore ch))
  +                         (setf (state-of cxn) 'main-menu)))))
   
   (define-connection-state afterlife
     (prompt (cxn)
  
positive.code:     delete-verify
      delete-password
      describe-character
      describe-editing
      playing
  	afterlife
      disconnecting))
  
  (defvar *cxn-paginate* nil)
  
negative.code: 			   (code-char #x01)))
    (cond
      ((member state +valid-cxn-states+)
  	 (call-next-method)
       (send-menu cxn state)
       (setf (need-prompt-p cxn) t))
      (t
       (mudlog 'warning t "attempt to set cxn to state ~a" state)))
  
  