-
Notifications
You must be signed in to change notification settings - Fork 124
Open
Labels
Description
Bakragore “taint” icon is not persisted across relog, because it’s sent as a special icon byte in protocol opcode 0xA2, and that value is never serialized to database (unlike persistent Conditions). After relog the client starts with no special icon, so unless the server re-sends 0xA2 with the special icon again on login, it disappears.
Additionally, calling sendIconBakragore() currently does:
msg:addU64(0)(normal icons bitset = 0)msg:addByte(specialIcon)
This can wipe/override other normal condition icons (poison/haste/etc.) because the packet overwrites the whole normal icons bitset.
Expected behavior
- A player who has Bakragore taints stored server-side should get the Bakragore special icon again after relog.
- Sending/updating the Bakragore special icon should not clear normal condition icons.
What’s needed in upstream
- Engine-side persistence for the Bakragore special icon value (the “special icon byte”), OR
- A reliable server-side hook on login that re-sends the special icon based on a persisted value, AND
- A protocol method to set special icon without resetting normal icons, e.g. server should send current normal icons bitset together with the special icon (or provide a dedicated message to only update the special icon).
Repro steps
- Set Bakragore taint icon (special icon) to any value (e.g. 4).
- Relog.
- Result: Bakragore special icon is gone.
- Also: if using a packet that sends
normalIcons=0together with special icon, other condition icons can disappear.
Root cause summary
- Special icon is not backed by a persisted variable in the engine.
- Protocol message
0xA2overwrites normal icon bitset when setting special icon. - No automatic restore (re-send) of special icon on login by default.
Reactions are currently unavailable