From 2725e2927a1595c7b100d942d1f14146252adeb7 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Thu, 25 Jun 2026 04:46:40 -0400 Subject: feat: who, global chat, removed redundant YAML IDs --- AGENTS.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'AGENTS.md') diff --git a/AGENTS.md b/AGENTS.md index 99cac55..2353b4a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -53,7 +53,7 @@ internal/ ## Key Conventions -**YAML-driven.** Rooms, items, objects, mobs, drops, modules, courses are YAML files under `data/`. Read from disk on every access — edit and it takes effect immediately, no restart. Crafting information lives in `craft:` blocks on item YAML files — no separate recipe directory. Items are organized into subdirectories by category (items: `equipment/`, `tools/`, etc.; rooms: `town/`, `wilderness/`, etc.). All IDs remain globally unique across subdirectories via path-indexed loading. +**YAML-driven.** Rooms, items, objects, mobs, drops, modules, courses are YAML files under `data/`. Read from disk on every access — edit and it takes effect immediately, no restart. Crafting information lives in `craft:` blocks on item YAML files — no separate recipe directory. Items are organized into subdirectories by category (items: `equipment/`, `tools/`, etc.; rooms: `town/`, `wilderness/`, etc.; objects: room-specific one-offs in `unique/`, generic shared objects flat). **The filename is the ID for every data type** (objects, items, mobs, rooms, drops, courses, techs, modules, hazards, help): lookup is by filename stem via the recursive path index, and every loader derives the struct's `ID` from that filename. **Do not put a top-level `id:` field in any data file — it is ignored.** (A nested `- id:` under a room's `objects:`/`mobs:` list is different: a *reference* to an object/mob by its filename, and is still required.) All IDs are globally unique across subdirectories via path-indexed loading; subdirectories are organizational only and do not namespace IDs. **Live state.** Player data (characters, accounts) is written to YAML on every state change. Ground items, mob instances, and object states live in memory only and are lost on restart. @@ -101,11 +101,12 @@ data/rooms/player_housing/ Player house rooms data/items/.yaml Item definitions (stats, equip_slot, tool_type, craft, burn_ticks, search_table, etc.) data/mobs/.yaml Mob definitions (combat stats, drops, behavior, steal config; kind: task for worksites) data/objects/.yaml Object definitions (name, aliases, behavior, hidden, inroom_description, descriptions, removal_item) +data/objects/unique/ Room-specific one-off objects, prefixed with the room number (e.g. unique/1001_sign.yaml) data/drops/.yaml Shared drop tables (weighted item lists, sub-table references) data/hazards/.yaml Shared room hazard definitions (attack_type, attack, max_hit, speed, messages, required_item) data/help/.yaml Help topics -data/modules/.yaml Science module definitions (id, level, max_hit, base_xp, junk_cost, category) -data/techs/.yaml Technology definitions (id, name, level, drain_rate, category, group, effects) +data/modules/.yaml Science module definitions (level, max_hit, base_xp, junk_cost, category) +data/techs/.yaml Technology definitions (name, level, drain_rate, category, group, effects) data/courses/.yaml Agility course definitions (name, required_level, start_room, obstacles) data/players/accounts/ Account YAML (gitignored) data/players/characters/ Character YAML (gitignored) @@ -442,6 +443,7 @@ Account-wide options set via `option `. Stored in account YAML, sh | `queue_silently` | bool | true | Suppress queue messages | | `danger_warning` | bool | true | Confirm `[Y/n]` before entering a hazardous area from a safe one | | `room_desc_width` | int | 70 | Room desc line wrap width | +| `wrap_width` | int | 120 | Wrap ALL output to this many columns (clamped to min 80; applied in `net.Session.WriteLine/WriteLines/Writef`, not `Write`) | | `unicode` | bool | true | Unicode box-drawing characters | | `run_countdown` | bool | false | Flee countdown messages | | `visual_ticks` | bool | false | Tick marker display | -- cgit v1.2.3