8.7 KiB
RoM stat weights and gearing audit
Status: source model and level 1–79 gear references identified; runtime conversion and equipment import pending. This audit covers the Priest/Knight healer, Knight/Scout tank, Scout/Rogue DPS, Rogue/Warrior DPS, and Mage/Warlock DPS. It does not assign balance weights to unimplemented RoM gear. See docs/ROM_HEIRLOOM_REFERENCE.md for the client-derived blue-item atlas and proposed per-level native-stat curves.
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 a compatibility adapter, not RoM stat 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.tsselects one of the WoW gear archetype weight tables for RoM.src/game/heirloomEquipment.tsuses WoW budgets and compares against WoW boss gear to create RoM heirlooms. The Scout currently receives a two-hand mace alongside a bow, although source Scout equipment allows one-hand swords, daggers, bows, and crossbows.src/game/equipment.tsalso lacks the source Priest shield permission.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.
Equipment model to implement
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 the decoded source 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 turning a source item into equippable gear. Thesrc/game/romHeirloomReference.tslookup is design data and is not read by combat equipment yet. - 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.
- Use legal starter equipment as a temporary bridge, then source-backed quest or item-shop equipment packages for leveling. The client snapshot confirms four armor-choice quest reward families at levels 50, 55, 60, and 65, a three-choice quest at level 5, and a battlefield reward at level 30; see
docs/ROM_LEVELING_GEAR_PACKAGES.md. The native-stat reference curves fill the design gaps at every level 1–79 but are interpolated from source items and must be tuned in native combat. Resolve exact package expansion before granting historical items. Dungeon bosses award cards during leveling, not equipment or miscellaneous items. Do not tune a RoM heirloom to a WoW drop score or apply WoW rating conversions to it. - 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 each import with source-record fixture tests, legal slot/equip tests for all five builds, direct native-stat conversion cases, then npm run test:rom-five and targeted level/encounter diagnostics. Compare package upgrades by native stat deltas and combat outcomes before changing dungeon tuning. Keep a common encounter definition with source-specific stat translation and measured balance coefficients; no duplicate WoW/RoM dungeon catalogs are required by this audit.