diff --git a/src/ReceiveCommands.cc b/src/ReceiveCommands.cc index 3340b863..f9c8a842 100644 --- a/src/ReceiveCommands.cc +++ b/src/ReceiveCommands.cc @@ -3546,15 +3546,21 @@ static asio::awaitable on_30(shared_ptr c, Channel::Message& msg) switch (c->version()) { case Version::DC_V2: ch = PSOBBCharacterFile::create_from_file(msg.check_size_t()); + ch->inventory.decode_from_client(c->version()); break; case Version::GC_NTE: ch = PSOBBCharacterFile::create_from_file(msg.check_size_t()); + ch->inventory.decode_from_client(c->version()); break; case Version::GC_V3: ch = PSOBBCharacterFile::create_from_file(msg.check_size_t()); + // Note: We don't call ch->inventory.decode_from_client here because + // the data is sent in the game's native byte order, which is already + // correct on GC (unlike for 61/98) break; case Version::XB_V3: ch = PSOBBCharacterFile::create_from_file(msg.check_size_t()); + ch->inventory.decode_from_client(c->version()); break; case Version::GC_EP3_NTE: case Version::GC_EP3: @@ -3568,7 +3574,6 @@ static asio::awaitable on_30(shared_ptr c, Channel::Message& msg) default: throw logic_error("extended player data command not implemented for version"); } - ch->inventory.decode_from_client(c->version()); ch->disp.visual.version = 4; ch->disp.visual.name_color_checksum = 0x00000000; }