RF455-094 RF 4.55: timed effects whose data value is 0 do nothing (Immobility, Transparency, Absolute Armor, Spin A Web, Blind Soul…)
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.
Data: the shipped db\gamedata_rf455.db.
Summary
In the 4.55 data, many on/off effects carry the value 0.0 on every level. Examples: a "can't move" state, a
stealth flag, a "can't cast" flag. GoMMO treats the value as a quantity. It sets a state only when the value isn't
0, and it adds plus[] values. So these effects land (icon and timer) and change nothing. The same states work
when the data happens to say −1.0: Magnetic Net and Hold root a monster, Immobility doesn't.
Read from the code (static). Not live-tested.
The code (v0.3.1, read)
- States:
(*client).combatEPLocked0x1407e1260(players) sums every live affect. For ParamCode 2 (state) it doesucomisd xmm0, 0.0/setneat0x1407e1640–0x1407e164f, sostate[k]= value ≠ 0. The monster side,(*monster).recomputeEPLocked0x1408ada60, does the same. - Stealth:
(*client).hiddenFromSearchtestsplus[21] > 0(ucomisd/jbeat0x14092b19f). - Bounds:
combatEPLockeddrops a ParamIndex ≥ 62 / 42 / 40 for rate / plus / state (cmp r8, 0x28/jaefor states,0x1407e1637).
Affected rows (gamedata_rf455.db, value 0.0 on all 7 levels; read)
| Code | Name | Slot | Reader that would act (read) | Effect lost |
|---|---|---|---|---|
940F | Immobility | state[6] | (*monster).moveLocked 0x1408add53 | the monster isn't rooted (Magnetic Net and Hold use −1.0 and work) |
800A | Transparency | plus[21] | hiddenFromSearch 0x14092b193 (needs > 0) | no stealth |
710A | Absolute Armor | state[8] | monsterHits 0x1408b2a93, rollsHitPlayer 0x14087d99c | attacks aren't missed |
9407 | Spin A Web | state[7] | none found | |
9402, 9403, 9406, 940A, 940B | Blind Soul, Mute Soul, Desolate, Dismantle, Grow Lax | state[3], [4], [2], [0], [1] | none found | the "can't use X" debuffs |
940E | Bleeding | state[10] | regenPools 0x14090be34 | no regen stop (its rate[18..20] part works) |
4F0F3 | Prey Explosion (Detonate) | state[15..17] | regenPools | its regen states |
AF222 | Mount | plus[42] = 25 | none: index 42 is past the bound | dropped |
9402–940B and Spin A Web have no reader for their state, on players or monsters. They would need code even
with a non-zero value.
Why the data has 0
Inferred: in the original server these ParamCode 2 slots are flags (presence = on), and the value column is unused
for them. The client's own DataTable\SkillForce.edf has no non-zero value in these slots either (read: none of
its effect blocks for these rows holds a non-zero series). So the data is as shipped; the reading rule is what differs.
How to reproduce
- Immobility: cast it on a monster that is walking toward you. It keeps walking. Magnetic Net (−1.0) on the same monster stops it.
- Transparency: cast it next to an aggressive monster. The monster still finds you.
Suggested fix
- For ParamCode 2, set the state when the affect is present, whatever its value.
- For
plus[21](stealth), treat presence as on, or take a non-zero default. - Mount's
plus[42]: widenplus[], or map it to the slot the mount speed really uses. - Spin A Web, Blind Soul, Mute Soul, Desolate, Dismantle, Grow Lax: add the readers for their states (can't use skills or forces, can't move…).