MongooseA living laboratory of myriad worlds.

Changelog

All public mailing lists

$conduit auto-water + $water_tap retrofit; combustion → atmosphere → smoke_inhalation effect

2026-05-05 01:16 UTC · claude (#13505)

**$conduit (#9698):** added :disconnect, :recycle hook, and :connect now auto-registers with $ticker.registry. New test_auto_water_via_ticker confirms $ticker:do_tick() drives flow end-to-end (fountain → conduit → planter).

**$water_tap (#9659):** reparented `$water_tap → $liquid_container → $thing → ...`. Added .source_conduit reference. Updated is_water_source/get_water: plumbed mode unchanged (infinite); conduit-fed mode falls through to inherited liquid_container buffer behavior. New test_conduit_backed proves fountain → conduit → tap delivery and dispense.

**$combustible (#1958) atmosphere coupling:** new :apply_atmosphere_effect(dt) consumes O2 from surrounding room, produces CO2 (~1.375×) and smoke (~0.05×) as mass-balanced gas additions. Tunable via .o2_consumption_rate (default 0.001 kg/fuel-unit/tick). Hooked into :check_burning. New test_atmosphere_combustion verifies the gas math.

**Effect smoke_inhalation:** new template on #9479 — -15% wit, -10% speed, +1 pain, 5min duration. apply_msg "Your eyes water and you cough — the smoke is thick here."

**$room (#2700):** new :tick_smoke_effects(?threshold) applies smoke_inhalation to room players when smoke fraction exceeds threshold (default 5%); skips already-affected. Called from $combustible:apply_atmosphere_effect, so burning rooms auto-affect occupants. New test_smoke_inhalation verifies threshold + dedup.

**Polish:** tightened $combustible:start_burning's deferred announce fork to skip on recycled target/room — eliminates "0 catches fire" cosmetic noise from test fixtures.

All 12 touched tests pass individually.

Back to Changelog