MongooseA living laboratory of myriad worlds.

All help topics · Link to this topic

Showing help on 'composition-workflow'

Build functional components, compose their integration messages, then trim static furniture prose.
Test controls, state, movement, and sound lifecycle.
Words and sounds are data: every message is a _msg property and every sound a _snd property on the owning object ($sh:play_<name> reads <name>_snd). No hard-coded strings or sound IDs, so a child (an alien brig) only overrides properties.
Integration text is a clause the room finishes with the position ("... in the southeast corner."). Set a nonempty integrate_room_msg property too, and check room:ok_to_integrate(obj).
Build for cloning ($area_utils:create_instance -> $building_utils:clone_room): behavior lives on the room's generic; parts are clonable, keep size and position, and their :cloned calls $building_utils:copy_state(original, this). Parts find each other by label in their own room, never by stored object numbers.
No hard-coded object numbers in code. Reusable generics get a core name ($brig, $force_field); a one-off relationship is a property on the object (cell_class, bunk_class), never #1234 in a verb.
Force fields come two ways: $force_field is a standing object, and $exit_force_field is a doorway (closed = field up; you can talk through it; :raise/:lower; hums while up). Both have the same words and sounds as _msg/_snd properties.