Craft affix rolls should scale with profession skill and item level (Masterwork) #13
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Profession-crafted gear currently receives affixes at a flat rate (~40% any-line via
AffixCount.Craft), regardless of crafter skill or item level. This enables early-game gold spam and bypasses combat loot loops.Scale craft affix rolls with crafter skill and crafted item ilvl using a sigmoid mastery curve, inspired by Dwarf Fortress Masterwork. High-skill crafters making high-level gear should frequently produce imbued items; low-skill spam should rarely do so.
Migrated from: mod-illidari-difficulty#5
Current state
OnPlayerCreateItem→rollCraftAffix()AffixCount.Craft=60,25,10,4,1,0getEnchantTier(itemTemplate)from item quality + ilvl only — skill not consultedClassBias.Weight)Desired state
Mastery sigmoid
M = sigmoid(k * (wS * skillNorm + wI * ilvlNorm - midpoint))Shared mastery scalar drives line count, affix tier, and class bias.
Affix quality / tier scaling
The tier band (and effective power) of rolled affixes should scale with the same mastery sigmoid
M, not just item quality/ilvl.Today,
RollCustomAffixesForTemplatesetspickTierfromgetEnchantTier(itemTemplate)with no craft-specific adjustment. A low-skill crafter making a blue item can still roll high-tier affix definitions if the item band allows it.Proposed behavior:
M: affixes drawn from lower tiers (tier 1–2 typical); values stay modest via existingBuildValueBreakdownM:pickTierbiased toward item's ceiling (tier 4–5 at peak); exalted/chaos pool rolls still possible but gated by existing chancesM); may share config midpoint/steepness or expose a separateCraft.Tier.*curve if tuning needs divergeAnchor points (target feel, sim before ship):
Implementation hook: pass
MintoRollCustomAffixesForTemplate/pickOne()whensource == AffixRollSource::Craft; adjustpickTierbeforePickAffixFromPool.Visible Masterwork
When
M >= thresholdand roll succeeds: apply "Masterwork" name tag (immersive, not chaos/instability jargon).Class-relevant affixes
Bias toward crafter's class stats scales with
M:Thematic cohesion
Craft notifications use Masterwork / well-wrought / properties — not instability, chaos, or Illidari vernacular.
Locked refinement decisions
MpickTierfrom sharedMConfig knobs (proposed)
Related systems
getEnchantTier/BuildValueBreakdownImplementation checklist
ComputeCraftMastery()+ pass into craft roll pathComputeCraftAffixWeights(M)replaces staticAffixCount.CraftComputeCraftAffixTier(M, baseTier)adjustspickTierin craftpickOne()loopPickAffixFromPooldocs/SCALING_AND_LOOT_ECONOMY.mdcraft mastery sectionTest plan
Out of scope (v2)
RequiredSkillRank)Moved to illidari#3. Archived — use illidari monorepo.