diff options
| author | historia <[not public]> | 2026-10-03 19:46:54 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-10-03 19:46:54 -0400 |
| commit | 3a39a020e4449bc4d6f728ef837cffb9f7bd0c56 (patch) | |
| tree | 9ba1cd5f2aef6ef7c54fdf5b02a780604b5af80b /building_guide/hazards.md | |
| parent | c6d4702c0be4d2b37e1d82ff96265c52847c3f9a (diff) | |
| download | thehouseoficarus-3a39a020e4449bc4d6f728ef837cffb9f7bd0c56.tar.gz | |
feat: new casino game: plinko
Diffstat (limited to 'building_guide/hazards.md')
| -rw-r--r-- | building_guide/hazards.md | 45 |
1 files changed, 4 insertions, 41 deletions
diff --git a/building_guide/hazards.md b/building_guide/hazards.md index 04333c9..3b72840 100644 --- a/building_guide/hazards.md +++ b/building_guide/hazards.md @@ -1,17 +1,9 @@ ## Hazards A **hazard** is an environmental threat attached to a room — a sandstorm, solar -radiation, falling rocks, toxic spores. It rolls an "attack" against everyone in -the room every few ticks using the **same combat formulas as a mob**: the hazard -supplies the accuracy and max hit, and the player defends with their Defense -level plus the equipment defense bonus selected by the hazard's attack type. No -new combat math, no special gear — your existing armour and Defense skill are -what keep you alive. - -Hazards are **shared, ID-referenced definitions** (like drop tables and modules): -define a hazard once in `data/hazards/<id>.yaml`, then reference it from any number -of rooms with `hazard: <id>` (see `rooms.md`). This makes one hazard reusable -across a whole area and lets a future `examine` command resolve it by name. +radiation, falling rocks, toxic spores. Define it once in +`data/hazards/<id>.yaml`, then reference it from any number of rooms with +`hazard: <id>` (see `rooms.md`). **The filename is the ID** (`solar_radiation.yaml` → reference it as `hazard: solar_radiation`); the loader derives it from the filename. Do not put an `id:` field in the file — it is ignored. @@ -76,37 +68,8 @@ attacked — they only attack the player. | Field | Description | |---|---| | `name` | Display name used in warnings and default messages | -| `description` | Flavour text (for a future `examine`) | +| `description` | Flavour text for the hazard | | `warn_message` | Shown when warning the player about the area | | `hit_message` | Message on a hit; include a single `%d` to show the damage | | `miss_message` | Message on a miss | | `required_item` | If set and equipped, the hazard is fully negated for that player | - -### How it behaves - -- **Applies to everyone in the room, always** — idle, passing through, working a task, - or fighting a mob. Strong incentive to work fast, take cover, or leave. -- **Tech protection applies automatically.** Because the hazard has an attack type, the - matching protection tech reduces its damage: Kinetic Barrier (melee types), - Projectile Screen (`ranged`), Neural Firewall (`science`). -- **Safespots block all hazard damage.** A hidden player behind a safespot object takes - no hazard damage, regardless of hazard type. Note that doing a *melee* attack/work step - forces you out of cover — so ranged/science work lets you stay sheltered, melee does not. -- **Right gear negates it.** If `required_item` is set and equipped, the hazard is skipped - for that player entirely. The item must exist (validated at startup). -- **Hazards never interrupt movement.** Unlike a mob hit (which aborts a flee with - "Can't escape!"), a hazard hit does not touch your walk — you can keep moving out of - the danger zone while taking hits. - -### Entry warning - -Players walking from a **safe** room into a **hazardous** one get a `[Y/n]` confirmation -(pressing return defaults to yes; anything other than empty/`y`/`yes` cancels). Moving -between two hazardous rooms does not re-prompt. Players can disable the prompt with the -account option `danger_warning` (`option danger_warning false`). - -### Examine (forward-compatible) - -Because the hazard is a shared def referenced by ID, a future `examine sandstorm` can -resolve the current room's `hazard` ID, load the def, and render its attack type, accuracy, -max hit and description — no hidden objects required. |
