Fix Russian spell costs, player labels and character names #6

Merged
sindoring merged 2 commits from fix/ruru-player-text into main 2026-10-11 17:05:06 +03:00
Owner

Spell resource costs, UnitRace/UnitClass and the character-name field were still using English-only paths after enabling ruRU. Costs now fill the selected GlobalStrings templates, the player record and live unit feeds use ChrRaces/ChrClasses display names while retaining file tokens, and typed/pasted Unicode letters reach the UTF-8 create packet. CharacterCreateNameEdit now initializes its reference limit of 12 letters; a 12-letter Cyrillic name retains all 24 UTF-8 bytes. Roster selection also matches the server's recased Cyrillic name.

Reference: 1.12 PaperDollFrame_SetLevel reads UnitRace/UnitClass; ruRU GlobalStrings supplies MANA_COST/RAGE_COST/ENERGY_COST and their PER_TIME forms; the selected ChrRaces/ChrClasses DBCs supply display names. vmangos normalizePlayerName decodes UTF-8 and recases letters: https://github.com/vmangos/core/blob/development/src/game/ObjectMgr.cpp#L60.

Original symptoms reproduced by instruments with real client data: 30 Mana, Human/Warrior in CharacterLevelText, and Cyrillic keyboard text rejected. The same instruments check Russian and adjacent English text, Human/Warrior and Tauren/Druid, Unicode typing/paste/backspace and the 12-letter cap. The create packet and normalized roster spelling have separate checks.

Validation: the original three symptoms reproduced, then the same three instruments passed with real ruRU and adjacent enUS data. Full land gates passed on the final source tree (816 s): fmt, workspace clippy, workspace tests with data and without an install, doc links, render-pass lint, player tests without dev, and engine boot with/without data. Only the 31 absent addon-corpus tests skipped on each real-data test rung. The strengthened create-packet check verifies the actual reset field, its 12-letter cap and unmodified UTF-8. Built on Windows. No live character creation or player-account login (no declared probe account).

Spell resource costs, UnitRace/UnitClass and the character-name field were still using English-only paths after enabling ruRU. Costs now fill the selected GlobalStrings templates, the player record and live unit feeds use ChrRaces/ChrClasses display names while retaining file tokens, and typed/pasted Unicode letters reach the UTF-8 create packet. CharacterCreateNameEdit now initializes its reference limit of 12 letters; a 12-letter Cyrillic name retains all 24 UTF-8 bytes. Roster selection also matches the server's recased Cyrillic name. Reference: 1.12 PaperDollFrame_SetLevel reads UnitRace/UnitClass; ruRU GlobalStrings supplies MANA_COST/RAGE_COST/ENERGY_COST and their PER_TIME forms; the selected ChrRaces/ChrClasses DBCs supply display names. vmangos normalizePlayerName decodes UTF-8 and recases letters: https://github.com/vmangos/core/blob/development/src/game/ObjectMgr.cpp#L60. Original symptoms reproduced by instruments with real client data: 30 Mana, Human/Warrior in CharacterLevelText, and Cyrillic keyboard text rejected. The same instruments check Russian and adjacent English text, Human/Warrior and Tauren/Druid, Unicode typing/paste/backspace and the 12-letter cap. The create packet and normalized roster spelling have separate checks. Validation: the original three symptoms reproduced, then the same three instruments passed with real ruRU and adjacent enUS data. Full land gates passed on the final source tree (816 s): fmt, workspace clippy, workspace tests with data and without an install, doc links, render-pass lint, player tests without dev, and engine boot with/without data. Only the 31 absent addon-corpus tests skipped on each real-data test rung. The strengthened create-packet check verifies the actual reset field, its 12-letter cap and unmodified UTF-8. Built on Windows. No live character creation or player-account login (no declared probe account).
sindoring added 1 commit 2026-10-11 16:37:20 +03:00
Fill the selected GlobalStrings resource-cost templates and carry selected
ChrRaces/ChrClasses display names into the player record and live unit feeds.
Keep race/class file tokens unchanged. Accept Unicode letters in name input
and compare recased UTF-8 roster names when selecting a created character.

Reference: stock PaperDollFrame_SetLevel reads UnitRace/UnitClass; ruRU data
provides the cost templates and DBC names. vmangos normalizePlayerName reads
UTF-8, uppercases the first letter and lowercases the rest.

Verified: original symptoms reproduced by three numeric instruments on real
client data, then all three passed with the corrected paths in ruRU and enUS.
The probes cover the actual CharacterLevelText, spell costs, a second unit,
keyboard input, paste, backspace and a 12-character/24-byte Cyrillic limit.
Formatting and workspace clippy are green. Full land gates run before merge.
Built on Windows; no live player-account login or character creation.
sindoring added 1 commit 2026-10-11 16:52:25 +03:00
Initialize the actual CreateSelection name field with 12 letters, as the
stock CharacterCreate.xml CharacterCreateNameEdit letters="12" declares.
The UTF-8 packet test now uses reset's actual field and checks both a short
Russian name and truncation at 12 Cyrillic letters / 24 bytes.

Verified the field property in the real MPQ's GlueXML and the reset path.
Formatting and workspace clippy pass; full land gates are running on this
source tree before merge. The preceding three symptom instruments passed
on real ruRU and adjacent English UI data. Windows only.
sindoring marked the pull request as ready for review 2026-10-11 17:04:51 +03:00
sindoring merged commit d201c8e469 into main 2026-10-11 17:05:06 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sindoring/moonwell-client-core#6