RF455-050 RF 4.55: Accretia launcher mastery is far lower on the server than in the client, so launchers won't equip
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_masterytype 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).checkEquipGates0x140803ce0checks level, then race, then the two expert slots through(*client).equipMasteryLevel0x140803a80and returns 7 ("insufficient mastery") when one is short.(*client).unitPartGate0x140924ab0calls the same function.equipMasteryLevelby 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)withsqrt(cum / 15000) + 1(float 15000.0 at0x140d1a754), clamped to 1–99, for every race.masteryLevelForLine0x1407c5f60uses the same curve for kind 6, socumForMasteryLevelOfand the GMsetMstPtdo too.
Client side (RF_Online.bin)
- The mastery level is
0x41d8e0(kind, cum). For kind 2 it usessqrt(cum / 15000.0) + 1(0xaa9bd8) only when the character is Bellato (0x41d740: race byte+0x458c0 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 needed | Server cum | Client cum |
|---|---|---|
| 5 | 240,000 | ~600 |
| 10 | 1,215,000 | ~8,400 |
| 20 | 5,415,000 | ~93,800 |
| 30 | 12,615,000 | ~327,650 |
| 50 | 36,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,gauntletitemandshoeitem(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.
History
-
cybercyber