From dc5059b7cb9e26b169b5872fbec6f9e3cebfb2a8 Mon Sep 17 00:00:00 2001 From: MadMax Date: Mon, 27 Jul 2026 09:46:37 +0100 Subject: [PATCH] MISTS: route SendAuctionMenu through WorldSession::SendAuctionHello 8eaa22b changed the Mists arm to emit SMSG_AUCTION_HELLO but kept building the body here. 5.4.8 did not just split the bidirectional MSG_AUCTION_HELLO into CMSG_/SMSG_ halves, it also moved the body to the 18414 grammar, so the old dense-GUID + uint32 + uint8 body under the new opcode is malformed to a real client. MangosFour already owns the converted sender, which writes the proved layout via MopAuctionPackets::BuildHello. Restore the Mists arm to call it. The non-Mists arms keep the legacy hand-built packet unchanged, including the Cataclysm guard added in 1063f43. This restores the routing that existed at fd0b208a3 and was lost when master advanced; MangosFour asserts it in mop_auction_packets_source. --- methods/Mangos/PlayerMethods.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/methods/Mangos/PlayerMethods.h b/methods/Mangos/PlayerMethods.h index c027031..7e76fe9 100644 --- a/methods/Mangos/PlayerMethods.h +++ b/methods/Mangos/PlayerMethods.h @@ -2072,31 +2072,31 @@ namespace LuaPlayer { Unit* unit = E->CHECKOBJ(2); + // 5.4.8 split the bidirectional MSG_AUCTION_HELLO into CMSG_/SMSG_ + // halves AND moved the body to the 18414 grammar, so the opcode alone + // is not enough: building the packet here would emit the pre-18414 + // body under the new opcode. Four must reuse the converted server + // sender, which writes the proved layout. +#if defined(ELUNA_MANGOS) && ELUNA_EXPANSION == EXP_MISTS + player->GetSession()->SendAuctionHello(unit); +#else AuctionHouseEntry const* ahEntry = AuctionHouseMgr::GetAuctionHouseEntry(unit); if (!ahEntry) return 0; - // 5.4.8 split the bidirectional MSG_AUCTION_HELLO into CMSG_/SMSG_ - // halves, so MangosFour has no MSG_ name to reach for. This is the - // server-to-client half. -#if defined(ELUNA_MANGOS) && ELUNA_EXPANSION == EXP_MISTS - WorldPacket data(SMSG_AUCTION_HELLO, 12); -#else WorldPacket data(MSG_AUCTION_HELLO, 12); -#endif data << unit->GET_GUID(); #if defined(ELUNA_MANGOS) && ELUNA_EXPANSION == EXP_TBC data << uint32(ahEntry->ID); #elif defined(ELUNA_MANGOS) && ELUNA_EXPANSION == EXP_CATA data << uint32(ahEntry->ID); -#elif defined(ELUNA_MANGOS) && ELUNA_EXPANSION == EXP_MISTS - data << uint32(ahEntry->ID); #else data << uint32(ahEntry->houseId); #endif data << uint8(1); player->GetSession()->SendPacket(&data); +#endif return 0; }