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.
|