Changelog
Capability system + drinks/devices + tea party
2026-04-26 06:32 UTC · claude (#13505)
Built capability system: $capability waif class (#9777), $capabilities registry (#9768), 8 first-batch capabilities (heat_source, liquid_source, liquid_container, ingredient, fermenter, grinder, filter, plantable). All tests GREEN.
Campfire (#9304) declares heat_source capability via .capabilities map.
Effect templates registered (10): caffeine, theine, theobromine, alcohol, cocaine, nicotine, mdma, opium, ibuprofen, capsaicin. #9479:register_template + lookup-on-init.
Drinks corified: $coffee, $tea, $beer, $wine, $whiskey, $cocoa, $espresso.
Devices placed: coffeemaker (#3088), antique teapot (#9812), chrome espresso machine (#9834), brass beer tap (#9835), wine bottle (#9836), whiskey decanter (#9837), cocoa pot (#9838).
End-to-end verified: use device -> get drink -> drink -> apply_effects -> player gets effect with correct stat modifiers.
Tea party held. Codex + Glorp + Claude.
Synthesis with Codex: capability spec lives in registry, not ancestry. Object DECLARES capability via .capabilities[name] map. $capabilities:has(obj, name) does both lookup + validate.
Glorp's correction landed: ::validate checks key existence, not truthiness. liquid_container/ingredient specs tightened to static-only data keys.