fix(pet): write the names bit on updates too

The client reads the moderation and names bit whenever the pet component is
dirty, on updates as well as on construction (LWOPetComponent::Deserialize),
and live wrote a 0 there on updates. DLU wrote it only on construction, so
on an update the client took the next component's first bit (a combat AI's
dirty bit) for it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-30 08:39:23 -05:00
parent 3956df8877
commit ebc2fd3abf
2 changed files with 16 additions and 1 deletions

View File

@@ -41,3 +41,15 @@ TEST_F(PetTest, PlacementNewAddComponentTest) {
ASSERT_EQ(petComponent->GetParent()->GetObjectID(), 15);
ASSERT_EQ(petComponent->GetAbility(), ePetAbilityType::Invalid);
}
// The client reads the names bit on every update while the pet is dirty (as live wrote it); DLU wrote it only on
// construction, so the client took the next component's first bit for it
TEST_F(PetTest, UpdateWritesTheNamesBit) {
petComponent->Serialize(bitStream, false);
// dirty, status, ability, interaction, owner, names
EXPECT_EQ(bitStream.GetNumberOfBitsUsed(), 1u + 32 + 32 + 1 + 1 + 1);
bitStream.IgnoreBits(1 + 32 + 32 + 1 + 1);
bool names = true;
ASSERT_TRUE(bitStream.Read(names));
EXPECT_FALSE(names);
}