zones detail (Zones)



ZONES
=====

Backrooms Novel Game organises the world with *hierarchical zone tags*.
Each room carries **one** Tag in the *zone* category whose *key* encodes the
full path of that room in slash-delimited form.

    lobby/human_resources/training

Rules
-----
1. Use lower-snake (or kebab) case for every segment.
2. A single segment like `limbo` is perfectly valid for root-level areas.
3. A room may belong to *several* independent branches – add a second full
   path tag if necessary (rare).
4. Colours are defined on any ancestor tag via *zone catalog* (Map-Editor).
   The deepest coloured ancestor determines a room’s map colour.

Builder commands
----------------
• ``@setzone <full/path>`` – convenience helper, replaces any existing zone
  tag that shares the *root* segment, then adds the new path.

  Example::

      @setzone lobby/human_resources/training

• ``@tag here = <full/path> : zone`` – manual alternative (be sure to remove
  unwanted old tags yourself).

Searching & scripting
---------------------
In code (or the Python console)::

    rooms = evennia.search_tag("lobby/human_resources", category="zone", matchtype="startswith")

This returns every room in *lobby → human_resources* and any deeper child.

You can also lock exits or scripts based on zone::

    @lock exit = traverse:tag(lobby, zone)

Map-Editor
----------
Selecting a parent zone in the Map-Editor automatically includes every
descendant.  Breadcrumb links in the Room-Details drawer allow one-click
navigation up and down the hierarchy.

Building