aboutsummaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-18 18:50:54 -0400
committerhistoria <[not public]>2026-06-18 18:50:54 -0400
commit17e7725f252c7f5d3be2e9c37d62751c631f196f (patch)
tree40698c5c95cb21302adbb8cd021bd8d049b6fce1 /data
parentfae979b75e37b6ad57e57062a1b637a37ec87174 (diff)
downloadthehouseoficarus-17e7725f252c7f5d3be2e9c37d62751c631f196f.tar.gz
feat: fletching added including zero-time bolt feathering, which probably will break lots of things
Diffstat (limited to 'data')
-rw-r--r--data/behaviors/chop_magic.yaml1
-rw-r--r--data/behaviors/chop_mahogany.yaml1
-rw-r--r--data/behaviors/chop_maple.yaml1
-rw-r--r--data/behaviors/chop_oak.yaml1
-rw-r--r--data/behaviors/chop_redwood.yaml1
-rw-r--r--data/behaviors/chop_teak.yaml1
-rw-r--r--data/behaviors/chop_tree.yaml1
-rw-r--r--data/behaviors/chop_willow.yaml1
-rw-r--r--data/behaviors/chop_yew.yaml1
-rw-r--r--data/behaviors/mine_adamantite.yaml1
-rw-r--r--data/behaviors/mine_clay.yaml1
-rw-r--r--data/behaviors/mine_coal.yaml1
-rw-r--r--data/behaviors/mine_copper.yaml1
-rw-r--r--data/behaviors/mine_gold.yaml1
-rw-r--r--data/behaviors/mine_iron.yaml1
-rw-r--r--data/behaviors/mine_mithril.yaml1
-rw-r--r--data/behaviors/mine_runite.yaml1
-rw-r--r--data/behaviors/mine_scrap.yaml1
-rw-r--r--data/behaviors/mine_silver.yaml1
-rw-r--r--data/behaviors/mine_tin.yaml1
-rw-r--r--data/help/fletch.yaml16
-rw-r--r--data/help/fletching.yaml27
-rw-r--r--data/items/adamant_arrow.yaml9
-rw-r--r--data/items/adamant_bolts.yaml9
-rw-r--r--data/items/arrow_shaft.yaml6
-rw-r--r--data/items/bowstring.yaml5
-rw-r--r--data/items/bronze_arrow.yaml9
-rw-r--r--data/items/bronze_bolts.yaml9
-rw-r--r--data/items/chisel.yaml6
-rw-r--r--data/items/diamond_bolt_tips.yaml6
-rw-r--r--data/items/diamond_bolts.yaml9
-rw-r--r--data/items/emerald_bolt_tips.yaml6
-rw-r--r--data/items/emerald_bolts.yaml9
-rw-r--r--data/items/headless_arrow.yaml6
-rw-r--r--data/items/iron_arrow.yaml9
-rw-r--r--data/items/iron_bolts.yaml9
-rw-r--r--data/items/knife.yaml6
-rw-r--r--data/items/longbow.yaml10
-rw-r--r--data/items/longbow_u.yaml5
-rw-r--r--data/items/magic_longbow.yaml10
-rw-r--r--data/items/magic_longbow_u.yaml5
-rw-r--r--data/items/magic_shortbow.yaml10
-rw-r--r--data/items/magic_shortbow_u.yaml5
-rw-r--r--data/items/maple_longbow.yaml10
-rw-r--r--data/items/maple_longbow_u.yaml5
-rw-r--r--data/items/maple_shortbow.yaml10
-rw-r--r--data/items/maple_shortbow_u.yaml5
-rw-r--r--data/items/mithril_arrow.yaml9
-rw-r--r--data/items/mithril_bolts.yaml9
-rw-r--r--data/items/oak_longbow.yaml10
-rw-r--r--data/items/oak_longbow_u.yaml5
-rw-r--r--data/items/oak_shortbow.yaml10
-rw-r--r--data/items/oak_shortbow_u.yaml5
-rw-r--r--data/items/ruby_bolt_tips.yaml6
-rw-r--r--data/items/ruby_bolts.yaml9
-rw-r--r--data/items/rune_arrow.yaml9
-rw-r--r--data/items/rune_bolts.yaml9
-rw-r--r--data/items/sapphire_bolt_tips.yaml6
-rw-r--r--data/items/sapphire_bolts.yaml9
-rw-r--r--data/items/shortbow.yaml10
-rw-r--r--data/items/shortbow_u.yaml5
-rw-r--r--data/items/steel_arrow.yaml9
-rw-r--r--data/items/steel_bolts.yaml9
-rw-r--r--data/items/uncut_diamond.yaml2
-rw-r--r--data/items/uncut_emerald.yaml2
-rw-r--r--data/items/uncut_ruby.yaml2
-rw-r--r--data/items/uncut_sapphire.yaml2
-rw-r--r--data/items/willow_longbow.yaml10
-rw-r--r--data/items/willow_longbow_u.yaml5
-rw-r--r--data/items/willow_shortbow.yaml10
-rw-r--r--data/items/willow_shortbow_u.yaml5
-rw-r--r--data/items/yew_longbow.yaml10
-rw-r--r--data/items/yew_longbow_u.yaml5
-rw-r--r--data/items/yew_shortbow.yaml10
-rw-r--r--data/items/yew_shortbow_u.yaml5
-rw-r--r--data/recipes/fletch_adamant_arrow.yaml14
-rw-r--r--data/recipes/fletch_adamant_bolts.yaml14
-rw-r--r--data/recipes/fletch_arrow_shaft.yaml12
-rw-r--r--data/recipes/fletch_arrow_shaft_magic.yaml12
-rw-r--r--data/recipes/fletch_arrow_shaft_maple.yaml12
-rw-r--r--data/recipes/fletch_arrow_shaft_oak.yaml12
-rw-r--r--data/recipes/fletch_arrow_shaft_willow.yaml12
-rw-r--r--data/recipes/fletch_arrow_shaft_yew.yaml12
-rw-r--r--data/recipes/fletch_bronze_arrow.yaml14
-rw-r--r--data/recipes/fletch_bronze_bolts.yaml14
-rw-r--r--data/recipes/fletch_diamond_bolt_tips.yaml12
-rw-r--r--data/recipes/fletch_diamond_bolts.yaml14
-rw-r--r--data/recipes/fletch_emerald_bolt_tips.yaml12
-rw-r--r--data/recipes/fletch_emerald_bolts.yaml14
-rw-r--r--data/recipes/fletch_headless_arrow.yaml14
-rw-r--r--data/recipes/fletch_iron_arrow.yaml14
-rw-r--r--data/recipes/fletch_iron_bolts.yaml14
-rw-r--r--data/recipes/fletch_longbow.yaml13
-rw-r--r--data/recipes/fletch_longbow_u.yaml11
-rw-r--r--data/recipes/fletch_magic_longbow.yaml13
-rw-r--r--data/recipes/fletch_magic_longbow_u.yaml11
-rw-r--r--data/recipes/fletch_magic_shortbow.yaml13
-rw-r--r--data/recipes/fletch_magic_shortbow_u.yaml11
-rw-r--r--data/recipes/fletch_maple_longbow.yaml13
-rw-r--r--data/recipes/fletch_maple_longbow_u.yaml11
-rw-r--r--data/recipes/fletch_maple_shortbow.yaml13
-rw-r--r--data/recipes/fletch_maple_shortbow_u.yaml11
-rw-r--r--data/recipes/fletch_mithril_arrow.yaml14
-rw-r--r--data/recipes/fletch_mithril_bolts.yaml14
-rw-r--r--data/recipes/fletch_oak_longbow.yaml13
-rw-r--r--data/recipes/fletch_oak_longbow_u.yaml11
-rw-r--r--data/recipes/fletch_oak_shortbow.yaml13
-rw-r--r--data/recipes/fletch_oak_shortbow_u.yaml11
-rw-r--r--data/recipes/fletch_ruby_bolt_tips.yaml12
-rw-r--r--data/recipes/fletch_ruby_bolts.yaml14
-rw-r--r--data/recipes/fletch_rune_arrow.yaml14
-rw-r--r--data/recipes/fletch_rune_bolts.yaml14
-rw-r--r--data/recipes/fletch_sapphire_bolt_tips.yaml12
-rw-r--r--data/recipes/fletch_sapphire_bolts.yaml14
-rw-r--r--data/recipes/fletch_shortbow.yaml13
-rw-r--r--data/recipes/fletch_shortbow_u.yaml11
-rw-r--r--data/recipes/fletch_steel_arrow.yaml14
-rw-r--r--data/recipes/fletch_steel_bolts.yaml14
-rw-r--r--data/recipes/fletch_willow_longbow.yaml13
-rw-r--r--data/recipes/fletch_willow_longbow_u.yaml11
-rw-r--r--data/recipes/fletch_willow_shortbow.yaml13
-rw-r--r--data/recipes/fletch_willow_shortbow_u.yaml11
-rw-r--r--data/recipes/fletch_yew_longbow.yaml13
-rw-r--r--data/recipes/fletch_yew_longbow_u.yaml11
-rw-r--r--data/recipes/fletch_yew_shortbow.yaml13
-rw-r--r--data/recipes/fletch_yew_shortbow_u.yaml11
-rw-r--r--data/rooms/14.yaml12
127 files changed, 1081 insertions, 25 deletions
diff --git a/data/behaviors/chop_magic.yaml b/data/behaviors/chop_magic.yaml
index 02dbab3..3d55658 100644
--- a/data/behaviors/chop_magic.yaml
+++ b/data/behaviors/chop_magic.yaml
@@ -19,5 +19,4 @@ drops:
respawn_timer: 199
deplete_timer: 390
nest_chance: 256
-respawn_message: "A new magic sapling grows in its place."
respawn_broadcast: "A {name} grows back."
diff --git a/data/behaviors/chop_mahogany.yaml b/data/behaviors/chop_mahogany.yaml
index 7bacfe3..dd6c4c5 100644
--- a/data/behaviors/chop_mahogany.yaml
+++ b/data/behaviors/chop_mahogany.yaml
@@ -19,5 +19,4 @@ drops:
respawn_timer: 14
deplete_timer: 100
nest_chance: 256
-respawn_message: "A new mahogany sapling grows in its place."
respawn_broadcast: "A {name} grows back."
diff --git a/data/behaviors/chop_maple.yaml b/data/behaviors/chop_maple.yaml
index 44c45cf..8505217 100644
--- a/data/behaviors/chop_maple.yaml
+++ b/data/behaviors/chop_maple.yaml
@@ -19,5 +19,4 @@ drops:
respawn_timer: 59
deplete_timer: 100
nest_chance: 256
-respawn_message: "A new maple sapling grows in its place."
respawn_broadcast: "A {name} grows back."
diff --git a/data/behaviors/chop_oak.yaml b/data/behaviors/chop_oak.yaml
index 85c6be0..c9cfb48 100644
--- a/data/behaviors/chop_oak.yaml
+++ b/data/behaviors/chop_oak.yaml
@@ -19,5 +19,4 @@ drops:
respawn_timer: 14
deplete_timer: 45
nest_chance: 256
-respawn_message: "A new oak sapling grows in its place."
respawn_broadcast: "An {name} grows back."
diff --git a/data/behaviors/chop_redwood.yaml b/data/behaviors/chop_redwood.yaml
index 2db92ed..9652f7a 100644
--- a/data/behaviors/chop_redwood.yaml
+++ b/data/behaviors/chop_redwood.yaml
@@ -19,5 +19,4 @@ drops:
respawn_timer: 199
deplete_timer: 440
nest_chance: 256
-respawn_message: "A new redwood sapling grows in its place."
respawn_broadcast: "A {name} grows back."
diff --git a/data/behaviors/chop_teak.yaml b/data/behaviors/chop_teak.yaml
index ba8834d..f1ed770 100644
--- a/data/behaviors/chop_teak.yaml
+++ b/data/behaviors/chop_teak.yaml
@@ -19,5 +19,4 @@ drops:
respawn_timer: 15
deplete_timer: 50
nest_chance: 256
-respawn_message: "A new teak sapling grows in its place."
respawn_broadcast: "A {name} grows back."
diff --git a/data/behaviors/chop_tree.yaml b/data/behaviors/chop_tree.yaml
index fb8c3d2..4a12509 100644
--- a/data/behaviors/chop_tree.yaml
+++ b/data/behaviors/chop_tree.yaml
@@ -19,5 +19,4 @@ drops:
message: "You get some {107}logs{/}."
respawn_timer: 80
exhausted_message: "The tree comes crashing down!"
-respawn_message: "A new tree grows in its place."
respawn_broadcast: "A {name} grows back."
diff --git a/data/behaviors/chop_willow.yaml b/data/behaviors/chop_willow.yaml
index c4b14b3..597072e 100644
--- a/data/behaviors/chop_willow.yaml
+++ b/data/behaviors/chop_willow.yaml
@@ -19,5 +19,4 @@ drops:
respawn_timer: 14
deplete_timer: 50
nest_chance: 256
-respawn_message: "A new willow sapling grows in its place."
respawn_broadcast: "A {name} grows back."
diff --git a/data/behaviors/chop_yew.yaml b/data/behaviors/chop_yew.yaml
index 058cb5d..1586b4b 100644
--- a/data/behaviors/chop_yew.yaml
+++ b/data/behaviors/chop_yew.yaml
@@ -19,5 +19,4 @@ drops:
respawn_timer: 99
deplete_timer: 190
nest_chance: 256
-respawn_message: "A new yew sapling grows in its place."
respawn_broadcast: "A {name} grows back."
diff --git a/data/behaviors/mine_adamantite.yaml b/data/behaviors/mine_adamantite.yaml
index b5e5d62..0ba62db 100644
--- a/data/behaviors/mine_adamantite.yaml
+++ b/data/behaviors/mine_adamantite.yaml
@@ -17,5 +17,4 @@ drops:
depletes: true
message: "You manage to mine some {120}adamantite ore{/}."
respawn_timer: 140
-respawn_message: "You see more ore in the rock."
respawn_broadcast: "A green glint of adamantite catches your eye from some {name}."
diff --git a/data/behaviors/mine_clay.yaml b/data/behaviors/mine_clay.yaml
index b4058b1..ff477ca 100644
--- a/data/behaviors/mine_clay.yaml
+++ b/data/behaviors/mine_clay.yaml
@@ -17,5 +17,4 @@ drops:
depletes: true
message: "You manage to get some {173}clay{/}."
respawn_timer: 50
-respawn_message: "The clay deposit is ready to dig again."
respawn_broadcast: "A deposit of clay softens."
diff --git a/data/behaviors/mine_coal.yaml b/data/behaviors/mine_coal.yaml
index 334e9ec..f2fb01d 100644
--- a/data/behaviors/mine_coal.yaml
+++ b/data/behaviors/mine_coal.yaml
@@ -17,5 +17,4 @@ drops:
depletes: true
message: "You manage to mine some {240}coal{/}."
respawn_timer: 80
-respawn_message: "You see more coal in the rock."
respawn_broadcast: "A dark vein of coal is visible in some {name}."
diff --git a/data/behaviors/mine_copper.yaml b/data/behaviors/mine_copper.yaml
index 06ee9d2..e805f29 100644
--- a/data/behaviors/mine_copper.yaml
+++ b/data/behaviors/mine_copper.yaml
@@ -22,5 +22,4 @@ drops:
depletes: false
message: "You spot a glint of something valuable!"
respawn_timer: 50
-respawn_message: "You see more ore in the rock."
respawn_broadcast: "A glint of copper catches your eye from some {name}."
diff --git a/data/behaviors/mine_gold.yaml b/data/behaviors/mine_gold.yaml
index b61f6bf..0257ee6 100644
--- a/data/behaviors/mine_gold.yaml
+++ b/data/behaviors/mine_gold.yaml
@@ -17,5 +17,4 @@ drops:
depletes: true
message: "You manage to mine some {220}gold ore{/}."
respawn_timer: 90
-respawn_message: "You see more ore in the rock."
respawn_broadcast: "A golden glint catches your eye from some {name}."
diff --git a/data/behaviors/mine_iron.yaml b/data/behaviors/mine_iron.yaml
index e1a8181..290d99a 100644
--- a/data/behaviors/mine_iron.yaml
+++ b/data/behaviors/mine_iron.yaml
@@ -17,5 +17,4 @@ drops:
depletes: true
message: "You manage to mine some {250}iron ore{/}."
respawn_timer: 60
-respawn_message: "You see more ore in the rock."
respawn_broadcast: "A glint of iron catches your eye from some {name}."
diff --git a/data/behaviors/mine_mithril.yaml b/data/behaviors/mine_mithril.yaml
index 407f1ff..f1d0b43 100644
--- a/data/behaviors/mine_mithril.yaml
+++ b/data/behaviors/mine_mithril.yaml
@@ -17,5 +17,4 @@ drops:
depletes: true
message: "You manage to mine some {75}mithril ore{/}."
respawn_timer: 110
-respawn_message: "You see more ore in the rock."
respawn_broadcast: "A blue glint of mithril catches your eye from some {name}."
diff --git a/data/behaviors/mine_runite.yaml b/data/behaviors/mine_runite.yaml
index dddd410..534a78a 100644
--- a/data/behaviors/mine_runite.yaml
+++ b/data/behaviors/mine_runite.yaml
@@ -17,5 +17,4 @@ drops:
depletes: true
message: "You manage to mine some {87}runite ore{/}."
respawn_timer: 180
-respawn_message: "You see more ore in the rock."
respawn_broadcast: "A pale blue glint of runite catches your eye from some {name}."
diff --git a/data/behaviors/mine_scrap.yaml b/data/behaviors/mine_scrap.yaml
index ae07b36..c381b1c 100644
--- a/data/behaviors/mine_scrap.yaml
+++ b/data/behaviors/mine_scrap.yaml
@@ -17,5 +17,4 @@ drops:
depletes: true
message: "You salvage some {243}scrap metal{/}."
respawn_timer: 50
-respawn_message: "More scrap is revealed in the pile."
respawn_broadcast: "The scrap pile looks worth mining again."
diff --git a/data/behaviors/mine_silver.yaml b/data/behaviors/mine_silver.yaml
index 1257f87..259ab72 100644
--- a/data/behaviors/mine_silver.yaml
+++ b/data/behaviors/mine_silver.yaml
@@ -17,5 +17,4 @@ drops:
depletes: true
message: "You manage to mine some {253}silver ore{/}."
respawn_timer: 70
-respawn_message: "You see more ore in the rock."
respawn_broadcast: "A silvery glint catches your eye from some {name}."
diff --git a/data/behaviors/mine_tin.yaml b/data/behaviors/mine_tin.yaml
index 7a1a12a..ebc130a 100644
--- a/data/behaviors/mine_tin.yaml
+++ b/data/behaviors/mine_tin.yaml
@@ -17,5 +17,4 @@ drops:
depletes: true
message: "You manage to mine some {253}tin ore{/}."
respawn_timer: 50
-respawn_message: "You see more ore in the rock."
respawn_broadcast: "A glint of tin catches your eye from some {name}."
diff --git a/data/help/fletch.yaml b/data/help/fletch.yaml
new file mode 100644
index 0000000..6da4117
--- /dev/null
+++ b/data/help/fletch.yaml
@@ -0,0 +1,16 @@
+name: "fletch"
+category: "Commands"
+description: |
+ Fletch items from your inventory. Does not require a station.
+
+ Usage:
+ fletch -- Show available fletching actions
+ fletch <item> -- Fletch a specific item
+ fletch 10 <item> -- Fletch a specific quantity
+
+ Fletching can be done while walking and does not interrupt movement.
+ Just type "fletch" while walking to start fletching on the go.
+
+ Pressing enter at the fletching table repeats your last selection.
+
+ See also: fletching, use
diff --git a/data/help/fletching.yaml b/data/help/fletching.yaml
new file mode 100644
index 0000000..b2fe254
--- /dev/null
+++ b/data/help/fletching.yaml
@@ -0,0 +1,27 @@
+name: "fletching"
+category: "Skills"
+description: |
+ Fletching is the skill of making ranged weapons and ammunition.
+
+ To fletch, simply use the "fletch" command anywhere. Fletching does
+ not require a station and can be done while walking or moving.
+
+ Materials:
+ Arrow shafts -- Cut logs with a knife
+ Headless arrows -- Add feathers to arrow shafts
+ Finished arrows -- Add arrowtips to headless arrows
+ Bolts -- Add feathers to unfinished bolts
+ Bolt tips -- Cut gems with a chisel
+ Unstrung bows -- Cut logs with a knife
+ Strung bows -- Add bowstring to unstrung bow
+
+ Items can also be combined with the "use" command:
+ use knife on <log> -- Cut shafts or bows
+ use chisel on <gem> -- Cut bolt tips
+ use feather on <bolts> -- Finish bolts
+ use bowstring on <bow> -- String a bow
+
+ Finished arrows and bolts can be equipped in the ammo slot:
+ wear arrows, wear 100 arrows, remove arrows, remove 100 arrows
+
+ See also: fletch, use, wear, remove
diff --git a/data/items/adamant_arrow.yaml b/data/items/adamant_arrow.yaml
new file mode 100644
index 0000000..5b3a364
--- /dev/null
+++ b/data/items/adamant_arrow.yaml
@@ -0,0 +1,9 @@
+id: adamant_arrow
+name: adamant arrow
+color: "120"
+description: "An adamant-tipped arrow."
+value: 20
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 31
diff --git a/data/items/adamant_bolts.yaml b/data/items/adamant_bolts.yaml
new file mode 100644
index 0000000..5f0509e
--- /dev/null
+++ b/data/items/adamant_bolts.yaml
@@ -0,0 +1,9 @@
+id: adamant_bolts
+name: adamant bolts
+color: "120"
+description: "Adamant crossbow bolts."
+value: 24
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 43
diff --git a/data/items/arrow_shaft.yaml b/data/items/arrow_shaft.yaml
new file mode 100644
index 0000000..715a3e6
--- /dev/null
+++ b/data/items/arrow_shaft.yaml
@@ -0,0 +1,6 @@
+id: arrow_shaft
+name: arrow shaft
+color: "137"
+description: "A wooden arrow shaft. Needs feathers and a head."
+value: 1
+stackable: true
diff --git a/data/items/bowstring.yaml b/data/items/bowstring.yaml
new file mode 100644
index 0000000..a180081
--- /dev/null
+++ b/data/items/bowstring.yaml
@@ -0,0 +1,5 @@
+id: bowstring
+name: bowstring
+color: "230"
+description: "A string used for stringing bows."
+value: 10
diff --git a/data/items/bronze_arrow.yaml b/data/items/bronze_arrow.yaml
new file mode 100644
index 0000000..991bc11
--- /dev/null
+++ b/data/items/bronze_arrow.yaml
@@ -0,0 +1,9 @@
+id: bronze_arrow
+name: bronze arrow
+color: "178"
+description: "A bronze-tipped arrow."
+value: 1
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 7
diff --git a/data/items/bronze_bolts.yaml b/data/items/bronze_bolts.yaml
new file mode 100644
index 0000000..76ca27c
--- /dev/null
+++ b/data/items/bronze_bolts.yaml
@@ -0,0 +1,9 @@
+id: bronze_bolts
+name: bronze bolts
+color: "178"
+description: "Bronze crossbow bolts."
+value: 1
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 10
diff --git a/data/items/chisel.yaml b/data/items/chisel.yaml
new file mode 100644
index 0000000..a99c828
--- /dev/null
+++ b/data/items/chisel.yaml
@@ -0,0 +1,6 @@
+id: chisel
+name: chisel
+color: "250"
+description: "A chisel used for cutting gems."
+value: 5
+tool_type: chisel
diff --git a/data/items/diamond_bolt_tips.yaml b/data/items/diamond_bolt_tips.yaml
new file mode 100644
index 0000000..1529b11
--- /dev/null
+++ b/data/items/diamond_bolt_tips.yaml
@@ -0,0 +1,6 @@
+id: diamond_bolt_tips
+name: diamond bolt tips
+color: "255"
+description: "Bolt tips cut from a diamond."
+value: 200
+stackable: true
diff --git a/data/items/diamond_bolts.yaml b/data/items/diamond_bolts.yaml
new file mode 100644
index 0000000..abdc46f
--- /dev/null
+++ b/data/items/diamond_bolts.yaml
@@ -0,0 +1,9 @@
+id: diamond_bolts
+name: diamond bolts
+color: "255"
+description: "Adamant bolts tipped with diamond."
+value: 230
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 52
diff --git a/data/items/emerald_bolt_tips.yaml b/data/items/emerald_bolt_tips.yaml
new file mode 100644
index 0000000..afd285b
--- /dev/null
+++ b/data/items/emerald_bolt_tips.yaml
@@ -0,0 +1,6 @@
+id: emerald_bolt_tips
+name: emerald bolt tips
+color: "83"
+description: "Bolt tips cut from an emerald."
+value: 50
+stackable: true
diff --git a/data/items/emerald_bolts.yaml b/data/items/emerald_bolts.yaml
new file mode 100644
index 0000000..6c9be22
--- /dev/null
+++ b/data/items/emerald_bolts.yaml
@@ -0,0 +1,9 @@
+id: emerald_bolts
+name: emerald bolts
+color: "83"
+description: "Mithril bolts tipped with emerald."
+value: 65
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 39
diff --git a/data/items/headless_arrow.yaml b/data/items/headless_arrow.yaml
new file mode 100644
index 0000000..acf1384
--- /dev/null
+++ b/data/items/headless_arrow.yaml
@@ -0,0 +1,6 @@
+id: headless_arrow
+name: headless arrow
+color: "137"
+description: "An arrow shaft with feathers attached. Needs a head."
+value: 1
+stackable: true
diff --git a/data/items/iron_arrow.yaml b/data/items/iron_arrow.yaml
new file mode 100644
index 0000000..c4f698b
--- /dev/null
+++ b/data/items/iron_arrow.yaml
@@ -0,0 +1,9 @@
+id: iron_arrow
+name: iron arrow
+color: "250"
+description: "An iron-tipped arrow."
+value: 2
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 10
diff --git a/data/items/iron_bolts.yaml b/data/items/iron_bolts.yaml
new file mode 100644
index 0000000..7b75132
--- /dev/null
+++ b/data/items/iron_bolts.yaml
@@ -0,0 +1,9 @@
+id: iron_bolts
+name: iron bolts
+color: "250"
+description: "Iron crossbow bolts."
+value: 3
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 17
diff --git a/data/items/knife.yaml b/data/items/knife.yaml
new file mode 100644
index 0000000..fddf120
--- /dev/null
+++ b/data/items/knife.yaml
@@ -0,0 +1,6 @@
+id: knife
+name: knife
+color: "250"
+description: "A small knife used for cutting wood and fletching."
+value: 5
+tool_type: knife
diff --git a/data/items/longbow.yaml b/data/items/longbow.yaml
new file mode 100644
index 0000000..b9de1cb
--- /dev/null
+++ b/data/items/longbow.yaml
@@ -0,0 +1,10 @@
+id: longbow
+name: longbow
+color: "137"
+description: "A longbow."
+value: 20
+equip_slot: main_hand
+weapon_type: ranged
+speed: 6
+stats:
+ attack: 8
diff --git a/data/items/longbow_u.yaml b/data/items/longbow_u.yaml
new file mode 100644
index 0000000..93e5ff0
--- /dev/null
+++ b/data/items/longbow_u.yaml
@@ -0,0 +1,5 @@
+id: longbow_u
+name: longbow (u)
+color: "137"
+description: "An unstrung longbow."
+value: 10
diff --git a/data/items/magic_longbow.yaml b/data/items/magic_longbow.yaml
new file mode 100644
index 0000000..fbe3b4e
--- /dev/null
+++ b/data/items/magic_longbow.yaml
@@ -0,0 +1,10 @@
+id: magic_longbow
+name: magic longbow
+color: "63"
+description: "A magic longbow."
+value: 6000
+equip_slot: main_hand
+weapon_type: ranged
+speed: 6
+stats:
+ attack: 69
diff --git a/data/items/magic_longbow_u.yaml b/data/items/magic_longbow_u.yaml
new file mode 100644
index 0000000..65682ed
--- /dev/null
+++ b/data/items/magic_longbow_u.yaml
@@ -0,0 +1,5 @@
+id: magic_longbow_u
+name: magic longbow (u)
+color: "63"
+description: "An unstrung magic longbow."
+value: 3000
diff --git a/data/items/magic_shortbow.yaml b/data/items/magic_shortbow.yaml
new file mode 100644
index 0000000..26b152a
--- /dev/null
+++ b/data/items/magic_shortbow.yaml
@@ -0,0 +1,10 @@
+id: magic_shortbow
+name: magic shortbow
+color: "63"
+description: "A magic shortbow."
+value: 4000
+equip_slot: main_hand
+weapon_type: ranged
+speed: 4
+stats:
+ attack: 69
diff --git a/data/items/magic_shortbow_u.yaml b/data/items/magic_shortbow_u.yaml
new file mode 100644
index 0000000..2075bd1
--- /dev/null
+++ b/data/items/magic_shortbow_u.yaml
@@ -0,0 +1,5 @@
+id: magic_shortbow_u
+name: magic shortbow (u)
+color: "63"
+description: "An unstrung magic shortbow."
+value: 2000
diff --git a/data/items/maple_longbow.yaml b/data/items/maple_longbow.yaml
new file mode 100644
index 0000000..6a5e2f6
--- /dev/null
+++ b/data/items/maple_longbow.yaml
@@ -0,0 +1,10 @@
+id: maple_longbow
+name: maple longbow
+color: "172"
+description: "A maple longbow."
+value: 1280
+equip_slot: main_hand
+weapon_type: ranged
+speed: 6
+stats:
+ attack: 29
diff --git a/data/items/maple_longbow_u.yaml b/data/items/maple_longbow_u.yaml
new file mode 100644
index 0000000..120bf1d
--- /dev/null
+++ b/data/items/maple_longbow_u.yaml
@@ -0,0 +1,5 @@
+id: maple_longbow_u
+name: maple longbow (u)
+color: "172"
+description: "An unstrung maple longbow."
+value: 640
diff --git a/data/items/maple_shortbow.yaml b/data/items/maple_shortbow.yaml
new file mode 100644
index 0000000..a61b7d9
--- /dev/null
+++ b/data/items/maple_shortbow.yaml
@@ -0,0 +1,10 @@
+id: maple_shortbow
+name: maple shortbow
+color: "172"
+description: "A maple shortbow."
+value: 640
+equip_slot: main_hand
+weapon_type: ranged
+speed: 4
+stats:
+ attack: 29
diff --git a/data/items/maple_shortbow_u.yaml b/data/items/maple_shortbow_u.yaml
new file mode 100644
index 0000000..6fc6b84
--- /dev/null
+++ b/data/items/maple_shortbow_u.yaml
@@ -0,0 +1,5 @@
+id: maple_shortbow_u
+name: maple shortbow (u)
+color: "172"
+description: "An unstrung maple shortbow."
+value: 320
diff --git a/data/items/mithril_arrow.yaml b/data/items/mithril_arrow.yaml
new file mode 100644
index 0000000..e92bfeb
--- /dev/null
+++ b/data/items/mithril_arrow.yaml
@@ -0,0 +1,9 @@
+id: mithril_arrow
+name: mithril arrow
+color: "75"
+description: "A mithril-tipped arrow."
+value: 10
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 22
diff --git a/data/items/mithril_bolts.yaml b/data/items/mithril_bolts.yaml
new file mode 100644
index 0000000..f3b852e
--- /dev/null
+++ b/data/items/mithril_bolts.yaml
@@ -0,0 +1,9 @@
+id: mithril_bolts
+name: mithril bolts
+color: "75"
+description: "Mithril crossbow bolts."
+value: 12
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 32
diff --git a/data/items/oak_longbow.yaml b/data/items/oak_longbow.yaml
new file mode 100644
index 0000000..b66535e
--- /dev/null
+++ b/data/items/oak_longbow.yaml
@@ -0,0 +1,10 @@
+id: oak_longbow
+name: oak longbow
+color: "136"
+description: "An oak longbow."
+value: 80
+equip_slot: main_hand
+weapon_type: ranged
+speed: 6
+stats:
+ attack: 14
diff --git a/data/items/oak_longbow_u.yaml b/data/items/oak_longbow_u.yaml
new file mode 100644
index 0000000..6df0dab
--- /dev/null
+++ b/data/items/oak_longbow_u.yaml
@@ -0,0 +1,5 @@
+id: oak_longbow_u
+name: oak longbow (u)
+color: "136"
+description: "An unstrung oak longbow."
+value: 40
diff --git a/data/items/oak_shortbow.yaml b/data/items/oak_shortbow.yaml
new file mode 100644
index 0000000..550b210
--- /dev/null
+++ b/data/items/oak_shortbow.yaml
@@ -0,0 +1,10 @@
+id: oak_shortbow
+name: oak shortbow
+color: "136"
+description: "An oak shortbow."
+value: 40
+equip_slot: main_hand
+weapon_type: ranged
+speed: 4
+stats:
+ attack: 14
diff --git a/data/items/oak_shortbow_u.yaml b/data/items/oak_shortbow_u.yaml
new file mode 100644
index 0000000..5bebc38
--- /dev/null
+++ b/data/items/oak_shortbow_u.yaml
@@ -0,0 +1,5 @@
+id: oak_shortbow_u
+name: oak shortbow (u)
+color: "136"
+description: "An unstrung oak shortbow."
+value: 20
diff --git a/data/items/ruby_bolt_tips.yaml b/data/items/ruby_bolt_tips.yaml
new file mode 100644
index 0000000..6ebe1a0
--- /dev/null
+++ b/data/items/ruby_bolt_tips.yaml
@@ -0,0 +1,6 @@
+id: ruby_bolt_tips
+name: ruby bolt tips
+color: "196"
+description: "Bolt tips cut from a ruby."
+value: 100
+stackable: true
diff --git a/data/items/ruby_bolts.yaml b/data/items/ruby_bolts.yaml
new file mode 100644
index 0000000..3788d2c
--- /dev/null
+++ b/data/items/ruby_bolts.yaml
@@ -0,0 +1,9 @@
+id: ruby_bolts
+name: ruby bolts
+color: "196"
+description: "Adamant bolts tipped with ruby."
+value: 130
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 49
diff --git a/data/items/rune_arrow.yaml b/data/items/rune_arrow.yaml
new file mode 100644
index 0000000..a7a3e2f
--- /dev/null
+++ b/data/items/rune_arrow.yaml
@@ -0,0 +1,9 @@
+id: rune_arrow
+name: rune arrow
+color: "87"
+description: "A rune-tipped arrow."
+value: 40
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 49
diff --git a/data/items/rune_bolts.yaml b/data/items/rune_bolts.yaml
new file mode 100644
index 0000000..7f0f5af
--- /dev/null
+++ b/data/items/rune_bolts.yaml
@@ -0,0 +1,9 @@
+id: rune_bolts
+name: rune bolts
+color: "87"
+description: "Rune crossbow bolts."
+value: 48
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 55
diff --git a/data/items/sapphire_bolt_tips.yaml b/data/items/sapphire_bolt_tips.yaml
new file mode 100644
index 0000000..7513fd3
--- /dev/null
+++ b/data/items/sapphire_bolt_tips.yaml
@@ -0,0 +1,6 @@
+id: sapphire_bolt_tips
+name: sapphire bolt tips
+color: "69"
+description: "Bolt tips cut from a sapphire."
+value: 25
+stackable: true
diff --git a/data/items/sapphire_bolts.yaml b/data/items/sapphire_bolts.yaml
new file mode 100644
index 0000000..c9d1b4e
--- /dev/null
+++ b/data/items/sapphire_bolts.yaml
@@ -0,0 +1,9 @@
+id: sapphire_bolts
+name: sapphire bolts
+color: "69"
+description: "Mithril bolts tipped with sapphire."
+value: 40
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 36
diff --git a/data/items/shortbow.yaml b/data/items/shortbow.yaml
new file mode 100644
index 0000000..e5b1975
--- /dev/null
+++ b/data/items/shortbow.yaml
@@ -0,0 +1,10 @@
+id: shortbow
+name: shortbow
+color: "137"
+description: "A shortbow."
+value: 10
+equip_slot: main_hand
+weapon_type: ranged
+speed: 4
+stats:
+ attack: 8
diff --git a/data/items/shortbow_u.yaml b/data/items/shortbow_u.yaml
new file mode 100644
index 0000000..6ffcafc
--- /dev/null
+++ b/data/items/shortbow_u.yaml
@@ -0,0 +1,5 @@
+id: shortbow_u
+name: shortbow (u)
+color: "137"
+description: "An unstrung shortbow."
+value: 5
diff --git a/data/items/steel_arrow.yaml b/data/items/steel_arrow.yaml
new file mode 100644
index 0000000..9c93e0b
--- /dev/null
+++ b/data/items/steel_arrow.yaml
@@ -0,0 +1,9 @@
+id: steel_arrow
+name: steel arrow
+color: "253"
+description: "A steel-tipped arrow."
+value: 5
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 16
diff --git a/data/items/steel_bolts.yaml b/data/items/steel_bolts.yaml
new file mode 100644
index 0000000..20ed5f6
--- /dev/null
+++ b/data/items/steel_bolts.yaml
@@ -0,0 +1,9 @@
+id: steel_bolts
+name: steel bolts
+color: "253"
+description: "Steel crossbow bolts."
+value: 6
+stackable: true
+equip_slot: ammo
+stats:
+ attack: 25
diff --git a/data/items/uncut_diamond.yaml b/data/items/uncut_diamond.yaml
index ce7dd3e..48d8e6f 100644
--- a/data/items/uncut_diamond.yaml
+++ b/data/items/uncut_diamond.yaml
@@ -1,6 +1,6 @@
id: uncut_diamond
name: uncut diamond
color: "255"
-description: "An uncut diamond. Can be cut with crafting."
+description: "An uncut diamond. Can be cut into bolt tips with a chisel."
value: 200
stackable: false
diff --git a/data/items/uncut_emerald.yaml b/data/items/uncut_emerald.yaml
index 71da287..5fd5015 100644
--- a/data/items/uncut_emerald.yaml
+++ b/data/items/uncut_emerald.yaml
@@ -1,6 +1,6 @@
id: uncut_emerald
name: uncut emerald
color: "83"
-description: "An uncut emerald. Can be cut with crafting."
+description: "An uncut emerald. Can be cut into bolt tips with a chisel."
value: 50
stackable: false
diff --git a/data/items/uncut_ruby.yaml b/data/items/uncut_ruby.yaml
index 2bd2ec5..b4912b8 100644
--- a/data/items/uncut_ruby.yaml
+++ b/data/items/uncut_ruby.yaml
@@ -1,6 +1,6 @@
id: uncut_ruby
name: uncut ruby
color: "196"
-description: "An uncut ruby. Can be cut with crafting."
+description: "An uncut ruby. Can be cut into bolt tips with a chisel."
value: 100
stackable: false
diff --git a/data/items/uncut_sapphire.yaml b/data/items/uncut_sapphire.yaml
index 4d2ba91..eb0e51d 100644
--- a/data/items/uncut_sapphire.yaml
+++ b/data/items/uncut_sapphire.yaml
@@ -1,6 +1,6 @@
id: uncut_sapphire
name: uncut sapphire
color: "69"
-description: "An uncut sapphire. Can be cut with crafting."
+description: "An uncut sapphire. Can be cut into bolt tips with a chisel."
value: 25
stackable: false
diff --git a/data/items/willow_longbow.yaml b/data/items/willow_longbow.yaml
new file mode 100644
index 0000000..1d8cd2f
--- /dev/null
+++ b/data/items/willow_longbow.yaml
@@ -0,0 +1,10 @@
+id: willow_longbow
+name: willow longbow
+color: "107"
+description: "A willow longbow."
+value: 320
+equip_slot: main_hand
+weapon_type: ranged
+speed: 6
+stats:
+ attack: 20
diff --git a/data/items/willow_longbow_u.yaml b/data/items/willow_longbow_u.yaml
new file mode 100644
index 0000000..5e4e9da
--- /dev/null
+++ b/data/items/willow_longbow_u.yaml
@@ -0,0 +1,5 @@
+id: willow_longbow_u
+name: willow longbow (u)
+color: "107"
+description: "An unstrung willow longbow."
+value: 160
diff --git a/data/items/willow_shortbow.yaml b/data/items/willow_shortbow.yaml
new file mode 100644
index 0000000..e8e21b1
--- /dev/null
+++ b/data/items/willow_shortbow.yaml
@@ -0,0 +1,10 @@
+id: willow_shortbow
+name: willow shortbow
+color: "107"
+description: "A willow shortbow."
+value: 160
+equip_slot: main_hand
+weapon_type: ranged
+speed: 4
+stats:
+ attack: 20
diff --git a/data/items/willow_shortbow_u.yaml b/data/items/willow_shortbow_u.yaml
new file mode 100644
index 0000000..b467455
--- /dev/null
+++ b/data/items/willow_shortbow_u.yaml
@@ -0,0 +1,5 @@
+id: willow_shortbow_u
+name: willow shortbow (u)
+color: "107"
+description: "An unstrung willow shortbow."
+value: 80
diff --git a/data/items/yew_longbow.yaml b/data/items/yew_longbow.yaml
new file mode 100644
index 0000000..a2e0754
--- /dev/null
+++ b/data/items/yew_longbow.yaml
@@ -0,0 +1,10 @@
+id: yew_longbow
+name: yew longbow
+color: "94"
+description: "A yew longbow."
+value: 2000
+equip_slot: main_hand
+weapon_type: ranged
+speed: 6
+stats:
+ attack: 47
diff --git a/data/items/yew_longbow_u.yaml b/data/items/yew_longbow_u.yaml
new file mode 100644
index 0000000..ac4fdb2
--- /dev/null
+++ b/data/items/yew_longbow_u.yaml
@@ -0,0 +1,5 @@
+id: yew_longbow_u
+name: yew longbow (u)
+color: "94"
+description: "An unstrung yew longbow."
+value: 1000
diff --git a/data/items/yew_shortbow.yaml b/data/items/yew_shortbow.yaml
new file mode 100644
index 0000000..6c29555
--- /dev/null
+++ b/data/items/yew_shortbow.yaml
@@ -0,0 +1,10 @@
+id: yew_shortbow
+name: yew shortbow
+color: "94"
+description: "A yew shortbow."
+value: 1600
+equip_slot: main_hand
+weapon_type: ranged
+speed: 4
+stats:
+ attack: 47
diff --git a/data/items/yew_shortbow_u.yaml b/data/items/yew_shortbow_u.yaml
new file mode 100644
index 0000000..4c2124b
--- /dev/null
+++ b/data/items/yew_shortbow_u.yaml
@@ -0,0 +1,5 @@
+id: yew_shortbow_u
+name: yew shortbow (u)
+color: "94"
+description: "An unstrung yew shortbow."
+value: 800
diff --git a/data/recipes/fletch_adamant_arrow.yaml b/data/recipes/fletch_adamant_arrow.yaml
new file mode 100644
index 0000000..a43a9b9
--- /dev/null
+++ b/data/recipes/fletch_adamant_arrow.yaml
@@ -0,0 +1,14 @@
+id: fletch_adamant_arrow
+type: fletching
+skill: fletching
+level: 60
+xp: 10
+wait: 2
+consume:
+ - items: [headless_arrow]
+ qty: 15
+ - items: [adamant_arrowtips]
+ qty: 15
+output: adamant_arrow
+output_qty: 15
+message: "You attach the adamant arrowtips to the headless arrows."
diff --git a/data/recipes/fletch_adamant_bolts.yaml b/data/recipes/fletch_adamant_bolts.yaml
new file mode 100644
index 0000000..c924fe8
--- /dev/null
+++ b/data/recipes/fletch_adamant_bolts.yaml
@@ -0,0 +1,14 @@
+id: fletch_adamant_bolts
+type: fletching
+skill: fletching
+level: 61
+xp: 70
+wait: 0
+consume:
+ - items: [adamant_bolts_unf]
+ qty: 10
+ - items: [feather]
+ qty: 10
+output: adamant_bolts
+output_qty: 10
+message: "You attach feathers to the adamant bolts."
diff --git a/data/recipes/fletch_arrow_shaft.yaml b/data/recipes/fletch_arrow_shaft.yaml
new file mode 100644
index 0000000..fb211b8
--- /dev/null
+++ b/data/recipes/fletch_arrow_shaft.yaml
@@ -0,0 +1,12 @@
+id: fletch_arrow_shaft
+type: fletching
+skill: fletching
+level: 1
+xp: 5
+wait: 5
+consume:
+ - items: [logs]
+ qty: 1
+output: arrow_shaft
+output_qty: 15
+message: "You carefully cut the logs into arrow shafts."
diff --git a/data/recipes/fletch_arrow_shaft_magic.yaml b/data/recipes/fletch_arrow_shaft_magic.yaml
new file mode 100644
index 0000000..a6a8214
--- /dev/null
+++ b/data/recipes/fletch_arrow_shaft_magic.yaml
@@ -0,0 +1,12 @@
+id: fletch_arrow_shaft_magic
+type: fletching
+skill: fletching
+level: 75
+xp: 30
+wait: 5
+consume:
+ - items: [magic_logs]
+ qty: 1
+output: arrow_shaft
+output_qty: 40
+message: "You carefully cut the magic logs into arrow shafts."
diff --git a/data/recipes/fletch_arrow_shaft_maple.yaml b/data/recipes/fletch_arrow_shaft_maple.yaml
new file mode 100644
index 0000000..5bdcdb2
--- /dev/null
+++ b/data/recipes/fletch_arrow_shaft_maple.yaml
@@ -0,0 +1,12 @@
+id: fletch_arrow_shaft_maple
+type: fletching
+skill: fletching
+level: 45
+xp: 20
+wait: 5
+consume:
+ - items: [maple_logs]
+ qty: 1
+output: arrow_shaft
+output_qty: 30
+message: "You carefully cut the maple logs into arrow shafts."
diff --git a/data/recipes/fletch_arrow_shaft_oak.yaml b/data/recipes/fletch_arrow_shaft_oak.yaml
new file mode 100644
index 0000000..b72ed13
--- /dev/null
+++ b/data/recipes/fletch_arrow_shaft_oak.yaml
@@ -0,0 +1,12 @@
+id: fletch_arrow_shaft_oak
+type: fletching
+skill: fletching
+level: 15
+xp: 10
+wait: 5
+consume:
+ - items: [oak_logs]
+ qty: 1
+output: arrow_shaft
+output_qty: 20
+message: "You carefully cut the oak logs into arrow shafts."
diff --git a/data/recipes/fletch_arrow_shaft_willow.yaml b/data/recipes/fletch_arrow_shaft_willow.yaml
new file mode 100644
index 0000000..fe1ded6
--- /dev/null
+++ b/data/recipes/fletch_arrow_shaft_willow.yaml
@@ -0,0 +1,12 @@
+id: fletch_arrow_shaft_willow
+type: fletching
+skill: fletching
+level: 30
+xp: 15
+wait: 5
+consume:
+ - items: [willow_logs]
+ qty: 1
+output: arrow_shaft
+output_qty: 25
+message: "You carefully cut the willow logs into arrow shafts."
diff --git a/data/recipes/fletch_arrow_shaft_yew.yaml b/data/recipes/fletch_arrow_shaft_yew.yaml
new file mode 100644
index 0000000..c946c76
--- /dev/null
+++ b/data/recipes/fletch_arrow_shaft_yew.yaml
@@ -0,0 +1,12 @@
+id: fletch_arrow_shaft_yew
+type: fletching
+skill: fletching
+level: 60
+xp: 25
+wait: 5
+consume:
+ - items: [yew_logs]
+ qty: 1
+output: arrow_shaft
+output_qty: 35
+message: "You carefully cut the yew logs into arrow shafts."
diff --git a/data/recipes/fletch_bronze_arrow.yaml b/data/recipes/fletch_bronze_arrow.yaml
new file mode 100644
index 0000000..51922a8
--- /dev/null
+++ b/data/recipes/fletch_bronze_arrow.yaml
@@ -0,0 +1,14 @@
+id: fletch_bronze_arrow
+type: fletching
+skill: fletching
+level: 1
+xp: 1
+wait: 2
+consume:
+ - items: [headless_arrow]
+ qty: 15
+ - items: [bronze_arrowtips]
+ qty: 15
+output: bronze_arrow
+output_qty: 15
+message: "You attach the bronze arrowtips to the headless arrows."
diff --git a/data/recipes/fletch_bronze_bolts.yaml b/data/recipes/fletch_bronze_bolts.yaml
new file mode 100644
index 0000000..c48602f
--- /dev/null
+++ b/data/recipes/fletch_bronze_bolts.yaml
@@ -0,0 +1,14 @@
+id: fletch_bronze_bolts
+type: fletching
+skill: fletching
+level: 9
+xp: 5
+wait: 0
+consume:
+ - items: [bronze_bolts_unf]
+ qty: 10
+ - items: [feather]
+ qty: 10
+output: bronze_bolts
+output_qty: 10
+message: "You attach feathers to the bronze bolts."
diff --git a/data/recipes/fletch_diamond_bolt_tips.yaml b/data/recipes/fletch_diamond_bolt_tips.yaml
new file mode 100644
index 0000000..961aec0
--- /dev/null
+++ b/data/recipes/fletch_diamond_bolt_tips.yaml
@@ -0,0 +1,12 @@
+id: fletch_diamond_bolt_tips
+type: fletching
+skill: fletching
+level: 65
+xp: 7
+wait: 5
+consume:
+ - items: [uncut_diamond]
+ qty: 1
+output: diamond_bolt_tips
+output_qty: 12
+message: "You cut the diamond into bolt tips."
diff --git a/data/recipes/fletch_diamond_bolts.yaml b/data/recipes/fletch_diamond_bolts.yaml
new file mode 100644
index 0000000..2b47268
--- /dev/null
+++ b/data/recipes/fletch_diamond_bolts.yaml
@@ -0,0 +1,14 @@
+id: fletch_diamond_bolts
+type: fletching
+skill: fletching
+level: 65
+xp: 7
+wait: 2
+consume:
+ - items: [adamant_bolts]
+ qty: 10
+ - items: [diamond_bolt_tips]
+ qty: 10
+output: diamond_bolts
+output_qty: 10
+message: "You tip the adamant bolts with diamond."
diff --git a/data/recipes/fletch_emerald_bolt_tips.yaml b/data/recipes/fletch_emerald_bolt_tips.yaml
new file mode 100644
index 0000000..d2f58a0
--- /dev/null
+++ b/data/recipes/fletch_emerald_bolt_tips.yaml
@@ -0,0 +1,12 @@
+id: fletch_emerald_bolt_tips
+type: fletching
+skill: fletching
+level: 66
+xp: 5
+wait: 5
+consume:
+ - items: [uncut_emerald]
+ qty: 1
+output: emerald_bolt_tips
+output_qty: 12
+message: "You cut the emerald into bolt tips."
diff --git a/data/recipes/fletch_emerald_bolts.yaml b/data/recipes/fletch_emerald_bolts.yaml
new file mode 100644
index 0000000..cf80e64
--- /dev/null
+++ b/data/recipes/fletch_emerald_bolts.yaml
@@ -0,0 +1,14 @@
+id: fletch_emerald_bolts
+type: fletching
+skill: fletching
+level: 66
+xp: 5
+wait: 2
+consume:
+ - items: [mithril_bolts]
+ qty: 10
+ - items: [emerald_bolt_tips]
+ qty: 10
+output: emerald_bolts
+output_qty: 10
+message: "You tip the mithril bolts with emerald."
diff --git a/data/recipes/fletch_headless_arrow.yaml b/data/recipes/fletch_headless_arrow.yaml
new file mode 100644
index 0000000..8229369
--- /dev/null
+++ b/data/recipes/fletch_headless_arrow.yaml
@@ -0,0 +1,14 @@
+id: fletch_headless_arrow
+type: fletching
+skill: fletching
+level: 1
+xp: 1
+wait: 2
+consume:
+ - items: [arrow_shaft]
+ qty: 15
+ - items: [feather]
+ qty: 15
+output: headless_arrow
+output_qty: 15
+message: "You attach feathers to the arrow shafts."
diff --git a/data/recipes/fletch_iron_arrow.yaml b/data/recipes/fletch_iron_arrow.yaml
new file mode 100644
index 0000000..0e2f81b
--- /dev/null
+++ b/data/recipes/fletch_iron_arrow.yaml
@@ -0,0 +1,14 @@
+id: fletch_iron_arrow
+type: fletching
+skill: fletching
+level: 15
+xp: 2
+wait: 2
+consume:
+ - items: [headless_arrow]
+ qty: 15
+ - items: [iron_arrowtips]
+ qty: 15
+output: iron_arrow
+output_qty: 15
+message: "You attach the iron arrowtips to the headless arrows."
diff --git a/data/recipes/fletch_iron_bolts.yaml b/data/recipes/fletch_iron_bolts.yaml
new file mode 100644
index 0000000..d06ecd5
--- /dev/null
+++ b/data/recipes/fletch_iron_bolts.yaml
@@ -0,0 +1,14 @@
+id: fletch_iron_bolts
+type: fletching
+skill: fletching
+level: 39
+xp: 15
+wait: 0
+consume:
+ - items: [iron_bolts_unf]
+ qty: 10
+ - items: [feather]
+ qty: 10
+output: iron_bolts
+output_qty: 10
+message: "You attach feathers to the iron bolts."
diff --git a/data/recipes/fletch_longbow.yaml b/data/recipes/fletch_longbow.yaml
new file mode 100644
index 0000000..8507dc9
--- /dev/null
+++ b/data/recipes/fletch_longbow.yaml
@@ -0,0 +1,13 @@
+id: fletch_longbow
+type: fletching
+skill: fletching
+level: 10
+xp: 10
+wait: 2
+consume:
+ - items: [longbow_u]
+ qty: 1
+ - items: [bowstring]
+ qty: 1
+output: longbow
+message: "You string the longbow."
diff --git a/data/recipes/fletch_longbow_u.yaml b/data/recipes/fletch_longbow_u.yaml
new file mode 100644
index 0000000..1aeeaa9
--- /dev/null
+++ b/data/recipes/fletch_longbow_u.yaml
@@ -0,0 +1,11 @@
+id: fletch_longbow_u
+type: fletching
+skill: fletching
+level: 10
+xp: 10
+wait: 3
+consume:
+ - items: [logs]
+ qty: 1
+output: longbow_u
+message: "You carefully carve the log into a longbow."
diff --git a/data/recipes/fletch_magic_longbow.yaml b/data/recipes/fletch_magic_longbow.yaml
new file mode 100644
index 0000000..b8a0cb6
--- /dev/null
+++ b/data/recipes/fletch_magic_longbow.yaml
@@ -0,0 +1,13 @@
+id: fletch_magic_longbow
+type: fletching
+skill: fletching
+level: 85
+xp: 91
+wait: 2
+consume:
+ - items: [magic_longbow_u]
+ qty: 1
+ - items: [bowstring]
+ qty: 1
+output: magic_longbow
+message: "You string the magic longbow."
diff --git a/data/recipes/fletch_magic_longbow_u.yaml b/data/recipes/fletch_magic_longbow_u.yaml
new file mode 100644
index 0000000..9b4662b
--- /dev/null
+++ b/data/recipes/fletch_magic_longbow_u.yaml
@@ -0,0 +1,11 @@
+id: fletch_magic_longbow_u
+type: fletching
+skill: fletching
+level: 85
+xp: 91
+wait: 3
+consume:
+ - items: [magic_logs]
+ qty: 1
+output: magic_longbow_u
+message: "You carefully carve the magic log into a longbow."
diff --git a/data/recipes/fletch_magic_shortbow.yaml b/data/recipes/fletch_magic_shortbow.yaml
new file mode 100644
index 0000000..9d6a94f
--- /dev/null
+++ b/data/recipes/fletch_magic_shortbow.yaml
@@ -0,0 +1,13 @@
+id: fletch_magic_shortbow
+type: fletching
+skill: fletching
+level: 80
+xp: 83
+wait: 2
+consume:
+ - items: [magic_shortbow_u]
+ qty: 1
+ - items: [bowstring]
+ qty: 1
+output: magic_shortbow
+message: "You string the magic shortbow."
diff --git a/data/recipes/fletch_magic_shortbow_u.yaml b/data/recipes/fletch_magic_shortbow_u.yaml
new file mode 100644
index 0000000..dabfaf7
--- /dev/null
+++ b/data/recipes/fletch_magic_shortbow_u.yaml
@@ -0,0 +1,11 @@
+id: fletch_magic_shortbow_u
+type: fletching
+skill: fletching
+level: 80
+xp: 83
+wait: 3
+consume:
+ - items: [magic_logs]
+ qty: 1
+output: magic_shortbow_u
+message: "You carefully carve the magic log into a shortbow."
diff --git a/data/recipes/fletch_maple_longbow.yaml b/data/recipes/fletch_maple_longbow.yaml
new file mode 100644
index 0000000..b90a4fd
--- /dev/null
+++ b/data/recipes/fletch_maple_longbow.yaml
@@ -0,0 +1,13 @@
+id: fletch_maple_longbow
+type: fletching
+skill: fletching
+level: 55
+xp: 58
+wait: 2
+consume:
+ - items: [maple_longbow_u]
+ qty: 1
+ - items: [bowstring]
+ qty: 1
+output: maple_longbow
+message: "You string the maple longbow."
diff --git a/data/recipes/fletch_maple_longbow_u.yaml b/data/recipes/fletch_maple_longbow_u.yaml
new file mode 100644
index 0000000..8e34a4d
--- /dev/null
+++ b/data/recipes/fletch_maple_longbow_u.yaml
@@ -0,0 +1,11 @@
+id: fletch_maple_longbow_u
+type: fletching
+skill: fletching
+level: 55
+xp: 58
+wait: 3
+consume:
+ - items: [maple_logs]
+ qty: 1
+output: maple_longbow_u
+message: "You carefully carve the maple log into a longbow."
diff --git a/data/recipes/fletch_maple_shortbow.yaml b/data/recipes/fletch_maple_shortbow.yaml
new file mode 100644
index 0000000..d623cc6
--- /dev/null
+++ b/data/recipes/fletch_maple_shortbow.yaml
@@ -0,0 +1,13 @@
+id: fletch_maple_shortbow
+type: fletching
+skill: fletching
+level: 50
+xp: 50
+wait: 2
+consume:
+ - items: [maple_shortbow_u]
+ qty: 1
+ - items: [bowstring]
+ qty: 1
+output: maple_shortbow
+message: "You string the maple shortbow."
diff --git a/data/recipes/fletch_maple_shortbow_u.yaml b/data/recipes/fletch_maple_shortbow_u.yaml
new file mode 100644
index 0000000..9a44d9a
--- /dev/null
+++ b/data/recipes/fletch_maple_shortbow_u.yaml
@@ -0,0 +1,11 @@
+id: fletch_maple_shortbow_u
+type: fletching
+skill: fletching
+level: 50
+xp: 50
+wait: 3
+consume:
+ - items: [maple_logs]
+ qty: 1
+output: maple_shortbow_u
+message: "You carefully carve the maple log into a shortbow."
diff --git a/data/recipes/fletch_mithril_arrow.yaml b/data/recipes/fletch_mithril_arrow.yaml
new file mode 100644
index 0000000..5c948b8
--- /dev/null
+++ b/data/recipes/fletch_mithril_arrow.yaml
@@ -0,0 +1,14 @@
+id: fletch_mithril_arrow
+type: fletching
+skill: fletching
+level: 45
+xp: 7
+wait: 2
+consume:
+ - items: [headless_arrow]
+ qty: 15
+ - items: [mithril_arrowtips]
+ qty: 15
+output: mithril_arrow
+output_qty: 15
+message: "You attach the mithril arrowtips to the headless arrows."
diff --git a/data/recipes/fletch_mithril_bolts.yaml b/data/recipes/fletch_mithril_bolts.yaml
new file mode 100644
index 0000000..f695a90
--- /dev/null
+++ b/data/recipes/fletch_mithril_bolts.yaml
@@ -0,0 +1,14 @@
+id: fletch_mithril_bolts
+type: fletching
+skill: fletching
+level: 54
+xp: 50
+wait: 0
+consume:
+ - items: [mithril_bolts_unf]
+ qty: 10
+ - items: [feather]
+ qty: 10
+output: mithril_bolts
+output_qty: 10
+message: "You attach feathers to the mithril bolts."
diff --git a/data/recipes/fletch_oak_longbow.yaml b/data/recipes/fletch_oak_longbow.yaml
new file mode 100644
index 0000000..3e48fe5
--- /dev/null
+++ b/data/recipes/fletch_oak_longbow.yaml
@@ -0,0 +1,13 @@
+id: fletch_oak_longbow
+type: fletching
+skill: fletching
+level: 25
+xp: 25
+wait: 2
+consume:
+ - items: [oak_longbow_u]
+ qty: 1
+ - items: [bowstring]
+ qty: 1
+output: oak_longbow
+message: "You string the oak longbow."
diff --git a/data/recipes/fletch_oak_longbow_u.yaml b/data/recipes/fletch_oak_longbow_u.yaml
new file mode 100644
index 0000000..9127fff
--- /dev/null
+++ b/data/recipes/fletch_oak_longbow_u.yaml
@@ -0,0 +1,11 @@
+id: fletch_oak_longbow_u
+type: fletching
+skill: fletching
+level: 25
+xp: 25
+wait: 3
+consume:
+ - items: [oak_logs]
+ qty: 1
+output: oak_longbow_u
+message: "You carefully carve the oak log into a longbow."
diff --git a/data/recipes/fletch_oak_shortbow.yaml b/data/recipes/fletch_oak_shortbow.yaml
new file mode 100644
index 0000000..96f70b0
--- /dev/null
+++ b/data/recipes/fletch_oak_shortbow.yaml
@@ -0,0 +1,13 @@
+id: fletch_oak_shortbow
+type: fletching
+skill: fletching
+level: 20
+xp: 16
+wait: 2
+consume:
+ - items: [oak_shortbow_u]
+ qty: 1
+ - items: [bowstring]
+ qty: 1
+output: oak_shortbow
+message: "You string the oak shortbow."
diff --git a/data/recipes/fletch_oak_shortbow_u.yaml b/data/recipes/fletch_oak_shortbow_u.yaml
new file mode 100644
index 0000000..03cffb3
--- /dev/null
+++ b/data/recipes/fletch_oak_shortbow_u.yaml
@@ -0,0 +1,11 @@
+id: fletch_oak_shortbow_u
+type: fletching
+skill: fletching
+level: 20
+xp: 16
+wait: 3
+consume:
+ - items: [oak_logs]
+ qty: 1
+output: oak_shortbow_u
+message: "You carefully carve the oak log into a shortbow."
diff --git a/data/recipes/fletch_ruby_bolt_tips.yaml b/data/recipes/fletch_ruby_bolt_tips.yaml
new file mode 100644
index 0000000..976bc3a
--- /dev/null
+++ b/data/recipes/fletch_ruby_bolt_tips.yaml
@@ -0,0 +1,12 @@
+id: fletch_ruby_bolt_tips
+type: fletching
+skill: fletching
+level: 73
+xp: 6
+wait: 5
+consume:
+ - items: [uncut_ruby]
+ qty: 1
+output: ruby_bolt_tips
+output_qty: 12
+message: "You cut the ruby into bolt tips."
diff --git a/data/recipes/fletch_ruby_bolts.yaml b/data/recipes/fletch_ruby_bolts.yaml
new file mode 100644
index 0000000..fe1b987
--- /dev/null
+++ b/data/recipes/fletch_ruby_bolts.yaml
@@ -0,0 +1,14 @@
+id: fletch_ruby_bolts
+type: fletching
+skill: fletching
+level: 73
+xp: 6
+wait: 2
+consume:
+ - items: [adamant_bolts]
+ qty: 10
+ - items: [ruby_bolt_tips]
+ qty: 10
+output: ruby_bolts
+output_qty: 10
+message: "You tip the adamant bolts with ruby."
diff --git a/data/recipes/fletch_rune_arrow.yaml b/data/recipes/fletch_rune_arrow.yaml
new file mode 100644
index 0000000..61a6bab
--- /dev/null
+++ b/data/recipes/fletch_rune_arrow.yaml
@@ -0,0 +1,14 @@
+id: fletch_rune_arrow
+type: fletching
+skill: fletching
+level: 75
+xp: 12
+wait: 2
+consume:
+ - items: [headless_arrow]
+ qty: 15
+ - items: [rune_arrowtips]
+ qty: 15
+output: rune_arrow
+output_qty: 15
+message: "You attach the rune arrowtips to the headless arrows."
diff --git a/data/recipes/fletch_rune_bolts.yaml b/data/recipes/fletch_rune_bolts.yaml
new file mode 100644
index 0000000..9d016a6
--- /dev/null
+++ b/data/recipes/fletch_rune_bolts.yaml
@@ -0,0 +1,14 @@
+id: fletch_rune_bolts
+type: fletching
+skill: fletching
+level: 69
+xp: 100
+wait: 0
+consume:
+ - items: [rune_bolts_unf]
+ qty: 10
+ - items: [feather]
+ qty: 10
+output: rune_bolts
+output_qty: 10
+message: "You attach feathers to the rune bolts."
diff --git a/data/recipes/fletch_sapphire_bolt_tips.yaml b/data/recipes/fletch_sapphire_bolt_tips.yaml
new file mode 100644
index 0000000..f78db3e
--- /dev/null
+++ b/data/recipes/fletch_sapphire_bolt_tips.yaml
@@ -0,0 +1,12 @@
+id: fletch_sapphire_bolt_tips
+type: fletching
+skill: fletching
+level: 63
+xp: 4
+wait: 5
+consume:
+ - items: [uncut_sapphire]
+ qty: 1
+output: sapphire_bolt_tips
+output_qty: 12
+message: "You cut the sapphire into bolt tips."
diff --git a/data/recipes/fletch_sapphire_bolts.yaml b/data/recipes/fletch_sapphire_bolts.yaml
new file mode 100644
index 0000000..b678d5a
--- /dev/null
+++ b/data/recipes/fletch_sapphire_bolts.yaml
@@ -0,0 +1,14 @@
+id: fletch_sapphire_bolts
+type: fletching
+skill: fletching
+level: 63
+xp: 4
+wait: 2
+consume:
+ - items: [mithril_bolts]
+ qty: 10
+ - items: [sapphire_bolt_tips]
+ qty: 10
+output: sapphire_bolts
+output_qty: 10
+message: "You tip the mithril bolts with sapphire."
diff --git a/data/recipes/fletch_shortbow.yaml b/data/recipes/fletch_shortbow.yaml
new file mode 100644
index 0000000..ae5e196
--- /dev/null
+++ b/data/recipes/fletch_shortbow.yaml
@@ -0,0 +1,13 @@
+id: fletch_shortbow
+type: fletching
+skill: fletching
+level: 5
+xp: 5
+wait: 2
+consume:
+ - items: [shortbow_u]
+ qty: 1
+ - items: [bowstring]
+ qty: 1
+output: shortbow
+message: "You string the shortbow."
diff --git a/data/recipes/fletch_shortbow_u.yaml b/data/recipes/fletch_shortbow_u.yaml
new file mode 100644
index 0000000..b8f3654
--- /dev/null
+++ b/data/recipes/fletch_shortbow_u.yaml
@@ -0,0 +1,11 @@
+id: fletch_shortbow_u
+type: fletching
+skill: fletching
+level: 5
+xp: 5
+wait: 3
+consume:
+ - items: [logs]
+ qty: 1
+output: shortbow_u
+message: "You carefully carve the log into a shortbow."
diff --git a/data/recipes/fletch_steel_arrow.yaml b/data/recipes/fletch_steel_arrow.yaml
new file mode 100644
index 0000000..98a4d70
--- /dev/null
+++ b/data/recipes/fletch_steel_arrow.yaml
@@ -0,0 +1,14 @@
+id: fletch_steel_arrow
+type: fletching
+skill: fletching
+level: 30
+xp: 5
+wait: 2
+consume:
+ - items: [headless_arrow]
+ qty: 15
+ - items: [steel_arrowtips]
+ qty: 15
+output: steel_arrow
+output_qty: 15
+message: "You attach the steel arrowtips to the headless arrows."
diff --git a/data/recipes/fletch_steel_bolts.yaml b/data/recipes/fletch_steel_bolts.yaml
new file mode 100644
index 0000000..ed4d4c2
--- /dev/null
+++ b/data/recipes/fletch_steel_bolts.yaml
@@ -0,0 +1,14 @@
+id: fletch_steel_bolts
+type: fletching
+skill: fletching
+level: 46
+xp: 35
+wait: 0
+consume:
+ - items: [steel_bolts_unf]
+ qty: 10
+ - items: [feather]
+ qty: 10
+output: steel_bolts
+output_qty: 10
+message: "You attach feathers to the steel bolts."
diff --git a/data/recipes/fletch_willow_longbow.yaml b/data/recipes/fletch_willow_longbow.yaml
new file mode 100644
index 0000000..6015c00
--- /dev/null
+++ b/data/recipes/fletch_willow_longbow.yaml
@@ -0,0 +1,13 @@
+id: fletch_willow_longbow
+type: fletching
+skill: fletching
+level: 40
+xp: 41
+wait: 2
+consume:
+ - items: [willow_longbow_u]
+ qty: 1
+ - items: [bowstring]
+ qty: 1
+output: willow_longbow
+message: "You string the willow longbow."
diff --git a/data/recipes/fletch_willow_longbow_u.yaml b/data/recipes/fletch_willow_longbow_u.yaml
new file mode 100644
index 0000000..336ae51
--- /dev/null
+++ b/data/recipes/fletch_willow_longbow_u.yaml
@@ -0,0 +1,11 @@
+id: fletch_willow_longbow_u
+type: fletching
+skill: fletching
+level: 40
+xp: 41
+wait: 3
+consume:
+ - items: [willow_logs]
+ qty: 1
+output: willow_longbow_u
+message: "You carefully carve the willow log into a longbow."
diff --git a/data/recipes/fletch_willow_shortbow.yaml b/data/recipes/fletch_willow_shortbow.yaml
new file mode 100644
index 0000000..028132f
--- /dev/null
+++ b/data/recipes/fletch_willow_shortbow.yaml
@@ -0,0 +1,13 @@
+id: fletch_willow_shortbow
+type: fletching
+skill: fletching
+level: 35
+xp: 33
+wait: 2
+consume:
+ - items: [willow_shortbow_u]
+ qty: 1
+ - items: [bowstring]
+ qty: 1
+output: willow_shortbow
+message: "You string the willow shortbow."
diff --git a/data/recipes/fletch_willow_shortbow_u.yaml b/data/recipes/fletch_willow_shortbow_u.yaml
new file mode 100644
index 0000000..2eb7499
--- /dev/null
+++ b/data/recipes/fletch_willow_shortbow_u.yaml
@@ -0,0 +1,11 @@
+id: fletch_willow_shortbow_u
+type: fletching
+skill: fletching
+level: 35
+xp: 33
+wait: 3
+consume:
+ - items: [willow_logs]
+ qty: 1
+output: willow_shortbow_u
+message: "You carefully carve the willow log into a shortbow."
diff --git a/data/recipes/fletch_yew_longbow.yaml b/data/recipes/fletch_yew_longbow.yaml
new file mode 100644
index 0000000..26df51b
--- /dev/null
+++ b/data/recipes/fletch_yew_longbow.yaml
@@ -0,0 +1,13 @@
+id: fletch_yew_longbow
+type: fletching
+skill: fletching
+level: 65
+xp: 75
+wait: 2
+consume:
+ - items: [yew_longbow_u]
+ qty: 1
+ - items: [bowstring]
+ qty: 1
+output: yew_longbow
+message: "You string the yew longbow."
diff --git a/data/recipes/fletch_yew_longbow_u.yaml b/data/recipes/fletch_yew_longbow_u.yaml
new file mode 100644
index 0000000..fa7b3b0
--- /dev/null
+++ b/data/recipes/fletch_yew_longbow_u.yaml
@@ -0,0 +1,11 @@
+id: fletch_yew_longbow_u
+type: fletching
+skill: fletching
+level: 65
+xp: 75
+wait: 3
+consume:
+ - items: [yew_logs]
+ qty: 1
+output: yew_longbow_u
+message: "You carefully carve the yew log into a longbow."
diff --git a/data/recipes/fletch_yew_shortbow.yaml b/data/recipes/fletch_yew_shortbow.yaml
new file mode 100644
index 0000000..c54bba0
--- /dev/null
+++ b/data/recipes/fletch_yew_shortbow.yaml
@@ -0,0 +1,13 @@
+id: fletch_yew_shortbow
+type: fletching
+skill: fletching
+level: 60
+xp: 67
+wait: 2
+consume:
+ - items: [yew_shortbow_u]
+ qty: 1
+ - items: [bowstring]
+ qty: 1
+output: yew_shortbow
+message: "You string the yew shortbow."
diff --git a/data/recipes/fletch_yew_shortbow_u.yaml b/data/recipes/fletch_yew_shortbow_u.yaml
new file mode 100644
index 0000000..48877de
--- /dev/null
+++ b/data/recipes/fletch_yew_shortbow_u.yaml
@@ -0,0 +1,11 @@
+id: fletch_yew_shortbow_u
+type: fletching
+skill: fletching
+level: 60
+xp: 67
+wait: 3
+consume:
+ - items: [yew_logs]
+ qty: 1
+output: yew_shortbow_u
+message: "You carefully carve the yew log into a shortbow."
diff --git a/data/rooms/14.yaml b/data/rooms/14.yaml
index 2e90539..c3d910d 100644
--- a/data/rooms/14.yaml
+++ b/data/rooms/14.yaml
@@ -1,6 +1,16 @@
id: 14
name: "Fletching Bench"
-description: "A workbench covered in wood shavings, feathers, and arrowheads. This area is not yet accessible."
+description: "A workbench covered in wood shavings, feathers, and arrowheads. Racks of unfinished bows line the walls, and a pile of bowstrings sits in the corner."
exits:
east: 15
west: 13
+spawns:
+ - item_id: bowstring
+ quantity: 5
+ respawn_ticks: 50
+ - item_id: knife
+ quantity: 1
+ respawn_ticks: 50
+ - item_id: chisel
+ quantity: 1
+ respawn_ticks: 50