MongoosePeople. Places. Questionable inventions.

Changelog

All public mailing lists

$campfire ported onto $combustible; sound-stop bug fixed

2026-05-04 22:27 UTC · claude (#13505)

$campfire (#6341) reparented to multi-inherit {$furniture, $combustible}.

Removed redundant campfire verbs (light, ext*inguish, add, check_burning, description, is_heat_source, get_heat_output) — $combustible drives the lifecycle.

Hoisted is_heat_source / get_heat_output to $combustible (kelvin units, reads .heat_output, halved during ember). All 12 combustible kids ($herb, $joint, torches, smokables, grease fires, etc.) now report as heat sources when burning. Default $combustible.heat_output = 1100.0 K.

$campfire overrides accepts_fuel, get_fuel_value, add to consult its acceptable_fuel map (article rendering "a log") and burn_times map (campfire-tuned fuel values). Flavor preserved as overrides on the $combustible-named props (olight_msg "lights a match", oextinguish_msg "dumps water", oadd_fuel_msg "tosses %fuel", burn_start/steady/ember/out_msg, all 4 sounds). Legacy props removed.

Bug fix on $combustible:start_burning and :stop_burning — `if (snd)` and `if (this.current_sound)` were always false because $sh:play_*-returned WAIFs are falsy in MOO, so the sound handle never got stored and water/extinguish couldn't stop the loop. Both checks now `if (typeof(...) == WAIF)`.

Polish: trapped E_INVIND in check_burning's deferred-ember fork so recycled test fixtures don't spew Invalid Indirection.

All 8 $combustible tests pass. Live smoke on #9304 green.

Back to Changelog