Prefix affixes are cosmetic only — no stats applied or shown #11

Closed
opened 2026-07-08 12:25:01 +00:00 by denise · 1 comment
Owner

Summary

Item name prefixes (Void-Touched, Felforged, Illidari, etc.) roll and display on gear, but they currently grant no gameplay effect and often show no stat on the tooltip. Players reasonably expect prefix mini-stats per the design in 2026_07_03_01_secondary_stats_and_procs.sql.

What works today

  • RollPrefix() can roll a prefix string and stores prefixAffixId + prefixRolledValue on the item (item_affix_instance).
  • RefreshPlayerCustomAffixStats() would apply prefix stats when affix_definitions.statMod is set:
if (stored.prefixAffixId) {
    if (LoadAffixDefinition(stored.prefixAffixId, prefixRow) && !prefixRow.statMod.empty())
        AccumulateMods(total, prefixRow.statMod, stored.prefixRolledValue);
}
  • Addon colors the item name when a prefix is present (IllidariAffix NameStyle.lua).

Root causes (verified on live server)

1. World DB never got prefix stat columns populated

Live acore_world.affix_definitions for pool='prefix':

id name statMod
21 Void-Touched NULL
22 Felforged NULL
23 Illidari NULL

The intended fix already exists in repo SQL data/sql/updates/world/2026_07_03_01_secondary_stats_and_procs.sql (SP/AP/STA mini-stats), but it was not applied on production. With statMod empty, RollPrefix() sets prefixRolledValue = 0 and stat accumulation is skipped.

2. Addon wire format omits prefix rolled value

SendItemAffixAddonMessage() sends:

ITEM|bag|slot|guid|prefix|flags|price|affixId:val:rar|...

The prefix stat is not included as prefixAffixId:prefixRolledValue. Tooltip rendering only iterates entry.affixes — prefix-only items show a colored name but no stat line, even after the DB is fixed.

IllidariAffix.AffixData.lua already documents expected prefix stats (21→SP, 22→AP, 23→STA) but the client never receives the rolled value.

Proposed fix

Server (mod-random-enchants)

  • Apply 2026_07_03_01_secondary_stats_and_procs.sql on world DB (or merge prefix statMod into base affix_definitions.sql for fresh installs).
  • Extend addon wire format to include prefix stat, e.g. append prefixAffixId:prefixRolledValue:0 before suffix affixes, or add dedicated fields after flags.
  • Confirm .affix inspect shows prefix stat: ... after DB fix (logic already exists in random_enchants_command.cpp).
  • Re-equip / login regression: verify RefreshPlayerCustomAffixStats applies SP/AP/STA from prefix on equipped gear.

Client (IllidariAffix)

  • Parse new prefix stat field in Core.lua ITEM/LOOT handlers.
  • Show prefix mini-stat on tooltip (including prefix-only items with zero suffix lines).
  • Keep existing prefix name coloring.

Acceptance criteria

  1. Crafted or looted item with only a prefix (no suffix affix lines) shows +N <stat> on tooltip.
  2. Equipping the item changes character stats (visible via paper doll / .affix debug).
  3. Live DB prefix rows have non-null statMod and sensible minValue/maxValue/valueScale.

Notes

  • Not a pity/aura issue; prefixes are independent of kill gates.
  • Deploy script ledger may need to record 2026_07_03_01 if not already applied.
## Summary Item name prefixes (Void-Touched, Felforged, Illidari, etc.) roll and display on gear, but they currently grant **no gameplay effect** and often show **no stat on the tooltip**. Players reasonably expect prefix mini-stats per the design in `2026_07_03_01_secondary_stats_and_procs.sql`. ## What works today - `RollPrefix()` can roll a prefix string and stores `prefixAffixId` + `prefixRolledValue` on the item (`item_affix_instance`). - `RefreshPlayerCustomAffixStats()` **would** apply prefix stats when `affix_definitions.statMod` is set: ```cpp if (stored.prefixAffixId) { if (LoadAffixDefinition(stored.prefixAffixId, prefixRow) && !prefixRow.statMod.empty()) AccumulateMods(total, prefixRow.statMod, stored.prefixRolledValue); } ``` - Addon colors the item name when a prefix is present (`IllidariAffix` `NameStyle.lua`). ## Root causes (verified on live server) ### 1. World DB never got prefix stat columns populated Live `acore_world.affix_definitions` for `pool='prefix'`: | id | name | statMod | |----|------|---------| | 21 | Void-Touched | **NULL** | | 22 | Felforged | **NULL** | | 23 | Illidari | **NULL** | The intended fix already exists in repo SQL [`data/sql/updates/world/2026_07_03_01_secondary_stats_and_procs.sql`](data/sql/updates/world/2026_07_03_01_secondary_stats_and_procs.sql) (SP/AP/STA mini-stats), but it was **not applied** on production. With `statMod` empty, `RollPrefix()` sets `prefixRolledValue = 0` and stat accumulation is skipped. ### 2. Addon wire format omits prefix rolled value `SendItemAffixAddonMessage()` sends: `ITEM|bag|slot|guid|prefix|flags|price|affixId:val:rar|...` The prefix stat is **not** included as `prefixAffixId:prefixRolledValue`. Tooltip rendering only iterates `entry.affixes` — prefix-only items show a colored name but **no stat line**, even after the DB is fixed. `IllidariAffix.AffixData.lua` already documents expected prefix stats (21→SP, 22→AP, 23→STA) but the client never receives the rolled value. ## Proposed fix **Server (`mod-random-enchants`)** - [ ] Apply `2026_07_03_01_secondary_stats_and_procs.sql` on world DB (or merge prefix statMod into base `affix_definitions.sql` for fresh installs). - [ ] Extend addon wire format to include prefix stat, e.g. append `prefixAffixId:prefixRolledValue:0` before suffix affixes, or add dedicated fields after `flags`. - [ ] Confirm `.affix inspect` shows `prefix stat: ...` after DB fix (logic already exists in `random_enchants_command.cpp`). - [ ] Re-equip / login regression: verify `RefreshPlayerCustomAffixStats` applies SP/AP/STA from prefix on equipped gear. **Client (`IllidariAffix`)** - [ ] Parse new prefix stat field in `Core.lua` ITEM/LOOT handlers. - [ ] Show prefix mini-stat on tooltip (including prefix-only items with zero suffix lines). - [ ] Keep existing prefix name coloring. ## Acceptance criteria 1. Crafted or looted item with only a prefix (no suffix affix lines) shows `+N <stat>` on tooltip. 2. Equipping the item changes character stats (visible via paper doll / `.affix` debug). 3. Live DB prefix rows have non-null `statMod` and sensible `minValue`/`maxValue`/`valueScale`. ## Notes - Not a pity/aura issue; prefixes are independent of kill gates. - Deploy script ledger may need to record `2026_07_03_01` if not already applied.
Author
Owner

Moved to illidari#4. Archived — use illidari monorepo.

Moved to [illidari#4](https://vcs.ablationsystems.com/denise/illidari/issues/4). Archived — use illidari monorepo.
Commenting is not possible because the repository is archived.
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
denise/mod-random-enchants#11
No description provided.