Files
GaCy-GO/internal/gameserver/handlers_comic_dessert.go
2026-10-28 18:54:43 +07:00

36 lines
1.3 KiB
Go

package gameserver
import (
"fmt"
"gac-hkrpg-go/internal/common"
pb "gac-hkrpg-go/protocol/proto"
"google.golang.org/protobuf/proto"
)
func init() {
// Current command-table names remain obfuscated. Current .54 native evidence:
// _OnGetDataSuccess d4dbc60 reads response+3c -> _SetUpProgress; FNIAAEAFGDE
// getter 1fc3dcd0 reads +3c. That path calls Progress.EIBHHOPHJCK at
// 16c8dab0, which writes +18; get_CurrentCycleId at 16c8d980 reads +18.
// HNOCFELOAFJ (+10) supplies the completed-level collection. See the
// comic-*-consumer/current getter disassemblies and ComicDessertCatalog.
rawNamed("MGCJKEEOPEC", func(s *Session, body []byte) error {
rsp := &pb.LPLCFFGANFC{Retcode: uint32(pb.Retcode_RET_FAIL)}
if err := proto.Unmarshal(body, new(pb.MGCJKEEOPEC)); err != nil {
return s.Send(rsp)
}
catalog, err := common.LoadComicDessertCatalog()
if err != nil {
PacketLog("COMIC_DESSERT_DATA rejected: " + err.Error())
return s.Send(rsp)
}
// Preview starts at the resource's first cycle. No finished levels,
// upgrades, currency, claimed rewards or saved completion are fabricated.
rsp.FNIAAEAFGDE = catalog.InitialCycle().ID
rsp.Retcode = 0
PacketLog(fmt.Sprintf("COMIC_DESSERT_DATA preview_cycle=%d cycles=%d levels=%d", rsp.FNIAAEAFGDE, len(catalog.Cycles), len(catalog.Levels)))
return s.Send(rsp)
})
}