Old School Ops

RF455-050 RF 4.55: Accretia launcher mastery is far lower on the server than in the client, so launchers won't equip

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

Game: RF 4.55 (Dragonborn), server v0.2.0, Windows build (stock gameserver.exe, SHA-256 96452fbd…). Client: the supported Taiwan build, RF_Online.bin SHA-256 46528aac…2bbc558 (2025-07-16), Language=Taiwan.

Summary

  • A level 30 Accretia (ARF1 Gunner) tries to equip Intense Cannon (iwlub30, weapon 1559). It needs launcher mastery 10 (m_nExpertID1 2, m_nExpertLim1 10) and level 30.
  • The Character window shows Launcher 26, so the client sends the equip. The server refuses it, and the client shows "unable to equip items: low skill level". history.log:
  equip rejected: insufficient mastery {"session": 2, "expert_id": 2, "need": 10, "have": 4}
  equip rejected by gate {"session": 2, "reason": "mastery", "tc": 6, "idx": 1559}
  • The character's launcher cum (character_mastery type 6, index 0) is 225326. The server turns that into level 4 and the client into level 26: they use different curves for Accretia.

Server side

  • (*Server).checkEquipGates 0x140803ce0 checks level, then race, then the two expert slots through (*client).equipMasteryLevel 0x140803a80 and returns 7 ("insufficient mastery") when one is short. (*client).unitPartGate 0x140924ab0 calls the same function.
  • equipMasteryLevel by expert id: 0 melee and 1 range (masteryCum(0,0)/(0,1)), 5 defence ((1,0)) on the weapon curve; 4 shield ((2,0)); 3 force → always 99; 2 → masteryCum(6,0) with sqrt(cum / 15000) + 1 (float 15000.0 at 0x140d1a754), clamped to 1–99, for every race.
  • masteryLevelForLine 0x1407c5f60 uses the same curve for kind 6, so cumForMasteryLevelOf and the GM setMstPt do too.

Client side (RF_Online.bin)

  • The mastery level is 0x41d8e0(kind, cum). For kind 2 it uses sqrt(cum / 15000.0) + 1 (0xaa9bd8) only when the character is Bellato (0x41d740: race byte +0x458c 0 or 1) or Cora (0x4096e0: 2 or 3).
  • An Accretia falls through to the weapon curve, sqrt((cum + 1) / 1000 + sqrt(cum + 1)) (0xaa9890 = 1000.0), the same curve as melee, range and defence. Then it clamps to 1–99.
  • So for Bellato (MAU) and Cora, expert 2 agrees on both sides. Only Accretia differs.

How far apart

Launcher level neededServer cumClient cum
5240,000~600
101,215,000~8,400
205,415,000~93,800
3012,615,000~327,650
5036,015,000~1,341,700

Items affected

Every Accretia item gated on expert 2 (m_strCivil 00001 in gamedata_rf455.db):

  • all 2,330 launchers (weaponitem, m_nType 7);
  • the Accretia launcher armour sets in helmetitem (913 rows), upperitem, loweritem, gauntletitem and shoeitem (843 each).

Limits run from 1 to 99. Anything that needs 5 or more is refused long before the client says the character qualifies. MAU parts (unit*, expert 2) are Bellato-only and unaffected.

Suggested fix

In equipMasteryLevel (expert 2) and in masteryLevelForLine / cumForMasteryLevelOf (kind 6), use the weapon curve sqrt((cum + 1) / 1000 + sqrt(cum + 1)) when the character is Accretia, as the client does.

Local stopgap

None yet.

Reported on version 0.2.0

History

  • cybercyber filed it ·

Replies

Nobody has replied yet.

Sign in to comment.

Where the xp came from

Last 30 days

Loading…

Open the full search page