This will be done better by showing off reactions, as I have no words. (And I need troubleshooting anyway, because there is clearly something wrong here)
[REACTION:MAKE_HILT_SPIKE]
[NAME:Make a hilt spike]
[BUILDING:TINKER:NONE]
[REAGENT:A:1:BAR:METAL:METAL:IRON]
[PRODUCT:100:1:TOY:ITEM_TOY_HILT_SPIKE:GET_MATERIAL_FROM_REAGENT:A]
[SKILL:MECHANICS]
This, when it makes anything, makes one hundred iron hilt spikes. That's all well and good, but I want it to make 1.
[REACTION:ATTACH_HILT_SPIKE_BRONZE_SWORD]
[NAME:Attach hilt spike to bronze short sword]
[BUILDING:TINKER:NONE]
[REAGENT:A:1:WEAPON:ITEM_WEAPON_SHORT_SWORD:METAL:BRONZE:NONE]
[REAGENT:B:1:TOY:ITEM_TOY_HILT_SPIKE:METAL:IRON]
[PRODUCT:100:1:WEAPON:ITEM_WEAPON_SPIKEH_SHORT_SWORD:GET_MATERIAL_FROM_REAGENT:A]
[SKILL:MECHANICS]
This makes a bronze crossbow. It will also accept bronze crossbows. So in essence all it does is eat a hilt spike. You may notice there is nothing about crossbows in it. (the custom weapon is a bronze short sword with an extra stab attack instead of a pommel strike.)
[REACTION:SPIKE]
[NAME:SpikeCheat]
[BUILDING:TINKER:NONE]
[PRODUCT:100:1:TOY:ITEM_TOY_HILT_SPIKE:METAL:IRON]
This has never done anything and is for testing purposes as you may have guessed.
[REACTION:BRONZE_SHORT_SWORD]
[NAME:BronzeShortCheat]
[BUILDING:TINKER:NONE]
[PRODUCT:100:1:WEAPON:ITEM_WEAPON_SHORT_SWORD:METAL:BRONZE:NONE]
This makes bronze crossbows. It made a bronze short sword once. I have changed nothing inbetween the instances.
Also, no errors involving duplicate entries in the raws have shown up. Some cropped up early, but they no longer do. If anything, fixing them made things more nonsensical.
I am... baffled.