aboutsummaryrefslogtreecommitdiff
path: root/building_guide/mobs.md
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-25 04:46:40 -0400
committerhistoria <[not public]>2026-06-25 04:46:40 -0400
commit2725e2927a1595c7b100d942d1f14146252adeb7 (patch)
treee8bc2292634a2d686c751981ddb3097517cccc6a /building_guide/mobs.md
parent94a06fbbe682701ca4d4bd2a70cd74d8df29c932 (diff)
downloadthehouseoficarus-2725e2927a1595c7b100d942d1f14146252adeb7.tar.gz
feat: who, global chat, removed redundant YAML IDs
Diffstat (limited to 'building_guide/mobs.md')
-rw-r--r--building_guide/mobs.md11
1 files changed, 4 insertions, 7 deletions
diff --git a/building_guide/mobs.md b/building_guide/mobs.md
index c1f9332..88e80ce 100644
--- a/building_guide/mobs.md
+++ b/building_guide/mobs.md
@@ -1,8 +1,11 @@
## Mobs
+**The filename is the ID.** A mob is looked up by its filename stem (`goblin.yaml` →
+`goblin`), and the loader derives `MobDef.ID` from it. Do not put an `id:` field in the file
+— it is ignored. Rooms reference mobs by that filename.
+
Basic combat mob with per-type defense bonuses:
```yaml
-id: "man"
name: "man"
description: "A shabby-looking man."
attack: 1
@@ -39,7 +42,6 @@ combat_descriptions:
Mobs with `aggressive: true` auto-attack players entering their room (1-tick delay). Only aggros if the player's combat level is at most double the mob's combat level. Checked on room enter and login.
```yaml
-id: goblin
name: goblin
aggressive: true # attacks players on sight
attack: 1
@@ -77,7 +79,6 @@ ranged_defense: 3
Mob with talk behavior — can be talked to via `talk:` inline config:
```yaml
-id: "guard"
name: "Guard"
talk: # inline talk config (no separate behavior file)
nodes:
@@ -116,7 +117,6 @@ is per-instance in the room YAML (see Rooms > Mobs section above).
Mobs can be stealable via the `steal` command. On failure, the mob turns hostile and attacks.
```yaml
-id: farmer
name: Farmer
steal_table: farmer_steal # Drop table for steal loot
steal_level: 10 # Required thieving level
@@ -136,7 +136,6 @@ steal_speed: 4 # Ticks per steal attempt
Assassin (Slayer) mobs restrict combat by assassin level and introduce finishing blows and protective equipment:
```yaml
-id: slug
name: slug
assassin_level: 1 # required assassin level to attack
finishing_blow: salt # item required to kill (mob stays at 1 HP otherwise)
@@ -155,7 +154,6 @@ drops:
Damage-without mobs deal 1.5x damage unless the player has the specified item equipped:
```yaml
-id: drone
name: drone
assassin_level: 15
damage_without: insulated_gloves # 1.5x damage without this item equipped
@@ -180,7 +178,6 @@ Mobs without these fields work normally (assassin_level defaults to 0, finishing
A task mob is a non-violent "worksite" — build a solar panel, survey flora, prospect a rock — that reuses the entire combat engine. Set `kind: task`. Mechanically its `hp` is a hidden work pool that drains to 0 to **complete** the work; the player sees a progress bar filling toward 100%. A task mob **never attacks back** — the danger (if any) comes from a room `hazard:` (see `hazards.md`). Use the `work` command (or `attack`) on it.
```yaml
-id: solar_panel_frame
name: solar panel frame
kind: task # "" / "combat" (default) or "task"
verb: assemble # flavor verb shown in messages (default: "work on")