aboutsummaryrefslogtreecommitdiff
path: root/worldbuilding_guide/recipes.md
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-17 21:13:07 -0400
committerhistoria <[not public]>2026-06-17 21:13:07 -0400
commitec2e94e3463654a6288464a4c070b48ef9bf7368 (patch)
tree3c5df0f9a6a5968fa4c725a7d331825883ae798c /worldbuilding_guide/recipes.md
parenteef5ddaa94f8cff6010d092c30fed53d2be01524 (diff)
downloadthehouseoficarus-ec2e94e3463654a6288464a4c070b48ef9bf7368.tar.gz
feat: smithing added, item/object interaction reworked. recipes and menus refactored.
Diffstat (limited to 'worldbuilding_guide/recipes.md')
-rw-r--r--worldbuilding_guide/recipes.md81
1 files changed, 81 insertions, 0 deletions
diff --git a/worldbuilding_guide/recipes.md b/worldbuilding_guide/recipes.md
index 500954f..799dab0 100644
--- a/worldbuilding_guide/recipes.md
+++ b/worldbuilding_guide/recipes.md
@@ -24,6 +24,7 @@ Recipe files live in `data/recipes/<id>.yaml`.
| `station` | []string | Station object IDs required |
| `consume` | []ConsumeEntry | Ingredients consumed (see below) |
| `output` | string | ItemID produced on success |
+| `output_qty` | int | Quantity produced (default 1, for stackables) |
| `fail` | string | ItemID produced on failure (optional) |
| `message` | string | Success message |
| `fail_message` | string | Failure message |
@@ -39,6 +40,18 @@ Each consume entry defines an ingredient slot with multiple valid items. The fir
consume:
- items: [item_id, alternative_id, ...]
qty: 1
+ byproducts: [byproduct_for_item, byproduct_for_alt, ...]
+```
+
+`byproducts` is optional. When present, it matches the `items` list by index — consuming `items[0]` returns `byproducts[0]` to inventory. Use `""` for items with no byproduct:
+
+```yaml
+consume:
+ - items: [bucket_of_water, vial_of_water]
+ qty: 1
+ byproducts: [empty_bucket, ""] # bucket returns empty, vial is consumed entirely
+ - items: [herb]
+ qty: 1 # no byproducts — herb is consumed entirely
```
### Station-based recipe (cooking on a fire)
@@ -79,6 +92,74 @@ message: "You bake the dough into a fresh loaf of bread."
fail_message: "You burn the bread to a crisp."
```
+### Smelting recipe (ore to bar at a furnace)
+
+Smelting recipes use `type: smelting` and `station: [furnace]`. The `smelt` command or `use <ore> on furnace` triggers them. Multi-ore recipes use `qty` on consume entries.
+
+```yaml
+id: smelt_steel
+type: smelting
+skill: smithing
+level: 40
+xp: 17
+wait: 4
+station: [furnace]
+consume:
+ - items: [iron_ore]
+ qty: 1
+ - items: [coal]
+ qty: 2
+output: steel_bar
+message: "You remove a white hot steel bar!"
+fail_message: "You fail to smelt a usable bar."
+```
+
+Iron smelting uses a `success` formula for its 50% failure rate:
+
+```yaml
+success:
+ base: 0.5
+ per_level: 0
+ cap: 0.5
+```
+
+### Smithing recipe (bar to item at an anvil)
+
+Smithing recipes use `type: smithing` and `station: [anvil]`. The `smith` command or `use <bar> on anvil` triggers them. Requires a hammer (`tool_type: hammer`) in inventory.
+
+```yaml
+id: smith_steel_platebody
+type: smithing
+skill: smithing
+level: 48
+xp: 187
+wait: 4
+station: [anvil]
+consume:
+ - items: [steel_bar]
+ qty: 5
+output: steel_platebody
+message: "You hammer out a steel platebody."
+```
+
+For stackable outputs, use `output_qty`:
+
+```yaml
+id: smith_iron_nails
+type: smithing
+skill: smithing
+level: 24
+xp: 25
+wait: 4
+station: [anvil]
+consume:
+ - items: [iron_bar]
+ qty: 1
+output: iron_nails
+output_qty: 15
+message: "You hammer out some iron nails."
+```
+
### MadeFrom — Item-on-item combinations
Item-on-item combinations are defined directly on the output item via the `made_from` field. No recipe file needed.