From 999b8187d663e314c9a4a959de1b89605a2d57b5 Mon Sep 17 00:00:00 2001 From: simoleo89 Date: Mon, 11 May 2026 21:09:41 +0200 Subject: [PATCH] Fix PetBreedingMessageParser bytesAvailable check bytesAvailable is a boolean (IMessageDataWrapper.bytesAvailable: boolean, returns 'there is at least one byte left'); the parser was doing 'wrapper.bytesAvailable < 12' as if it were a count, which both mis-compares boolean to number and short-circuits incorrectly when exactly 11 bytes remain. Align with every other parser in the codebase: 'if(!wrapper || !wrapper.bytesAvailable) return false;'. The downstream readInt calls already throw on truncated packets so the explicit length check was load-bearing only against malformed inputs that wouldn't parse anyway. --- .../inventory/pets/PetBreedingMessageParser.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/communication/src/messages/parser/inventory/pets/PetBreedingMessageParser.ts b/packages/communication/src/messages/parser/inventory/pets/PetBreedingMessageParser.ts index 7a2a576..8eed7d3 100644 --- a/packages/communication/src/messages/parser/inventory/pets/PetBreedingMessageParser.ts +++ b/packages/communication/src/messages/parser/inventory/pets/PetBreedingMessageParser.ts @@ -19,17 +19,16 @@ export class PetBreedingMessageParser implements IMessageParser return true; } - public parse(wrapper: IMessageDataWrapper): boolean { - if (!wrapper || wrapper.bytesAvailable < 12) { - return false; - } + public parse(wrapper: IMessageDataWrapper): boolean + { + if(!wrapper || !wrapper.bytesAvailable) return false; - this._state = wrapper.readInt(); - this._ownPetId = wrapper.readInt(); - this._otherPetId = wrapper.readInt(); + this._state = wrapper.readInt(); + this._ownPetId = wrapper.readInt(); + this._otherPetId = wrapper.readInt(); - return true; - } + return true; + } public get state(): number {