Old School Ops

RF455-076 RF 4.55: Cora Animus stop at Lv50, use no FP after summoning, and have no Paimon taunt or Hecate stun

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 (wiki) credit to RFDB for https://wiki.rfdatabase.net/ :

  • Update 4.151 "Ataraxia Arrival": Animus Lv75, and all four use FP from Lv1. The roles: Paimon a tank (4.15: a stronger passive Provoke), Hecate fast attacks that can stun, Inana heals its owner, Isis the highest ATK.
  • 4.55 (January 2025): Animus much stronger, and levelling takes less EXP.

Summary

  • An animus can't pass Lv50 (read). The server keeps animus EXP in a uint32, and the level tables run to Lv81. L50 needs 3,200,000,000 EXP in total and L51 needs 7,360,000,000, which doesn't fit.
  • After the 60 FP summon, an animus costs no FP (read). The per-second upkeep is the level row's m_nUseFP, which is 0 up to Lv55 in the data. The cap is 50, so it's never charged.
  • Paimon has no taunt and Hecate no stun (read). The server's animus code has a branch for Inanna (the heal) and Hecate (an area hit) only. The data column that marks Hecate's attack effect (m_nAttEffType 10) isn't loaded.

The data (read from gamedata_rf455.db, paimoncharacter; the other three and the _s twins have the same EXP and FP columns):

Levelm_nForLvUpExp (cumulative)m_nUseFPm_nAttFcStd
11600855
503,200,000,000017,067
517,360,000,0000—
55205,962,976,000028,817
56—125—
703,167,993,487,400,950200133,647
7511,762,538,059,175,600200427,968
8156,775,524,566,871,400200738,002

Server side (all read, v0.3.1)

  • The level loader gamedata.(*Data).AnimusLevels 0x140506ca0 loads 19 columns: m_dwIndex, m_nLevel, m_nForLvUpExp, m_nUseFP, m_fPenalty, m_nMaxHP, m_nHPRecUnit, m_nMaxFP, m_nFPRecUnit, m_nAttExt, m_nMovSpd, m_nAttack_DP, m_fAttGap, m_nAttSpd, m_nStdDefFc, m_nAttFcStd, m_nMinAFSelProb, m_nMaxAFSelProb, m_nAttSklUnit.
    • Not loaded: m_nAttEffType, m_nDefEffType, the tech IDs (m_strAttTechID1, m_strPSecTechID, m_strMSecTechID), the tolerances and the force columns.
  • The Lv50 cap:
    • the animus EXP is a dword at +8 of the live animus (handleAnimusRecall 0x140768af8);
    • animusTopStorableExp 0x140764900 returns the largest m_nForLvUpExp that fits in it, which is L50's;
    • animusAlterExp 0x14076c860 compares the level byte with 0x32 (50) before a level-up (0x14076cc8c-0x14076cca4).
  • FP:
    • the summon spends 60 FP from the master: mov ebx,0x3c at 0x140769644, then (*client).spendFP;
    • animusTickOne spends m_nUseFP every second (0x14076e6d7) and returns the animus if the master can't pay. For Lv1-50 that's 0.
  • Roles: the class is the level-table index & 3 (0 Paimon, 1 Hecate, 2 Inanna, 3 Isis).
    • animusAttackStep 0x14076fb74: class 2 → animusHealStep 0x140770180 (heals the master).
    • animusSwing 0x140773648: class 1 → animusAreaSplash 0x140772580. The others hit one target.
    • There is no class-0 (Paimon) branch anywhere, and no stun is applied.

Suggested fix

  • Store animus EXP in 64 bits (the thresholds are already 64-bit in the data), and cap at 75 as 4.151 says, or at whatever the 4.55 level is meant to be.
  • Give the data an FP cost from Lv1, or charge a per-attack FP cost, as 4.151 says.
  • Load m_nAttEffType and give Hecate's hits their stun chance; give Paimon a taunt (monsters near it target it first).

Local workaround

None

Reported on version 0.3.1

Replies

Nobody has replied yet.

Sign in to comment.

Top xp sources

How xp works
Loading…

Open the full search page