mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-30 16:37:14 +00:00
fix(messages): ChangeObjectWorldState and UnEquipInventory as the client reads them; add UncastSkill
ChangeObjectWorldState's state is optional on the wire (a flag, then the state when it isn't INWORLD): live sent 80 80 00 00 00 for ATTACHED. DLU wrote the bare u32, so the client read the rocket's ATTACHED as INWORLD. UnEquipInventory gets its optional replacementObjectID (the client always sends the flag; the server-sent copies in the captures have it too), so it can be sent server -> client. New UncastSkill (1206, server -> client: the client ends its running instance of the skill, LWOSkillComponent::msgUncastSkill 0x00bd86d0). Tests: all three against live capture bytes. Check in game: launch a rocket; the rocket is shown in the player's hands during the launch animation (for the launcher and players nearby). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -39,6 +39,16 @@ namespace GameMessages {
|
||||
TSkillID skillID{};
|
||||
};
|
||||
|
||||
// Server -> client, to the player only. The client's SkillComponent ends its running instance of the skill
|
||||
// (LWOSkillComponent::msgUncastSkill, 0x00bd86d0): live sent it for an unequipped item's equip skills.
|
||||
struct UncastSkill : public NetGameMsg {
|
||||
UncastSkill() : NetGameMsg(MessageType::Game::UNCAST_SKILL) {}
|
||||
void Serialize(RakNet::BitStream& bitStream) const override;
|
||||
bool Deserialize(RakNet::BitStream& bitStream) override;
|
||||
|
||||
int32_t skillID{};
|
||||
};
|
||||
|
||||
// Client -> server. The player picked a skill; DLU only uses it to fix invisible items on first load.
|
||||
struct SelectSkill : public NetGameMsg {
|
||||
SelectSkill() : NetGameMsg(MessageType::Game::SELECT_SKILL) {}
|
||||
|
||||
Reference in New Issue
Block a user