aboutsummaryrefslogtreecommitdiff
path: root/building_guide
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-07-08 02:23:59 -0400
committerhistoria <[not public]>2026-07-08 02:23:59 -0400
commit2bbe6b8e912bbc5f4a61a33988fb27aca7bd5eb3 (patch)
treeef4aef5a7393de51d765b24d565b414ddac4b9fe /building_guide
parent71f0f381de64e045f91da19450adacf10fbc7902 (diff)
downloadthehouseoficarus-2bbe6b8e912bbc5f4a61a33988fb27aca7bd5eb3.tar.gz
feat: object and mob steal tables can include both tables and items
Diffstat (limited to 'building_guide')
-rw-r--r--building_guide/mobs.md12
-rw-r--r--building_guide/objects.md40
2 files changed, 34 insertions, 18 deletions
diff --git a/building_guide/mobs.md b/building_guide/mobs.md
index 7a6f0aa..470a00e 100644
--- a/building_guide/mobs.md
+++ b/building_guide/mobs.md
@@ -215,10 +215,12 @@ Stealable mobs have a root-level `steal:` block. On failed steal, the mob turns
```yaml
name: Farmer
steal:
- table: farmer_steal # Drop table for steal loot
- level: 10 # Required thieving level
- xp: 15 # XP per successful steal
- speed: 4 # Ticks per steal attempt
+ level: 10
+ speed: 4
+ xp: 15
+ drops:
+ - table: farmer_steal
+ weight: 1
combat:
kind: combat
attack_types: [slash]
@@ -250,7 +252,7 @@ combat:
| Field | Description |
|---|---|
-| `steal.table` | Drop table ID for loot when stealing |
+| `steal.drops` | Array of drop entries: `item_id` vs `table` (mutually exclusive), `weight` (required for pity buckets), `quantity` (override; 0 = use sub-item's own for table / 1 for item) |
| `steal.level` | Required thieving level |
| `steal.xp` | XP awarded per successful steal |
| `steal.speed` | Ticks per steal attempt (base wait) |
diff --git a/building_guide/objects.md b/building_guide/objects.md
index d377f23..a8877a7 100644
--- a/building_guide/objects.md
+++ b/building_guide/objects.md
@@ -275,25 +275,39 @@ use_interactions:
## Stealable Objects
-Objects can be stealable via the `steal` command. These use the same drop table system as mobs and searches.
+Objects can be stealable via the `steal` command. These use drop entries — either
+item IDs or drop table references — resolved by weighted pick. The `steal` command
+supports auto-selection when only one target is available, or `steal <name>` for
+explicit targeting, including `steal <n>.<name>` to disambiguate identical defs.
```yaml
name: Market Stall
description: "A wooden stall piled with food and sundries."
-steal_table: market_stall_steal
-steal_level: 5
-steal_xp: 12
-steal_speed: 5
-guard_mob: guard
+steal:
+ drops:
+ - table: market_stall_steal
+ weight: 1
+ level: 5
+ xp: 12
+ speed: 5
+ guard_mob: guard
```
-| Field | Description |
-| ------------- | ------------------------------------------------ |
-| `steal_table` | Drop table ID for loot when stealing |
-| `steal_level` | Required thieving level |
-| `steal_xp` | XP awarded per successful steal |
-| `steal_speed` | Ticks per steal attempt (base wait) |
-| `guard_mob` | Mob def ID that guards this object (watches it) |
+| Field | Description |
+| ---------------- | ------------------------------------------------ |
+| `steal.drops` | Array of drop entries (item_id + weight, or table + weight) |
+| `steal.level` | Required thieving level |
+| `steal.xp` | XP awarded per successful steal |
+| `steal.speed` | Ticks per steal attempt (base wait) |
+| `steal.guard_mob`| Mob def ID that guards this object (watches it) |
+
+Each drop entry:
+| Field | Description |
+| ------------ | ------------------------------------------------ |
+| `item_id` | Item ID (mutually exclusive with `table`) |
+| `table` | Drop table ID to sub-resolve (mutually exclusive with `item_id`) |
+| `weight` | Weight in the weighted-pick pool |
+| `quantity` | Override quantity (0 = use sub-item's own qty for tables, or 1 for items) |
When `guard_mob` is set, a mob with that def ID in the same room watches the object
on a tick-based cycle (8 ticks watching, 4 ticks looking away). While the guard is