Smithing mechanics
What happens around a design at the smithy, at full precision for game v1.4.8: difficulty, crafted quality, stamina, XP, research, materials and refining, part unlocking and orders. The weapon's stats are in Weapon stats, its value in Value and price.
The rules are TaleWorlds.CampaignSystem.GameComponents.DefaultSmithingModel, CraftingCampaignBehavior and the smith perks in DefaultPerks (see Game code). No official module (SandBox, StoryMode, NavalDLC, BirthAndDeath) replaces DefaultSmithingModel. BirthAndDeath's only DLL, TaleWorlds.CampaignSystem.ViewModelCollection.BirthAndDeath.dll, holds its submodule and campaign options and no game model. The formulas were recovered from v1.4.6 IL and compared against v1.4.8 IL: no compared method differs, but 38 were compared by header only and 22 are not in the v1.4.8 dumps (see Value and price). None of them has been checked against game output (see Validation). The snippet tables and worked examples are computed by the Python model in src/bannerlord/crafting/.
Difficulty
Pieces that need no materials are skipped. A piece's difficulty is tier × 50.
difficulty = round(Σ w × tier × 50 ÷ Σ w), rounded half to even.
tier: the piece's@tier.w: slot weight. Blade 100, Handle 60, Guard 20, Pommel 20.
Worked example, the one-handed sword (piece tiers Blade 1, Guard 5, Handle 2, Pommel 1): (100 × 1 + 20 × 5 + 60 × 2 + 20 × 1) × 50 ÷ (100 + 20 + 60 + 20) = 85.
Smithing difficulty is the average of each piece's tier times 50, weighted by slot and rounded. Pieces that need no materials are left out.
| Slot | Weight |
|---|---|
| Blade | 100 |
| Guard | 20 |
| Handle | 60 |
| Pommel | 20 |
| Weapon | Difficulty | Average piece tier | Best quality possible | Smithing for an order this hard |
|---|---|---|---|---|
| One-handed sword | 85 | 2.25 | Fine | 35 |
| Two-handed sword | 145 | 3.25 | Fine | 95 |
| Dagger | 90 | 2.5 | Fine | 40 |
| Throwing knife | 85 | 1.75 | Fine | 35 |
| One-handed axe | 156 | 3.33 | Fine | 106 |
| Two-handed axe | 139 | 2.33 | Fine | 89 |
| Throwing axe | 200 | 4 | Masterwork | 150 |
| Two-handed polearm | 150 | 3 | Fine | 100 |
| Pike | 200 | 2.5 | Fine | 150 |
| Javelin | 131 | 1.75 | Fine | 81 |
| Mace | 222 | 4.67 | Legendary | 172 |
| Two-handed mace | 167 | 3.33 | Fine | 117 |
An order needs Smithing skill + 50 at least the order's difficulty. This is a solver test result, measured with the formulas outside the game, not read from the game's code.
Crafted quality
x = clamp(Crafting skill − difficulty, −300, 300)
Crafting skill: the hero's Smithing skill; the skill bonus is+1per skill point.difficulty: from Difficulty.
S(x, m) = e^(0.018 × (x − m)) ÷ (1 + e^(0.018 × (x − m)))
m: the quality's midpoint in the table below.
ItemQuality |
Weight |
|---|---|
| Poor | 0.36 · (1 − S(x, −70)) |
| Inferior | 0.45 · (1 − S(x, −55)) |
| Common | S(x, 25) |
| Fine | 0.36 · S(x, 40) |
| Masterwork | 0.27 · S(x, 70) |
| Legendary | 0.18 · S(x, 115) |
The weights are normalized to sum to 1.
Perks then apply in order, each giving a target quality a bonus. The bonus is taken evenly from the non-excluded qualities, with any shortfall carried to the next one, and the list is normalized again:
| Perk | Target | Bonus | Excludes from reduction, when owned |
|---|---|---|---|
| Experienced Smith | Fine | 0.1 |
Masterwork, Legendary (always) |
| Master Smith | Masterwork | 0.075 |
Legendary (always), Fine (with Experienced Smith) |
| Legendary Smith | Legendary | 0.05 + max(skill − 275, 0)/5 · 0.01 |
Fine, Masterwork (with their perks) |
Each perk adjusts the list:
share = bonus ÷ (6 − (excluded + 1)),excludedbeing the number of excluded qualities.- Walk the qualities from Poor to Legendary with
carry = 0. The target gainsbonus. Every other quality that is not excluded becomesw − (share + carry); if that is negative, it is set to 0 and the shortfall becomes the nextcarry, elsecarry = 0. - Normalize the list to sum to 1 again.
The rolled quality is capped by the average tier of all pieces: below 3.5 it cannot exceed Fine, and below 4.5 it cannot exceed Masterwork. A modifier is then chosen uniformly among the template modifier_group entries of that quality.
Worked example, the one-handed sword (difficulty 85) at skill 185, so x = 100: with no perks the chances are 1.2%, 1.9%, 58.7%, 19.9%, 12.6% and 5.8%. Experienced Smith adds 10% to Fine (29.9%); its share comes from Poor, Inferior and Common, Poor and Inferior drop to 0, and the shortfall falls on Common (51.8%). The average piece tier, 2.25, caps the roll at Fine.
Chance of each quality with no smith perks. The gap is Smithing skill minus the weapon's difficulty; it counts only up to 300 either way. Skill shown for the one-handed sword example, difficulty 85.
| Gap | Skill | Poor | Inferior | Common | Fine | Masterwork | Legendary |
|---|---|---|---|---|---|---|---|
| -50 | 35 | 22.3% | 32.3% | 31.0% | 8.9% | 4.2% | 1.3% |
| -40 | 45 | 19.6% | 28.8% | 35.0% | 10.2% | 4.8% | 1.5% |
| -30 | 55 | 17.0% | 25.2% | 39.0% | 11.5% | 5.5% | 1.8% |
| -20 | 65 | 14.5% | 21.8% | 42.8% | 12.7% | 6.2% | 2.0% |
| -10 | 75 | 12.2% | 18.5% | 46.3% | 13.9% | 6.9% | 2.3% |
| 0 | 85 | 10.1% | 15.5% | 49.4% | 14.9% | 7.6% | 2.6% |
| 10 | 95 | 8.3% | 12.8% | 52.0% | 15.9% | 8.2% | 2.8% |
| 20 | 105 | 6.7% | 10.5% | 54.1% | 16.8% | 8.8% | 3.1% |
| 30 | 115 | 5.4% | 8.5% | 55.7% | 17.5% | 9.4% | 3.4% |
| 40 | 125 | 4.4% | 6.9% | 56.9% | 18.1% | 10.0% | 3.7% |
| 50 | 135 | 3.5% | 5.6% | 57.8% | 18.6% | 10.5% | 4.0% |
| 60 | 145 | 2.8% | 4.5% | 58.3% | 19.0% | 11.0% | 4.4% |
| 70 | 155 | 2.3% | 3.6% | 58.7% | 19.3% | 11.4% | 4.7% |
| 80 | 165 | 1.8% | 2.9% | 58.8% | 19.5% | 11.9% | 5.0% |
| 90 | 175 | 1.5% | 2.4% | 58.8% | 19.7% | 12.3% | 5.4% |
| 100 | 185 | 1.2% | 1.9% | 58.7% | 19.9% | 12.6% | 5.8% |
| 110 | 195 | 1.0% | 1.6% | 58.5% | 20.0% | 12.9% | 6.1% |
| 120 | 205 | 0.8% | 1.3% | 58.3% | 20.0% | 13.2% | 6.5% |
| 130 | 215 | 0.6% | 1.0% | 58.0% | 20.1% | 13.5% | 6.8% |
| 140 | 225 | 0.5% | 0.8% | 57.7% | 20.1% | 13.7% | 7.1% |
| 150 | 235 | 0.4% | 0.7% | 57.5% | 20.1% | 13.9% | 7.5% |
With smith perks, for the same example (difficulty 85):
| Skill | Perks | Poor | Inferior | Common | Fine | Masterwork | Legendary |
|---|---|---|---|---|---|---|---|
| 185 | No perks | 1.2% | 1.9% | 58.7% | 19.9% | 12.6% | 5.8% |
| 185 | Experienced Smith | 0.0% | 0.0% | 51.8% | 29.9% | 12.6% | 5.8% |
| 185 | Experienced Smith and Master Smith | 0.0% | 0.0% | 44.3% | 29.9% | 20.1% | 5.8% |
| 185 | All three smith perks | 0.0% | 0.0% | 39.3% | 29.9% | 20.1% | 10.8% |
| 300 | No perks | 0.1% | 0.2% | 56.1% | 20.0% | 14.6% | 9.0% |
| 300 | Experienced Smith | 0.0% | 0.0% | 46.5% | 30.0% | 14.6% | 9.0% |
| 300 | Experienced Smith and Master Smith | 0.0% | 0.0% | 39.0% | 30.0% | 22.1% | 9.0% |
| 300 | All three smith perks | 0.0% | 0.0% | 29.0% | 30.0% | 22.1% | 19.0% |
Each quality's weight rises or falls with the gap along an S-curve of steepness 0.018, centred on its midpoint. The weights are then scaled to add up to 100%.
| Quality | Weight | Midpoint | As the gap grows |
|---|---|---|---|
| Poor | 0.36 | -70 | falls |
| Inferior | 0.45 | -55 | falls |
| Common | 1 | 25 | rises |
| Fine | 0.36 | 40 | rises |
| Masterwork | 0.27 | 70 | rises |
| Legendary | 0.18 | 115 | rises |
| Perk | Adds to | Bonus |
|---|---|---|
| Experienced Smith | Fine | 0.1 |
| Master Smith | Masterwork | 0.075 |
| Legendary Smith | Legendary | 0.05, plus 0.01 per 5 skill above 275 (0.002 per skill point) |
Each bonus is taken evenly from the qualities the perk does not exclude, with any shortfall carried to the next one, and the chances are scaled to add up to 100% again.
Average piece tier below 3.5: quality stops at Fine. From 3.5 to below 4.5: it stops at Masterwork. From 4.5: any quality.
Line chart of the chance of each quality with no smith perks against Smithing skill minus difficulty, from −50 to +150, chance 0% to 60%. At −50: Poor 22.3%, Inferior 32.3%, Common 31.0%, Fine 8.9%, Masterwork 4.2%, Legendary 1.3%. At 0: Poor 10.1%, Inferior 15.5%, Common 49.4%, Fine 14.9%, Masterwork 7.6%, Legendary 2.6%. At +150: Poor 0.4%, Inferior 0.7%, Common 57.5%, Fine 20.1%, Masterwork 13.9%, Legendary 7.5%.
Stamina, XP, research
Stamina is truncated to int after perks. XP and research use the crafted or material item's value.
| Action | Stamina | Perk factor | XP |
|---|---|---|---|
| Smithing | 10 + 5·tier |
Practical Smith ×0.5 |
free build round(0.02·value); order round(0.1·value) |
| Smelting | 10 |
Practical Smelter ×0.5 |
round(0.02·value) |
| Refining | 6 |
Practical Refiner ×0.5 |
round(0.3·output value·output count) |
research needed for the next part = sqrt(100 ÷ template piece count) × (9 × opened piece count + 10)
smelting research gain = trunc((1 + round(0.02 × value)) × (1 + Curious Smelter 1.0))
smithing research gain = 1 + floor(0.1 × value × factor), with factor = 1 + Curious Smith 1.0 + 0.1 when the method's bool argument is true.
template piece count: the number of pieces of the template.opened piece count: the template's pieces already unlocked.Curious Smelter 1.0,Curious Smith 1.0: the perk's bonus, counted when the hero has it.
Worked example: a template of 100 pieces with 1 unlocked needs sqrt(100 ÷ 100) × (9 × 1 + 10) = 19 points for the next part.
Research points needed to unlock the next piece, by the number of pieces in the template and the number already unlocked.
| Pieces in the template | 0 unlocked | 1 unlocked | 2 unlocked | 5 unlocked | 10 unlocked | 20 unlocked |
|---|---|---|---|---|---|---|
| 25 | 20 | 38 | 56 | 110 | 200 | 380 |
| 100 | 10 | 19 | 28 | 55 | 100 | 190 |
| 400 | 5 | 9.5 | 14 | 27.5 | 50 | 95 |
Materials
Smithing cost is the sum of each piece's Materials, plus 1 Charcoal.
Smelting returns the same sum with two changes: the highest of Iron6..Iron2 present loses 1 unit and the next lower grade gains 1, and it costs 1 Charcoal.
Refining recipes:
| Input | Charcoal | Output | By-product | Condition |
|---|---|---|---|---|
Wood ×2 |
Charcoal ×1, ×3 with Charcoal Maker |
|||
IronOre ×1 |
1 | Iron1 ×2, ×3 with Iron Maker |
||
Iron1 ×1 |
1 | Iron2 ×1 |
||
Iron2 ×2 |
1 | Iron3 ×1 |
Iron1 ×1 |
|
Iron3 ×2 |
1 | Iron4 ×1 |
Iron1 ×1 |
Steel Maker |
Iron4 ×2 |
1 | Iron5 ×1 |
Iron1 ×1 |
Steel Maker 2 |
Iron5 ×2 |
1 | Iron6 ×1 |
Iron1 ×1 |
Steel Maker 3 |
Part unlocking and orders
Evidence labels:
- IL: read from game code. Only the order pass rule,
CanHeroCompleteOrderand unlock scope were checked twice; the other IL rows have one read. - Test: measured with the formulas outside the game, not re-run independently.
- Nothing here has run in the game.
| Rule | Evidence |
|---|---|
| Order passes when the crafted stat sum, with the quality modifier, meets the order sum and damage types match | IL |
An order has no per-stat minimums; CanHeroCompleteOrder returns true |
IL |
| Unlocks are per template across the campaign, not per hero | IL |
OpenNewPart picks randomly among the lowest-tier unopened, non-hidden pieces of a template |
IL |
IsGivenByDefault pieces are always open |
IL |
SetDesignManually skips missing pieces silently and adds no history key after loading |
IL |
ScaleThePiece does not clamp; the slider is ±10 |
IL |
HaveUnlockedAllSelectedPieces disables crafting for locked parts |
IL |
Materials limit a design through HaveMaterialsNeeded |
IL |
| Stamina is a hero-level check only | IL |
| Difficulty does not block free-build crafting | IL |
GenerateItem calls DetermineValue, so a panel can read value from GetCurrentCraftedItemObject |
IL |
| Orders need skill + 50 >= order difficulty | Test, not re-run |
| 10% excess pays 1% extra gold; failure pays at most 50% | Test, not re-run |
Validation
Not validated against game output, because the exports hold no usable values: difficulty (difficulty is 0 throughout), quality probabilities, cap and perks, stamina, XP, research, materials and refining. These are read from IL only.
Game code
| Formula | Method |
|---|---|
| Difficulty, quality, stamina, XP, materials | TaleWorlds.CampaignSystem.GameComponents.DefaultSmithingModel |
| Research | CraftingCampaignBehavior.AddResearchPoints |
| Perk values | CharacterDevelopment.DefaultPerks.InitializeAll |
IL decoded from game v1.4.8:
- DefaultSmithingModel.il:
GetCraftingPartDifficulty,CalculateWeaponDesignDifficulty,GetModifierQualityProbabilities,AdjustModifierProbabilities,AdjustQualityRegardingDesignTier,CalculateSigmoidFunction,GetCraftedWeaponModifier, theGetEnergyCostFor*andGetSkillXpFor*methods,GetSmithingCostsForWeaponDesign,GetSmeltingOutputForItem,AddSmeltingReductions,GetRefiningFormulas,ResearchPointsNeedForNewPartand theGetPartResearchGainFor*methods. - CraftingCampaignBehavior.il: the whole behavior, including
AddResearchPointsandOpenNewPart. - DefaultPerks.il:
InitializeAll, the smith perk values.
The other methods named in Part unlocking and orders (CanHeroCompleteOrder, IsGivenByDefault, SetDesignManually, ScaleThePiece, HaveUnlockedAllSelectedPieces, HaveMaterialsNeeded, GenerateItem, DetermineValue) have no dump in the folder.
Changelog
- v1.4.8 (2026-11-11): Rewritten as deep dive; facts unchanged.
- v1.4.8 (2026-11-10): Moved into the site; content unchanged.