StaticamountStaticcompareSign-only comparison of two closure levels by rank — same shape
as Array.prototype.sort's comparator. Negative when a is the
looser closure.
StaticfloorA one-line room-view summary of any puddle pooling on location's
floor — e.g. "A puddle of clear water pools on the floor." Returns
null when the location has no floor or the floor's surface slot
is empty. Consumed by LookController so a spill surfaces in the
bare look (the floor's own look floor description carries the
puddle too, via the Bulkable markup augmenter).
StaticfloorStaticingestHand consumed matter to an actor's ingest seam (a Creature
method; v1 no-op). Used by drink / sip. Duck-typed so a
non-Creature giver can't crash the verb; null material is a
no-op. The bridge lives in the Api layer so both verbs route
through one place.
StaticingestSolid analog of ingest — the eat bridge. Routes the
consumed solid through the same Creature.ingest seam with the
'solid' phase so it fills the digestion buffer's solid
sub-volume. Returns the litres the body actually accepted (the
digestion-buffer cap may refuse the excess of an over-full
stomach), so eat can hold to the partial-transfer contract; a
non-Creature giver or null material accepts nothing.
StaticrequiredThe closure level a contained material requires to be retained.
v1: every bulk material is liquid → 'liquidTight'. The gas /
granular branches are the documented extension point.
StaticslotResolve a holder's bulk slot handle for a verb. affordance
comes from model.field.via?.bulk?.affordance (set by the :b
transform or material-keyword resolution); when absent, the
holder's single present slot is used. Returns null when the
holder isn't Bulkable or the slot can't be resolved (ambiguous /
missing) — the controller renders the player-facing decline.
StatictransferMove matter from one bulk slot to another (or to a discard sink,
to === null, for drink).
Pipeline:
empty-result, declined.to — a non-empty destination must
hold the same material → target-declined { material-mismatch }.interior to — if its closure can't retain
the matter, drain through to the floor's surface puddle (one
level of redirection, not recursive).applied = min(requested, from.available(), to.remaining()); strict shortfall rejects, lenient clamps.null sink just discards.
Translate an MQL quantity hint into a TransferAmount. A
'measure'converts to canonical litres (via the unit converters); a missing hint or'all'yields the verb'sfallback(drink/spillpass{ kind: 'all' },fillpasses its capacity target). A'count'is meaningless for bulk and falls back too.