Files
healer-man/docs/ROM_MAGE_FLAME_FOLLOWER_RUNTIME_AUDIT.md
T

4.1 KiB

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.

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.