Senses traits
readable (readable, optionally with text "…"; an adjective). It
carries the text itself, plus readableType (which picks the message
key from text, book, sign, or inscription), page fields for books
(pageContent, currentPage, pages), the
isReadable/cannotReadMessage gate, and hasBeenRead. From Chord
only text is settable; pages and types are TypeScript. The letter and
inscription are both this trait.
scenery (scenery; an adjective). It is fixed in place: it blocks
taking with fixed_in_place or its own cantTakeMessage, drops
out of "You can see …" lists while remaining examinable (the telescope),
and reads in place rather than being picked up. Two
more fields, mentioned and visible, fine-tune listing and
visibility; both are TypeScript-only settings.
concealment (a trait for hiding actors, ADR-148). It declares an
entity as a hiding spot: which positions it supports (behind, under,
on, inside), how good the cover is, and how many can hide there. The
hiding action validates against it and marks the hider with a
dynamic concealed-state trait whose visibility behavior makes them
unseeable, and that behavior is story-overridable. It composes as the
hiding-spot adjective: bare, it supports every position, while with position <word> narrows to one. Hidden items use the identity
concealed flag instead.
acoustic (a trait, TypeScript-only, ADR-172/173). It sits on walls and rates how sound crosses them: thin / default / thick / soundproof, with a dampener variant for tapestries and peepholes.
listener (a trait, TypeScript-only, ADR-172/173). It marks an
entity as receiving propagated sounds, and the engine attaches it to
the player automatically; each delivered sound arrives as a
sound-audibility-heard event with rendered prose. No story ships on
this system yet; it is the platform's eavesdropping substrate.