Affix System
Items can roll affixes — bonuses similar in spirit to Diablo 2 prefixes / suffixes. Affixes come in three categories.
Category A — Direct ITEM_ATTRIBUTE_*
Native item attributes the engine already supports: attack,
defense, armor, hitchance, etc.
Affix bumps these directly on the item.
Example: +5 Sword (of the Bear) — attack increased by 5.
Category B — Equipment stats
Skills, max HP, max mana, regen, run speed, vocation-style bonuses.
Implemented as a single CONDITION_ATTRIBUTES recomputed
when you move items around or log in.
Example: +7 Sword Skill on a chest piece — stacks with other +sword affixes from other slots.
Category C — Combat hooks
Triggered on hit:
- Crit — chance to multiply damage
- Life leech — restore HP per damage dealt
- Mana leech — same for mana
- Reflect — bounce a % of incoming damage back
- Dodge — chance to zero an incoming hit
- Mitigation — flat % physical reduction
- Strikes — extra elemental damage on melee
- DoT — damage over time on hit
- Vibrancy — paralyze resist
Tiers
Affixes have four tiers (I–IV) rolled at drop time. Higher tier = stronger numbers. The tier is shown in the item description and also synced to the client UI so you can see it at a glance.
Sockets & rune words
Some items have sockets. Use a rune on the socketed item to inscribe one of its slots. Specific rune sequences (rune words) grant additional bonuses. The UI shows you pending words before you commit.
Per-slot validation
Affixes only count from items in their valid equipment slot.
A +7 Sword Skill chestplate in the ammo slot does not stack
— the system checks the item's slot position and ignores mis-slotted gear.
Rolling new gear
Affixes are rolled in _affix_engine.lua on monster drop. The
drop hook lives in eventcallbacks/monster/default_onDropLoot.lua.