fix: constructions keep pending health, quick build and equipment changes

The destroyable's health and threat blocks, the quick build's state and
the inventory's equipped items are each read behind a flag bit
(LWODestroyableComponent::Deserialize 0x00d2bbd0 and the others). DLU
cleared their dirty flags when it wrote a construction, which goes only
to the client the object came into range of, so a change waiting for
the next update never reached the clients already watching: a health
bar, a quick build's state, a player's new gear.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-11-10 13:27:39 -06:00
parent d3f5c20323
commit e786d2b1c5
5 changed files with 33 additions and 4 deletions

View File

@@ -259,13 +259,14 @@ void DestroyableComponent::Serialize(RakNet::BitStream& outBitStream, bool bIsIn
if (m_ExplodeFactor != 1.0f) outBitStream.Write(m_ExplodeFactor);
}
}
m_DirtyHealth = false;
// A construction goes to one client; the players already watching still need a waiting change
if (!bIsInitialUpdate) m_DirtyHealth = false;
}
outBitStream.Write(m_DirtyThreatList || bIsInitialUpdate);
if (m_DirtyThreatList || bIsInitialUpdate) {
outBitStream.Write(m_HasThreats);
m_DirtyThreatList = false;
if (!bIsInitialUpdate) m_DirtyThreatList = false;
}
}