anchor.diff:                                   (format nil "~a" dir))))))
   
   (defun show-room-obj (object ch stream)
  -  (cond
  -    ((line-desc-of object)
  -     (princ (line-desc-of object) stream))
  -    ((immortalp ch)
  -     (format stream "~a exists here."
  -             (string-upcase (name-of object) :end 1)))))
  +  (let ((non-blank-ldesc (string/= (line-desc-of object) "")))
  +    (when (or non-blank-ldesc (immortalp ch))
  +      (princ "&g" stream)
  +      (if non-blank-ldesc
  +          (princ (line-desc-of object) stream)
  +          (format stream "~a exists here."
  +                  (string-upcase (name-of object) :end 1)))
  +      (show-obj-bits object ch stream)
  +      (format stream "~%"))))
   
   (defun show-obj-bits (object ch stream)
  -  nil)
  +  (when (is-obj-stat2 object +item2-broken+)
  +    (format stream " &n<broken>"))
  +  (when (and (in-obj-of object)
  +             (is-corpse (in-obj-of object))
  +             (is-implant object))
  +    (format stream " (implanted)"))
  +  (when (or (carried-by-of object) (worn-by-of object))
  +    (when (is-obj-stat2 object +item2-reinforced+)
  +      (format stream " &y[&nreinforced&y]&n"))
  +    (when (is-obj-stat2 object +item2-enhanced+)
  +      (format stream " &m|enhanced|&n")))
  +  (when (and (is-obj-kind object +item-device+)
  +             (plusp (engine-state object)))
  +    (format stream " (active)"))
  +
  +  (when (or (and (or (= (kind-of object) +item-cigarette+)
  +                     (= (kind-of object) +item-pipe+))
  +                 (plusp (aref (value-of object) 3)))
  +            (and (is-obj-kind object +item-bomb+)
  +                 (contains-of object)
  +                 (is-obj-kind (contains-of object) +item-fuse+)
  +                 (plusp (fuse-state (contains-of object)))))
  +    (format stream " (lit)"))
  +  (when (is-obj-stat object +item-invisible+)
  +    (format stream " &c(invisible)&n"))
  +  (when (is-obj-stat object +item-transparent+)
  +    (format stream " &c(transparent)&n"))
  +  (when (is-obj-stat2 object +item2-hidden+)
  +    (format stream " &r(hidden)&n"))
  +  (when (or (and (aff3-flagged ch +aff3-detect-poison+)
  +                 (or (is-obj-kind object +item-food+)
  +                     (is-obj-kind object +item-drinkcon+)
  +                     (is-obj-kind object +item-fountain+))
  +                 (plusp (aref (value-of object) 3)))
  +            (affected-by-spell object +spell-envenom+))
  +    (format stream " &g(poisoned)&n"))
  +  (when (or (aff-flagged ch +aff-detect-align+)
  +            (and (is-cleric ch)
  +                 (aff2-flagged ch +aff2-true-seeing+)))
  +    (when (is-obj-stat object +item-bless+)
  +      (format stream " &B(holy aura)&n"))
  +    (when (is-obj-stat object +item-damned+)
  +      (format stream " &B(unholy aura)&n")))
  +  (when (and (or (aff-flagged ch +aff-detect-magic+)
  +                 (aff2-flagged ch +aff2-true-seeing+))
  +             (is-obj-stat object +item-magic+))
  +    (format stream " &Y(yellow aura)&n"))
  +  (when (and (or (aff-flagged ch +aff-detect-magic+)
  +                 (aff2-flagged ch +aff2-true-seeing+)
  +                 (pref-flagged ch +pref-holylight+))
  +             (plusp (sigil-idnum-of object)))
  +    (format stream "&y(&msigil&y)&n"))
  +  (when (is-obj-stat object +item-glow+)
  +    (format stream " &g(glowing)&n"))
  +  (when (is-obj-stat object +item-hum+)
  +    (format stream " &r(humming)&n"))
  +  (when (is-obj-stat2 object +item2-ablaze+)
  +    (format stream " &R*burning*&n"))
  +  (when (is-obj-stat3 object +item3-hunted+)
  +    (format stream " &r(hunted)&n"))
  +  (when (obj-soiled object +soil-blood+)
  +    (format stream " &r(bloody)&n"))
  +  (when (obj-soiled object +soil-water+)
  +    (format stream " &c(wet)&n"))
  +  (when (obj-soiled object +soil-mud+)
  +    (format stream " &y(muddy)&n"))
  +  (when (obj-soiled object +soil-acid+)
  +    (format stream " &g(acid covered)&n"))
  +  (when (plusp (owner-id-of (shared-of object)))
  +    (format stream " &Y(protected)&n"))
  +  (when (tmp-affects-of object)
  +    (when (affected-by-spell object +spell-item-repulsion-field+)
  +      (format stream " &c(repulsive)&n"))
  +    (when (affected-by-spell object +spell-item-attraction-field+)
  +      (format stream " &c(attractive)&n"))
  +    (when (affected-by-spell object +spell-elemental-brand+)
  +      (format stream " &r(branded)&n")))
  +  (when (pref-flagged ch +pref-disp-vnums+)
  +    (format stream " &y<&n~a&y>&n"
  +            (vnum-of (shared-of object)))))
   
   (defun show-obj-extra (object ch stream)
     nil)
  
positive.code:                      " is lying here, stunned."
                       " is sleeping here."
                       " is resting here."
                       "!FIGHTING!"
                       " is standing here."
                       " is hovering here."
  
negative.code:         (when (and (is-npc i)
                     (or (immortalp ch) (testerp ch))
                     (pref-flagged ch +pref-disp-vnums+))
            (format stream " &g<&n~d&g>" (vnum-of (shared-of i))))
  
          (unless (is-npc i)
            (unless (link-of i)
              (format stream " &m(linkless)&y"))
            (when (plr-flagged i +plr-writing+)
              (format stream " &g(writing)&y"))
  