aboutsummaryrefslogtreecommitdiff
path: root/worldbuilding_guide/items.md
blob: 0a4592b043c68d4fd258392b15bc7672006eb484 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
## Items

```yaml
id: bronze_pickaxe
name: bronze pickaxe
color: "178"                   # xterm-256 color index (0-255)
aliases: ["pick", "pickaxe"]
description: "A sturdy bronze pickaxe."
value: 10
stackable: false
equip_slot: main_hand        # optional — where it equips
weapon_type: melee            # optional — melee or ranged
stats:                        # optional — combat bonuses
  attack_bonus: 2
  strength_bonus: 1
speed: 5                      # ticks between attacks
tool_type: pickaxe            # used by gather behaviors that require "tool: pickaxe"
tool_speed: 2                 # reduces gather wait time
```

### Color

The `color` field accepts xterm-256 palette indices (0-255) with optional modifiers:

```yaml
color: "178"                   # bronze/gold
color: "75 bold"               # bold steel blue
color: "g:196,208,226"         # gradient red → orange → gold
```

In ANSI mode, extended colors (16-255) automatically downgrade to the nearest ANSI color. Use `colortable` in-game to see all 256 colors.

Key item (quest token, not equippable):
```yaml
id: pass_stub
name: pass stub
description: "A crumpled slip of paper stamped with the guard's seal."
value: 0
stackable: false
```

---

## Firemaking

```yaml
id: logs
name: logs
fire_level: 1         # firemaking level required
fire_xp: 40           # XP for burning/stoking
burn_ticks: 24        # how long the fire burns
```

## Food / Healing

```yaml
id: bread
name: bread
color: "222"
description: "A fresh loaf of bread, still warm from the oven."
value: 5
heal_value: 5         # positive = heal, negative = damage
eat_message: "You eat the bread. Warm and satisfying."
```

## MadeFrom — Item Combinations

Define what items combine to make this item. Used by the `use` command. Combinations run through the production system — players are prompted "How many?" and the action loops with a timer.

```yaml
id: bread_dough
name: bread dough
color: "222"
ticks: 2
made_from:
  - items: [pot_of_flour]
    qty: 1
    byproducts: [empty_pot]
  - items: [bucket_of_water, pitcher_of_water]
    qty: 1
    byproducts: [empty_bucket, empty_pitcher]
```

Each entry is an ingredient slot. Multiple `items` means any of them works. The first matching item found in inventory is consumed.

`ticks` controls how many game ticks each production cycle takes (default 2).

### Byproducts

`byproducts` is a list matching the `items` list by index. When `bucket_of_water` (items[0]) is consumed, `empty_bucket` (byproducts[0]) is returned to inventory. When `pitcher_of_water` (items[1]) is consumed, `empty_pitcher` (byproducts[1]) is returned instead.

Use `""` for items that produce no byproduct:

```yaml
made_from:
  - items: [pot_of_flour, loose_flour]
    qty: 1
    byproducts: [empty_pot, ""]   # pot returns empty_pot, loose flour returns nothing
  - items: [bucket_of_water]
    qty: 1
    byproducts: [empty_bucket]
```

Omit `byproducts` entirely if no items in that slot produce a byproduct:

```yaml
made_from:
  - items: [pot_of_flour]
    qty: 1
    byproducts: [empty_pot]       # returns empty_pot
  - items: [salt]
    qty: 1                        # no byproducts field — salt is consumed entirely
```

See also `recipes.md` for station-based recipes.