Update class mechanics, stat rulesets, and CoA reference catalogs

This commit is contained in:
phenom committed 2026-10-04 12:56:30 -04:00
1 parent b16821e92e
commit 39458d5de6
221 files changed
+2584962 -568

No files matched your search

@@ -0,0 +1,25 @@
# RoM Mage/Warden Flame Follower 494051: raw source/runtime audit
Status: unresolved; no runtime mechanic was added.
## Finding
The available local RuneWaker data does not provide a numeric Fireball critical-rate bonus or a trigger phase for the old Mage/Warden passive. Keep `494051` unresolved. Current CoA Flame Follower `490244` is a later active-summon revision, and the current reuse of `494051` for Purgatory Fire does not establish the old passive's behavior; see [the identity/source review](ROM_MAGE_WARDEN_FLAME_FOLLOWER_SOURCE_REVIEW.md).
## Raw RuneWaker record trace
The local `Resource/data/magiccollectobject.db` and `magicobject.db` hashes match the RuneWaker source hashes recorded in `src/game/romPlayerCatalog.generated.json`. The player-catalog exporter records component IDs and selected fields, but omits `MagicCollect.LUAScript`, `MagicCollect.CheckUseScript`, `MagicBase.CheckUseLua`, and `MagicRunPlot.PlotName`; the latter is the 64-byte `MagicRunPlot` field at raw MagicObject record offset `0x284..0x2c3`.
- Raw MagicCollect `494051` is at file offset `4,180,772` in the 140-byte-header, 1,032-byte-record database. It has source effect type `2` and target type `0`. Searching every aligned word across that record finds no other MagicCollect or MagicObject ID, and the record contains no printable script-name string. The source skill tooltip remains qualitative: it says Fireball cooldown is reduced by one second and Fireball critical rate is increased.
- Raw Fireball MagicCollect `490204` references MagicObject components `620199`, `500379`, and `623146`, and passive MagicCollect records `490221` (Eruption), `491589` (Outburst), and `499588` (Meditation Path). It does not reference `494051`.
- Fireball damage components `620199` and `500379` have `MagicFunc=0`, `Attack.CriticalRate=0`, and `MagicRunPlot.PlotName="none"`. The status component `623146` has `MagicFunc=1`, `Attack.CriticalRate=0`, and `PlotName="none"`; its raw `CheckUseLua` field names `un_623522_CD`.
- `Resource/luascript/02709.lua` defines `un_623522_CD` as an owner-marker gate: it returns false when the owner already has buff `623522`; otherwise it adds that buff and returns true. It does not read `494051`, modify critical rate, or alter Fireball cooldown. In the server, `CheckUseLuaProc` invokes this kind of component check for per-target `HIT` results only, before applying the component. That documents the phase of this separate Fireball child check, not the Flame Follower passive.
- No RuneWaker Lua file contains `494051` or `Flame Follower`. The engine's `Magic07_RunPlot` path is component-scoped: it calls a named plot for each target with `HIT` or `CRITICAL` outcomes. The `494051` row has no linked MagicObject, and Fireball's three referenced MagicObjects do not use `MagicFunc=7` or name a plot, so this engine rule does not identify a Flame Follower trigger.
The relevant definitions are in `F:\Projects\Runewaker\SourceCodeVS2019\Libraries\Union\RoleData\ObjectStruct.h` (`MagicRunPlot`, `CheckUseLua`, and `LUAScript`), and the dispatch is in `F:\Projects\Runewaker\SourceCodeVS2019\Server\NetGameServer\MainProc\MagicProc\MagicProcess.cpp` (`Magic07_RunPlot` and `CheckUseLuaProc`). The generated extractor's selected-field behavior is visible in `scripts/runewaker-pipeline/export-player-catalog.mjs`.
## Missing evidence
The raw old passive row has no identified critical-rate amount, child effect, script name, or link to a Fireball component. The linked Fireball graph has no critical-rate payload for this passive and no handler that checks whether `494051` is learned. The general engine callbacks establish what an attached check or plot would do, but the available source does not attach either callback to Flame Follower.
Closing the item requires a matching-version source that connects the learned `494051` passive to a Fireball event and specifies the critical-rate amount. Without that source, the amount, whether the passive responds to a cast, a landed hit, or a critical hit, and any associated conditions remain unknown. No helper or integration test should encode those values until the missing source is recovered.