18-engine.md границы Tile2D, проекции 2D, формат проекта, второй проект 19-agent.md инструменты --tool, скиллы, терминал в редакторе 20-gdd.md акты, петли, рост отряда, закон масштаба, бюджет 200 часов 21-damage.md семь стихий, статусы, десять реакций, формулы, триггеры 22-loot.md редкости, аффиксы, артефакты, зачарования, материалы 23-endgame.md Бездна, мутации, лидерборды, 262 ачивки Плюс правки 01/02/07/15/16/17 под переехавшие пути и новые правила забега. Дизайнерская часть держится на одном законе: угроза растёт квадратично, сила отряда — линейно с затуханием, разрыв закрывается ЗНАНИЕМ, а не числами. Из него выведены и экономика опыта (41 млн против 44 млн дохода), и то, почему реакции считаются от глубины, а не от урона оружия, и почему в Бездне множитель HP разрешён, а во всём авторском контенте запрещён. .claude/commands: скиллы /tile2d, /room, /floor — правила этого движка, которые нельзя вывести из кода. Главное записано первым: не отчитываться об успехе без прохода --tool validate. Числа в этих документах — вход для инструментов, а не украшение. Расхождение между таблицей и выводом инструмента означает, что неправ документ. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
50 lines
2.2 KiB
Markdown
50 lines
2.2 KiB
Markdown
# Author or repair a room
|
||
|
||
Request: `$ARGUMENTS`
|
||
|
||
A room is a text file: `projects/<project>/rooms/<name>.room`. Edit it directly — there is
|
||
no binary step. Format and reasoning: `docs/15-engine-and-editor.md`.
|
||
|
||
## Before writing
|
||
|
||
1. `tile2d_editor --tool rooms` — what the set already has, and at which depths.
|
||
2. `tile2d_editor --tool ascii <similar-room>` — read a working room of the same kind.
|
||
3. `tile2d_editor --tool catalog monster <depth>` — what may be placed at that depth, with
|
||
its cost in the danger budget.
|
||
|
||
A new room must answer "what does this one do that the others don't": a wide arena, a
|
||
corridor where the formation cannot turn, a pocket that forces the squad to split. Another
|
||
rectangle with spawn points is not a room, it is filler.
|
||
|
||
## Hard constraints
|
||
|
||
- size between 5×5 and 14×14 (`ROOM_SLOT` is 16, the room must leave rock around it);
|
||
- doors only on the border, and at least one — a room without doors is never connected;
|
||
- **every floor tile must be reachable from the doors.** A sealed inner chamber looks
|
||
perfectly normal in the grid and silently makes the floor easier: whatever spawns inside
|
||
can neither reach the squad nor be killed. This has already happened twice in this repo
|
||
(`storage`, then `maw`);
|
||
- spawn points stand on floor, never in a wall, and their table is never empty;
|
||
- ids in the table must exist in that project's catalog.
|
||
|
||
Spawn tables hold **weights and a chance**, not a creature: `spawn 6 4 0.65 rusher:3 shambler:2`
|
||
means "this point fires 65% of the time, and then it is a rusher three times out of five".
|
||
Depth decides who is allowed and what the floor can afford; the room only says where.
|
||
|
||
## Verify
|
||
|
||
```bash
|
||
tile2d_editor --tool room <name> # doors, spawn tables, problems
|
||
tile2d_editor --tool ascii <name> # the grid, with spawn points numbered
|
||
tile2d_editor --tool validate # the whole set, including depth coverage
|
||
tile2d_editor --tool map <depth> 42 # the room inside an assembled floor
|
||
```
|
||
|
||
`validate` returning 1 means the set is broken — fix it before reporting. `map` is how you
|
||
see whether the room actually connects: look for its shape and check that the corridors
|
||
reach it.
|
||
|
||
## Report
|
||
|
||
The room's name, size, what it is for, and the numbers from `validate` and one `map` run.
|