9.9 KiB
RoM stat weights and gearing audit
Status: WoW-stat hybrid chosen for gameplay; native source model retained as reference. This audit covers the Priest/Knight healer, Knight/Scout tank, Scout/Rogue DPS, Rogue/Warrior DPS, and Mage/Warlock DPS. The game keeps RoM abilities, class growth, resources, and class pairings, while equipment and final combat stats use the existing WoW-shaped model. See docs/ROM_HEIRLOOM_REFERENCE.md for the client-derived blue-item atlas and proposed native-stat curves; those numbers are reference points and are not applied directly to combat.
Current runtime
src/game/romStats.tsreads primary-class level growth fromromPlayerCatalog.generated.jsonand gives the secondary class 10% of its base stats at the same level as the primary. This shared level is the game's progression rule, even though the historical source allowed separate class levels. The runtime also omits source race and sex additions.src/game/wotlkStats.tsmaps RoM Wisdom into WoW Spirit, then derives HP, Mana, attack power, spell power, avoidance, and ratings with WoW rules. This is the selected compatibility adapter, not a historical RoM conversion. In particular, the global Mana multiplier, Stamina-to-HP rule, and0.35 * Intellect + 0.15 * Spiritspell-power rule are not source RoM formulas.src/game/specializationCatalog.tsdefines distinct hybrid gear profiles for the five builds.src/game/heirloomEquipment.tsgives these five WoW-stat heirlooms at levels 1–79 from a level budget without matching WoW boss drops. The legal layouts are Knight mace/shield, Priest mace/shield, Scout dagger/bow, Rogue dual daggers, and Mage staff. The five hybrid loadouts omit the WoW wrist slot;src/game/equipment.tspermits Priest shields. These are active gameplay gear, while the native source curves remain references. Other RoM classes retain their existing fallback gear path until separately validated.src/game/runewakerLootCatalog.tskeeps imported RoM drops as non-equippablemiscitems with zero stats. The loot importer preserves names and probabilities but does not decode native equipment slots, base stats, or enhancements.src/game/lootPolicy.tssuppresses all boss item drops during leveling; boss cards are awarded through a separate path. At level 80, imported RoM boss items still lack usable equipment data.
Source stat model
The historical RuneWaker source is under ../rom-pvt-server-backups/Runewaker/. SourceCodeVS2019/Libraries/Union/RoleData/RoleAttr.cpp builds each conversion argument from race + vocation + sex. Resource/data/voctable.db, racetable.db, and sextable.db hold those terms; ObjectStruct.h defines the argument layout. The player vocation record is the second record of each class pair, as already used by scripts/runewaker-pipeline/vocation-growth.mjs.
After base growth and equipment attribute bonuses, source RoleAttr.cpp computes:
| Native result | Source dependency before rate modifiers |
|---|---|
| Max HP | base HP + Strength × HpStrArg + Stamina × HpStaArg + flat equipment HP |
| Max MP | base MP + Intelligence × MPIntArg + Wisdom × MpMndArg + flat equipment MP |
| Physical ATK | Strength × AtkStrArg + Intelligence × AtkIntArg + Agility × AtkAgiArg + flat equipment ATK |
| DEF / MDEF | Stamina × DefArg + armor/flat DEF; Wisdom × MDefArg + flat MDEF |
| Magical ATK | Intelligence × MAtkArg + flat equipment MATK |
| HP / MP regeneration | base rate + Stamina × ReHpArg; base rate + Wisdom × ReMpArg |
| Physical hit / dodge | Agility plus corresponding equipment values and fixed arguments |
| Magical hit / dodge | Wisdom, with Agility also contributing to magical dodge |
The table below shows vocation terms only from the player records of voctable.db. Race and sex terms are additive, so these are not final character coefficients and must not be pasted into a gear-score formula as complete weights.
| Primary role | Relevant source vocation terms | Gear consequence to validate |
|---|---|---|
| Knight tank | Stamina → HP 5, DEF 1.5; Wisdom → MP 5, MDEF 3.2 | Value shield/armor DEF, Stamina, MDEF, and survival against actual encounter damage. A WoW defense-rating budget is not a substitute. |
| Priest healer | Intelligence → MATK 2, MP 1; Wisdom → MP 5, MDEF 3, MP regeneration 0.3 | Keep healing effect power, Mana sustain, and Wisdom distinct from WoW Spirit and generic spell power. |
| Scout DPS | Strength → physical ATK 2; Agility contributes to hit/dodge through fixed arguments | Bow damage and physical ATK need source conversion before a Strength/Agility score can be trusted. |
| Rogue DPS | Strength → physical ATK 1; Agility → physical ATK 1 and hit/dodge | Evaluate both attributes and equipped dagger damage, including the off hand. |
| Mage DPS | Intelligence → MATK 2; Wisdom → MP 5 and MDEF 2.3 | MATK, magical weapon damage, and sustain need separate scoring. |
Priest healing cannot be scored by MATK alone: the source healing path also uses magic-power rate and heal-point inputs. Critical chance, weapon damage, resistance, and encounter mix further change the value of a stat. These conversion coefficients are mechanics, not final DPS/HPS weights.
Hybrid gameplay boundary
The five-class equipment path deliberately translates RoM roles into WoW combat inputs: Strength and Agility feed physical attack, Intelligence and Wisdom (as Spirit) feed spell and resource stats, defense/avoidance use armor and WoW ratings, and healing uses spell power and Mana sustain. The gear profile weights and heirloom budgets are design choices, not a claim that RoM native stats have the same numerical scale as WoW stats. The source item atlas can guide level progression and class identity without copying DEF, MDEF, MATK, Heal Point, or weapon damage into WoW fields one-for-one.
This reduces equipment implementation work but still requires targeted balance validation. A three-seed Shadoj diagnostic with the paired cohort and active Priest defeated the boss at levels 20, 60, and 79; Mage damage remained well below Scout/Rogue, and Priest died in each level-79 run. Reports are under artifacts/balance-lab/rom-hybrid-l20-shadoj, rom-hybrid-l60-shadoj, and rom-hybrid-l79-shadoj. They are screening runs against one encounter, not a balance certification. RoM remains Needs Testing and elite-skill validation remains deferred.
Optional native-fidelity path
RoM equipment has base item properties plus additional attribute sources. Gameforge's class guide lists native class weapon/armor permissions. Its rune guide describes socketed runes and up to four rune slots; its Arcane Transmutor guide describes transferring attributes through Fusion and Mana Stones. These changes must be represented as item-instance bonuses rather than a WoW item-level budget. Source RoleAttr.cpp already distinguishes flat equipment contributions, attribute contributions, and multiplicative rates.
- Use
scripts/runewaker-pipeline/export-rom-heirloom-reference.mjsandsrc/game/generated/romHeirloomReference.jsonas decoded references for native slot, armor/weapon type, base effects, deterministic fixed attributes, and required level. Preserve item IDs and investigate the 727 records with unresolved attribute IDs and any special effects before importing historical source items. Thesrc/game/romHeirloomReference.tslookup is design data and is not read by combat equipment. - Add a RoM item-instance bonus layer for native flat stats, transferred attributes, rune sockets, and later enhancement/tier data. Sum those bonuses into a native stat block. Keep WoW
ItemStatsand heirloom scoring unchanged for WoW characters. - Extend the generated class data with race and sex arguments and the vocation conversion coefficients. Keep secondary growth tied to the primary's level, including after the level-10 secondary unlock. Convert the complete RoM stat block to combat inputs through a RoM-specific adapter, including ATK, MATK, DEF, MDEF, and separate healing inputs.
- If granting historical quest or item-shop packages later, resolve exact package expansion and translate their properties into the chosen WoW-stat budget or add a separate native item path. The client snapshot confirms armor-choice quest families at levels 5, 30, 50, 55, 60, and 65; see
docs/ROM_LEVELING_GEAR_PACKAGES.md. Dungeon bosses award cards during leveling, not equipment or miscellaneous items. Do not copy native item numbers directly into WoW ratings. - Derive role-specific upgrade scores from the marginal combat effect of each native stat at the current level and gear state. Measure Knight survival/threat, Priest effective HPS and sustain, and each DPS build's damage on the same targeted encounter set. Source coefficients seed that model; targeted combat measurements establish practical weights and catch caps or nonlinear effects.
Online and validation boundary
server/database.mjs rejects a RoM/WoW source mixture when a grouped player selects a character and checks again when an activity starts. Until RoM AI companions are separately ready, online RoM groups launch players-only; the WoW-only randomized Bite-Sized Stockades activity is unavailable to them. This does not change local manual RoM party diagnostics. The five RoM profiles remain Needs Testing and elite skills remain deferred.
Validate the hybrid with legal slot/equip tests for all five builds, stat growth across 1–79, npm run test:rom-five, and targeted level/encounter diagnostics. Check Knight threat and survival, Priest effective healing and sustain, and the three DPS roles separately before promotion. If package rewards are added, compare their translated upgrades and combat outcomes. A common encounter definition can use source-specific tuning coefficients; no duplicate WoW/RoM dungeon catalogs are required by this audit.