Old School Ops

RF455-074 RF 4.55: siege kits give none of their stats (ATK %, hit, HP/FP, defence, dodge, range): the server loads only 5 kit columns

Game server RF Online: Dragonborn v0.3.1 low · filed by cybercyber
New

Game: RF 4.55 (Dragonborn), server v0.3.1, Windows build (stock gameserver.exe). Client: the supported Taiwan build, RF_Online.bin SHA-256 46528aac…2bbc558 (2025-07-16), Language=Taiwan. Expected : Update 4.15 "Age of Patron". Shining kits give ATK +60%, more accuracy and more max HP/FP, with range 1–57. Sniper kits give ATK +75% with range 30–80, and less defence and dodge. Every kit's own stats apply while in siege mode.

Summary

  • gamedata_rf455.db siegekititem (31 rows) gives each kit up to four effects (m_nEff1..4Code / m_fEff1..4Unit), plus m_fGAAF, m_nGACorSpd, a range m_fMinDst–m_fMaxDst, a level limit and a mastery gate. For example (read from the DB):
KitCodeEffects (code = value)Range
Shining Sonium Siege Kitsklu0196 all attack = 0.60, 3 hit = 50, 5 max HP/FP = 0.15, 25 launcher delay = −8001–57
Sniper Sonium Siege Kitsklu0206 = 0.75, 7 defence = −0.15, 24 dodge = −100, 25 = +30030–80
Expert Shining Siege Kitsklu0096 = 0.60, 3 = 20, 31 = −0.15, 25 = −100—
Attack / Defence Beelzebubsklu023 / sklu0246 = 0.65 / 0.35, 3 = 20, 5 = 0.1 / 0.2, 21 = 0.1 / 0.4—
  • None of these does anything on the server (read). A kit only decides whether you can transform: weapon type, race and the remaining durability. Siege attack and defence come out the same whichever kit you wear.

Server side (all read, v0.3.1)

  • The only query on the table is gamedata.(*Data).SiegeKitByIndex 0x140535be0. The string is at 0x140be3979: SELECT m_nUsableTyoe, m_nSubType, m_strCivil, m_nDurUnit, m_nLevelLim FROM siegekititem WHERE m_dwIndex = ?
    • That's 5 columns, scanned into a 0x30-byte struct.
    • The table name appears once more, in handleUseSoccerBall (itemRecordExists, at 0x1409270ac).
    • The effect columns, m_fGAAF, m_nGACorSpd, m_fMinDst / m_fMaxDst and m_nExpertID1 / m_nExpertLim1 are never read.
  • Of the five, only three are used. Its only caller, siegeKitField 0x140926960, feeds checkSiegeKitFits 0x140923720 (transform) and siegeKitFitsLiveWeapon 0x140923a80 (attack). Both compare UsableType/SubType with the weapon (code 6) and check m_strCivil[race] == '1' (code 7). m_nDurUnit and m_nLevelLim are copied out and never compared.
  • Transform applies nothing. On a 1C/01 that passes, handleTransformSiege 0x140922aa0 calls checkSiegeTransform, armSiegeState 0x1409223c0, reply and broadcastExcept.
    • armSiegeState only fills the siege state: serial, the flag, kit serial and index, a deadline, the visual version.
    • No combat stats are recomputed on transform, on release (handleReleaseSiege 0x140923e00, forceReleaseSiege 0x140925e60) or on death.
    • The kit never reaches the equip-effect path that worn gear uses.
  • Siege attack: (*client).siegeAttackParam 0x1408d4a80 = the weapon's attack (weaponAttackParam) × a mastery scale (genMasteryLevel) × (1 + combatEP rate[23]).
    • rate[23] is a buff slot; no kit column feeds it.
  • Siege defence: while isSieging, (*client).defenceFC 0x1407e2960 multiplies by (1 + combatEP rate[24]), also a buff slot.
    • With no such buff, the siege factor is 1.0. That last point is inferred: we haven't searched every writer of rate[23] and rate[24].
  • No range check. handleAttackSiege 0x140924440 and resolveSiegeTarget 0x140926120 have no distance check, so the Sniper's 30-yard minimum isn't enforced by the server (only the client draws it).
  • No level or mastery gate. checkSiegeTransform 0x140923260 checks the table, the lock, that you're not already in siege mode, live durability > 0, a loaded launcher, and then checkSiegeKitFits. It never checks m_nLevelLim (Lv70 for the Expert kits) or the mastery gate (m_nExpertID1 = 2, limit 99).

Suggested fix

  • Load the four effect pairs (and m_fGAAF if it's meant as the kit's attack factor). On a successful transform, apply them through the same effect-code routes worn gear uses:
    • 6 all attack;
    • 3 hit;
    • 5 max HP/FP;
    • 7 and 21 defence;
    • 24 dodge;
    • 25 launcher delay (client-side);
    • 31 debuff duration (inert for gear too, RF455-058Released).
  • Remove them on release, on durability-out and on death.
  • Optionally, gate transform on m_nLevelLim and on the mastery limit.
  • Optionally, check m_fMinDst / m_fMaxDst on the siege attack.

Local workaround

None.

Reported on version 0.3.1
👍 DT

Replies

Nobody has replied yet.

Sign in to comment.

Top xp sources

How xp works
Loading…

Open the full search page