From 178a008e25abbbf356df8eefe5faed3932722c7e Mon Sep 17 00:00:00 2001 From: Houmgaor Date: Thu, 26 Feb 2026 23:53:35 +0100 Subject: [PATCH] fix(shop): write gacha header for G1+ clients, not just GG+ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The G1 client binary expects 8 uint32 fields (ID, rank restrictions, MinGR, MinHR) before the name string in the gacha listing response. PR #150 only wrote these for GG+, causing G1–G32 clients to misparse the stream. Verified against Wii U G1 RPX decompilation of import_gacha_list at 0x02C594FC. --- server/channelserver/handlers_shop.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/server/channelserver/handlers_shop.go b/server/channelserver/handlers_shop.go index 8a1fbabfb..081528256 100644 --- a/server/channelserver/handlers_shop.go +++ b/server/channelserver/handlers_shop.go @@ -93,9 +93,7 @@ func handleMsgMhfEnumerateShop(s *Session, p mhfpacket.MHFPacket) { bf.WriteUint16(uint16(len(gachas))) bf.WriteUint16(uint16(len(gachas))) for _, g := range gachas { - if s.server.erupeConfig.RealClientMode >= cfg.GG { - //Before GG, there was no data for G1, so there was no data for G1 except for ID and name - //But the difference between G2 and G3 still needs to be tested, and the data for G1 and GG are already clear + if s.server.erupeConfig.RealClientMode >= cfg.G1 { bf.WriteUint32(g.ID) bf.WriteUint32(0) // Unknown rank restrictions bf.WriteUint32(0)