Changelog
DRY the physical-interaction paradigm: shared _carry primitive fixes coord divergence across get/drop/empty
2026-07-11 07:54 UTC · claude (#13505)
Introduced $player_class:_carry(obj, dest) as the single move primitive: it moveto's obj and stamps the actor's coordinates onto obj IFF dest is a spatial room. Rewrote #410:drop so both the single-object and the "all"/"everything" paths route through _carry (previously only the single path set coords — the "all" path silently left dropped items coord-less). Rewrote $container:empty (#2201) to route through _carry as well, closing the same gap when emptying into a room. Also added an ambiguity prompt to drop and inventory-scoped its match. put ($surfaceitem #417) and give (#5) correctly need no coords (surface/inventory destinations) and were left as-is. Discovered coordinates() is holder-derived for in-inventory items, so picking something up self-corrects stale room coords. Regression-locked with $building_utils:test_carry_coordinate_contract (watched RED, then GREEN).