From e095c5a5ca850a89bc9e3ab344fc107d07a1abb5 Mon Sep 17 00:00:00 2001 From: Houmgaor Date: Fri, 30 Jan 2026 01:10:34 +0100 Subject: [PATCH] fix(cafe): read PointCost as uint16 for G1-G5.2 clients Cherry-picked from main (3d0114c) with conflict resolution. Pre-G6 clients send PointCost as uint16, not uint32. --- network/mhfpacket/msg_mhf_acquire_cafe_item.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/network/mhfpacket/msg_mhf_acquire_cafe_item.go b/network/mhfpacket/msg_mhf_acquire_cafe_item.go index 4f1ccada5..4266cf1f1 100644 --- a/network/mhfpacket/msg_mhf_acquire_cafe_item.go +++ b/network/mhfpacket/msg_mhf_acquire_cafe_item.go @@ -4,6 +4,7 @@ import ( "errors" "erupe-ce/common/byteframe" + _config "erupe-ce/config" "erupe-ce/network" "erupe-ce/network/clientctx" ) @@ -30,7 +31,11 @@ func (m *MsgMhfAcquireCafeItem) Parse(bf *byteframe.ByteFrame, ctx *clientctx.Cl m.ItemType = bf.ReadUint16() m.ItemID = bf.ReadUint16() m.Quant = bf.ReadUint16() - m.PointCost = bf.ReadUint32() + if _config.ErupeConfig.RealClientMode >= _config.G6 { + m.PointCost = bf.ReadUint32() + } else { + m.PointCost = uint32(bf.ReadUint16()) + } m.Unk0 = bf.ReadUint16() return nil }