The bench

Crafting & Salvage

Jewelers set reagents in metal. Blacksmiths fold up to three reagents into a copper pickaxe. Salvage eats the item, returns some metal, and writes a sliver of stats onto your moratorium forever — with diminishing returns per recipe.

Rings

One reagent, paid in gold, silver, or copper. Name: {Metal} {Reagent} Ring. Power cost = reagent rarity (1–5). Craft times and costs: Jewelers.

Primary stattierMultiplier = jewelerTier === 0 ? 1 : jewelerTier === 1 ? 2 : jewelerTier // tier 4 = 4×, tier 5 = 5× metalMultiplier = 1.1 baseEffect = active_boost (else passive) primary = 1 + (baseEffect − 1) × tierMultiplier × metalMultiplier

Mapped from the reagent’s boost type: overall_yield → yield, copper/silver/gold_yield → those keys, otherwise the type name (strength stays strength on rings; pickaxes normalize it to power).

Metal extras

MetalFlatOre yield
Copper+ tier/100 power+ tier × 7% copper yield
Silver+ tier/100 speed+ tier × 5% silver yield
Gold+ tier/100 overall yield+ tier × 3% gold yield

If the primary stat is already that key, the extras add onto it; otherwise they appear as a second stat starting at 1 + bonus.

Pickaxes

Paid in copper only. Up to 3 reagents, none above blacksmith tier. Empty craft uses hidden Copper Core (tier 0).

Pickaxe tier (max reagent, or 0)CopperForge XP to each smith
05,000100
1100,000300
2500,000700
31,000,0001,000
45,000,0003,000
520,000,00010,000

Base pickaxe: baseDamageBonus: 5, copperYield: 1.05. Each reagent is converted with the same primary-stat formula (blacksmith tier as the multiplier) plus copper’s metal extras (power + tier/100, copper yield + tier×7%). Multiple reagents: multiplier stats multiply; additive stats add. Flux/salt: +1% yield each. Iron: +1 carry. Strength is stored as power.

Power cost = sum of reagent tiers (empty = 1). Combat uses miner damage. Crit display is critical × 10 × 100% because the roll is random() < critical × 10.

Alloys

The name is the first matching combo (else tin/zinc bronze-brass, else the first matching single-source family, else Copper). Every matching combo and family still stacks stats. Iron pairs also get iron’s +1 carry from the iron tag itself.

Combo alloys

TagsNameExtra stats
iron + tungstenWolfram Steel+3 dmg, speed 0.97, crit 0.05
iron + osmiumStarmetal+4 dmg, speed 0.95
iron + leadBlackiron+2 dmg, speed 0.98
iron + titaniumAdamantine+2 dmg, speed 1.02, crit 0.03
iron + aluminumFerralumspeed 1.03, carrySpeed 0.05
iron + chromiumStelliteyield 1.04, +1 dmg
iron + platinumAstraliteyield 1.05
iron + nickelMeteoricluck 1.04, +1 dmg
iron + silverDamascusluck 1.03, crit 0.03
iron + mercuryAmalgamspeed 1.04, crit 0.03
iron + indiumShimmerluck 1.05, seek +1
iron + tinFerrotinpower 1.03, +1 dmg
iron + zincGalvanitespeed 1.03, +1 dmg
iron + goldTumbagayield 1.03
nickel + chromiumStainlessyield 1.07, +1 dmg, crit 0.01
silver + mercuryMoonsilverspeed 1.04, luck 1.05, seek +1
gold + platinumOrichalcum+2 dmg, yield 1.07, crit 0.02
osmium + tungstenVoidsteel+5 dmg, speed 0.94, crit 0.05
aluminum + titaniumSkylarkspeed 1.07, lob +1
indium + mercuryPrismatineluck 1.06, yield 1.03, seek +1

Tin/zinc always apply when present, even under an iron name: Bronze = power 1.05 +2 dmg; Brass = speed 1.05 +1 dmg; equal tiers = both 1.03 +2 dmg.

Single-source families

TagNameStats
tungstenDreadsteel+4 dmg, speed 0.97, crit 0.02
titaniumSkylitespeed 1.05, +1 dmg, crit 0.01
chromiumVitrabronzeyield 1.05
nickelCupronixluck 1.05, +1 dmg
leadGravbrass+3 dmg, speed 0.98, crit 0.01
indiumLuminixluck 1.07, yield 1.01
platinumAurelineyield 1.06, +1 dmg
osmiumObsidium+5 dmg, speed 0.96, crit 0.03
mercuryQuicksilverspeed 1.06, luck 1.02
silverArgentumluck 1.03
goldAurumyield 1.03
aluminumDuraluminspeed 1.04, +1 dmg, lob +1
ironFerrum+1 dmg

Prefixes: Gem-Encrusted (gem); Salted (salt, luck 1.02); Studded (mineral, +1 dmg); Glossy (flux, yield 1.02).

Magic

Rolled after the mundane stats. Mastery from salvaging that recipe multiplies chance: chance × (1 + mastery), capped at 100%. At 100% mastery the chance is doubled.

RingsPickaxes
Base chancemin(15%, 5% + 2% × reagentTier)min(35%, 5% + 2% × tier + 3% × fluxCount)
Multiplier1.03–1.151.05–1.20
Enchanted< 1.08below Gleaming
Gleaming≥ 1.08≥ 1.10
Runed≥ 1.13≥ 1.18

Only multiplier stats are scaled (yields, speed, power, luck). Additive damage / carry is not. Magic is not stored in the codex’s base recipe — mastery tracks the mundane craft.

Salvage

Unequipped rings and pickaxes only. Max 50 per request. One item per second. Cancel restores everything; nothing is deleted until the queue finishes.

Per recipe_key, not per unique itemdecay = 0.90 ^ timesThisRecipeWasAlreadySalvaged mastery = 1 − decay XP = floor(50,000 × itemTier × decay) metal return = floor(craftCost × random(0 … 0.30)) // no decay reagent = 50% on rings only // no decay; pickaxes never return reagents moratorium per non-1.0 stat (deterministic): granted = (0.0001 + min((stat − 1) × 0.005, 0.0020)) × decay

Recipe keys: rings ring:{reagentId}, pickaxes pickaxe: or pickaxe:{sortedIds}. At 0.90 decay: 10th salvage ≈ 39%, 25th ≈ 7%, 50th ≈ 0.5%. Moratorium stacks forever on the player and is added into guild bonuses after the /10. Speed, power/strength, yield, luck, and the three ore yields all map.

There is no reroll. Cancel-and-retry cannot fish a better moratorium — the sliver is a formula, not a dice roll. Metal return is random (0–30%), so that is the only reason to care about a particular tick.

Codex

One row per player per recipe: item name, non-magic base stats, tier, craft count, salvage count. The Artificer still asks for “blacksmith codex”; the table is player_codex. Lookup returns mastery for the craft preview.