Sharpee
Chord / Standard Library / Senses & Examination / listening and smelling

listening and smelling

Both parse since ADR-230 D2: listen, listen to X, and the hear [X] alias; smell and sniff, bare or with a target.

listen (listening). With a target, a running device reports device_running, a stopped one device_off, a container sloshes (liquid_sounds) or rustles (container_sounds) by its contents, and anything else reports no_sound. Bare listen scans the room: running devices report active_devices, and an otherwise quiet room reports silence. It has no preconditions at all, making it a pure flavor seam.

smell (smelling). With a target, food and drink report food_scent/drink_scent, a lit light source burning_scent, an open container with food inside container_food_scent, and anything else no_particular_scent; a target in another room refuses too_far. Bare smell checks smoke first (smoke_detected), then food (food_nearby), and otherwise reports no_scent.

The author writes:

create the Chapel
  a room

  Candle smoke and old stone.

create the pipe organ
  aka organ
  scenery
  in the Chapel

  A pipe organ that fills the far wall.

  on listening it
    phrase organ-breath
  end on

  phrase organ-breath:
    Air sighs through the pipes, a chord not quite sounding.

create the player
  starts in the Chapel

The player sees:

> listen
You hear nothing out of the ordinary.

> listen to the organ
Air sighs through the pipes, a chord not quite sounding.

> smell the organ
The pipe organ has no particular smell.

> smell
You don't smell anything unusual.

The organ's on listening it phrase replaces the stock miss entirely; where no clause answers, the platform's own misses are honest rather than errors.

listen (listening-*)smell (smelling-*)
Refusalstoo_far
Successdevice_running · device_off · liquid_sounds · container_sounds · no_sound · active_devices · silencefood_scent · drink_scent · burning_scent · container_food_scent · no_particular_scent · smoke_detected · food_nearby · no_scent
Eventslistened / listen_blockedsmelled / smell_blocked

Interceptors: like touching, both are favorites for on listening it / on smelling it clauses.

Separately from this action pair, the platform has a real sound propagation system (the acoustic traits): engine-level, per-turn, event-driven. Sounds travel through walls by acoustic cost and reach listener entities. The listening action does not read it; the two meet in story logic, not in stdlib.