From 27f16d9063fb3449e0c763bbc35d0a6690c0f205 Mon Sep 17 00:00:00 2001 From: flswld Date: Thu, 5 Jan 2023 01:29:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E9=87=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/mq/net_msg.go | 23 +- dispatch/api/combo_token_req.go | 4 +- ...{combo_token_res.go => combo_token_rsp.go} | 6 +- dispatch/controller/dispatch_controller.go | 18 +- dispatch/controller/login_controller.go | 2 +- doc/HK4E登录流程.jpg | Bin 229684 -> 225740 bytes fight/engine/fight_engine.go | 14 +- gate/client_proto/client_proto_gen_test.go | 9 +- gate/net/kcp_connect_manager.go | 24 +- gate/net/proto_endecode.go | 11 +- gate/net/{forward.go => session.go} | 42 +- gs/game/command_controller.go | 3 +- gs/game/game_manager.go | 30 +- gs/game/gcg_manager.go | 6 +- gs/game/local_event_manager.go | 8 +- gs/game/route_manager.go | 7 +- gs/game/tick_manager.go | 127 +- gs/game/user_common_handler.go | 1 + gs/game/user_fight_sync.go | 4 +- gs/game/user_gcg.go | 40 +- gs/game/user_login.go | 13 +- gs/game/user_manager.go | 27 +- gs/game/user_map.go | 5 +- gs/game/user_multiplayer.go | 6 +- gs/game/user_scene.go | 22 +- gs/game/user_social.go | 133 +- gs/game/world_manager.go | 74 +- gs/model/player.go | 1 + {gs/game/aoi => pkg/alg}/aoi.go | 51 +- gs/game/aoi/grid.go => pkg/alg/aoi_grid.go | 20 +- {gs/game/aoi => pkg/alg}/aoi_test.go | 3 +- pkg/alg/queue.go | 6 +- pkg/random/hk4e_mt19937.go | 13 +- pkg/random/hk4e_test.go | 8 +- protocol/cmd/cmd_id.go | 4104 ++++++++--------- protocol/cmd/cmd_id_fix.go | 5 + protocol/cmd/cmd_id_proto_obj_map.go | 15 +- protocol/proto/GCGActionType.proto | 1 + .../proto/GCGApplyInviteBattleNotify.proto | 1 + protocol/proto/GCGApplyInviteBattleReq.proto | 1 + protocol/proto/GCGApplyInviteBattleRsp.proto | 1 + protocol/proto/GCGAskDuelReq.proto | 1 + protocol/proto/GCGAskDuelRsp.proto | 1 + protocol/proto/GCGAttackCostInfo.proto | 1 + protocol/proto/GCGBackToDuelReq.proto | 1 + protocol/proto/GCGBackToDuelRsp.proto | 1 + protocol/proto/GCGBasicDataNotify.proto | 1 + protocol/proto/GCGBossChallengeData.proto | 1 + .../proto/GCGBossChallengeUpdateNotify.proto | 1 + protocol/proto/GCGCard.proto | 1 + protocol/proto/GCGCardSkillLimitsInfo.proto | 1 + protocol/proto/GCGChallengeData.proto | 1 + protocol/proto/GCGChallengeUpdateNotify.proto | 1 + protocol/proto/GCGChangeOnstageInfo.proto | 1 + protocol/proto/GCGClientPerformType.proto | 1 + protocol/proto/GCGClientSettleReq.proto | 1 + protocol/proto/GCGClientSettleRsp.proto | 1 + protocol/proto/GCGControllerShowInfo.proto | 1 + protocol/proto/GCGCostReviseInfo.proto | 1 + protocol/proto/GCGDSBanCardNotify.proto | 1 + .../proto/GCGDSCardBackUnlockNotify.proto | 1 + protocol/proto/GCGDSCardData.proto | 1 + .../proto/GCGDSCardFaceUnlockNotify.proto | 1 + .../proto/GCGDSCardFaceUpdateNotify.proto | 1 + protocol/proto/GCGDSCardNumChangeNotify.proto | 1 + .../proto/GCGDSCardProficiencyNotify.proto | 1 + protocol/proto/GCGDSChangeCardBackReq.proto | 1 + protocol/proto/GCGDSChangeCardBackRsp.proto | 1 + protocol/proto/GCGDSChangeCardFaceReq.proto | 1 + protocol/proto/GCGDSChangeCardFaceRsp.proto | 1 + protocol/proto/GCGDSChangeCurDeckReq.proto | 1 + protocol/proto/GCGDSChangeCurDeckRsp.proto | 1 + protocol/proto/GCGDSChangeDeckNameReq.proto | 1 + protocol/proto/GCGDSChangeDeckNameRsp.proto | 1 + protocol/proto/GCGDSChangeFieldReq.proto | 1 + protocol/proto/GCGDSChangeFieldRsp.proto | 1 + protocol/proto/GCGDSCurDeckChangeNotify.proto | 1 + protocol/proto/GCGDSDataNotify.proto | 1 + protocol/proto/GCGDSDeckData.proto | 1 + protocol/proto/GCGDSDeckSaveReq.proto | 1 + protocol/proto/GCGDSDeckSaveRsp.proto | 1 + protocol/proto/GCGDSDeckUnlockNotify.proto | 1 + protocol/proto/GCGDSDeckUpdateNotify.proto | 1 + protocol/proto/GCGDSDeleteDeckReq.proto | 1 + protocol/proto/GCGDSDeleteDeckRsp.proto | 1 + protocol/proto/GCGDSFieldUnlockNotify.proto | 1 + .../GCGDSTakeCardProficiencyRewardReq.proto | 1 + .../GCGDSTakeCardProficiencyRewardRsp.proto | 1 + protocol/proto/GCGDamageDetail.proto | 1 + protocol/proto/GCGDebugReplayNotify.proto | 1 + protocol/proto/GCGDiceSideType.proto | 1 + protocol/proto/GCGDuel.proto | 1 + protocol/proto/GCGDuelChallenge.proto | 1 + protocol/proto/GCGDuelExtra.proto | 1 + protocol/proto/GCGEndReason.proto | 1 + protocol/proto/GCGGameBriefData.proto | 1 + protocol/proto/GCGGameBriefDataNotify.proto | 1 + protocol/proto/GCGGameBusinessType.proto | 1 + .../proto/GCGGameCreateFailReasonNotify.proto | 1 + protocol/proto/GCGGameMaxNotify.proto | 1 + protocol/proto/GCGGrowthLevelNotify.proto | 1 + .../proto/GCGGrowthLevelRewardNotify.proto | 1 + .../proto/GCGGrowthLevelTakeRewardReq.proto | 1 + .../proto/GCGGrowthLevelTakeRewardRsp.proto | 1 + protocol/proto/GCGHeartBeatNotify.proto | 1 + protocol/proto/GCGInitFinishReq.proto | 1 + protocol/proto/GCGInitFinishRsp.proto | 1 + protocol/proto/GCGIntentionChangeType.proto | 1 + protocol/proto/GCGInviteBattleNotify.proto | 1 + protocol/proto/GCGInviteGuestBattleReq.proto | 1 + protocol/proto/GCGInviteGuestBattleRsp.proto | 1 + .../proto/GCGLevelChallengeDeleteNotify.proto | 1 + .../proto/GCGLevelChallengeFinishNotify.proto | 1 + protocol/proto/GCGLevelChallengeNotify.proto | 1 + protocol/proto/GCGLevelData.proto | 1 + protocol/proto/GCGLevelType.proto | 1 + protocol/proto/GCGLimitsInfo.proto | 1 + protocol/proto/GCGMatchInfo.proto | 1 + protocol/proto/GCGMessage.proto | 1 + protocol/proto/GCGMessagePack.proto | 1 + protocol/proto/GCGMessagePackNotify.proto | 1 + protocol/proto/GCGMsgAddCards.proto | 1 + protocol/proto/GCGMsgAddDice.proto | 1 + protocol/proto/GCGMsgCardUpdate.proto | 1 + protocol/proto/GCGMsgCharDie.proto | 1 + protocol/proto/GCGMsgClientPerform.proto | 1 + protocol/proto/GCGMsgCostDice.proto | 1 + protocol/proto/GCGMsgCostRevise.proto | 1 + protocol/proto/GCGMsgDiceReroll.proto | 1 + protocol/proto/GCGMsgDiceRoll.proto | 1 + protocol/proto/GCGMsgDuelDataChange.proto | 1 + protocol/proto/GCGMsgGameOver.proto | 1 + protocol/proto/GCGMsgModifyAdd.proto | 1 + protocol/proto/GCGMsgModifyRemove.proto | 1 + protocol/proto/GCGMsgMoveCard.proto | 1 + protocol/proto/GCGMsgNewCard.proto | 1 + .../proto/GCGMsgNoDamageSkillResult.proto | 1 + protocol/proto/GCGMsgOpTimer.proto | 1 + protocol/proto/GCGMsgPVEIntention.proto | 1 + protocol/proto/GCGMsgPVEIntentionChange.proto | 1 + protocol/proto/GCGMsgPVEIntentionInfo.proto | 1 + protocol/proto/GCGMsgPass.proto | 1 + protocol/proto/GCGMsgPhaseChange.proto | 1 + protocol/proto/GCGMsgPhaseContinue.proto | 1 + protocol/proto/GCGMsgReactionBegin.proto | 1 + protocol/proto/GCGMsgReactionEnd.proto | 1 + protocol/proto/GCGMsgRemoveCards.proto | 1 + protocol/proto/GCGMsgSelectOnStage.proto | 1 + .../proto/GCGMsgSelectOnStageByEffect.proto | 1 + protocol/proto/GCGMsgSkillLimitsChange.proto | 1 + protocol/proto/GCGMsgSkillResult.proto | 1 + protocol/proto/GCGMsgTokenChange.proto | 1 + protocol/proto/GCGMsgUpdateController.proto | 1 + protocol/proto/GCGMsgUseSkill.proto | 1 + protocol/proto/GCGMsgUseSkillEnd.proto | 1 + protocol/proto/GCGMsgWaitingListChange.proto | 1 + protocol/proto/GCGOperation.proto | 1 + protocol/proto/GCGOperationAttack.proto | 1 + .../proto/GCGOperationOnStageSelect.proto | 1 + protocol/proto/GCGOperationPass.proto | 1 + protocol/proto/GCGOperationPlayCard.proto | 1 + protocol/proto/GCGOperationReboot.proto | 1 + protocol/proto/GCGOperationRedraw.proto | 1 + protocol/proto/GCGOperationReplay.proto | 1 + protocol/proto/GCGOperationReq.proto | 1 + protocol/proto/GCGOperationReroll.proto | 1 + protocol/proto/GCGOperationRsp.proto | 1 + protocol/proto/GCGOperationSurrender.proto | 1 + protocol/proto/GCGPVEIntention.proto | 1 + protocol/proto/GCGPhase.proto | 1 + protocol/proto/GCGPhaseType.proto | 1 + protocol/proto/GCGPlayCardCostInfo.proto | 1 + protocol/proto/GCGPlayerBriefData.proto | 1 + protocol/proto/GCGPlayerField.proto | 1 + protocol/proto/GCGPlayerGCGState.proto | 1 + protocol/proto/GCGReason.proto | 1 + protocol/proto/GCGReplayControllerData.proto | 1 + protocol/proto/GCGReplayOperationData.proto | 1 + protocol/proto/GCGResourceStateNotify.proto | 1 + protocol/proto/GCGSelectOnStageCostInfo.proto | 1 + protocol/proto/GCGSettleNotify.proto | 1 + protocol/proto/GCGSettleOption.proto | 1 + protocol/proto/GCGSettleOptionReq.proto | 1 + protocol/proto/GCGSettleOptionRsp.proto | 1 + protocol/proto/GCGSkillHpChangeType.proto | 1 + protocol/proto/GCGSkillLimitsInfo.proto | 1 + protocol/proto/GCGSkillPreviewAskReq.proto | 1 + protocol/proto/GCGSkillPreviewAskRsp.proto | 1 + protocol/proto/GCGSkillPreviewCardInfo.proto | 1 + .../GCGSkillPreviewElementReactionInfo.proto | 1 + protocol/proto/GCGSkillPreviewExtraInfo.proto | 1 + protocol/proto/GCGSkillPreviewHpInfo.proto | 1 + protocol/proto/GCGSkillPreviewInfo.proto | 1 + protocol/proto/GCGSkillPreviewNotify.proto | 1 + .../GCGSkillPreviewOnstageChangeInfo.proto | 1 + .../proto/GCGSkillPreviewPlayCardInfo.proto | 1 + .../proto/GCGSkillPreviewReactionInfo.proto | 1 + .../GCGSkillPreviewTokenChangeInfo.proto | 1 + protocol/proto/GCGSkillPreviewTokenInfo.proto | 1 + .../GCGStartChallengeByCheckRewardReq.proto | 1 + .../GCGStartChallengeByCheckRewardRsp.proto | 1 + protocol/proto/GCGStartChallengeReq.proto | 1 + protocol/proto/GCGStartChallengeRsp.proto | 1 + protocol/proto/GCGTCInviteReq.proto | 1 + protocol/proto/GCGTCInviteRsp.proto | 1 + protocol/proto/GCGTCTavernChallengeData.proto | 1 + .../GCGTCTavernChallengeDataNotify.proto | 1 + .../GCGTCTavernChallengeUpdateNotify.proto | 1 + protocol/proto/GCGTCTavernInfoNotify.proto | 1 + protocol/proto/GCGTavernNpcInfo.proto | 1 + protocol/proto/GCGTavernNpcInfoNotify.proto | 1 + protocol/proto/GCGToken.proto | 1 + protocol/proto/GCGWaitingCharacter.proto | 1 + protocol/proto/GCGWeekChallengeInfo.proto | 1 + .../proto/GCGWeekChallengeInfoNotify.proto | 1 + .../proto/GCGWorldChallengeUnlockNotify.proto | 1 + .../proto/GCGWorldPlayerGCGStateReq.proto | 1 + .../proto/GCGWorldPlayerGCGStateRsp.proto | 1 + protocol/proto/GCGZone.proto | 1 + protocol/proto/GCGZoneType.proto | 1 + protocol/proto/Unk3300_ADHENCIFKNI.proto | 1 + ...onData.proto => Unk3300_DGBNCDEIIFC.proto} | 15 +- ...CardOp.proto => Unk3300_DMOBAABGOBF.proto} | 15 +- ...Notify.proto => Unk3300_ICAGMOCOALO.proto} | 17 +- ...VEDoOp.proto => Unk3300_LOINGBJLJEM.proto} | 18 +- protocol/proto/Unk3300_PPKPCOCOMDH.proto | 1 + 226 files changed, 2651 insertions(+), 2484 deletions(-) rename dispatch/api/{combo_token_res.go => combo_token_rsp.go} (87%) rename gate/net/{forward.go => session.go} (91%) rename {gs/game/aoi => pkg/alg}/aoi.go (80%) rename gs/game/aoi/grid.go => pkg/alg/aoi_grid.go (71%) rename {gs/game/aoi => pkg/alg}/aoi_test.go (90%) create mode 100644 protocol/cmd/cmd_id_fix.go rename protocol/proto/{GCGOperationData.proto => Unk3300_DGBNCDEIIFC.proto} (79%) rename protocol/proto/{GCGMsgPVEGenCardOp.proto => Unk3300_DMOBAABGOBF.proto} (76%) rename protocol/proto/{GCGNewCardInfoNotify.proto => Unk3300_ICAGMOCOALO.proto} (80%) rename protocol/proto/{GCGMsgPVEDoOp.proto => Unk3300_LOINGBJLJEM.proto} (70%) diff --git a/common/mq/net_msg.go b/common/mq/net_msg.go index 641a3df4..07917332 100644 --- a/common/mq/net_msg.go +++ b/common/mq/net_msg.go @@ -67,8 +67,6 @@ type FightMsg struct { const ( ServerAppidBindNotify = iota // 玩家连接绑定的各个服务器appid通知 ServerUserOnlineStateChangeNotify // 广播玩家上线和离线状态以及所在GS的appid - ServerUserBaseInfoReq // 跨服玩家基础数据请求 - ServerUserBaseInfoRsp // 跨服玩家基础数据响应 ServerUserGsChangeNotify // 跨服玩家迁移通知 ServerUserMpReq // 跨服多人世界相关请求 ServerUserMpRsp // 跨服多人世界相关响应 @@ -80,7 +78,6 @@ type ServerMsg struct { FightServerAppId string `msgpack:"FightServerAppId"` UserId uint32 `msgpack:"UserId"` IsOnline bool `msgpack:"IsOnline"` - UserBaseInfo *UserBaseInfo `msgpack:"UserBaseInfo"` GameServerAppId string `msgpack:"GameServerAppId"` JoinHostUserId uint32 `msgpack:"JoinHostUserId"` UserMpInfo *UserMpInfo `msgpack:"UserMpInfo"` @@ -94,17 +91,15 @@ type OriginInfo struct { } type UserBaseInfo struct { - OriginInfo *OriginInfo `msgpack:"OriginInfo"` - UserId uint32 `msgpack:"UserId"` - Nickname string `msgpack:"Nickname"` - PlayerLevel uint32 `msgpack:"PlayerLevel"` - MpSettingType uint8 `msgpack:"MpSettingType"` - NameCardId uint32 `msgpack:"NameCardId"` - Signature string `msgpack:"Signature"` - HeadImageId uint32 `msgpack:"HeadImageId"` - WorldPlayerNum uint32 `msgpack:"WorldPlayerNum"` - WorldLevel uint32 `msgpack:"WorldLevel"` - Birthday []uint8 `msgpack:"Birthday"` + UserId uint32 `msgpack:"UserId"` + Nickname string `msgpack:"Nickname"` + PlayerLevel uint32 `msgpack:"PlayerLevel"` + MpSettingType uint8 `msgpack:"MpSettingType"` + NameCardId uint32 `msgpack:"NameCardId"` + Signature string `msgpack:"Signature"` + HeadImageId uint32 `msgpack:"HeadImageId"` + WorldPlayerNum uint32 `msgpack:"WorldPlayerNum"` + WorldLevel uint32 `msgpack:"WorldLevel"` } type UserMpInfo struct { diff --git a/dispatch/api/combo_token_req.go b/dispatch/api/combo_token_req.go index 049dbb7e..99162207 100644 --- a/dispatch/api/combo_token_req.go +++ b/dispatch/api/combo_token_req.go @@ -1,8 +1,8 @@ package api type ComboTokenReq struct { - AppID int `json:"app_id"` - ChannelID int `json:"channel_id"` + AppID any `json:"app_id"` + ChannelID any `json:"channel_id"` Data string `json:"data"` Device string `json:"device"` Sign string `json:"sign"` diff --git a/dispatch/api/combo_token_res.go b/dispatch/api/combo_token_rsp.go similarity index 87% rename from dispatch/api/combo_token_res.go rename to dispatch/api/combo_token_rsp.go index ab43bece..b9ac9d1f 100644 --- a/dispatch/api/combo_token_res.go +++ b/dispatch/api/combo_token_rsp.go @@ -1,6 +1,6 @@ package api -type ComboTokenRes struct { +type ComboTokenRsp struct { Message string `json:"message"` Retcode int `json:"retcode"` Data LoginData `json:"data"` @@ -16,8 +16,8 @@ type LoginData struct { FatigueRemind any `json:"fatigue_remind"` } -func NewComboTokenRes() (r *ComboTokenRes) { - r = &ComboTokenRes{ +func NewComboTokenRsp() (r *ComboTokenRsp) { + r = &ComboTokenRsp{ Message: "", Retcode: 0, Data: LoginData{ diff --git a/dispatch/controller/dispatch_controller.go b/dispatch/controller/dispatch_controller.go index 506313b7..00232fd7 100644 --- a/dispatch/controller/dispatch_controller.go +++ b/dispatch/controller/dispatch_controller.go @@ -44,21 +44,25 @@ func (c *Controller) getClientVersionByName(versionName string) (int, string) { } versionSlice := reg.FindAllString(versionName, -1) version := 0 - for index := 0; index < len(versionSlice); index++ { - v, err := strconv.Atoi(versionSlice[index]) + for index, value := range versionSlice { + v, err := strconv.Atoi(value) if err != nil { logger.Error("parse client version error: %v", err) return 0, "" } - for i := 0; i < len(versionSlice)-1-index; i++ { + if v >= 10 { + // 测试版本 + if index != 2 { + logger.Error("invalid client version") + return 0, "" + } + v /= 10 + } + for i := 0; i < 2-index; i++ { v *= 10 } version += v } - if version >= 1000 { - // 测试版本 - version /= 10 - } return version, strconv.Itoa(version) } diff --git a/dispatch/controller/login_controller.go b/dispatch/controller/login_controller.go index d9ed0791..b58a635b 100644 --- a/dispatch/controller/login_controller.go +++ b/dispatch/controller/login_controller.go @@ -208,7 +208,7 @@ func (c *Controller) v2Login(context *gin.Context) { logger.Error("ParseInt uid error: %v", err) return } - responseData := api.NewComboTokenRes() + responseData := api.NewComboTokenRsp() account, err := c.dao.QueryAccountByField("accountID", uid) if account == nil || account.Token != loginData.Token { responseData.Retcode = -201 diff --git a/doc/HK4E登录流程.jpg b/doc/HK4E登录流程.jpg index 11ccb534fbb55d9750fb25c9698d910f7b7825a2..19a2d3fd8119bfa7b77402d00da7db7ed941f61b 100644 GIT binary patch delta 69689 zcmb@ucU)6h*ETE&3aE&nA{d$qiZrE$4x*w|1(gnBs8U0fdMGN6KwtzCdQplXMS5>K z5+yW|UZY4SfC54Kw?l$6&ph{AzxN-1lOZQ(pS{<*)>_xP)+q^MY#BQe@R+KEx?UAh zXv&$b+u3qS_D?tW#&Va+X+$3A3fXsnht2`{c<97PJ3->hTPF2%i;N$;r?XTF^(5WnoN4JbFS^BbczWGaUlp}A+ zsMsp6ws*vO!Ik)a;|995Wn}hiDN$iCvHgsJ9nUQWs^pD~QwP`s_fgYv2Pmo1Jev1> zTzNKz3Fi4YP7R|xOm&9-Cj%1<<7sch7InFUo1VMl7*)_1>XI(TypHNDohkV66Lmxg zqx_lbWYl8yVLF*JO3p*atS(~y^aK|-3n)1oj})d^V*Z4v&p@g)bST+(#u~g|tlR8P z_)dSTd~h-C4h@siJ}UA*F3hLuT}%gD3a29| z?|wfO4wnC+-=oSRXiO_~QlG04iHbe`WcOJ}|J_|?aBhs`Q;PKrPVoE!sE?$2f1zv+Lpg#}aYdg3_vokrzXpU9V3fR8E1 z@*ig%gJGO+T}im=47>Q@AB(hP!i&7HJViS|UbT`n$;O-F3@J7d430%K?23W|H@pp7 zD3Adx|49=0383Ath%zj)ehPC=e7bvkC0eko2kqmYxVQMa5A(S1Lwdtz_SYUc-66WjeU zXMP_jH`B#SzT-KDH5OiOk4C%rXS)7Cq-DA6J?7i+sCVm%-+pIDIKTlzbGYf$a}A2=r%zy+0i(-pT{l zdiA03Z$kn(}W~OT}}KZU+0Tmd?QX zYO=>xba{S1#6D_U8pnvR*ZV_ISF@Iv!}Ml*^KZJ!U@4oX^aR+Gp3PgEi{vXD7#4?| zSl(XEVu4|7F4-{r<9Fz|qZB$=7`Qu*fD>|jt$UsXs0`e<&VY~1M-FI`5wnU1;O7zd znX8!F4OD07&H?;<*_g^t#!o4LpVeu}x=Ez9sQUh9)p@>=;b z&!}A^<4Iutp~azvb*7GeWJ8nT1LlY5dZKsL*%*#Qp3q272-N?!!MI>uNy#4G$39 zC|`d9EK=w2{%~>xN<9l6MfTm$pK7EyrNR5RG41{rCKaM)q4NTGij$Qr!QgLD^HXQj zkb$%SIGPvsDVhwV9LE5V(uu|Fy68A?QQ?KY4$)l~#pK?grh|ktUy$&RfrNjTV{TEb zXZJ4B^kn=q;Ed^^z@HYc?%oDQYk~*tzy6p=ex_R_m-=QeYa-f+%=+M(8-a(bYCOO4 zJAhm;2G4s^OM{mDDAA{hwMEn;Cru^3ZCKNknTU?&jl^g<<{yH zu>F5?b8v5n*F<(8CUp=3L=$)c~7Pv)#N&r3< zNBy_kkque+&`_nTDxtqvHP5uxaAkG%VEM$_WQtz32jMv?Mb4|po7ivtYH57*;89NK zurSsg@7gYpk-6VZ@R}>c)==e_IDCG2EgOfL4eP3gcDC>Bm|&S<knLaCYBDI>RzRfX?9KKQ50C;(qEGN!&j@y|V5xX7Jq z-9lVh$tDbzLvN5{P1o}L38lSVP2s0&<@L)QO~ga*nKCQj6l-g1ZwFj7Z^z^BFHee# zh}}=RjJPfywfgSKp;ymi<$Z{;MebbR`z&$j@R<;We!1%*xQX^FgSJncZ`mMYJ2P{JAJncF7HU?V5*z^=`o`u9B6_?YFUi= z%glWB!n{S)>qEcyHB|{9BQ=tr{rCT&;MgrH4tvMGw`meadO>3xvL1i6rMt(Z=sC|B zb{aI-`ERYq-q&wm-};HE&rSAUpYG#LTM4rf`$b%Ne;4DGYgdLGfY^GiI)uhK)AYNXX)`qGCTQfN* zrU&4N4S<2zJ0$yWc%z(x*P%Wh8@3>X{43Adp1jXLJM-~j}qg%tH;l!(TUK=}iYim81hD0`$z9^8rZs0h6VZ(tM zJ>^DL)E#TcGj*8LsAPI)<3shs&4L}SnZ6}esQ+l?Gv${WskeQv|2#K41`&$g=z3Y;`->`_ljpz&Wn#%8j!l669ka@|u= zQTbfZ`qpqeQ4;R)qv&<;k^2BjOXFP zUu-%~Lcd`#@EmZmb3Fc|cc^M>3hh2wbHLOqHdhKD6Zz#1mAn95pGx#&VHvn->BE>R z-!+%6$0r2tUEMe|iy!1vrFYHJOvofIjE*wcn0&P#!1v{zx6mH%m<`3l?>rxiKhvS* zoEz@OwgA@GE#m(p)MnyGmg3g*6vRbTacqvcs<@jO&Ip1mC*?CQJbzK28K(DW@oxj} zAYs4(Mi~=E=4Xdc?$7we^j8UkStF0e!f$U(Rau=@&+r0R6M4}RCy1a&>E#=o3khtD+*l8S-PptOm!)DT>3e4)0D~@|~UbYnuh2*SYS=kYYV;72*IDKHF zJ`1&ZulxZ$|N5Q&*nF$e+E} z?jo@fY3*!3IOQQ^Tybe&RNtz1MzT-2+-}X5U!(xvXZ+F-T^G~eA>{}SJ+m^dUwn7y z_Q&L9!!mmV`%8K4tKq6TYnz;b7Y|t+K~1(L4H`aQm+~Kz%F$37q||i#0+46^nAD}MoHvPsPH$4S=B(AM&Zw~!r7Uf(ExnqV;~ucDcgz|w>Yr2T ztgK3`_~{@JG*&bsUGnAzK%XDW(_f6te}u7#J-0t;dG>b|bDWekGYNk9M+&j~x5(=a zj3~mQUUSiVNM|jMBeuEyXEIVS@GWDql+#GARG)@_M*8VhMEe@0YZEuZFKW=O!o6#b1W(ciVip04Zn3N8wcJ2O%blOUUf z4q^iu6GM%|Y_V1DvxYd!Sr5nIDv5Zu+(B;h>=w~3u}HmK{mXoGJq{h} z8rrd!l>L@pafPE?TiqDxp;rGmA0@LoUjtr(A55n%*;Wn`6=lB5yM@6#9uYlI!}Pj1 zfDJb4-fJ>5>^XY3etWh)Ut#T&cFt~GMsRKDCsk{Y?%7~q6UhV|KTcoz9c9QSz(%_~ z@`1Utd9GH^)a#l<-&^H4G4s}adaI2mI44iQW_e#}ipat}TBFeo5HZe(~=U#K+{JkEfKS-R19Q>wcf`Y5*Y@|ACJ1dZyOxEG^jVL!Z~MKvDXs4t=yIIs;?*$zrXX@p?vHaB%R5 zWgM@Zg5SEE-96{?!3fMN$8tgCT9@(W+aXhIHASjLYtc`deZdueged9LqVcl!cxdMLnmO@+w4LxOCJCjsIj$s4vM@RMZBehA96 z0^+Z@yz~DV5J6GgpqzzMruJ@no9y>S#lkgiCN(H5_=?Jx3KzePWi=m5vj=AP1uUP! z&SLw;o_<*t`*hw`varjN3sHs@9%V$iLq_iSJRD+eM*P*sLU&Myn@xVsa3TlfFw(~q zfgpUvJH$P2r(!pV(i|^cQce zE<~U);RzXYc8T&!dIvK>aLdy@cPB~AT1))>+CZtD@|K$rRLtS_;2@*u#?+y7zs5pG zQ{$RL@f|#=lD? zrBoy8a@FfyfhwvmXMDVy-mKX5y1n7=BGV1~sA<8mh@6W3Mz*30e}du#BsB?|Ja9*r z$S=pDzIO4@=YVjl=SO3!NFhrz0e&Y0B<@i+40lXGZa#DN#>Vc~=_G-f4$^#gi~9WM zDJY^?fNS4A?tM3}D&N@)07|Jd05MK*Ha6C780K*Sa^jtQ+VA7oN3F?JAusxp5hlaz zUYccHV_5H@$x@}sMP8y!I#}X$M%kq6q(sK%HTblCSgsNI1naWi;+5B9R`n?V@1KK6 zNTkWM$G^@zr0_qQQ<8pULNfJFP+Faqo^#tx$Wzn6r&+N@((=@U#u$!rYLbZ-a5MG` zphiCppK@a(JxD64Bs(p;>;~KY6u5ic)W5GokV^3Xn+yNyY9U@Urjf6 zDHU2jK&i}P8ZJ`t(tQMRBk_;$s9oNhb{%kKy-~&>nLDuU7+HHG=NjY^)(|qNv!$P!}cS0P}e^*{LX2q zXykr-@+f6BjSQ4SdUz2)O6Gp`ax#iI1Ny0;-BK9uMtP21x3Njxbx#?Rd;YJk z)BeA`@IPPY7sdI4mo5%Cf>Cl1>zaeCr2e=O~AjssIk)KX?;F z@+JW}G^xE)x((>%6Z7T5`A;ePf&?|7nOc{6GZW*GM7YglDqN%ca3>TiP?%qev(-a1V23uNtfMkOur1&Bi44t);8>fC*^8~)^T%0PpI02b!16ot>~R(GLZE*z z_akeSyl>)KsfT&=`ac)Tw+MTz@Z-Y9D)!y#{jA0G8n-Yzt2r@ z&eG^EDc8-Jld#!3`PCuUhufQLmi1dUTv4~&)#wMbfX>a7_z+l5)$H{+RB zpX@Vm+`=~o=Ol^1+-6PFP5*-xL;;-HV{t{nvrbhhv0cf}KYLD`yWrO4)-Z(0WJkxX zv<+=*dejqKH|C<5x>q>zM9`Srh9S`h6IB>|93p@~UjC|g+;!J@8-ejw4YB7?nnLW< zb#JwIhLWde3}yO_n|p<|+a0^uZ82C)-BD1kW`Sdk9_j72@3kwa&6IQ;>SI4X`tv;z zDJrlevi(iuWq;jddx}%*x+cSDNpQY%f05tVXjOYq;RU2=3UmE;2<2eLQv#u&1S~6_i*v@aNK9@&M)VR5R zyW_ichzzv2tov%@zW2VsPI{2Z4o6xzGBqNts^(K}I1g=IP9?Vpx>=l`7|X~NVTwvs zc!!O|Dmup<2Fo;Sx7TOYtXc*NI^+>wy2`zltlWQo|8&nLcQ(4pV#icWToNh=)zH1A zxwpM@qmSuXx>^&Yf`brx4bTP4)_4hli->Q3{qaX*q3~IU4&jx*p1kwc7>A2lNMSFu zJ6 z7X0g@Iyzp`tWM-n1u>u4>bqL{p%muDx$3zxB4kUkQ3CxU73AXMpGc_$Vo1$8+mdgC zYX1VCz2X);;vt9{{BFQ z%7bBRu~Ski55*pdtLPUG*BK<##SK_NFNkQ(;`Gwlcc0U8I8ZYw31bk(J^Nv=SAN4C z)W(EVeKx1}6pw`CP{r%Y%qxX1iLe(l%W zl!rGtj^F=X_#31vL3UUUQoGfBk^0S9xG+=s)Ju9)=*di9lGA}sN38j1qO|MF@#xkD zwbg#s>jQjMa%MMJ4Yj6_b?YqwEsRwrJO;*o`C}%^h|U){877T*B#iZCyn8H>r}(jn z`2#c_E`BMz+RT`z*bZGfzW}OTado42lfzK8r@)rAPot1U>zx8@iuX7)hzNXlhkAe1Mk|mJIr3b?!H+kuY;x|RUEum| z%C^fC3LadYw=4C(zm&Boo*|I+wJ!wGtR zb>qo|$Xiy-*e8D?c?v5RkVADvojV=Q`ANVIrxEf8tbUzhhM84+w0bEIAY#Rd`DJlb znReQi8`d{**Jqy&6h}o7pA%`ZH`Sk3H(mUmtj6Hsu2`Zyl-!$t`EdXH0nR(FzP`oZ zqMG0lwUx4~(7fti$NAoGxr8l6F3~0#Ft8W#5Fo_KUN?DkjRyOKMVE?#ve7pi7?+Hx zjBN1yTg_+no8Q!R;C})77e(BN!L&Rq4gS%AhYLTBDN@-OKXlooH(Xw$ z-Sz@sCtXF5OdRcWJpBwq457*mc$}E+(fcN7FJqm3?5ua59Kd>KKb%gn37tI*2}5N~cGshKsKU)?0gl|Ne;UfMs7!x)LB4<13a)&@Cf zkJi2zPcC|ouw4ZK+(;~M=`iTLOnZ-8lX?`VCGDSCdEjs-Iw##B&&_ZY!(LhQcM1}C z7=&xK4meqjL`9P$5LqIU$7VAf**TvFvEiqGN|Jfj>^XU36Y~^p5lue=VDIrWGbxW_ z0SBuA?s%(B*t#dz;5Hk}c`dj3j5!y&{$l;Mr6U5o^Vv(BhmGd(xURu?Sg~ObBe#BA?R-ShyR@ptdu`oIh_r>f16q)j=2%j&H(QKDn zSeU7^>vZ{V35U&dkO)3e^(HlAIw{SP2Ob35N!ArcQ9EfKl8 zDkL@cFj%CdJbZ}(WpZ+zJyPVv+(0Rg4HhD7JI~NfV3LZ!_eo_cw3n<#dlgI{ddJyY z6O71KHPe+z^&bnDBDHN*O`?bzQ#A_<_|pOV$;a_Ja4)ZaeV&rnKkN{w0*NiOn-B^E zE^MVz_b zeqq@vk*q%qIEmkHkxxrLmH4xyDgmMS??633$0XQob)mZRn9stnIL^y6qw&a_=#6Ug z{aT*8Ti|j6ggs+v{=?*8@q0^!tUxPf$5_eAd*P(il{&r z9{P*CpajYO`m%7h1ku|DuCtb)bB2Nr+#M2uy{0~zNeX_34*f+R`k$7Mc&n4d1%!c8 zbznsvc}ecMzW^GMgbYIZZyRPu3I3y%uIJfzy5H!%+1}oElnPlt7IoQ`1yb8n5s_;G zP-Iq9du#W&&-R4Vi|~pM)%ujPv$N~)Y|N;A6r@^ydgOFhbButPlxA~(AtGd;($(7B zJcH3eFVC?1o{{_c4?m_pzk2BGdcypzeYWA_21hAXhI&a1xMIys{WwVmE+7ERHi-m zKG4=Pb8;&B`)WL!+Ndlz;-p^_f!GPOHQM8CLjXk-__LFR{)7Lu7d(DX1n;!yaz~7Wi7&va>~VCeK{v` z=8l5~i|j|LC}rp4&~rfEur@BoEg9z31Ch=XpDPq1$0k{6D6FSqG>&HsqbD|71UfJsUaR$L-HJH!B&{%BIvUg{9Go@=WmHV4J$?((70`f7G zdl^+1S(dnungj6WqnBsi37mloCstH2(4j($Gc3rP{QTs{vv72OHnJes+9WER#=kc5Oh;vN=+rvKEH?s zmyN5feH@#hdcYt~b+#-c329IKl>8%!7v3hCoUbgf5z7o?-O9hVMmDo_7T}0(rm(%- zo1~odTE1TX-+0S#)+wOctXjyEKjqCvi1dqGsZ1+|(%t)nlnWRgL3H9hwFPu9S)5+q zk6E@SO3wZ{UcFNH0ohnsGW!F|rB_h5KJ$9(d23vwm{rTI{rmT;5$~Y&hCmxU7$Lo2 zXSQK@Jl3qzg?B(vdO5@T9_~dy^Fy4vNSY9Wx4>gHuPk`eF@nDlIn~`r(T%!Y4>$@% z%8qFWk)I@58TdWhb)FPSihL5N@ZM=H8BDMz2!uQg`JUm0wr4!G&3wprS3?{)%C`6J$*v zbG$N$R@L>12;MLS(7}Aq>HW5wmV9 zxq{$$&<=`i=|LIW#FYh{OlBHk5>9ck3#I`_BSWP!50F1MlLU5xXFvPPg5HDFoFVy z;XC76-=$Ac=dmrz5*zo~Z*BlJ02cw1`yS!Sw+Jfe-gsqu@Ni?m$KVh7ik;}4N85|r z;2z;-KrJAsk|GdTO*2hs=~$t~4s(9VU1gah=loEB()Mo>H;B@X`EEwPCk#{K2elmL z!6_G8nnt8>*m1J@3m`{2%Y_F`g-#JBdbqiLqPE05;rFb@@qzgqHzrPq&bV0g6g;lZ z{5t4V&+(+AXs(p8)ICxFH2?pwFAn#nx8``MwzJ&%MW;-PF>EE*oIatozuMc&Auc>O zctS2{jGl$BWSz&MX#YBZ4ly~5|Fl6@nqGcCS`=j~tNiFS6_(T`V1e9E0+MNIs#9w3 z4DyuvgAgog2U91CT6r1^M~d~Y7%Yt^NDE@qL5K3)z!e8p_%W&`dWtY7y8 z{%IpIY$`KgY-+S_BeFk9)j4-HfEW`a0oN*~sa)fwt`#ZrI~#-4C^fNl@@C&d0+Lli zd&Pq>Ailouzq+(nVcVRdDLCMD5SwrLa%H>GHVEOz+vg)QSnRTb%=b3Yi(p;UI7?_ZhW|t49&gPh~q6*B#`1#2tUc;pqU6=M%=xl{uR= z&yOSBJdMbHtoUCcREQ|^h~v<8&<%6FMxng+QJXNmwJwO)e0C_tga={j1Dlnsuo@k> z>Y;zSm&+&f?eItkkotH`_cz@1xi)K=XQGnZ-ff;!A|RZaB=6%fH_~uZ3V+Na`&lq@|xF zJ1_Sw-oOfj9GVg%;%3y8irhd_@={-hF=y{Ad)?nFYc_ zq_*I%ho^?BLDML(HQ{geRH>NeMbJpD7)rJfR3hnamo7F=0_x$VLA6o2W4KjsRZv?= zBl3oRqD4HBVTra7IsWV2NIGxvmlilN=0xX6P0&~l%67mmV2qNEr^^2x7~r8KfY5+I zWbxjgOF)&WE-RjW`nq#se6HMik|e7;7BsSAvdl}!l3Xg92ejXaOlX$k1K21&&F93< zBVHe9^LPk@AjrRdxcs8SgKmaF+ryt6~4=1&C<(dwuamaJM_Sh zDwhq0gZ!IF5xPjRum!E)L(KJzo9)2sb4hv58<+ZRc#z1Do>Ok3aN(ucr^Xw6Kp5p8FM=5I8`RJe4s8V;h#!D9{74P^>tDCvZ{}{@~_pN4x6ouKo8r7eYBd?8@w6qsT=vpbW zElOZ_Xuo+>*aVF+Lcx;;9F552_-M+)t!dnDTu^7jiMHnJ89T$uHJpJrswaGVHw4cH zxs|HAC{CRyWBT@fW9)b_K_T5FXTX$C*6q75Rar6*%n$`Dx9=~yjJu|;=mC^5w6%Z- zR}0C_N3>RH9HoE8D{czJq~G~^gO>Gnq%}_yAcV>)oJi=N+oNs_YmnYw4Q}1w55fg{bJM+Y_b5_}s(~NdzO-Drw$YRoI3+ zLl!&ug}1tB#iItlmNP23vsrO<(qL@|QX^JkQZfXk&x;3~7?T(GA-)DVaYQ`t9K(2N zNaE6-Zo!UVp1XgrgsPlFe`A2~Fhc%|(Yndxp@YU!+Gc|m_S=Opoy&1r%NKWmBr(icgHZGkKCZMOqC~? zwd-xsByYL)(*34oH@B_;oYy=JePTT&?X0+03dqjRwXWxiu{lE?*hXP^jOFPJ%~_$zRolw)oaMzpD6lG*2Z?^rb6_p6k+>31%Cp5@r+oSPD5|^7i-F)z#gm z%3fBf)0p%D>0SN_U-gvlTyapPkohcdES6v&y-MVku$^-*R(E}jAvVfC#SNELNqo`# zjnc2-?%)6}F^`fhB{N=NSR{F4_?AefR?yf3V_BVtHqM(92~If+(9VXMl|SHYtuzKl z{8mkXc*~O?46+?Q9kUy7#f`c7H#Ocbfd-ZrWX+>4Z9DTqX_+KLMb`jvX;3*^os3B% zQfCWvlThehbbn88zKMFSn6O64Z25bAJ@{;Vcl_~y4fZ%|XV|w1!-qpB+Gg?6wi+U4 zbud|kVN-MNm*r^Q>@RI)lDIFHA58WOdsb`O&U2vlrcJ)lg3aH>WQb(wse&N#;6#}T z<-zz0zxVkumq@M2c@Pb+m#UzXd(3~}MCxIK*Flfz2+s-f2{O@JBq8S#INn%~Y%hi= z!irN0IqI5PZB}SYd2phGRK<)ct!&j3i?bah)uE74S&MXNw|#_Qn!T_eC`-`mgmE;E z2?iwy*ZrWUHzM4>i*X-oIx_jQbKS5@3_P#(Y}vThZk87RTE|_50Kayhkyrj}II|{66utu5K&T$tg}8X3`%hy4 z(FH3VMWQpFU(-b&Rq)?@^uQU$8l6c$`K|fS(c0xs^_e8kkw3P%u93$}_Y)_>BWG7k4& zL;!~P_Wf)X&1^kWX1SRi)4~VWmM4>BJ#)T(HRr{hPiV9_1}Nf}H+^6U*o5LN2W+~F zvATqMJ*eIlbD*1EG}x-c1}BY8i^MA=F*|7QmG<#^vqxWP-M7|PK5mnWy`w;u{CcrZ z!bi^HWYv7E{HsJZ?1%b-Ta+n7N?Nzu$YlbfsIZrJ-XXvP0YxHj{LSStuAPd!lQZ~V zM|T#Fc1QE;4qOb4I;NDmNzJU*2Q^+@GtxYC%;sqTl7cc6hs z{VrJ-E|VH#P&a|&WEF##4o+16L(xWnr<@rcl zEAfluss>R=Hks(i3)d28`au`1t~8?Zor@&?S9%dJ!gzKX?*F%pv_l@ms`-BF{57ua zuUuUK4*y*9-MGpDn}sItU83a)P~xZkE;5@S89u^V8+|0>HeJ^prS=~CavyIl1c%y; zOY0>_%E1{nz^8Y^;oys(lh(;z*N-qV=8zQ4H|&L9*&m2z7ObYeT5RmvJ|Rbhd(f^_ zDa3hg0I9fNi@nihm)6cU0l3!E2Ts|=(qP2aBxqJ&Pb;W-K@95I`qEekPZ-xqkkllM z)|=gI*!mpdADxk-;>3TGA|bTy2J{yxhCO46tPf^}xrYC)8^&3|{M62=a9dDb z&>jruJNtWNPPu`pqp_fN)rsx}qcKUb9M8L+wBW0%nFzlPcrt-PId^cMxn9z6illMmYnFiy0h%zI7BjIFeuP zS2w@$DncQrZj0a)k#pXntV%c{BWH<|tyv|t8hFd_N|pyr4zM%hm_J`8QH-y{4IIUD zQ!0$GiOx>%*iQNSj|{19Xa`UY-i2(WAK>u^j^KM3KZ zS4W|GZ&EnRx%;N8U~8Zto7K$svZ3MnbXE%Lou+I5_jKN%u^@zONpwJWsW|96cKCln zdNkOSsroBky2P}iYxRY%HQjxs`vh#TIMto|;@5T1iFtMZ9?`5vEZZHbItEi8whBk)Kv9%|F@ln*sIJbsAY?AJS1$mPiEsC<=Pi72Zbf_N_s%s47}Q=xOToSN9^#INBe z6?ZCSJh%0X>_E_5p<3zn*-6QCOY)~gD){fhqn=W(i?^i;bC8nb8$d26@^EWo?!c45(60disxAEgn0yo6do!o&*0}No$p^1ZOZz^FG^Je8i2-oXHjAgCk z4NJ?tmTQScJsDsQWYWz>x@feF10Rx%qi{Xkw`%r?HR$#=3bS^?j9-FceoA_PXYhPd z8>vQ*I%H1JNRxr12ZT-JSnqnTFWatY?<{N2kY+i+SVOk=->Cl#Um-Sjjlv(rQX5!* zi#Lx;rm6zNNj8#&bLt!Y?f&=VfBePrIR)U`lPPPU#DF4*87l;%YA{&!+LnhZSp+}7 ztkdmOzvWRV@oRbhg@RrQkM4z#2=Q$4!n zSdxe*h2qnkETCvTlS-DG#vFee+}P3IgcJ*CGK|Y&X zB*`2#Qr1|!5gF3Blq)O@mz=Fcj$L2=n$vQ1dwaEBF_Rw99ViA%GN*)Ry=0x=?1Dx5 zbXKX+176XhSVd;3eHU(D$LK-E7kagvVJ;jNakdx7XX-Y=xYcbCtiy7OR-MXbwHZ*X zLWb!UPv0`Cy2ll5mP^0aJ2+3wHPf4dJ>bUvB^|4N8)w>vEGTKr6~>M9N@ov)(G>5@ zqM@TKd>W@DLXC~&y{mw?cD$mb9Sk8BS2xV0*#mJ-76@A5b2c}c4sBMGmz(kfnSeN4L!a~Hm z=JdA`?fAYE0Rs-v>lS5h@g6sC2=i13o+S+U=$nZOALTG?4qMRno6((#(KEfxoP)cG z<`PXXFwO7B=Py=V1U+PpR=j@xr@%m}()*3nPTUE=POw*rR_MiE)>QS4@4VQl*(tG< zwXk(kZWdnYdsB2eKD*!O;P7rX!2p!9!jDVYpESRSVLpQkdG-GNdqAqQk6jnotwmW1wr54{MDpRk%G`SDNqY$5U*O_1IT8Q{xY-#bz8MLxD+krUICYx!yPq0!m_9 zp0vtcqGXRq?Phs_8Bu4T3Kq8_q%NR-OK_*BF+Ey9{lNy>1pQMh1yUGh&K4l5+hlA|^m%;@Y+8y8gz($3JA`JPBEefL61v#q9(?oQ!0fA~Mg~E~Ks3_;j%B z6`y;|5qK8^1aN&*Q^4Sx;?9!d8!(Ak`+1IeZx|2E_Pb8cbg-KQrX?nb+ueZ-hVWS!uW&ZNSeFeZ{&=%tbs*S-D=O%U?71GoQmdfk`@!;2e^~~1 z-mo4Kc_009lO2Oz7Us;2rcY&uIJ5_~MS61w38$T;+ugT5{))#%%+@un2svgytsM1S1G-0+#(a}E7Kpz1zb*1YhIXu;@E9=*C(E{FPl&)BcyW96h1SGAQ{ z>4YvS$W7lTpMAs@T3|>VL$8(L+7V5cH<+_HBv5-=@P9UXo|6LkNGv;rjocUbj&?cs zHvM-Jv0v&wdrtz<6lT+J?OOJFn2EzsD-nL#!*=4GtP(Beasw4B-CeN#`9F1~Neb0d z+#P=4<9vkj#L3;M!g-+U62-j#1N3fANPPcY1K+Wr$k@G3Y8z1EGe{qjH+b2@BonSU z5AofX(moHL&s1D4xxXm4$-?{%KR@$yV}LY zx#ISmYoRBzL1lfg{8n3~|5nvNonJM(l%w&Y7c5p2PpaR6lIIT4{plK&*?+o6XI;wc zJlVzp=qg9RJbLl=g8l(yG>&vB3NT)6ms<*Bhe5DAU`F@Td1o35G390gz`a_5Mx1P{ zfhZvGS~%tY^~5n4tCq1bEs5f1AWaWcJio9j$>-L`Q$~|@BIJp&hLtWEOErRDa|@`L z?^7n2s|br~%`z_EpOHX3=Th!#e4nsh(5o+5+F1~TIz{r>1$^?%6^^pHl^&zp(x8Go z#A&qA00Nl1oS@W(7?1?s8H=ubl?cDCG&(sU(JdThJSyukcS<7DyQbW6IDQ5PBa~d5 zuLebE8Ar#A2>jQ`p(uZ+RprrQfXa(?=ix@tJ)MhXdVwLY_WN94>u-*EXu4ZP!NqudpqR&G{PAHIL$T_XNF=?jYCK}@{>=#88#Wgw zn>Ac|b89L_ZL=!uz<^(Mew82xU7Xpo8;HAIg&wzf&8|f9z8OEUe(g}P!+PjG?@Bu{ zjdq{wm5$ZWtbdn7GxJ1(vRfzS+Hz^UTcW?&i`6gbBK$YvK$Q7|%3mkRc90L@(gHJD(JLBXYw@sxHG##p-Pp+Q8FK`8{iFHM&r1@Krh< z-pYC`-BHi0PG(Mo`{T+Z(E7VvJZ^$^$*pP0*cpe@=W=;ZrP=%eZAWgTJ}Voq9ECR` z2L#q3vtXCZS@p}vM&uBy?Th5$X`^N~3fPe)%_NT?%}>Z6uBq<^f~s@eX(4m+7mI~W z0<%Qm&4_{yz{wxvPuba=>;|O5>6@S0zo$T(SjfJ0K;S_Hwu21|s`E|}dVOJ2sOB}N z?_%Qx=konik+}5XxWcqC=1z1v;>A0DpPrmIpiy>i{MYDtLVdjW(sIJ+X6Aa6RNZGo zc6niY$^An>=2U_n87^~3cp>7uOe9_pZ>`cUx67Up6srL(hoW=k{)#ajy}p&krhY4T zSN>wr4l`_2Hd~5NShrdB$LKjjiDeEqSFPgTpz!eUo&uDEb<^cWq_bP&UE)kOL&-AVORovqDTGx-l7Hr>gIG_1Bd77<3$-eVo)udXBdWD3 ziU^mCkic-229HI$v@{6eDl95#RNkkjFUI2Gp^(2mJVRZJA!22r{?`YQoL)0XUZ%CY zrnJ)9$<&Ov*jgb`uoY?9?hb*+0qpF(-U2gE;xOy$P;8u-^-EWa2q&NGHl~e8o56dz z`d^LzXe|A!&~C?4@6kea?@BwN$ixix7TeBP7HZ5eT=)Ll6_Z}p%P;B@&1IW07c9IM zA(Fs2$IuE^zc!ITYAO^;Rm&|{IJpFk%`NL%g-+SE6Nnf4v3Dkmt>X`_q8>$oAEU z=a~&k}c&s*=~j=4U9v|9EQy`tE*vMXv=zFg5#t?!x4!z9A4N zK8HEh>XqQm*k;d&I~)SK;kpJy{Z2LLan}AqxvzXVoB?uLROxD{u#3p3Trgr(LIy}M zrnbz1IvIh^K_y&ES-!>&YF=-tucX9WsbWu0HT9ShN4}niT+dO!<6Y$_>HJhbOuC-OM;cq`t_vAn= zkKbmL;u^~eplsw_I5;_pZSUL&g>zK}FWwoj;XsZe(7WAc1^MOIDe(GTzCzuJ<${d2 z#?7`fI(_nIi{@5`#T}M}?m9sJKi=2%v?}!*6B-#&erbgZTgp4e>lypqOrCDGZ2k-` zIKtDbF?HFC7Rv)z)`j!PRin-gz}`$@$)?9DSd0 zL8PS@0r4W}MI^qjm$NwBs~s+BJwLPWQ)x*RTV$#10U)xtBf7M?pX*nEC)yS26!f(X z_6qaOR<=4?ePt?=$mbW=Ab8g8WSxoAkOVV$KgFfKIaeLH0JbV0VYVoU#jfClaVxxu z9k*mP2YnlnosTO0oep4KCt7UtPMWvBL>Zw+Ox+t;71X(kegEY7ZrF|eehhX#uZC$d zxBfnl&;8Zq<<}yh0jRc+owN-3-*8T}N|z?h3qNBeiRPHd)yjVq&ApBeaFR^mpsswE zULh|_cqg0S=6NDJ$EWKum2WJ?6>k=e<6=@QM^b-(;qrIc3E6)tK76B{vtC`*abNsTaV4$Sj z>8MMk;<-rEN|*81U)=ln#GYAtZ2>Ovc0Fe4yXDCHpOe7*dVdb;gh=m~o!{zQ`H+~7 z@AFj*KZIJcPY?mEcv%O=AUj1fzqX0igl?cP=>}b?Cc#>c^$du6%YV`?#Y^Nw>0w_^ z5cFKWOo-jw9<1px*-%Uk`ll-GR?IJl2EC#l=XkYv8P|f8*4I900O}RGie9+JN7WZ`W4v!O+n% z>TJgY*!;LikBV;tDP^``4aqHc8BpWwn(ta2?viS98y*g1V z(Aq@t@3qU_zhF1tJ!ZSt>|ghD`~K5r9-MqavDsi!w}7xrU)Ms)L@u7Bm^K`4WL8KBA|eIX9S{;E#4#RcJm7CkoXT3{JdJsn7bfWMJy8h~&7W zerdtTk_X4?I#BwJl;)+jk%p@N)1>!rJ)_LI`v zzqB4OXuK{VyjZLV$(38f&eIC7Z+2wl_|>E}7J4N{$6&({X2TPmAM*W>evLmmIwDsu zimFsZBKc=rTA1xiszn^9M&4Zmo~2m~|1QBd493tEjf+D89utYB)~5#5xn_&L)hXd! zLN_|E1DZ%D)A7w_dCLe!aifg-qg@j+*#XB6!?wcF(D;HG;LmN=d`5FlejAV1bd1mi zvoKY_h%rYk+I_Y@2rLaSpAQ|8tDg+$O~3u9mh4z=eUP=#bPo01HRePC-R()177DAVO&f zpiDVcYFr?2&f%v{_f4OXdk#%V9;rvoS8(8c2385UdkJGg^}Rmn3F<3VRSA6Xvi+l^ zA^-r&YtSLg3E}d8)WW%l6w4d0T_Met9WwiMMLcw1^Jmx^FUOL+3VI5SNnSf$)Tt6L zk1EwR9{e8r5+cIOMn&8eLGMjO1-$jh#mMaFgV*&R@eE&9Vk?_3ZTaDDaVhv#oPhm* zY<+n=)Lr|3DJ2wlDJ>JJRI&`Ij9qDytw^>(Qe-!F#`r|VUA9V@>@AjTqwEHQ#FTBy zHW&=1u`~9GvHZ@U`+lD1`}@yp%yK^0bw zAlknO`qVs@$v4>cBLL4;q~c8$w${9M23lFVS(nxLM&?+I%*l7-&-RMf)E_yoS`~7v zq8OIR$aKTo>dagaEE>e1#(3&4UVL>H)NOpm@gwK=Dj&+}W~O=qvW;u%79z}NuadLp zrf5X={LjfwRV3k-h%5`kIvnc=NMOt~q2sZZ@dV+VtwifXW24&TtDP3-U-TNmQz2%z zS44Dj98s@z{&!Jr%XlufN{;F^R?(Apw*1FkMu-C;F_X#QFqDBiiiUBwKa#LV5d z>X7w~v_8{WnGAP8wOUOu92!+3dw;VV(J_i%xF*Xoi3Ud|k+)$nz16&8Kto+sY4hJ~6iwNls5gJ2c^CE!+?3A)*9qu^et|DDL&HS!H`t zsa&0wEUjIMv^4!~3!hRi(oSKPhid@ksX7Kv8xk!7RZW4c&gaaPx`M(CKId zgY{QQ0arU4@k39;^r5<%W~{Hpo<~H{5`Cb7=(qPjsZSh~?K&4xzPiHtU{B$FiXkN+ zt`=W$>M2b-p%b@1-#C!Q@EcUL1FgH89$SebAHK@`Z%z^lU~&V`)}!_#$qzvhUne4# zZYx!ujy>}FOin!_Jhme$$29AJg>Rw-dY@V6^e=B}{Y|Lba5(^Sc4mC+AAkOhH|&1f zwD9VbaA8zhzRgH+rx^VY3ETIvf)fC$r8iQLYeYW)JNcyL9r=ct4QzC!#QN?C)mEL1 zJu+tXi{!a!*p#zE@M7ovpb49C1zqUrF?V50FlEQoj-q~77Pm}C7J8N^sZO&J5)wY{ zhm`BunC3C})9i9FIOTXc(;6{yP}cC<=$ZMlh-i9jWx4pP{Ol)rl~Wnng!SGLx4SyS zn2PdLOb+us;dc#;xx|p<%_5A3M9To^_I@hp=@jGqvWw8!W_*o*YG>bEGn8x#rW1_#T`SvVIn^6KM|?kKMACDP zQAVh9Oc(VchE3#bN=693`t+E+Mwv*fJxz=xILGmZAZT9lwS?od*zX6uvPRTohnFQL z$}R;zBHYh6Tb?#c1Rb}!+O0T4MaMc_|>KI&bU6M;x?g@D^RzUFnlN&N|P zZ>epBxg9*T4bCzCQ~981sK=+9UIV~R{in&5TZ#08d?t?~r@X+husCQ13|!xUv&n;M z)u?RS|CAU1R8covo1Fw0k~=4a#IFNEABwW)C$In<`+xWZ{_%yI0uJ(kj!M{eEN;E! z0Q#5|dr&6e`=YM+pF9t1v(~5Ch^Id!4^ngMBoAr&%psnQWN1HonQrnMv>DI_ZN}O+ zC;jCO$PZidY@6AW1n zw*Yp&4=E>$4L(D8#Ym2KjK4^#tA6fqzV+_3tH=AQtYVMRsDu0W-{9FN@pn&QC+5j3 z=p-YVU0DV7O(Sv-i85|uOd>OiGj3;H_gne4>(Wd-e@EUP{~yk=@%9JRaLKb!p3LSkC6X`q>KGbZyZol7T?}c-qdMm?picWay6S0}T zzCr$}CJCGbdnHa%l#SC#7L=|EkqFCwwB6zWf&YwVJiehWN)pmMM>#zj%pkaQ?5#bX zuK`uq&ntev0kw}U-T*8DV#=f^r^M6{bS#VpiXp7t79_bx9}S2439zAx>g z?BNaai@vc4)O#<_OhObn%XE;}aMpV#K-#C_Ju(km8yWp3buI3M)*JrTM1iw->*$g5 z3968}^5W2k5vT{vXlS`DFLqpDm-3b198ar$>soxN`h+6Jf;9n=v6A&x$>s~hxC>d? zJE9+h@bd%7DB;DEoE-DZ;>?esu?cg|Jyi-I1Nk{| zs5!H;fT2)Oj)b0j)S&bp3~(c8JyrcU!5RF{GTg=6GS98Tg;giwmq+chXC1+0_()%{ z@a=iK&5I^;n5Q*!m;b`(G|df^@V%U{C;JS{{UsMQfH)CW>>m+U0tfLoAIH zgq7+@q5=h2#q+8#a^+`djeEt`QUG>WayEU`MDyUPr$5}$m;TzYC2@5jQM|)O&%9IG zRtY2=!Sy$^x%vHMKVg`~(1Pfb=Wy<#FIN=R&Xn_83Ncv4LgMoC?}CL~rA|6E9>g+V zK8Jf92ZPMyt9tuidDeU`c4kxbrT&@Vx+(j1oONaK(}SPy+wTuXE?V{&5||QH+1j%L zeAN9NeGe4DU~yU1%1iC0^gW#lXFr}T=X#!Z^r3f3vbE@0NxT{%G$%DPDlRVe zO2d9U_Vt*_`z9pr7QEpAIQIF~OP@@GyEG~v7Q26P)*UYD2-T>xi|K9eVw|^~|7etV z2v)v0k}>l1WWtU4=^q0gD*%C6(|B6z;2tVN-KI+PwKLpOqOwHX#xC@Im*zGc|m1|Tzj)=lU)9Ia>a-h9$o>iG} zKoKD5heFQeIFu~+*l+tJVj*?SHxc>-3GY7IIrx|jh<-7fa4(9^^LGRM?i*Sflps() zN*jace9hA9$FKCSs9r3%$EVl&B*D*mH?dN|-E*RQ>> z*lrC)_3wgh$DbTixj3`MLcWH#r^)ZrxHwggW)vR56Ryr7K;Axjrr9X))DETls|`sm zn!!pU=;G@bHf70f?;&j5>N`HnwRj~T*ZP+~Y@-U=Uy95 zp3;q+FoIV~+}HfXTw`R-ixDOW`iR$FdwkG=Nancdd=}{mH;#1 zmu&OAM&)PoC`w_yFE~!hhkAG^{RyJh-f7+U3S5vwwvgq?VICz7a>@z@dCC~jbbh<%J;oe>jc@ndl(+$i!7bo6>oZRwx%I2Q<`CQD- z6!EA{7hDvoXZeRwBFu3lIJ8hV!p4;)c)2Fxam{(;sD)K`4ROuK=2#fWG#Yk;kpk;5 zxw17t?}Gw%k2_TLKjX<$Pair*xBnQZmgE$_e|-G@LFNS)AwZG&e*R^O0u=X(&r3Zj zt!Fjwt2&l!;DO__r4Qup^Q~$+ZCHmJlfbTuL zb!f6?m&`a_84X}k2SF{{TAqy#o4tT@_B8qCaFq)9U>>&fj=$vC8rBEJJRM{`q%3Vx zu@%$Zqv&*CJZBrRpj;l!CfW{H>B1W0Ixj4W=T`2MLVmn=-nJ)qtlxvW=)#cV|ID%=6lmE;x^x1yX zx2xem?tBi#R$Xbv1ZrZ~PUj}U1>QKKBxgoVj4x(4-cix-1Pr_bD$=YIgB^XT%V?I$ z=W?|ddGw1-3=fJTsM`-dufL&df-@^5t>io%?Fm6o6xV#4Lu#@T?ntS_F)y&-JyU11 zt7E*X#4Yr-&!qMTRdcqUeRcQwC4(u^Zc{p%QlIE zf=5`^qIea4IqZNtW+)*~BH8)CkN02*Fi%eP0UsEJ-F{(S%Y@Rp>z;eL`}4TP6i5Sg zu@&^kf|4>~U8y*u&v#qSe6yXm&u0d-y$g{DmS6?d*1IiydFrhC<45wq_@~Y>%`S|M zg{FokPhHa#;ceGof6TiF1*EylTe{egYY?@xFL zg8@49e13=5a-5Fuz;}6HBm_9dYbFLqbIxIlyd+5pHZEi7)VYK^CB?V(T`=-$D`0P90Z3S)6wfvK9{tK7| zdp?5$Y+syCyU2^tEyG2P#3!m653GkQ{hyy6jAr%4&>sis5%_+pZ~03x&K1)>!UD`d zA8z{3moYH9%R^UH59Ujx%r+EKKh)`}e8T>ih*%klXt7vswUB>WZNQj&BVZj3p)Xvw z#NBtw1y#bTdSgGrTk(57-ASWjql}DwFjaPnK%uU9ikCJm@7kGuks(59c7J)Kir1pv zO8xfM=QIrCu!!tavq8${n_cz&MaE0G$?t^K@roN%to2)Kl6gMW)T79`(KFQTEHx5o zvCGA5^==wdFbWQ9U;Z1t3Yg*(k?7{d&O1^coT0Q!5y=aeA1C!1F=!GZxMiVzzROQ~ z;GT)I?aqK*NqON{q}7Bv#;*w*fV3LN0|dN=)v@vjw`@!^c;il%9OU3}(m+ z7d}z%VP-5Sy=u4I;CUZ7wbm5kF2zKTmukF?e*?zG?b z!}`YVgGG<)Co~lG>l_AGNj=NNE(1FAoq3hkq4fT5k5*6Z=lOo6IVFg9YX6H@2QEO7 zI|82NMHL<6+-dc!Nbtjp`#tY=z6;yB)imZW)N$`VlVj?l65o!bU%GWo-G0ROM1ew5 za>}>R&jJS0lKC=nJ04elc=g@jO-8;mNUg?~N8^}rOl8*C;I*Gy%hB0oZ8P12-SZ1^ z`L`*dG}n(W8?$({(=R^5FQ?L8HVqrdJ%Ua*zP!H8gQ;)#p^lgNf~u6fC+17QO^VL4 zBlp|Ri=8PC9YE*Y=85Wp5K-pgsqKXZmOor;O!I?ndB^%Q>zpy8rkVjAr!0iN+w8n8 zsYyBCT$p}k0rQ&a^XkBxp9*Dq+Wii#zpq!?cf!lkd$eV*P^_grjbEzHA8U*=YeXN1 z=47Py3ft7LR0=O$klAu>T;Gf-8kytM`n#kN5$?9i1_< z@MiH~_g&Q{M*Gbkd-{<)$C@e7tTY~zjiaVImS@KR09>Ch{tBVXb*bB}w<5re@K}0e zdT4k#k=jgK(z!NxygBdml`iggBdt)u&g$bm*uN4z1n@$|L(VG;YWQciujuku?@!=^txQW6 zwx?pveTU`I{55<=@baZ;xA{s*hQS+^zq7c*t%N)0rLsnBTF1Uhy}RWAWsC;5$RyR; z(DQwg6Um%JGZy)LC!B zn>}hR=RRKWAXC3b`j%fw^-k>Zq&W8dyecdiNOMn2k}e+SL75p|)3{;{^UBJhv6b;h zE7HOofwYB>A8vxz?%WF~;QIphkdEw~yW4Aa;M1d?IgCA-F9BHXyVaSjz;V5!l^gE-+A+Pbbk4TuSl1KWyYK{G9;m_VTG*(`)?g> zjjm9Sz;8O^H9nd$^(LhQ?Z|k6vH@2;blkVJv=m7)e(%Vl59m0~i%tH0;i^iNjM=fq zs1P8iBND>uNRd0ml_)dm)?1^~SjGO&kW8M6=a|vBR)c#Z;4E+SwMca-agv|#8=ehfx$9MLSZJaJkveD~3|vXfVKhFg{Qx3eKOL4Y(N zaW6gvV>1Ik@QR7hsYH$G`spNzCQ$qt$)5|$;LVI)ffc}^==oG~PL#lx;14YhALS2a zM5=(DXPEwx=TU|=&(*g$@oh;nbrzZFXuhx+MUmD|PLvQl^(4?p&F8Q1#3a$-nb({n zw}-BwZ6cbP>C9Ev#E8a||0n|d5zw)ZA4c-T%!Y#_qrc|?B^V`NiPGO6#rIL_f!!$O zJXNZLgpwKV=jC*U;5RRgk(;z!wt} z6A`GRN&qPQ&hdn+{3dp>w2I9y7=+l9E%wUJ#Hp~<-6>PkulivMZoojquvsNW+(S3N z`;lXSJr-SR8|S#WwWt!cbo82kw==||3_cEm46GQtGh4$>8ZXt8mb5+_dU4mEI1D5D zW3h=@+#V?T#wNT$|6kb1?Gij*3m>1YzxKRVF?rMZ> z?ojZwhGTf57U6&Owi8DSY>d`KPzbHiL`Ff(KAyEdmnN$(LzD?>(}Y)F*LuW`+$9 zw8m4<$3)SxOpcaxl}~SD?+l!;1v9Cn3Do;Zx>1=tZ;8hC7Nvz1 zsJ*p&+M|?N%UE^&)Uof&E9H^EhH2DPPiBm5bhtR_TEZ09u4=EfDbSuAg4=@?KGi zrbE4md3j}O6YDr`7eAvi&&x|GWei42V@+T74SH>})648pZ#<-PXWQ0J6<%akZ;|6uDr&e^Sb@Fm`@A5gS4c-# zWDF`USP4w}^3tQf4sW5I4f5k_xrxQ&xIf{yc@IBYO5tNr(7%qN;!?tVR;gbaoUwAm_39qpGN1^z8&>{ zYt}`^R?p5C@jbw2Ppj4uqk|uQkgzu`6mZVbMx%)) zuO2O?ptI6d7Z7^gG4pUI?zr?GQ+j7Lyvp4;rEpwGDk678S!P79)hE_~@nWg&^f2?z zK~0~UsZ-^VB}-2A5Tu%t+?!z+54{ix$`C}lT=*MJuIXsZC?=v>(Mc0b^#!jx=~heA zUsYK)tC{;fo0U8B&U&n%-%pg8csjD;k#mZcO_iwDb5S$?W>0&I>KNlU6T-qp)$Y9E zP*D@I?hcD#`|KdG-eOf%4?!UFs6d*Kpe}hwW{w)=3?BN726CXh%%wlfvn`?EFI$8}Zf8+DJiVo2kX>BDqR+Id%2ySGq^6wfrFY zW6bx%khyt({?a?zkDOJ_`8**x$v`}}s;%b`@qgjR>m|-RMooW01*J_cd!|9PPp1%4Yv6G#DZ&efVvb5ZhQJ-Aeep-O~Kwc(bTu& z{F#a6LnSv1Xd2}f;Mz#Tuwpyg$sK3xpKS`*%=LSd&!)@gFRg9r$#PC5=HTFMwwd`) z;p#U#%5;TyGp$0IY?7F;`gg{#w>tin1>s4Dkbh+}W@YPm3XxzVyGE z{G(X+-K|!=RPm7C ze5^EscAcjomI3(F#mi za$L$M)b_4<4TT+GkniqD^@Tv1`74c+J0hnx3vnrL2G__qhKeUn{@ z(nF`upG25nUZR`(HV;T@YL|NS=hM#*`mKp+?S1-tH!LtDx0l?$VS@F`62OHlYZ7SP zGudUKj5a*6_HJ>>-s1A6{^pW|UT@z5eP?4AC6Bv;{{)q9-adq`>G138uZ8`0YJj3_ zO4aaJ*JO3#6tF56>J6N(yOh>)8a2{6iFH5!tX}P*ZN+t--@(7Ghm;7dJ&=(yu>P&N zUia5k+610XTvDZMbVqoqjpAGsCsF^T=SF@36t#mJe0HnMxyx%mWsR(GgKBt^(Ch06 z1fSjW6-iIoO3XlR!bVP=+#9KOXa{$N9S>KyVF?FLcTH703_ui??YbG6z}5#>hU5{1 z`8an`DLq;*b@5M-A}z9c^?4kBlJ#0Fug14k31Xse95*|@uJzqO>-@iX z&mKc01RM>ea8^zgxi+rv2p|iio#4aBogU=%cV`>}+EkdpU0?h1+v-4Q=UP(Tv@56F zk%mbIl~d28OSt~XxZ?5FC3V+}&tpW^en}ZDlX2mN`-@Gs?00Bg10TNlT=qw3ulKfR z(oTZ=nBx`-9+rbm?z{!hJfrVjiHfinLrkEiK)|{FHPUK8U9dYpcSf^c*d`8s zwY}*Og8fh48$jOv&!oWnB{_-8QVF;{8>evFsb1liTO{xz>=!ETfFrow)OX9tE9__7 z%i#SYL?R3HGsKQ@O0g`&i*Yj=hl8X5k|w6l!PK+L?F-48q`G z)PDv~|54IdGfZw0pv5FFg?qQYyvnJro-JUbU~m7|M)|WOwL9UQTZwK+r24v%45Ss8 zZ3i!ynrvBn0pi$tLTnNgRGxr4N*`Mh!=Hfp1to{BBGk(UlD4U^-{b`&BcoF_xkW|$ z+i+%w(pNGaD*$<3AOnE78a zM53yj#=!TZZU@pdx^+RMUs?kt*~I9kQ#;p<{(mgFJ{Rn;gbaI!_17xCZe2Wx(BXY+ zrJezo5$i8wbJf-rHS7uZu|cn{0(ELcIP4x z!Hx@dLF+HPaSkAC3x~wbUK?|V)7tBnFQwv z{yu&B#NR*G{<{`yIMGSE3E`Mv8ZsDM2rHm%;Wt%nGaercKZaZ}?!gL7CaZ?fBG5aj zpnO*?EGZ=w1dy!>dwObAHM6_m%f`ICat`e`X0z*FR@-*b4-h|><+#BB(hB|MvlX$i z171`M&$eA$0EMimnkaPAbA@^3a=vNfJcFJo()6dK`yV)mz?pF4ZMQiW zNBzVAVv}m+j@xyvh*f|Ykm@#_>Pp{KWUB=9<%6U%yN)w5a12G_#_9Z5WdoPNEgrP% zPMxLq)0iMg$@(W=mS%ByRHC?ZYB$@+|E+mUE5Jo%W{%Bq>OBknyjnHfoJtCO!0lLf z_XCn4Zn1E^y~N9zp3mkl3Er}OSKj;wr-)9#?x6Jbh611AsI|zTrUsVi)^Lve7$g=x z)q%7W%u9X50oH!?!QY|*>HGz!CmlNL*VK`tC;B6pc&1hQ_0 zc#nbUjF43aXmPiiId%W}RQRr6=OlxP;33b{VPYm;Ph%xwc&`*^Tdx+r6k4~M9sB+% zCd7AbM6$WvmSr2^PYsBOg=3utbOc}|qz2v#+)&Y7`(jN#cZxYcjn?cz97$SoyERFf ziIkC*=OoHJ4u!Ipic*a04QTu4e0`3@TZjkQ$+(BmI*U-WCWr2JqSAg{5gYmT#w{gE z^%(%6SMw&gw=NzPx9ASAH2ZQNg3VQfQj%&LU{{}FWDI$U;puNo1qkmRd1O)!~Y z@D8&5;HH3gJRr9m@_IP6<`$o`tz&BE|G33jowqPpIk;=1S|w9k77-h@t#J!3J=srx zKe&UK5ucmn8jdZLotT@hDD1i-zob=Z-vztLiC;|(;mQ&sIp^$%WEAlO<^y&XXLZQNgs zEMK7b)Z~1(s-tEpcGP(8asd8*`-~gZ96FF!K7D*bynN5v!Z!ub*(>+)Z(PraFd*V) z=;z0 zEBBP-#5%A`GDb+9flV5m0I=IyT*z7G!*85mhTIGF6y{?mp1$S{ugiVAxTEyq1`6OK#qH2lUUrcA@h4+k z;_KvESHV9~)IwVFiw!rbFYs*(F&i^(zt%*+MM3jhbg&7Ro*$x&?3N(XPN2$sc7$g{ zospvMHo$4u1sZa8(a-lltIMB&Z_NEti}TP}w&!U|m7#fq>c&z69R8@sI+9#8-hPwt zT)NugWX!tQ{xwTn^+~{!oTz)ho-{tJ$lTHLtkbRxBo~#AqoCzE-E6lF0n$r#1C}FeDy5^Xu7g%IB9zV@UMKta%#5CDt*p^Z zaskz!H9py-2{-83?ufpXYM;-UU=~O_-#kq^X;7z8kI>m=z|^G_P5b5_R;k#c~27ldI?O6J}HuOMfUpuGcVGJ z3kB9giFaamT)1l)eH-yJRm@L3ct9*Kgk}py(qy8T&veF#p7_vmvEPzZKVaLG&L>_- zV19tXQdig)bMHVwppWG+cnh1OkH31i7lwV-$cV;^MwM(OYNsqTbu5&f|87!)O2TBh zF+l?i8=>mbTcI~T12=xfcs-jN>r9Y$=*D{tYjP7KgjEN74$Ki^LM)KmF8mY!Z2YnR z0to3jqSQC`cprC*B^M z3{)&PZmD%mlmflGqu0y;1%uw-Mr41Xvsg+oC`^3;o}u(;B`V$`vlUP?34(h%42x}? z^zR50n{Q!%&nO8n&d?A+X&%`E+X~0Ckb)11Z}XRYfAo_dus6R0k5dl5B#T3H}bj#&ZmT6w^W{0lp8?8q3Zu%X7C@Wle9O0%al6@`0OySdcFvlBqb%q6Vmkxmwd}J_JR9h z8GBnm%+19=6ba}@ShpZajObceU&pRPB~T^eB@qe9cA@Qpl~aG;*|na*$sPx3(7U_t zW7lKu`+%x!FWhKGpAH=W-RPZp3si)t23@=*PhfU9Q*?I!ys~P zv;2UA49>qbBdzei+@}UewLyuYtK9SmU-+QNS)IMt&<8*)?wfXM<}6`JXAg|Yz@!q{ z+wF%1NL84Hp1$ju&lQli2^%M0| z^Ej=ImxsbCc;Kb{0CW3&5^$&n>q3jo>}G2hK;p_CdKu0WJD)%pdJlzs0m+Gi+#WN) z3VU#$pkNh{8MZORiA`1KaFVKv*!BZ7rKxzd%AwA_kU93p4bH_-lHyZ3(~ZHvJ)^AMMIEORV#J4 z)~3ZAw2=G2bl|B#8em?>i2c&48~~xJdUrjAPv!Spu6SVa%zd=*I>owtN|S2s1&*fo z4Xuj20mPv;F-&0#0^0VeoQWM^#my&uuYRa?*Qe z+NxJ?aKTyuC-p{0#90VI^!MCx22S|hUwhyq@DvV;<+rh;c?&g(gP61uf8G+Bctgv? zZWs|X`rr|VV7lPi1JF6MjhX`@GU|$im(A*pYK=*GoT6SeYg{|*Yq6E~+ojFZy8hFV zlTUU1?hgMVfydVbH?#gk5P!X??k#fiWFR&f$iA=3eXKuO4DJ=rjdE|S>PmMh8XuH-5O(37k1-AM z^RsPpup0$g3@)w`rcMG}RVAqC5x)cU2Ya!3QgGpT-mCE_7)cWon(IAH&mryzkF{2h z&>NIuUQhSx7CbyHnr~G$9o^<*(f`}Z6a^o^-%qCy9As+SVW4fmR?97(TMbIJ5lTS0 zUqI##Q<+QCeX`cZvG@&r5&QyQorViiV!o2U>!;5zT>aBHWjwaeE>HWtx>1KZYPTVQ zD{KkmNoV|!1SQ|Mx+5<^rmSJN9x7;A+yVX5n^(*PO>XDk+{-_x>4C+n;9{R3ofHpa zt+Q(Gm(Vh#5aFttxfc2#JNCgKh=Hc^u$xO4<+~cIe#lY%a@#>86VSdqqrZxsR~I^o z&{_6plrg_x%a`bPYh1hax(rrq_c_U*4L|1%I77ck7Ix)iVjk61x^%ejuAGu9Uuc+Q z0ZzBe596Xvk+R*YcFGB87DV6$=T0$8*V`u*KR7!9K{iJ3Z)mA-b)G5}^_c*YgDTR} zazh~P9raSpnkOmy3&geBX(>H7E2mnXrh0+Uhuzaylj;dc>9F1+saJ6|daWNCk=g-{ z+%nCft4W|%}J=4>rczvTxIz3SnWL{+rv z65V3?IMV&|0pg5*`F>&c-hgIJ0e+J@7kiJvNsMek_7&7tqTxZCd+cuQSo_sNc4iRf3 zKj_H-Q>?}SQ-T!I8ziSw;6)Q8Vmu1z5fQo@h9&6^)qxQE9S*;p+p3ubTTqRRY)OhE%VzHP`u}( z??fW=yY3Uk)$G;W_AhsvQ?%XW27H8{gL2wl^DZV?WD4XZ&-n7#<>HU*axwIXqwx;>Pp5S3G>Oh7;Szx>+=p0A{q{(bvo zE`=u+dp8h3j5lxJQXCveYrM5U}p}!xy-Q8n5anl^gZg+xk^{|g_ z2OjgZIse377u{#{tTBPYEsy^@x^k-06`&k#pR~ zfzjlz&@DQYggEs2iULu)^6Y@ zDCb;6KCKB^cVchg0qKJ)HYzjGlj7ym;+KtJg|X8kSkS_-n1h;3*Uie?R1OSCTcl<~ z#^@EFvINBCX+@_IQjAn&D^(!9Ceh$Y{S;|5u**+=G`#?zUBE4w{LDdZ)=6wc#&l!0 zU<4Hu8xPINtLnb9U#WhWet=5fLjjjK+KmcAL9TiieW5UY&jf@94lwJ$1|-D^V+ag%JKmq0|pu%?qi@Db9q2flq))v4&}B>VnL_=i_t29aKbQ z5IWYjL0(I_MM#fstpxz-H`}B-WFfU}JqJrUE?v9*+hDwx`EL;CRI!OugV`hO)h}PM z0}a*W1ly<$J>-Gnf6`?Z1ze3@p5N@Y{`_ihuW~r%>QjRB%vI!tRKt|RW54v_UGmZy zbkUEL`9tA#f;DCKu~9IcAo?b}T?9=DCdD8fvN>tkVCR@|p_w%5FnyrGV-Ra^O1@1H zoBS{Tzt*gS%;3bH;*H3_ zeJilaI+jzZz(Y-jl>ZL7dwl9$69nZ%E) z0r+KGn$hAJT9MOvJNX}4l{SP~H?!xI^NNUUk8c0(ptz-!t@I&(RHf*H)OS$D;!7%# z$cDNASXAHCaoI6u+}t0Y-+;hzXM<(34cBwHf!UnDlW+O#)N(dyZH;duIOu%O>(KlC z*@4{Zr0`1BQHgNbu(FM9u>zVFApDJ-DDL%cdN1DI!_H?6P1}9Q+~yt08*jSFIbt1B zOm;K;3*Yn|lEmRh(m&agakZu?_AXs{NzCiphz8_mb0L~9h@ziqT0=O1 zE$L>0cIGL~l!!$Y52f`$ZIaAkARD2=f;ve1WJ74YG)<}Eq!*)AvNm7zbyZDaxf^}S z>Wvtp{v+5sq5G`&;zbeWoUn($oGf9tVEsV4C-rWcaf)F$BB(n6`r-%xJK&Hp#*S8mwfFWCe zwbu}moGR6;M0I0@Yok2Qh3+$`!xGV{O2+{B`oi+FvqtPQ`sQW;o0tsg)$P&emdNTd zQWjY2a;+K8Pp3iRknu$&QgAPfbk7*?aowe>;rq?ChrN@}dH4A~oBohM;q)Y!BiFX6&L_Yoe=i9n)r!p)}dRAmIQEAU~h@FBU*t95l%eyq@zsw=T#S zwjk3~JM4MFPmZRY13g4xE*+5evW*NIs={?b9HiKpscn%jgoU{jK?={fo>H~ekAIU1 z{Bcf#$uaEISB}GCY79`!C=-v~wN{{JA2=<&UO;!w&E7$V78nnZhf$8lw(X1TJFy4q zVS{7z)7=#Dwlh)5s(zpnp)B_D#%bY%G0+3?wt z8+ps@1ecAU9`@a6#&H>%d9>=4`%gX+7FbDY z0N39@XC>CVHU;K#LJ&v{T>$<%fsW18O;9rKxJ@CM!j)<^f0s|_^zgGn)`+biqfG(1 z|F)_VH|idjFK(Q%IB>>Dx|aXjW0w{Q5V$0yVgA<- zbN>ap4cMa(l>C=|Un?u^e64>%A5?Ditsj6CZHftB06{7 z@k_e+YS%s({3_{>7b#-H_zW9;*4FYC0$N?pFgA<$Ka05^AaJ9{r3%_v&D%3e1$2T^ zI6u~SVd6QKcX9XAfMIY|Ot}E8khAlHdA8$;sgJVZbwUQqPv4>QN0}@FF4sCqON6`TQ8A@4VdBEmI|h=v4`yPYP0*~bs889p#I z!S_$!{e8xtzPpOMsqjXPRt9u?h-$Gv^?~^?+24J1BWMmi%Kxb6!_|nOaY~_}rZ`!0 z9NCjA*Z2@{V^U6G)0GP9LTUFclHLW}#HK?!+M*Faql!pSOBsCp72s$6zQt0qqNo6_B=8g0NKR@Tn z@F%wE4KkS>d5GI*U2khny#y2_fUZqH-)cGR`CUcVoVB%auj1g}9zy#5XZ5Xur-Ew?WKA-BqrVUZU^=IV!pP4= zXsWA&t4d1)&MVgA5)>&{I_AY_;{h;>Vk(?&Jr_lKx)~f2^Mjz8UUb&muet(K2wDUg zn=iBJ?NzUZZ)*n378X3b&8Yr>+YK3;YiDJbpfOAslBCs{xP;l=AamF zBcr%I!Y>GIAlwbc#kz`mt8a2vJM7^RRA_X9DX>$ouLt!08! zXfR<@JrWdJ11Cwd6mHV&Ns z4)^%@LswhRx*@iOp;oED5+&qsMJd3gBI6idv8xMM!ff)pqBQ2$p@g~snrN@_*E0{xgZndk@MNCFKU93z+Hcw z8zL)eJ8%55)IXM>|4$#!9^3q9a$y!=!ODX#XAI}CkuzNYgs8`$DomOD(?)n$aeOOC zep3mz8l)PTWbI0)7&8;W*(e+6O6vS5sI}agdmkdDVDtT#LMnaR>&Q2#u5*ZRt83x5 zS0;{wk%t3BFdz>PoOGQOX5H$U!4D@mm|RzM28KkVG&g^}m$WG6GToxs*E#BZTA{q} zh>cVB8qJq*zOvX$=qzC$MS<2MyzAz^KUrNj*g5yAbqQc)t=vFFUqO-e>?0~lf7&PDo4|C<2OL0YL~w9S0O?0vbAs$|wpdQk1F;ASFQPeTh<36zm|K zQ9ua?wya1pvCWfT? z&+ss` zOBUh3l*%-LNW7(*_s&vv)6O2 zjQgBY`;MSbKOvq9Bn(@izfS-#kCsLUGkQHJEbSKCz}4#9 z07)U|w2+r&$+X`&-7m5w(^sqt4$*&9n71#7l97E0V~?&+zwXlqsjE-7cOMH;IB*8Y zJ8*1+2dO3cP zt4E)_tRpP`zUTm`ZK*B=ZCkq8eQjlbC{+Rw(qp?j(1+!KS+49;~Vl> ze$fMrd0N8VIxy5~#S_@j08lF6>^v1BvbL(GynJI3j9KI22Rhan=NB(C5u82c2D2V} zpCTro>`S?0o-c;1CDmC7how9~J% z-36#$$Aq)Bd#v0IobTEeY8cuh2!``kBq^k*VrOUzCagP}=Vw^^LH=hV|M`IwVqo+ z5U27FcZ;BUJvN=wU))w1=RO2`&cY=PItG^UJm6to0!UfDJr9bD!PoAJ;wuZGQ~2W2Ab{4S<(Qs%*PKsJ1&Ui4?>;MxC6h^G4M*^&ozb_f9|3$&rcM` zbkin^Lqufrbv3{X4Q8eVY#{zl(&3TWba>?dbTj`SF!}!hlmCAVOx~ir^a5ZR{Wj|8 zY?wI!J^+cf<=wp-x#cZDqNuAw9r-%|a|rM-{#Oy^Aie!N0CRfV|KCEGPp>vN{sw9? z{45ghK%{-@jL`nj?Uw<0#Rmkkf72{Muvr4w`2PSP3LD%b%yg^=JKMy>R+kjUeZ<*r z;y(U6Bl+J_4xs;lbMTY-xrHX@h8ad|X+r_@PUIsPV_`GAm!AIs;sbz>U;Ha;akC{2 zmYDtf_CuX7U?UDd!GK91TI35y9Dw%#Lnen{%*XZrfJwIT!~Z@p&d2%iZNecFNoNpVY zM*iP*kTe6Z(+-SL^cEHb@I{wYx__iJWA-DI*A^-CGKi87$ux7!6x4 zyjvDvzfPkD!j(CF$prgmxMdj)7c!d4M6kJ~Tv7?w&t9Vgp?^jW;1BJ<4xr9UtWINRR zM5weiMPCRli`u+U7{Q;(9=32Z+0%{V61%+7w@vl~hVY7TYPAfAwJ8d3G0eeOov*CQPYD} zcL&3=JZWH(ll|C_bVnR>8V@zYdUKs9ED*r*Dx9_0==CcBk3vniYVih$x}W4+@RMUh z8JvAhabpue2ZSH4MN8v2?j$IGv$*k&v;u}4&h~b|$!Z|kjq?21q=kItJkTvdxJ-5# z8i-8l(m_mawRJP4Z$pBVgVfIxZhr*T9p=1?T48|EZ-X{SSnT`$`r`VGS;DAoBvL&K zhK%F9#uK`8$3iPIL8{Z+_&FuNeYKlOS=h=AU^*h51>S@#rz1~6u>8k6~AMEQ|<80eK|N5*Afxl-prsg5f{LF;}bn=ti*Wk|a< zHt*L$2$b`p9#S|m6VenWuUlEfgI;Mpa$acu$nzD@F2Y3ajd)neas7;}w*Nf(-8h_q zr@2mc^)^xf0+#X^^-eLuYTslFpdmzRS7mo2jgCdX##aL1FzZOZ3EtLViHoCA65!nJ z7QyI7sMgy+X3cE%iv7urJ5nzQ{iGuX>uusCXErOT1Gm6Q^Vux|7*>BZ4-T=;YfFP% z>LV2|vJe&V+tN=;1QE!fWF3b%IgoKA!dy~!uVeG5c8wQ2h57N_aUjRfy$Phq;)vuRLbTD)1}Miv+2{pA9Yq#Q9DNIW7K{u#Me z0bbfs5$5*@=(j6mXXBCPocwq|8AvqmaSc}5G&_H~Kb@NZ@%XA8yGeAKyCcY++IX|B zU-3C*Th;b^ow20Sw1gs~*)u}uqI?Ny0Zkrj(tP;&-Xt^s(S@j#h&KKH+g(*>loKG^ z_kC_xl_ui!<7Eio&a+Og%B+dg1#SRcHgjs|3?=DK zFb_i4ze^i>H<@L?#UDyF6|1x7w@@fs95;LO=OS%}11_LjSMc)KR#n4ag&%24#wm7y zrkT1FbZPc|2&zZB*9Hh)_(ZqA|2jW#1PS+YPFjq7*=9^`VmaaJPf>IhA+OAV! zYV1zv4}7*b%T+KwLm%)$kil#yb&Ek@Y61#T3MgeN23E28hu4t!9lS#b2LBf_gh$#hm~e0(TrwaCM*EhPEloX28zAAx%Cqw{CRX^7&XH6W9d(*x|OMP9aSKP~2hJ%VISD$7}& z%~sNB0Yl@0U#qpqjQXfHi?VmQXhJPD_a_K;M~gO!RJ1?w(@{V1(;p}vn~v?-DG*|w zZmW(4&Cs^SOjjEi2*3mb0TvD-HZk?5)MKp@taj(k9Dg}mpMl^foB9WxSE zTJNQ>gv7i%u1UjBmF_89nZyfB6wcPdc$xUB0gAAEd`zd;Y|ULT@bTb#G(tS`VfW&C zXlEn$tfxcd9SwP8?aCX5u0;!Q!>`^&P#*=SCS6xH<}XA5e1FY#qgL^qLYw8c=RXOW zy;0yP$TOkTwCNnbAiq=MLFc{n?g@s7JE(a_cK z2Y|ZBifKy;VWut>bpZse8%-hh6m>A%8p{Ghitq0Urnp}N2m{DP=O_|8y8?#DbI|p~ z0F6YucDH6$DrqwRvlx2y1oyZc1?lrWcI0hf$+ZM+S~AAWMoRR1G|{2G1nmRGqsx`` z_4JsvDXAl*+9-Kd1EoSQFT*I0r9GDuH;OjTV3O2-q6Ppx=r=I3FGMH~Zg9vNU_qRO z!}ulE4!828w&>|P(-#p7->)f-9teAKF#>i|SQf&S^QDyM7hJ2NaaQT83#&5kxX3XkO0Zp#)&f=a*4JK%wD*DV!k z@k5?TC4i;jt|6*>6dCL-0v!Pz=q};qSNKYGjY01q%;uf-qDC!owEChMc!%e(aBT#BfRw6sfUH( z?~usQh8RS>0QjV}=A@KFz>7JeyhV+^dO6m1*X$dy#5R^aA8+S_6Bbd`jkikeVL7N# z2rA8AFUxFl3x3*Y*55#NEA}4mrjM1-2j;IWi6C6`Jv3(G%bNvZRO(zhy4A@G1X9+} zaHISEj?Ay~SEyOz9{=#wKR>V;?i=!L8Wdk`(1}YuuzFfdziUsfW}H=LTGh(ELBd<= zJ)>QnPa{v#@%8^qR~@(o-YL;v=G4X#nk<0gXNK_y2X>j+Za4n(6cEtm4p52!U$-vY zza!9!C3xlfaqq3J)z+JsYlBb0yloKQ5P^6BGH(A^!vJ~#HRB|(2`!aQLqwQU5$pkw z41Bfrf2t=)?*xMfTVR&d)Fx3^gL0tCR!S^`2D65MB&kp&fX7wYYVO$jrN8>VPV8bK z8bMm_wS9n(0VSZ?JdTLk`k^`xZA7}x4nyWUVuPJTC$_*E}o@e6ioMZu_ zNpB+$GR*gC=_={R8KTQM)d$PBEdvw`w$P>BcnQdVLvmG$Mk@d?xfdp;padf;IM>;@ zL&$(9nS0?#@Guw$ZCTj$G2ipfYR`aRy}`(*dknLOo&U`rd|Po}^9p5b_&*u98fBd!C)eiO8;*`vHh zSm$0_3|U`H-abagD;qesXlFl%6jWw$&5 zcfR%!=PbxKm$%*!l zp_sL=LQ4AqU_XY#_>Uk+ZJHjgf=;Hns!3iQt&Q8?=mP9*Cm$trFM?V2r`8;3K;kqt zZ2wK4a{TWEJn;0MUOP7Y@7$GG%U`WYr-%-@Kh8`6;sMt3kd?mtQXS^qJ?!q&O=#y5 zr`_(e#j-|;>Mz`<%ei!GRZsw>Mq0|sH%JUp?+VQyC8WvY8lkJ>VgO`_vt5|UEt&op z+5iN!BFt~Y8Bw|75@6o>1MZY-oUKBFmw;%&xxJfL>fk}{!5w`9>x+bo*AdE1%k1kt z%6`bE+>ztRXubE+8!6wfMM!7nd1|+^bi)7kaQ8q zHFbq_H-h&YFcd$(t%!0f+3J#$`#byHN?_81YwN38_b`1#C}6(#-wkpeP3&dMq^p|Tqm2*T`50ZNiY`uH4=5Yje$ui_Oz z!xZ`4?`i!{sM$ zTadMI-ZHCDHIR)H;!;nQF3a`$quWhRrfI`$a_gGB8C=UH+ILj~h?H)HyOr)`^4Di8 z1z(SgPy+97L0)-NPavc3T$a8HkSxHepJX(bMDoYqa*i|8=GESg#@%vtAExBr{??z} zgtlz8GRT(40spp`A-y8w9}ZBs1}Xi# znGC~|7H2~72Gx34{ig+$$~C2;ffebyLKJ3x%k6)s|E`FD=3jmXT?6=UXf}e(3fKpD ze?Z4jxvnd5TI2{ z=~SujA=aG7<{uyVA5su}^bV6ApBt;Ab=3I-VtrIg|BZLQPvn#5gr$O;6z%6*bj2A{ z`}cWw+y#-%BrPD zkugu&IS`4Is*Fg-g2m&73drE7D%FwIJI*VNMA{P2O~XvQ1lnLTOT!&Vt+U2!9+95u zVn_{N4?5twHna~nTPrVOu`hAu7=B%7zWlM9rW?ILvYnxcYcb1sC2I=wwjmbu;gQU& zJCWP=8&A(dpV3BW&)3k5=Gu2;qTB`}W}n`6U%=N*F4i`<#{;4O%TF3{HMzHp4bGr% zrh->okGfT`sVp&ja^HF>96CN%EX36zu_V_VmXC$vw(fNlH(SFreWGnkb$@<0(m%LA zKBel270zOMORWKn{@@2lo^){-VQ9HvtIe(Oq#I}ol-&h`C)HKO13M|Z2>r41K-c)9 z8)7|YRAjR1BN(V;J6%S;9|_P8?d5Cn)@l?aMc!vg5O*)Caz(|JPgB8G)_CXPez{Fl ziz?TmJ~V3Q4;uPwx{H9Ddw6XmbJ{S{#W9v~hc|Ho{6ktsLH4Df`ds~?e* z4lnhK^SmL|JnHj0{}(V`70?$Gud8dLhZnJSU_Wr$V`FPT3g;Fcj7h@iHG&a$ ziYLRda3oyZ!F<&Ulp5HHeofN6vW!vic%=T*b?8ZA=2^SEqDAtDi5>b}%jMaXzIXM} zx)9KQ)3!J0(#%W3pSbm08MFI61qk%!EjhGmqX_nEAR&uOx-`6aa&pyUIv0(Lk2p_U z4ce|Pg{z_gSAlu=1SUHH*wJXBb;9BL{`alZVV6ZUqe6fPHEPmiGajuvxHugGA&le~ zXj2)wwk*)H&}2Z!I$3}Vim@(lnXCmQzFtUFyGX&*VgqJyd;f2Bv>!1s%b)Rwae0&L z(QmQCgva2w?=La$pMr-hd%3TS_t<&O9PBC7^xH=bINUEzvV1Z^TcL8PuexuYdrslH zJ2k1TKr7(HEwRz~=?di#@Un`26dywW3r`+T2r-zUiz%h74xYFw8rabfc;YbQ0ds!6 z*+<_#vhHch9_LX8S|*26yXi6@ys-hz66?YSn5A*Ns!A$ugZ*<_U8;~0Q{JC6YFwIv60i!=UZ&OP_F$yMstbH>jW0&bt9`7J1vbnRc` zNW54;MPC4v4}*nICDU*LF?D@8HBcnA(4p_}bk*mVj+?>XTh99{+m^r}j2>{c%Li|R zXiVU<<3q~JTmiU3Cya(p_1=*o|s0CzE zTwWUo|DIr7oDr6uyObUJM2b0+G-n3n3vHSmV&6Zk^BNw^7tBGq*!vKh$3qP`f&Z_R zx>GRmNPgs1$5PgeO1}C7@?Y5#kZ$%CeWKu0OxK*x;RU+`A2xQ5wx1ht(cqDCV(0sE zXTHG(-qiAiv&a}oGaLnmPQV+*stP-Ni3`i}S4z;3H5Z_wDZN1+6k79NVPETJFBPCQ z2t-MNe+$`@N+*ZctNZ4+{ehP72I?E7Rgl8!GstbF`%}vu*9# zRh)pnl`ek5Moe6$^HxZ{VD^azH5M!|9j}~gsh5>}e}4{RTb8wMzc)z+X?v&96VSkt ztjm|n{Z1|x==JeR7@Z|2pJ%+FS~JFI$Yhd)_`ET9F8w>%Fi zvU!(TAHj!b;F3wl;9AGF>IM~{r*x}2KkloYRR!K&K+Z`x5{d3jE*nEDJm4+fM{mmg zy7OMQ%iK^yWq+834AN)dy~TNhR$1K5sc?qsnVCA6b(}sn1?!eazFuGxqX5(5?q;By zmak|V0lcykRJ)>(0@P_0=V#}M#_Ry;jm>&Y(D9EoqvV_6UN>D~Bsgch1aRYNkxN2! z|6FXa`)gfBqs1MxXSVbXK&%MuKeI)2-37WPQrG?7j+OG-6{gRn)PSUF7l2ibY{05m zwFUh{ouxD_jvzI9emDA%_0bGF*K z1}!0OwoTDrVV#GwHM?pb4FasvXR_tkbUr#8?R7CR-|R~jpaQn00^NkECXm4Oz!WyM zUGfnUrF_nP7{@5Do>8t#{}4-+6&8p^U`!?fQK45&a~49(2% z8dRd@^-hAcajW?E8sLF6TQhW1XoKskF=ax^OW*G;T@c^Qiai)4e+!aAn@$}Hoe{;i zgM5XxVjmiKsq!wn*KV{%aoWwtQvQ^uzc@?zVX#^oe2ELjLY63 zkfhx2@outij_lqYL5?weL_u3yhfvV{ksBbptpx;ccps=l7O4K^KfoZe*RcZZoD%li zOYRO{=-cX#PZ!&5E89|=gaGuBKrM!=10L(GPl$gi#QfYH@P{y=pGm*u$IS{HQnO6z z(8dY~0@NG;DV~G#{(sc4+p1A8SEqxz&R}kCz(%Ry3g~vvI;t}VL;tK`M|ThKyZg!> z0v$F47qOoHqd--|b`s7Y)kOf9;!icgw5z^ww^ISgaNR|tC6f&cvcF`(YG{Q3*7}o^ zaXNL#X=}FtX&CJ)qP9_4gK&F5cdh6l)Cqyl{s&>aE%=Fqs4rlM$P|K}&|M#zpN@~0wglROz^zMOBNWepdc$x>?T@H& z`+HxW2DUQhHbCQmkhceLX6n9{lAJm**!-mQ?1vP#i%y$G8VSxnleC4+B+dCGu|ara zq0*MYN@9#3U7iO;pc9wJw-(&|x?n)^CbQ(ik9=qAhBA(CbfO0VkO9z-eZfQs-k=x) z^x|}_&U0ThYcSxV(`&ac)gl7Jru(>e6X%aGR%^&*YWQoUN?`BMyk43odB^r6z%pCxdDcg&Nv} zE-b+W=O7|)f6z9=(Hfu{91X(g zT-&xjr{}!3xp5Bf9QmWO=X0v+3QkcYmpRHtIBOEG^K%kgp$V`L$Bwn@7;neZ!I7=bP~M4VYhvHWVH3)5`MkT z#skc2@FVXnn!9v{?EEMQBi~8^Eaw83`Y{WP-QKoLk?^T%8DxztX7H zt<6gbs6O}hdGvmLGS!mmlcm>{XEoV<=F4R;ZR2h~5x)kSngVO~Cw{@|`^Yj@rbBS? zYkzn}e-5Rw4nMDt=j?54x7_8(dW9VUA?we)$?!2UN|IZX$UbN+*_RUTtlvWHU;a7@ z*lGRNnd8n1K-Xv?lb^8;@apf&Zl=ue72P<35+rz;upwQWQR&WK#p<&OXrB@RxPayONQ)E2wX|q`VkPF1k z_{@^IFT-wjTkh!1mj0rb07;P4{|DxsGIqD*?3Aq7MZQpeo*k?Z+@b-6uItqbSdx%C zM^#cca()=dO^CgNYAv{6l`^;wo>4`tqFUl$+TaV>qDo(?a0y!bdJIu!A)^voc?^`; zzyfthZV?XhcmG7_lx=}w3^koMSlNR0QlPRO&6ylm@Q?xly=b^+Qw04p(@a<#6UjtC z+jYPq6nd{@A#KqDg<-&9=dtU|&pN2O`!_A-h-FUdQKJbFF?|{dPa|Dai2_|ykQe0w z0~qukCt19eo>xVfArXwI8hEnfhlj?+N-$O*j zcPL$vU)Xp%*!-L5!4xu`qUZF}7Xb90m6hlJ8B?|KA~Q<)!+20u)Ah>*^lkI>LI>Fw zQMUk5Wn!(uZuQb{o+AV5R<3uygLZdF2+b2*jOzcz=%Y?aX9%;KI*Hnj=C!3~Zjo*lVEqfjYlgA{|hJTl7}2 zYVKcEaD6#BgaaeAGwiDFTDDxJi>lF{U>20H6v#4M7D2F|>Mns%1da=WVCaYJ>NRLB zUflchk2<&6ftt6W!G!XDi~vxX*tf!Kj7Ff%?F|Ox**!27Qb6vh@PhN5Z25`Xs~G$; z=Av=_skY8cHAgmy%B$m?h4F?@H?HcCFL1*Dfh;pb*JU1J*z~<7;S7M;Cidyt5vwtE z?KC|u1R*VZ;%(hjO2GsuQ8Wi8fk6Jpy>C1_TBVz0X|7s(Z-V9h9oAV;02IRVCG^59 z%!L9R$y=GXx%P#wuga5`G(goHcRh0!%w#)sWDdlm_)LTwnCdVy2E_Dps;>5l5&GCb zH3lb@^^fSJbz@H|mo>qexW}tKA@AJch07ktAC4bwdApnFzcbWN8P#8Z=-@ApPFAY> z@djDH%zt&Ulc`aO^VW;pqi>l5Mw!mC2S-+DY9IfYFCC_T2lGbQFFf|ELMAsyaOa4Q z_+&0qK$bPHoo7f@ zW22g|`Pws=m!0efw=x;Yqk)#F`T6nysT5aT}uf7=<(8mQQNmFb&o z+j1K!TEgy=wp?wYq{Wm^rcJo&Pxc_PL$YAHudYA7Wa_;|^k>~&fojZe%Z{y1 zCPsT$c{9!oDz7hL9(E%WxDjNJ(UdHA)^`!VnwF9?Yvm;JVsQ65ya^4-?PGIoM#GFqJ`nZkbaeJQJihV_Pp_d;~>@N>z zYj@n0anw7v>dWrcoz&9N<4jrcUspDKt^nANR2eoX^(}Ue@1R_Wy9T!wbCBsbe%8oyvY>TAv_P$1TVFgg{G1&coM{jk-s zkKBd1+wVBLR%s{_+w`z$Fq5&zkUH`_bcjE{*+B|vOX@6z9D9#{DzloHd)akNmPP_{ zbz_5y)Q+b7nX`t9N^|J@1%b}_l}PL<+x)CfWsjkv)h&(gpUzpugdcck_qp%F8xCs-m#XlS$lNj*sNakM5yRs|Ipnc~t z6s|5Avj3VcQEB0aY0FWn%!DT`TP07lZ$jU&(~Fk-<;)tDyFEbtMhGAEDD@scC1-5# zE6)nUFt!^R953!A>1!0A@19v9*QYiSs*^@$}{zJo)~-Y&S{dlv6sd7x6iKK zPZC|fP%{0_?gn)mNXl)Y=(sHckh!1)5NM6vsk+&HwSDnm$G5Z0U8IdPf>+R_3%`9R zVh+elUVB)?FD`<_@mF@yOAcE{g8oG&H?}jq;NqO!Xm3jxgKzcnBqD$~MMV+#f?W52 zEljcS^(AYf z-RUc0ZQb%+D{=Iuu1>agARE7MoQ=%JyB=k%Ub&cU*Z{xJ^-mAnm18P^?Bj6!6&SJ2 zEO8km5>IL_!SG+^ZvcB8sVS}9j){J3r)R4gG+nxMSohx0&ntJFIoT-RV7xO2FXlWLJl>L*VR1zm z(tl3>A7X#oKI`)mrAyb+<2Y&3RhKvobOWh3?G-2khqv_DV^y{*|FXv>{}p^EV)eiy z=_$H&0ecQ%_>tki{fPX(@C^LO&jndcSngQFjm zJ^H4eiAZiH_DJBO5A4Jyr)UdlMq$-APg$(rmzE7E$Wso9Nv<}Ri|~zBiDMX`dGUxN zYZF6H(m7Jh#lL{&{V!*DU)vwyXBGsoceGN`t}nETd~A}Rdg&zeB}5qmRKik$n16OH)xEvhB%5tH6# zDEA(`gA^+H3;mL)1i=Td^E@!mMicEt7T$AQ;*l}v<3GKi;Pr>aBk@%&UEV9BH(e)w z7)8l@CP4r7rH)36!`}N(=e?U_O7%-|f(U(J$x}{X2S^_NbUWY++ktQ~aZ2{FltlKin1w_RW85)&6%E4f@-w_OC7)*qabO<#eUx4{B_6xd&7?s$+0fUie&h zW&0iHndagA=FL-fMfksTYX6?Uh3Nh^yW$cdI7Uz4Tf?!yoQl|In+R&ytppao&B_|- z``k2dycu?xY+}KGhhve<^vVq&kSKiYT=oF#?3rgxjh=5XF0}Wlc+0&Npgd4vVZeln z>3UMfQ`I{+gVh6-(0_HO|Dyo%zmFgPubA_{dPIIB=KNdFfJgq5faQN`ZT{h|K(K56 zPnT`8A_;avq$QAR0y9BuqhZ=YG)*Q7S{X2z}hq|LQ2z5M&9Y$ zwmF3;uVg4=$Q0TnkXH@s0^m9w<#{b-8FvNK(U{d;`uEGAwLu8W?>*NrLiL%XCXs9l z#`8l?-GRDy2ylZqK}r?u-qR#O(s6dc!kQkB+ZQn!d5&j|IH!7ce$0`X1abQ-UY6jT z-}Ni@T74*)ZqigXq}7mDuQ^Y2bD`U=Aj$#Y%Tqk4*bsIH*e z=esoJqp3LGtX;R4X+fEqSEmhXznHR7z*o{WUaHg`S&!NkH#{4_(8%rO4U{tw(%jZ~ z?HDeD^U(cOUi>t#It%~#5T8CZpWowXS)!4aB)jkxQa$c%I6*FOVHm4aJ`N4K`dGxZ z2N;R3(g@HhA+^oeu5azjV{2pYnqpL&V&|uZFP`}g(;bh;%PdCPEMiiqczEF8ni!j7 zqt4#Ti9B#MRo@wOe@{lnHoErSSYAf+Gehes?hd!?Jy)j*o`JLK_&N1a(tOlh^BJaK zMfVe}oVyw$XAfoVmho33f4>)mGoM`wsxIU87AFCBBgpv}Z{af0al2^La5Bkfz``dX zAC$u{9YghP`(mo|;l1L96x*q5-2hB5Z`T=NoBw&aEr!-Mk_as)VqisD=t-nW)mA4D z1K?FMi~PLrsZ7Ql2eFt3-HZ7S;?$a8U@q4lf+UQ8z85Ykajs1ReMcIx#j#G&wdM>E zo_ZF2;XyG2gQSU`$!qKAWdPME(`Ae{WoVj<^)dd@#>sq^se$vlfBMJmXnjFMS)b%C z%iJ>@=bxjY$CHQI6H>8QtiUgJwgT)Q$>1|}`L+ohbV$r9N0Y(Kg%4~WLs$+3jJ@N$ z!d9d?J84SIh$B8<043?wQs0%Z>u%MK`4zb@0ZC~;d#4fy<@zrKK}(^~XI-{H@?KM2c50N0%v@AkM=D9fV>X zaGBB?7c|W^-yz{*#Mchd;H=w}v0cN@n?&l;@yBrZKl;|=s!FD8`ljU*A|j+DRVMa1 zC9)(YJ!)Ekeht%P8IB;=;EKIR3wjZs#<0W$O)-tSD@UpfcuR{uCtofcL_ic-r{ne(;~{+`D40u;6k)wTM3>^&^=`2Hm1mxg(!smFH@_ zQbve$z2*E=K1z&`ykW*aGznw;E6-JsVJnqOkaH0}v{2^3H2_ud)>hp=S zv~P4Zp1f#f^gG^I8fm-d`O1V={FR;`rwdd&2Oq;tqM<$*zknOxbqms9ZQxS~o3 zX_y5AVnw}D8{ACXp0pw^#To4OddiYZ$ZqP_#aJTWV4 zZfr0oYpN4gP8{PQHEZ7mC+qMX(F6CcrFd44^yMl8j;GWpX0-PQaEBBAVkLY=*46zU zWjdqdNuCuKCC}&CtdWisUK;!UV=_B?vKGpQ^sll6msuyK za;}N)XIPQ;3km(oCX#CE#=j5)pcU!-cM74!KgiS3fJyJG6 z`HHi+^kpE1?@34=vxS2*6_cPnSHZj&+6z_p9y0s%&M$G87dGhNdx1hAEgda;nz8Q? zMBycep*cZT45`#I2rSnJCQY#i&q*FLWgjWdhho33CmHE}T&%XYcq?voe z@`h~lU?%=rnK^q|QUP{_2h_1A?({?lyit`Y$Fp}na))e8x(?yK(!{;as1`Rnzi*K= z9pCeHS>wU|f?Li*H%NolL;M8OiuXR)^LhvY@0DvL3(3~Z_lkRUS(vGjhQA>7bu_sY zZ+x^QFYpz-eMDJ&zn7`rR5LH?8f;8B!BTDtw=p~n0pHU9^+zB(Qtu?;>rupRx zH55D9i-p#eoK80$6;i$i#@Wn0JGXR6cO9T6hP?*~$w&?Sj`I?T+GYTTACkf3Pz>Ho ztPdM_0~K0gj0H?h>$vYbQ1rrX&aF^+BNLD?GC4Nu#{8m8`#0P=ZBn;K=MW&yE93c( zh6wmtblnHJ#`B5duT*xXGnCyqPsHy+Qs853@{7%P5)7$AG{Ak=Gj=$wu&ndP8Fq8= z13JOmM?H!L6n95p{%F^^oK>Xb5xXj|)*~K2k3b&wJO(d|dc4N+~nh-f}ihi+j5%%J4f-sVGmmg6j zCfsD}2l~yL2Im>~SAhv{sZt!-thA!Kdt=|Xqf%e`bd?S|G^kf6#JLcQe9KnA6-dOK zXrkF3D?!ipy&UlATJ>~P&fBlJ*OWPADi7iLrRs}^9F>zWy^^=2C_j+F5!2M6w*0UY zOGHJ#X#y>OZ#5a!=DAsD4&dfejb)Dc@JC==Nw|szHyDLF;sC~f97MS3l0Gx?Ix zHUTf`Rkz4v=T^o$vQIWyfh{zhZQT{fr(WfQ!pE_%L7Xdh&aQ&A8d9)uYkhogDyC~{ znTV>W@`R!7HhSHmAezI}L2I+TK2cK)=&UZ#LA`-DD*S~~AO9}Gu1nzueylrJBz6x| zQknMA^SOMb58+tJ`LPS2u(W1n`e)Xp@9jJ&N%Q<9-vyoatL$koYjJsiA8mxXdYr>C zy`{=)?K+qI2hWIWAtwCWIQhjJt428yu0@&(j|CpSnPTp#2vfHJw}-!-tC8k2;#olq z<3Ugvi)!l3$ZLmUcx%Y>SXXTk5s?NAN1+8C;t`iB0fD&dL2<$!zenXg`*rx- zHz7*12Y&o!j~G}3K~u`^^_|Q)Np9qoE?w~ltRf+b1Moap%~b5+VbIYTS$Am~HP-d+ zD+?S^0R-pXH;o+>x2NGKFbDdAiSVcKJrCL+20Tyx$V%bosXLlA&nL{DdT>YYJ~mp9 zz}j8Nd!K^eg=ruE9$9qxP129XM}6pdbJq8zvrRjG9LZ##K-^E!*%_{^aRs zRO-QKff1{MRZHferX6dB6upn3K?<%f`GehUi6fc7I%BU}4AGjp1$h)!r^@D8ScY*g zaJ5H8@R3jjRR4aQ6FeehC+vd2C2|k-7xJU*Agy_XRK=|x}rW))WE<+ z(+;q@Ypsmtl+p~zGTyq@L(7P>JKAat&>ahWQce!4v#q-fL(?b2N86PW8;<%Y2fY3s z4ce`>>ckxP#7Qn}W_{3e&&* z3_T6wPFPu3qfDeSX%Rpx8DmEyPu@DBhU*`QNFo~1*6M#Pf?TVuRK3n@NL@Z+sLCZw zi;$s|c9&69%ewo>)%hLDQ#&3_4zuXPgPP_&PJ3LCM6&T36x!pu#1M~{0Qvb=;5V?1 z)R7E%%KK{rcw4a&R!I|GdR?gP2^;gU_sr-$(tmAP+K?A z%lM61isN+faA&>a@&vw}GeKH4bWSlm)D5-kl`6$jzU0UPBo&F+S6aImZmM&&g35bv z1h#BKe1(g>LBwP)JB;(E#PrrQ%>Xs#btN!7n79rhZ^w;CCr^8aAJLt4tatf5lD13* zdiRCDKC`nW5ohC~7dmrRFD+!Ew5QGIoT_Op1xiAOcWsHB3}+5}nUDJT7xVWrU#x<_N66k zwTdO2ZBOEpORCgs0?TYOu3&4Q z?bic|8db^*P`xnvc16zK&JDp)cG!gph-8d!spTVKl$VWToT{x@3pZ!5@ctqpg9Oo2 z0mgHpC};V@I&FBQg}Am}2!TE~?=AnF&QBnR{P6Is{R$8y;j4vXa6lCrNli*?90j=4 z&vsY%*Y=aC`w-;f01s;he`eMcA4I+ZTH!a|(r>P~*(hg|L%JD|3*V>UOw^=e=F=RE zXbswh?{`i1`+aEa|eBamA-nME9PW$fX32_;VQz6>_0NFH14+ z_O`^HnP|@z|1{oiesw6XMM8Ypt)ig{Qz`m;<}Oi7Wu;o5lPg-K}Ba1#DpQY_>Cfu;TbUa!ed*T zB*x6?n>F2l`u6WWbpSC5nCCQH`Q80j$c6Zh8y;CT0Ml)kJ$1;9mX(#|aa;pfY)HA9 z@?reW{6mUpy@aaZi@f6N5(;zF;@1JshPMyIJz7LDxiwMul<0VndvH3>4qK2HOc}mn z2c7(FRPQ=vw5IyZW9F5odXG6rd2EyC30$f7S;&Y<3DAkZ*4BCUi-&#Xia#nqhn!Vp zOESA2s1d36yVrD<62LL(Bx*z@i9_mLtS4+Q*hjWXxLh;`yD*W{!#{|^a0co$B~sP+ zGJ28Ed6lYH^3NCH1BUPx7+T9#yiLzF9e%sMO$m@5XXbyR-3d zTuTXxOdO`#=-MN)M|WdZaIO_&btqC!4Z##wK)@m=JW?bnd{XNb;Q>kz6-8Fm(nV0` z@4j~=9G!gzD9kK0EvRv_y6c)wNb=&o6b zOxS)SqcD3%s-=oFWbQRBLkM=POv>j*y6|;O$h`nc{$C{tRow}pf7oJoMtHDPBeT1u zWxV*?MG1cFs;TKiWWs`cp{=oS`nOTm=aPorF%;qdZuRq50 zl5lEGlWhYd9XQyuG^^5vBDex^qrF}Tof%N4(*ZLoh}uG?ncjrwAj`mS4;LDG_MQ+5 z2P?X>Uth#=642%DWFImYB7_#r7p_Ie5TO`QBEe-;ccdOdhkFvFexL1wZ;QTd3W7EY z;{Gu7t!tM|Bw_)G+~!2Dz!f|3)$lW6F~G|BDC)OA#!o-DYd!+>hWm|m$g2ZqM~R#W z@#n-n`vvQdroB`-?wyyrEM@SJy2p6&{5-(Fw}^Z$jW^?B38tKDcN^}KWQq)A`x0X5 zMSMCukd0!>SvlX7?I{Xn=lQR{3)pL!%cp}af3(t5e2tXUmd(@DEnDbP7-(UTB3ofL z<`{53eo-#S;H2kJ5f_VBpw81oY81Z*SrVGub7BD3i_{AcNkGUseM%VG{oA42=nk*v z(l0KHYx99Y+!^gIn!V;wqv!TO?MlNCi7r^kUCOUEFR|qJp=hX8HD;O@#JnI_Xo08V zj0734-s^15t;|_cd|i8N+GzG}MD}FkoM(o+bAY6-?EL}*S5P3R;G;GSd_QLx6Zd>4 zL2@;Ck`v1fPeG*CilB;6Jk*p(eyI>R+md?%*vIArGr+?S0L^@g+lk7w{6#frPA#=+ ziZ27o7pv~_qld}{$M-#?q#=9YL3NLMf$Vpy(6b`2=)Y(K35eWSbLv})5xRO9VSZ98Li-)x|4gINKWe-si*fvHvt$g zqo<)acfP_(80Tyr)oDnokQ30sJ2_W6oO@MfJ!QK*S74#&q^ZeKXde%?Go)y;vDuKi zb7Dn<5z;}}IVEH&ZfDS9ET#2K z0wszOP-G-DheCRlF5o8kHw0}M?sL9yzL>fO^wu(PoEI1Q25uyP)vv~3!oemHuL&wn zDRS@xo||WMQpGG)B-cM>TDJpYeIr8+AGAFlWRD7ZbLn_Y;oM&+bcp9I4avolIg>*2 zuG&d;4CO00NhMqD(lTV4X&Q_#`TmE9WC7$=F=ta<+s^77@Gwy_^}UisC9;X;eKjoo zTUfZa=8o8l@F@->uZ@$j=hHG8)T9J?Jy}{L?^gC^u< z?sO_Hgz&cEjBThxhrnXj>M4`7Jl+ z+wNvb%%LXFi0qU6AZ{eOe&L=)eEOZ)vBMCk0G#CD%zN7MlB0@fRst}u=*}39* z^+z_aV_-_q6a5XU%7e^DnaS1u|bC9*~ rhOA|*#O^RbS@Jz>d?jh%`QSgJm-VXo?WYs^8Gyjk)z4*}Q$iB}92t}X delta 73758 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

100 { + player.SceneId = 3 + player.Pos = &model.Vector{X: 2747, Y: 194, Z: -1719} + player.Rot = &model.Vector{X: 0, Y: 307, Z: 0} + } + player.CombatInvokeHandler = model.NewInvokeHandler[proto.CombatInvokeEntry]() player.AbilityInvokeHandler = model.NewInvokeHandler[proto.AbilityInvokeEntry]() @@ -71,6 +77,8 @@ func (g *GameManager) OnLoginOk(userId uint32, player *model.Player, clientSeq u }, }) } + TICK_MANAGER.CreateUserGlobalTick(userId) + TICK_MANAGER.CreateUserTimer(userId, UserTimerActionTest, 100) } func (g *GameManager) OnReg(userId uint32, clientSeq uint32, gateAppId string, payloadMsg pb.Message) { @@ -104,7 +112,7 @@ func (g *GameManager) OnRegOk(exist bool, req *proto.SetPlayerBornDataReq, userI } USER_MANAGER.AddUser(player) - g.SendMsgEx(cmd.SetPlayerBornDataRsp, userId, clientSeq, gateAppId, new(proto.SetPlayerBornDataRsp)) + g.SendMsgToGate(cmd.SetPlayerBornDataRsp, userId, clientSeq, gateAppId, new(proto.SetPlayerBornDataRsp)) g.OnLogin(userId, clientSeq, gateAppId) } @@ -115,6 +123,7 @@ func (g *GameManager) OnUserOffline(userId uint32, changeGsInfo *ChangeGsInfo) { logger.Error("player is nil, userId: %v", userId) return } + TICK_MANAGER.DestroyUserGlobalTick(userId) world := WORLD_MANAGER.GetWorldByID(player.WorldId) if world != nil { g.UserWorldRemovePlayer(world, player) diff --git a/gs/game/user_manager.go b/gs/game/user_manager.go index 1bdf82ca..631ba0f1 100644 --- a/gs/game/user_manager.go +++ b/gs/game/user_manager.go @@ -1,8 +1,6 @@ package game import ( - "time" - "hk4e/gs/dao" "hk4e/gs/model" "hk4e/pkg/logger" @@ -30,6 +28,7 @@ func NewUserManager(dao *dao.Dao) (r *UserManager) { r.playerMap = make(map[uint32]*model.Player) r.saveUserChan = make(chan *SaveUserData) // 无缓冲区chan 避免主协程在写入时被迫加锁 r.remotePlayerMap = make(map[uint32]string) + go r.saveUserHandle() return r } @@ -356,24 +355,12 @@ type SaveUserData struct { updatePlayerList []*model.Player } -// StartAutoSaveUser 玩家定时保存 -func (u *UserManager) StartAutoSaveUser() { - go func() { - ticker := time.NewTicker(time.Minute * 5) - for { - LOCAL_EVENT_MANAGER.localEventChan <- &LocalEvent{ - EventId: RunUserCopyAndSave, - } - <-ticker.C - } - }() - go func() { - for { - saveUserData := <-u.saveUserChan - u.SaveUserListToDbSync(saveUserData) - u.SaveUserListToRedisSync(saveUserData) - } - }() +func (u *UserManager) saveUserHandle() { + for { + saveUserData := <-u.saveUserChan + u.SaveUserListToDbSync(saveUserData) + u.SaveUserListToRedisSync(saveUserData) + } } func (u *UserManager) LoadUserFromDbSync(userId uint32) *model.Player { diff --git a/gs/game/user_map.go b/gs/game/user_map.go index 3216bbc1..7f27843f 100644 --- a/gs/game/user_map.go +++ b/gs/game/user_map.go @@ -78,6 +78,7 @@ func (g *GameManager) TeleportPlayer(player *model.Player, enterReason uint16, s if newSceneId != oldSceneId { jumpScene = true } + player.SceneJump = jumpScene world := WORLD_MANAGER.GetWorldByID(player.WorldId) oldScene := world.GetSceneById(oldSceneId) activeAvatarId := world.GetPlayerActiveAvatarId(player) @@ -87,14 +88,14 @@ func (g *GameManager) TeleportPlayer(player *model.Player, enterReason uint16, s g.SendMsg(cmd.DelTeamEntityNotify, player.PlayerID, player.ClientSeq, delTeamEntityNotify) oldScene.RemovePlayer(player) + player.SceneId = newSceneId newScene := world.GetSceneById(newSceneId) newScene.AddPlayer(player) } + player.SceneLoadState = model.SceneNone player.Pos.X = pos.X player.Pos.Y = pos.Y player.Pos.Z = pos.Z - player.SceneId = newSceneId - player.SceneLoadState = model.SceneNone var enterType proto.EnterType switch enterReason { diff --git a/gs/game/user_multiplayer.go b/gs/game/user_multiplayer.go index e4f69853..5c0a6b94 100644 --- a/gs/game/user_multiplayer.go +++ b/gs/game/user_multiplayer.go @@ -79,15 +79,16 @@ func (g *GameManager) JoinPlayerSceneReq(player *model.Player, payloadMsg pb.Mes func (g *GameManager) JoinOtherWorld(player *model.Player, hostPlayer *model.Player) { hostWorld := WORLD_MANAGER.GetWorldByID(hostPlayer.WorldId) if hostPlayer.SceneLoadState == model.SceneEnterDone { + player.SceneJump = true + player.SceneId = hostPlayer.SceneId + player.SceneLoadState = model.SceneNone player.Pos.X = hostPlayer.Pos.X player.Pos.Y = hostPlayer.Pos.Y player.Pos.Z = hostPlayer.Pos.Z player.Rot.X = hostPlayer.Rot.X player.Rot.Y = hostPlayer.Rot.Y player.Rot.Z = hostPlayer.Rot.Z - player.SceneId = hostPlayer.SceneId g.UserWorldAddPlayer(hostWorld, player) - player.SceneLoadState = model.SceneNone playerEnterSceneNotify := g.PacketPlayerEnterSceneNotifyLogin(player, proto.EnterType_ENTER_TYPE_OTHER) g.SendMsg(cmd.PlayerEnterSceneNotify, player.PlayerID, player.ClientSeq, playerEnterSceneNotify) @@ -318,6 +319,7 @@ func (g *GameManager) HostEnterMpWorld(hostPlayer *model.Player, otherUid uint32 } g.SendMsg(cmd.WorldDataNotify, hostPlayer.PlayerID, hostPlayer.ClientSeq, worldDataNotify) + hostPlayer.SceneJump = true hostPlayer.SceneLoadState = model.SceneNone hostPlayerEnterSceneNotify := g.PacketPlayerEnterSceneNotifyMp( diff --git a/gs/game/user_scene.go b/gs/game/user_scene.go index 01892cfb..167cec80 100644 --- a/gs/game/user_scene.go +++ b/gs/game/user_scene.go @@ -45,7 +45,7 @@ func (g *GameManager) SceneInitFinishReq(player *model.Player, payloadMsg pb.Mes } g.SendMsg(cmd.ServerTimeNotify, player.PlayerID, player.ClientSeq, serverTimeNotify) - if world.IsPlayerFirstEnter(player) { + if player.SceneJump { worldPlayerInfoNotify := &proto.WorldPlayerInfoNotify{ PlayerInfoList: make([]*proto.OnlinePlayerInfo, 0), PlayerUidList: make([]uint32, 0), @@ -214,6 +214,9 @@ func (g *GameManager) SceneInitFinishReq(player *model.Player, payloadMsg pb.Mes g.GCGTavernInit(player) // GCG酒馆信息通知 + g.SendMsg(cmd.DungeonWayPointNotify, player.PlayerID, player.ClientSeq, &proto.DungeonWayPointNotify{}) + g.SendMsg(cmd.DungeonDataNotify, player.PlayerID, player.ClientSeq, &proto.DungeonDataNotify{}) + SceneInitFinishRsp := &proto.SceneInitFinishRsp{ EnterSceneToken: player.EnterSceneToken, } @@ -234,20 +237,25 @@ func (g *GameManager) EnterSceneDoneReq(player *model.Player, payloadMsg pb.Mess g.SendMsg(cmd.GuestPostEnterSceneNotify, world.owner.PlayerID, world.owner.ClientSeq, guestPostEnterSceneNotify) } - var visionType = proto.VisionType_VISION_TYPE_TRANSPORT + var visionType = proto.VisionType_VISION_TYPE_NONE activeAvatarId := world.GetPlayerActiveAvatarId(player) - if world.IsPlayerFirstEnter(player) { + if player.SceneJump { visionType = proto.VisionType_VISION_TYPE_BORN + } else { + visionType = proto.VisionType_VISION_TYPE_TRANSPORT } - g.AddSceneEntityNotify(player, visionType, []uint32{world.GetPlayerWorldAvatarEntityId(player, activeAvatarId)}, true, false) + activeAvatarEntityId := world.GetPlayerWorldAvatarEntityId(player, activeAvatarId) + g.AddSceneEntityNotify(player, visionType, []uint32{activeAvatarEntityId}, true, false) // 通过aoi获取场景中在自己周围格子里的全部实体id // entityIdList := world.aoiManager.GetEntityIdListByPos(float32(player.Pos.X), float32(player.Pos.Y), float32(player.Pos.Z)) - entityIdList := world.GetSceneById(player.SceneId).GetEntityIdList() - if world.IsPlayerFirstEnter(player) { + if player.SceneJump { visionType = proto.VisionType_VISION_TYPE_MEET + } else { + visionType = proto.VisionType_VISION_TYPE_TRANSPORT } + entityIdList := world.GetSceneById(player.SceneId).GetEntityIdList() g.AddSceneEntityNotify(player, visionType, entityIdList, false, false) sceneAreaWeatherNotify := &proto.SceneAreaWeatherNotify{ @@ -453,7 +461,7 @@ func (g *GameManager) AddSceneEntityNotify(player *model.Player, visionType prot for _, entityId := range entityIdList[begin:end] { entity, ok := scene.entityMap[entityId] if !ok { - // logger.Error("get entity is nil, entityId: %v", entityId) + logger.Error("get entity is nil, entityId: %v", entityId) continue } switch entity.entityType { diff --git a/gs/game/user_social.go b/gs/game/user_social.go index db65c7e1..9a2f8fdd 100644 --- a/gs/game/user_social.go +++ b/gs/game/user_social.go @@ -21,28 +21,11 @@ func (g *GameManager) GetPlayerSocialDetailReq(player *model.Player, payloadMsg req := payloadMsg.(*proto.GetPlayerSocialDetailReq) targetUid := req.Uid - targetPlayer, _, remote := USER_MANAGER.LoadGlobalPlayer(targetUid) + targetPlayer, _, _ := USER_MANAGER.LoadGlobalPlayer(targetUid) if targetPlayer == nil { g.CommonRetError(cmd.GetPlayerSocialDetailRsp, player, &proto.GetPlayerSocialDetailRsp{}, proto.Retcode_RET_PLAYER_NOT_EXIST) return } - if remote { - gsAppId := USER_MANAGER.GetRemoteUserGsAppId(targetUid) - MESSAGE_QUEUE.SendToGs(gsAppId, &mq.NetMsg{ - MsgType: mq.MsgTypeServer, - EventId: mq.ServerUserBaseInfoReq, - ServerMsg: &mq.ServerMsg{ - UserBaseInfo: &mq.UserBaseInfo{ - OriginInfo: &mq.OriginInfo{ - CmdName: "GetPlayerSocialDetailReq", - UserId: player.PlayerID, - }, - UserId: targetUid, - }, - }, - }) - return - } _, exist := player.FriendList[targetPlayer.PlayerID] socialDetail := &proto.SocialDetail{ Uid: targetPlayer.PlayerID, @@ -441,31 +424,16 @@ func (g *GameManager) GetOnlinePlayerInfoReq(player *model.Player, payloadMsg pb return } - if USER_MANAGER.GetUserOnlineState(targetUid.TargetUid) { - g.SendMsg(cmd.GetOnlinePlayerInfoRsp, player.PlayerID, player.ClientSeq, &proto.GetOnlinePlayerInfoRsp{ - TargetUid: targetUid.TargetUid, - TargetPlayerInfo: g.PacketOnlinePlayerInfo(player), - }) + targetPlayer, online, _ := USER_MANAGER.LoadGlobalPlayer(targetUid.TargetUid) + if targetPlayer == nil || !online { + g.CommonRetError(cmd.GetOnlinePlayerInfoRsp, player, &proto.GetOnlinePlayerInfoRsp{}, proto.Retcode_RET_PLAYER_NOT_ONLINE) return } - if USER_MANAGER.GetRemoteUserOnlineState(targetUid.TargetUid) { - gsAppId := USER_MANAGER.GetRemoteUserGsAppId(targetUid.TargetUid) - MESSAGE_QUEUE.SendToGs(gsAppId, &mq.NetMsg{ - MsgType: mq.MsgTypeServer, - EventId: mq.ServerUserBaseInfoReq, - ServerMsg: &mq.ServerMsg{ - UserBaseInfo: &mq.UserBaseInfo{ - OriginInfo: &mq.OriginInfo{ - CmdName: "GetOnlinePlayerInfoReq", - UserId: player.PlayerID, - }, - UserId: targetUid.TargetUid, - }, - }, - }) - return - } - g.CommonRetError(cmd.GetOnlinePlayerInfoRsp, player, &proto.GetOnlinePlayerInfoRsp{}, proto.Retcode_RET_PLAYER_NOT_ONLINE) + + g.SendMsg(cmd.GetOnlinePlayerInfoRsp, player.PlayerID, player.ClientSeq, &proto.GetOnlinePlayerInfoRsp{ + TargetUid: targetUid.TargetUid, + TargetPlayerInfo: g.PacketOnlinePlayerInfo(targetPlayer), + }) } func (g *GameManager) PacketOnlinePlayerInfo(player *model.Player) *proto.OnlinePlayerInfo { @@ -488,89 +456,6 @@ func (g *GameManager) PacketOnlinePlayerInfo(player *model.Player) *proto.Online return onlinePlayerInfo } -// 跨服玩家基础数据请求 - -func (g *GameManager) ServerUserBaseInfoReq(userBaseInfo *mq.UserBaseInfo, gsAppId string) { - switch userBaseInfo.OriginInfo.CmdName { - case "GetOnlinePlayerInfoReq": - fallthrough - case "GetPlayerSocialDetailReq": - player := USER_MANAGER.GetOnlineUser(userBaseInfo.UserId) - if player == nil { - logger.Error("player is nil, uid: %v", userBaseInfo.UserId) - return - } - world := WORLD_MANAGER.GetWorldByID(player.WorldId) - MESSAGE_QUEUE.SendToGs(gsAppId, &mq.NetMsg{ - MsgType: mq.MsgTypeServer, - EventId: mq.ServerUserBaseInfoRsp, - ServerMsg: &mq.ServerMsg{ - UserBaseInfo: &mq.UserBaseInfo{ - OriginInfo: userBaseInfo.OriginInfo, - UserId: player.PlayerID, - Nickname: player.NickName, - PlayerLevel: player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_LEVEL], - MpSettingType: uint8(player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_MP_SETTING_TYPE]), - NameCardId: player.NameCard, - Signature: player.Signature, - HeadImageId: player.HeadImage, - WorldPlayerNum: uint32(world.GetWorldPlayerNum()), - WorldLevel: player.PropertiesMap[constant.PlayerPropertyConst.PROP_PLAYER_WORLD_LEVEL], - Birthday: player.Birthday, - }, - }, - }) - } -} - -func (g *GameManager) ServerUserBaseInfoRsp(userBaseInfo *mq.UserBaseInfo) { - switch userBaseInfo.OriginInfo.CmdName { - case "GetOnlinePlayerInfoReq": - player := USER_MANAGER.GetOnlineUser(userBaseInfo.OriginInfo.UserId) - if player == nil { - logger.Error("player is nil, uid: %v", userBaseInfo.OriginInfo.UserId) - return - } - g.SendMsg(cmd.GetOnlinePlayerInfoRsp, player.PlayerID, player.ClientSeq, &proto.GetOnlinePlayerInfoRsp{ - TargetUid: userBaseInfo.UserId, - TargetPlayerInfo: &proto.OnlinePlayerInfo{ - Uid: userBaseInfo.UserId, - Nickname: userBaseInfo.Nickname, - PlayerLevel: userBaseInfo.PlayerLevel, - MpSettingType: proto.MpSettingType(userBaseInfo.MpSettingType), - NameCardId: userBaseInfo.NameCardId, - Signature: userBaseInfo.Signature, - ProfilePicture: &proto.ProfilePicture{AvatarId: userBaseInfo.HeadImageId}, - CurPlayerNumInWorld: userBaseInfo.WorldPlayerNum, - }, - }) - case "GetPlayerSocialDetailReq": - player := USER_MANAGER.GetOnlineUser(userBaseInfo.OriginInfo.UserId) - if player == nil { - logger.Error("player is nil, uid: %v", userBaseInfo.OriginInfo.UserId) - return - } - _, exist := player.FriendList[userBaseInfo.UserId] - socialDetail := &proto.SocialDetail{ - Uid: userBaseInfo.UserId, - ProfilePicture: &proto.ProfilePicture{AvatarId: userBaseInfo.HeadImageId}, - Nickname: userBaseInfo.Nickname, - Signature: userBaseInfo.Signature, - Level: userBaseInfo.PlayerLevel, - Birthday: &proto.Birthday{Month: uint32(userBaseInfo.Birthday[0]), Day: uint32(userBaseInfo.Birthday[1])}, - WorldLevel: userBaseInfo.WorldLevel, - NameCardId: userBaseInfo.NameCardId, - IsShowAvatar: false, - FinishAchievementNum: 0, - IsFriend: exist, - } - getPlayerSocialDetailRsp := &proto.GetPlayerSocialDetailRsp{ - DetailData: socialDetail, - } - g.SendMsg(cmd.GetPlayerSocialDetailRsp, player.PlayerID, player.ClientSeq, getPlayerSocialDetailRsp) - } -} - // 跨服添加好友通知 func (g *GameManager) ServerAddFriendNotify(addFriendInfo *mq.AddFriendInfo) { diff --git a/gs/game/world_manager.go b/gs/game/world_manager.go index f7369e28..781c61b4 100644 --- a/gs/game/world_manager.go +++ b/gs/game/world_manager.go @@ -5,13 +5,11 @@ import ( "time" "hk4e/common/constant" - "hk4e/protocol/cmd" - "hk4e/common/mq" - "hk4e/gs/game/aoi" "hk4e/gs/model" "hk4e/pkg/alg" "hk4e/pkg/logger" + "hk4e/protocol/cmd" "hk4e/protocol/proto" ) @@ -50,24 +48,24 @@ func (w *WorldManager) CreateWorld(owner *model.Player) *World { multiplayer: false, mpLevelEntityId: 0, chatMsgList: make([]*proto.ChatInfo, 0), - // aoi划分 - // TODO 为减少内存占用暂时去掉Y轴AOI格子划分 原来的Y轴格子数量为80 - aoiManager: aoi.NewAoiManager( - -8000, 4000, 120, - -2000, 2000, 1, - -5500, 6500, 120, - ), + // // aoi划分 + // // TODO 为减少内存占用暂时去掉Y轴AOI格子划分 原来的Y轴格子数量为80 + // aoiManager: aoi.NewAoiManager( + // -8000, 4000, 120, + // -2000, 2000, 1, + // -5500, 6500, 120, + // ), playerFirstEnterMap: make(map[uint32]int64), waitEnterPlayerMap: make(map[uint32]int64), multiplayerTeam: CreateMultiplayerTeam(), peerList: make([]*model.Player, 0), } if world.IsBigWorld() { - world.aoiManager = aoi.NewAoiManager( - -8000, 4000, 800, - -2000, 2000, 1, - -5500, 6500, 800, - ) + // world.aoiManager = aoi.NewAoiManager( + // -8000, 4000, 800, + // -2000, 2000, 1, + // -5500, 6500, 800, + // ) } world.mpLevelEntityId = world.GetNextWorldEntityId(constant.EntityIdTypeConst.MPLEVEL) w.worldMap[worldId] = world @@ -101,18 +99,18 @@ func (w *World) IsBigWorld() bool { // 世界数据结构 type World struct { - id uint32 - owner *model.Player - playerMap map[uint32]*model.Player - sceneMap map[uint32]*Scene - entityIdCounter uint32 // 世界的实体id生成计数器 - worldLevel uint8 // 世界等级 - multiplayer bool // 是否多人世界 - mpLevelEntityId uint32 - chatMsgList []*proto.ChatInfo // 世界聊天消息列表 - aoiManager *aoi.AoiManager // 当前世界地图的aoi管理器 - playerFirstEnterMap map[uint32]int64 // 玩家第一次进入世界的时间 key:uid value:进入时间 - waitEnterPlayerMap map[uint32]int64 // 进入世界的玩家等待列表 key:uid value:开始时间 + id uint32 + owner *model.Player + playerMap map[uint32]*model.Player + sceneMap map[uint32]*Scene + entityIdCounter uint32 // 世界的实体id生成计数器 + worldLevel uint8 // 世界等级 + multiplayer bool // 是否多人世界 + mpLevelEntityId uint32 + chatMsgList []*proto.ChatInfo // 世界聊天消息列表 + // aoiManager *aoi.AoiManager // 当前世界地图的aoi管理器 + playerFirstEnterMap map[uint32]int64 // 玩家第一次进入世界的时间 key:uid value:进入时间 + waitEnterPlayerMap map[uint32]int64 // 进入世界的玩家等待列表 key:uid value:开始时间 multiplayerTeam *MultiplayerTeam peerList []*model.Player // 玩家编号列表 } @@ -263,7 +261,7 @@ func (w *World) InitPlayerWorldAvatar(player *model.Player) { if worldAvatar.uid != player.PlayerID { continue } - if worldAvatar.avatarEntityId != 0 || worldAvatar.weaponEntityId != 0 { + if !player.SceneJump && (worldAvatar.avatarEntityId != 0 || worldAvatar.weaponEntityId != 0) { continue } worldAvatar.avatarEntityId = scene.CreateEntityAvatar(player, worldAvatar.avatarId) @@ -706,9 +704,9 @@ func (s *Scene) CreateEntityAvatar(player *model.Player, avatarId uint32) uint32 }, } s.entityMap[entity.id] = entity - if avatarId == s.world.GetPlayerActiveAvatarId(player) { - s.world.aoiManager.AddEntityIdToGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) - } + // if avatarId == s.world.GetPlayerActiveAvatarId(player) { + // s.world.aoiManager.AddEntityIdToGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) + // } MESSAGE_QUEUE.SendToFight(s.world.owner.FightAppId, &mq.NetMsg{ MsgType: mq.MsgTypeFight, EventId: mq.FightRoutineAddEntity, @@ -759,7 +757,7 @@ func (s *Scene) CreateEntityMonster(pos *model.Vector, level uint8, fightProp ma monsterEntity: &MonsterEntity{}, } s.entityMap[entity.id] = entity - s.world.aoiManager.AddEntityIdToGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) + // s.world.aoiManager.AddEntityIdToGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) MESSAGE_QUEUE.SendToFight(s.world.owner.FightAppId, &mq.NetMsg{ MsgType: mq.MsgTypeFight, EventId: mq.FightRoutineAddEntity, @@ -798,7 +796,7 @@ func (s *Scene) CreateEntityNpc(pos, rot *model.Vector, npcId, roomId, parentQue }, } s.entityMap[entity.id] = entity - s.world.aoiManager.AddEntityIdToGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) + // s.world.aoiManager.AddEntityIdToGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) return entity.id } @@ -826,7 +824,7 @@ func (s *Scene) CreateEntityGadgetNormal(pos *model.Vector, gadgetId uint32) uin }, } s.entityMap[entity.id] = entity - s.world.aoiManager.AddEntityIdToGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) + // s.world.aoiManager.AddEntityIdToGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) return entity.id } @@ -856,7 +854,7 @@ func (s *Scene) CreateEntityGadgetGather(pos *model.Vector, gatherId uint32) uin }, } s.entityMap[entity.id] = entity - s.world.aoiManager.AddEntityIdToGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) + // s.world.aoiManager.AddEntityIdToGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) return entity.id } @@ -890,7 +888,7 @@ func (s *Scene) CreateEntityGadgetClient(pos, rot *model.Vector, entityId uint32 }, } s.entityMap[entity.id] = entity - s.world.aoiManager.AddEntityIdToGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) + // s.world.aoiManager.AddEntityIdToGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) } func (s *Scene) CreateEntityGadgetVehicle(uid uint32, pos, rot *model.Vector, vehicleId uint32) uint32 { @@ -929,7 +927,7 @@ func (s *Scene) CreateEntityGadgetVehicle(uid uint32, pos, rot *model.Vector, ve }, } s.entityMap[entity.id] = entity - s.world.aoiManager.AddEntityIdToGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) + // s.world.aoiManager.AddEntityIdToGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) return entity.id } @@ -938,7 +936,7 @@ func (s *Scene) DestroyEntity(entityId uint32) { if entity == nil { return } - s.world.aoiManager.RemoveEntityIdFromGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) + // s.world.aoiManager.RemoveEntityIdFromGridByPos(entity.id, float32(entity.pos.X), float32(entity.pos.Y), float32(entity.pos.Z)) delete(s.entityMap, entityId) MESSAGE_QUEUE.SendToFight(s.world.owner.FightAppId, &mq.NetMsg{ MsgType: mq.MsgTypeFight, diff --git a/gs/model/player.go b/gs/model/player.go index db902fdf..d4f32591 100644 --- a/gs/model/player.go +++ b/gs/model/player.go @@ -65,6 +65,7 @@ type Player struct { GameObjectGuidMap map[uint64]GameObject `bson:"-" msgpack:"-"` // 游戏对象guid映射表 Online bool `bson:"-" msgpack:"-"` // 在线状态 Pause bool `bson:"-" msgpack:"-"` // 暂停状态 + SceneJump bool `bson:"-" msgpack:"-"` // 是否场景切换 SceneLoadState int `bson:"-" msgpack:"-"` // 场景加载状态 CoopApplyMap map[uint32]int64 `bson:"-" msgpack:"-"` // 敲门申请的玩家uid及时间 StaminaInfo *StaminaInfo `bson:"-" msgpack:"-"` // 耐力临时数据 diff --git a/gs/game/aoi/aoi.go b/pkg/alg/aoi.go similarity index 80% rename from gs/game/aoi/aoi.go rename to pkg/alg/aoi.go index 84355fec..f93abb9e 100644 --- a/gs/game/aoi/aoi.go +++ b/pkg/alg/aoi.go @@ -1,12 +1,10 @@ -package aoi +package alg import ( - "fmt" - "hk4e/pkg/logger" ) -// aoi管理模块 +// AoiManager aoi管理模块 type AoiManager struct { // 区域边界坐标 minX int16 @@ -21,7 +19,7 @@ type AoiManager struct { gridMap map[uint32]*Grid // 当前区域中都有哪些格子 key:gid value:格子对象 } -// 初始化aoi区域 +// NewAoiManager 初始化aoi区域 func NewAoiManager(minX, maxX, numX, minY, maxY, numY, minZ, maxZ, numZ int16) (r *AoiManager) { r = new(AoiManager) r.minX = minX @@ -56,25 +54,31 @@ func NewAoiManager(minX, maxX, numX, minY, maxY, numY, minZ, maxZ, numZ int16) ( } } logger.Info("init aoi area grid finish") + logger.Debug("AoiMgr: minX: %d, maxX: %d, numX: %d, minY: %d, maxY: %d, numY: %d, minZ: %d, maxZ: %d, numZ: %d\n", + r.minX, r.maxX, r.numX, r.minY, r.maxY, r.numY, r.minZ, r.maxZ, r.numZ) + for _, grid := range r.gridMap { + logger.Debug("Grid: gid: %d, minX: %d, maxX: %d, minY: %d, maxY: %d, minZ: %d, maxZ: %d, entityIdMap: %v", + grid.gid, grid.minX, grid.maxX, grid.minY, grid.maxY, grid.minZ, grid.maxZ, grid.entityIdMap) + } return r } -// 每个格子在x轴方向的长度 +// GridXLen 每个格子在x轴方向的长度 func (a *AoiManager) GridXLen() int16 { return (a.maxX - a.minX) / a.numX } -// 每个格子在y轴方向的长度 +// GridYLen 每个格子在y轴方向的长度 func (a *AoiManager) GridYLen() int16 { return (a.maxY - a.minY) / a.numY } -// 每个格子在z轴方向的长度 +// GridZLen 每个格子在z轴方向的长度 func (a *AoiManager) GridZLen() int16 { return (a.maxZ - a.minZ) / a.numZ } -// 通过坐标获取对应的格子id +// GetGidByPos 通过坐标获取对应的格子id func (a *AoiManager) GetGidByPos(x, y, z float32) uint32 { gx := (int16(x) - a.minX) / a.GridXLen() gy := (int16(y) - a.minY) / a.GridYLen() @@ -82,7 +86,7 @@ func (a *AoiManager) GetGidByPos(x, y, z float32) uint32 { return uint32(gy)*(uint32(a.numX)*uint32(a.numZ)) + uint32(gz)*uint32(a.numX) + uint32(gx) } -// 判断坐标是否存在于aoi区域内 +// IsValidAoiPos 判断坐标是否存在于aoi区域内 func (a *AoiManager) IsValidAoiPos(x, y, z float32) bool { if (int16(x) > a.minX && int16(x) < a.maxX) && (int16(y) > a.minY && int16(y) < a.maxY) && @@ -93,18 +97,7 @@ func (a *AoiManager) IsValidAoiPos(x, y, z float32) bool { } } -// 打印信息方法 -func (a *AoiManager) DebugString() string { - s := fmt.Sprintf("AoiMgr: minX: %d, maxX: %d, numX: %d, minY: %d, maxY: %d, numY: %d, minZ: %d, maxZ: %d, numZ: %d\n", - a.minX, a.maxX, a.numX, a.minY, a.maxY, a.numY, a.minZ, a.maxZ, a.numZ) - s += "gridList in AoiMgr:\n" - for _, grid := range a.gridMap { - s += fmt.Sprintln(grid.DebugString()) - } - return s -} - -// 根据格子的gid得到当前周边的格子信息 +// GetSurrGridListByGid 根据格子的gid得到当前周边的格子信息 func (a *AoiManager) GetSurrGridListByGid(gid uint32) (gridList []*Grid) { gridList = make([]*Grid, 0) // 判断grid是否存在 @@ -165,7 +158,7 @@ func (a *AoiManager) GetSurrGridListByGid(gid uint32) (gridList []*Grid) { return gridList } -// 通过坐标得到周边格子内的全部entityId +// GetEntityIdListByPos 通过坐标得到周边格子内的全部entityId func (a *AoiManager) GetEntityIdListByPos(x, y, z float32) (entityIdList []uint32) { // 根据坐标得到当前坐标属于哪个格子id gid := a.GetGidByPos(x, y, z) @@ -175,37 +168,37 @@ func (a *AoiManager) GetEntityIdListByPos(x, y, z float32) (entityIdList []uint3 for _, v := range gridList { tmp := v.GetEntityIdList() entityIdList = append(entityIdList, tmp...) - // logger.Debug("Grid: gid: %d, tmp len: %v", v.gid, len(tmp)) + logger.Debug("Grid: gid: %d, tmp len: %v", v.gid, len(tmp)) } return entityIdList } -// 通过gid获取当前格子的全部entityId +// GetEntityIdListByGid 通过gid获取当前格子的全部entityId func (a *AoiManager) GetEntityIdListByGid(gid uint32) (entityIdList []uint32) { grid := a.gridMap[gid] entityIdList = grid.GetEntityIdList() return entityIdList } -// 添加一个entityId到一个格子中 +// AddEntityIdToGrid 添加一个entityId到一个格子中 func (a *AoiManager) AddEntityIdToGrid(entityId uint32, gid uint32) { grid := a.gridMap[gid] grid.AddEntityId(entityId) } -// 移除一个格子中的entityId +// RemoveEntityIdFromGrid 移除一个格子中的entityId func (a *AoiManager) RemoveEntityIdFromGrid(entityId uint32, gid uint32) { grid := a.gridMap[gid] grid.RemoveEntityId(entityId) } -// 通过坐标添加一个entityId到一个格子中 +// AddEntityIdToGridByPos 通过坐标添加一个entityId到一个格子中 func (a *AoiManager) AddEntityIdToGridByPos(entityId uint32, x, y, z float32) { gid := a.GetGidByPos(x, y, z) a.AddEntityIdToGrid(entityId, gid) } -// 通过坐标把一个entityId从对应的格子中删除 +// RemoveEntityIdFromGridByPos 通过坐标把一个entityId从对应的格子中删除 func (a *AoiManager) RemoveEntityIdFromGridByPos(entityId uint32, x, y, z float32) { gid := a.GetGidByPos(x, y, z) a.RemoveEntityIdFromGrid(entityId, gid) diff --git a/gs/game/aoi/grid.go b/pkg/alg/aoi_grid.go similarity index 71% rename from gs/game/aoi/grid.go rename to pkg/alg/aoi_grid.go index 0445d68e..786ad75f 100644 --- a/gs/game/aoi/grid.go +++ b/pkg/alg/aoi_grid.go @@ -1,12 +1,10 @@ -package aoi +package alg import ( - "fmt" - "hk4e/pkg/logger" ) -// 地图格子 +// Grid 地图格子 type Grid struct { gid uint32 // 格子id // 格子边界坐标 @@ -19,7 +17,7 @@ type Grid struct { entityIdMap map[uint32]bool // k:entityId v:是否存在 } -// 初始化格子 +// NewGrid 初始化格子 func NewGrid(gid uint32, minX, maxX, minY, maxY, minZ, maxZ int16) (r *Grid) { r = new(Grid) r.gid = gid @@ -33,12 +31,12 @@ func NewGrid(gid uint32, minX, maxX, minY, maxY, minZ, maxZ int16) (r *Grid) { return r } -// 向格子中添加一个实体id +// AddEntityId 向格子中添加一个实体id func (g *Grid) AddEntityId(entityId uint32) { g.entityIdMap[entityId] = true } -// 从格子中删除一个实体id +// RemoveEntityId 从格子中删除一个实体id func (g *Grid) RemoveEntityId(entityId uint32) { _, exist := g.entityIdMap[entityId] if exist { @@ -48,7 +46,7 @@ func (g *Grid) RemoveEntityId(entityId uint32) { } } -// 获取格子中所有实体id +// GetEntityIdList 获取格子中所有实体id func (g *Grid) GetEntityIdList() (entityIdList []uint32) { entityIdList = make([]uint32, 0) for k := range g.entityIdMap { @@ -56,9 +54,3 @@ func (g *Grid) GetEntityIdList() (entityIdList []uint32) { } return entityIdList } - -// 打印信息方法 -func (g *Grid) DebugString() string { - return fmt.Sprintf("Grid: gid: %d, minX: %d, maxX: %d, minY: %d, maxY: %d, minZ: %d, maxZ: %d, entityIdMap: %v", - g.gid, g.minX, g.maxX, g.minY, g.maxY, g.minZ, g.maxZ, g.entityIdMap) -} diff --git a/gs/game/aoi/aoi_test.go b/pkg/alg/aoi_test.go similarity index 90% rename from gs/game/aoi/aoi_test.go rename to pkg/alg/aoi_test.go index b5b82559..ce55a1ef 100644 --- a/gs/game/aoi/aoi_test.go +++ b/pkg/alg/aoi_test.go @@ -1,4 +1,4 @@ -package aoi +package alg import ( "testing" @@ -16,7 +16,6 @@ func TestAoiManagerGetSurrGridListByGid(t *testing.T) { -150, 150, 3, -150, 150, 3, ) - logger.Debug("aoiManager: %s", aoiManager.DebugString()) for k := range aoiManager.gridMap { // 得到当前格子周边的九宫格 gridList := aoiManager.GetSurrGridListByGid(k) diff --git a/pkg/alg/queue.go b/pkg/alg/queue.go index e7dfa202..2ae38130 100644 --- a/pkg/alg/queue.go +++ b/pkg/alg/queue.go @@ -6,7 +6,7 @@ type LinkList struct { nextNode *LinkList } -// LinkListQueue 无界队列 每个元素可存储不同数据结构 +// LLQueue LinkListQueue 无界队列 每个元素可存储不同数据结构 type LLQueue struct { headPtr *LinkList tailPtr *LinkList @@ -48,7 +48,7 @@ func (q *LLQueue) DeQueue() any { return ret } -// ArrayListQueue 无界队列 泛型 +// ALQueue ArrayListQueue 无界队列 泛型 type ALQueue[T any] struct { array []T } @@ -77,7 +77,7 @@ func (q *ALQueue[T]) DeQueue() T { return ret } -// RingArrayQueue 有界队列 性能最好 +// RAQueue RingArrayQueue 有界队列 性能最好 type RAQueue[T any] struct { ringArray []T ringArrayLen uint64 diff --git a/pkg/random/hk4e_mt19937.go b/pkg/random/hk4e_mt19937.go index 06cac309..39dbc906 100644 --- a/pkg/random/hk4e_mt19937.go +++ b/pkg/random/hk4e_mt19937.go @@ -26,7 +26,7 @@ func NewSource64() rand.Source64 { return &source{index: N + 1} } func (s *source) Seed(seed int64) { s.array[0] = uint64(seed) for s.index = 1; s.index < N; s.index++ { - s.array[s.index] = (0x5851F42D4C957F2D*(s.array[s.index-1]^(s.array[s.index-1]>>62)) + s.index) + s.array[s.index] = 0x5851F42D4C957F2D*(s.array[s.index-1]^(s.array[s.index-1]>>62)) + s.index } } @@ -59,7 +59,7 @@ func (s *source) Uint64() uint64 { x ^= (x >> 29) & 0x5555555555555555 x ^= (x << 17) & 0x71D67FFFEDA60000 x ^= (x << 37) & 0xFFF7EEE000000000 - x ^= (x >> 43) + x ^= x >> 43 return x } @@ -68,12 +68,15 @@ type KeyBlock struct { data [4096]byte } -func NewKeyBlock(seed uint64) *KeyBlock { +func NewKeyBlock(seed uint64, useMagicSeed bool) *KeyBlock { b := &KeyBlock{seed: seed} r := NewRand() r.Seed(int64(b.seed)) - r.Seed(int64(r.Uint64())) - r.Uint64() + if useMagicSeed { + // 2.8.0版本后加入的黑魔法 刘慈欣:6 + r.Seed(int64(r.Uint64())) + r.Uint64() + } for i := 0; i < 4096>>3; i++ { binary.BigEndian.PutUint64(b.data[i<<3:], r.Uint64()) } diff --git a/pkg/random/hk4e_test.go b/pkg/random/hk4e_test.go index f2892119..f6d68ce3 100644 --- a/pkg/random/hk4e_test.go +++ b/pkg/random/hk4e_test.go @@ -1,6 +1,7 @@ package random import ( + "encoding/hex" "fmt" "testing" ) @@ -18,8 +19,11 @@ func TestKey(t *testing.T) { gateDispatchXorKey := gateDispatchEc2b.XorKey() - keyBlock := NewKeyBlock(uint64(11468049314633205968)) + fmt.Printf("dispatchXorKey: %v\n", hex.EncodeToString(dispatchXorKey)) + fmt.Printf("gateDispatchXorKey: %v\n", hex.EncodeToString(gateDispatchXorKey)) + + keyBlock := NewKeyBlock(uint64(11468049314633205968), false) gateXorKey := keyBlock.XorKey() - fmt.Println(dispatchXorKey, gateDispatchXorKey, gateXorKey) + fmt.Printf("gateXorKey: %v\n", hex.EncodeToString(gateXorKey[:])) } diff --git a/protocol/cmd/cmd_id.go b/protocol/cmd/cmd_id.go index 1c54c792..32ee78af 100644 --- a/protocol/cmd/cmd_id.go +++ b/protocol/cmd/cmd_id.go @@ -1,2126 +1,2056 @@ package cmd const ( - AbilityChangeNotify uint16 = 1127 - AbilityInvocationFailNotify uint16 = 1200 - AbilityInvocationFixedNotify uint16 = 1179 - AbilityInvocationsNotify uint16 = 1130 - AcceptCityReputationRequestReq uint16 = 2847 - AcceptCityReputationRequestRsp uint16 = 2878 - AchievementAllDataNotify uint16 = 2692 - AchievementUpdateNotify uint16 = 2691 - ActivityAcceptAllGiveGiftReq uint16 = 8900 - ActivityAcceptAllGiveGiftRsp uint16 = 8771 - ActivityAcceptGiveGiftReq uint16 = 8827 - ActivityAcceptGiveGiftRsp uint16 = 8047 - ActivityBannerClearReq uint16 = 2147 - ActivityBannerClearRsp uint16 = 2198 - ActivityBannerNotify uint16 = 2160 - ActivityCoinInfoNotify uint16 = 2018 - ActivityCondStateChangeNotify uint16 = 2194 - ActivityDisableTransferPointInteractionNotify uint16 = 8029 - ActivityGetCanGiveFriendGiftReq uint16 = 8330 - ActivityGetCanGiveFriendGiftRsp uint16 = 8374 - ActivityGetFriendGiftWishListReq uint16 = 8642 - ActivityGetFriendGiftWishListRsp uint16 = 8355 - ActivityGetRecvGiftListReq uint16 = 8995 - ActivityGetRecvGiftListRsp uint16 = 8844 - ActivityGiveFriendGiftReq uint16 = 8178 - ActivityGiveFriendGiftRsp uint16 = 8373 - ActivityHaveRecvGiftNotify uint16 = 8118 - ActivityInfoNotify uint16 = 2119 - ActivityPlayOpenAnimNotify uint16 = 2059 - ActivityPushTipsInfoNotify uint16 = 8418 - ActivityReadPushTipsReq uint16 = 8007 - ActivityReadPushTipsRsp uint16 = 8499 - ActivitySaleChangeNotify uint16 = 2012 - ActivityScheduleInfoNotify uint16 = 2124 - ActivitySelectAvatarCardReq uint16 = 2052 - ActivitySelectAvatarCardRsp uint16 = 2154 - ActivitySetGiftWishReq uint16 = 8329 - ActivitySetGiftWishRsp uint16 = 8757 - ActivityTakeAllScoreRewardReq uint16 = 8162 + AbilityChangeNotify uint16 = 1131 + AbilityInvocationFailNotify uint16 = 1107 + AbilityInvocationFixedNotify uint16 = 1172 + AbilityInvocationsNotify uint16 = 1198 + AcceptCityReputationRequestReq uint16 = 2890 + AcceptCityReputationRequestRsp uint16 = 2873 + AchievementAllDataNotify uint16 = 2676 + AchievementUpdateNotify uint16 = 2668 + ActivityAcceptAllGiveGiftReq uint16 = 8113 + ActivityAcceptAllGiveGiftRsp uint16 = 8132 + ActivityAcceptGiveGiftReq uint16 = 8095 + ActivityAcceptGiveGiftRsp uint16 = 8502 + ActivityBannerClearReq uint16 = 2009 + ActivityBannerClearRsp uint16 = 2163 + ActivityBannerNotify uint16 = 2155 + ActivityCoinInfoNotify uint16 = 2008 + ActivityCondStateChangeNotify uint16 = 2140 + ActivityDisableTransferPointInteractionNotify uint16 = 8982 + ActivityGetCanGiveFriendGiftReq uint16 = 8559 + ActivityGetCanGiveFriendGiftRsp uint16 = 8848 + ActivityGetFriendGiftWishListReq uint16 = 8806 + ActivityGetFriendGiftWishListRsp uint16 = 8253 + ActivityGetRecvGiftListReq uint16 = 8725 + ActivityGetRecvGiftListRsp uint16 = 8120 + ActivityGiveFriendGiftReq uint16 = 8233 + ActivityGiveFriendGiftRsp uint16 = 8696 + ActivityHaveRecvGiftNotify uint16 = 8733 + ActivityInfoNotify uint16 = 2060 + ActivityPlayOpenAnimNotify uint16 = 2157 + ActivityPushTipsInfoNotify uint16 = 8513 + ActivityReadPushTipsReq uint16 = 8145 + ActivityReadPushTipsRsp uint16 = 8574 + ActivitySaleChangeNotify uint16 = 2071 + ActivityScheduleInfoNotify uint16 = 2073 + ActivitySelectAvatarCardReq uint16 = 2028 + ActivitySelectAvatarCardRsp uint16 = 2189 + ActivitySetGiftWishReq uint16 = 8017 + ActivitySetGiftWishRsp uint16 = 8554 + ActivityTakeAllScoreRewardReq uint16 = 8372 ActivityTakeAllScoreRewardRsp uint16 = 8043 - ActivityTakeScoreRewardReq uint16 = 8127 - ActivityTakeScoreRewardRsp uint16 = 8527 - ActivityTakeWatcherRewardBatchReq uint16 = 2184 - ActivityTakeWatcherRewardBatchRsp uint16 = 2090 - ActivityTakeWatcherRewardReq uint16 = 2073 - ActivityTakeWatcherRewardRsp uint16 = 2109 - ActivityUpdateWatcherNotify uint16 = 2103 - AddAranaraCollectionNotify uint16 = 6391 - AddBackupAvatarTeamReq uint16 = 1616 - AddBackupAvatarTeamRsp uint16 = 1782 - AddBlacklistReq uint16 = 4094 - AddBlacklistRsp uint16 = 4072 - AddFriendNotify uint16 = 4037 - AddNoGachaAvatarCardNotify uint16 = 1610 - AddQuestContentProgressReq uint16 = 443 - AddQuestContentProgressRsp uint16 = 461 - AddRandTaskInfoNotify uint16 = 154 - AddSeenMonsterNotify uint16 = 213 - AdjustWorldLevelReq uint16 = 112 - AdjustWorldLevelRsp uint16 = 131 - AllCoopInfoNotify uint16 = 1992 - AllMarkPointNotify uint16 = 3322 - AllSeenMonsterNotify uint16 = 228 - AllShareCDDataNotify uint16 = 9079 - AllWidgetBackgroundActiveStateNotify uint16 = 5932 - AllWidgetDataNotify uint16 = 4286 - AnchorPointDataNotify uint16 = 4292 - AnchorPointOpReq uint16 = 4285 - AnchorPointOpRsp uint16 = 4277 - AnimatorForceSetAirMoveNotify uint16 = 334 - AntiAddictNotify uint16 = 174 - AranaraCollectionDataNotify uint16 = 6392 - AreaPlayInfoNotify uint16 = 3274 - ArenaChallengeFinishNotify uint16 = 2164 - AskAddFriendNotify uint16 = 4089 - AskAddFriendReq uint16 = 4100 - AskAddFriendRsp uint16 = 4043 - AssociateInferenceWordReq uint16 = 420 - AssociateInferenceWordRsp uint16 = 463 - AsterLargeInfoNotify uint16 = 2023 - AsterLittleInfoNotify uint16 = 2121 - AsterMidCampInfoNotify uint16 = 2195 - AsterMidInfoNotify uint16 = 2055 - AsterMiscInfoNotify uint16 = 2140 - AsterProgressInfoNotify uint16 = 2091 - AvatarAddNotify uint16 = 1757 - AvatarBuffAddNotify uint16 = 394 - AvatarBuffDelNotify uint16 = 372 - AvatarCardChangeReq uint16 = 694 - AvatarCardChangeRsp uint16 = 672 - AvatarChangeAnimHashReq uint16 = 1767 - AvatarChangeAnimHashRsp uint16 = 1620 - AvatarChangeCostumeNotify uint16 = 1665 - AvatarChangeCostumeReq uint16 = 1707 - AvatarChangeCostumeRsp uint16 = 1609 - AvatarChangeElementTypeReq uint16 = 1779 - AvatarChangeElementTypeRsp uint16 = 1717 - AvatarDataNotify uint16 = 1607 - AvatarDelNotify uint16 = 1769 - AvatarDieAnimationEndReq uint16 = 1695 - AvatarDieAnimationEndRsp uint16 = 1604 - AvatarEnterElementViewNotify uint16 = 380 - AvatarEquipAffixStartNotify uint16 = 1708 - AvatarEquipChangeNotify uint16 = 676 - AvatarExpeditionAllDataReq uint16 = 1685 - AvatarExpeditionAllDataRsp uint16 = 1621 - AvatarExpeditionCallBackReq uint16 = 1777 - AvatarExpeditionCallBackRsp uint16 = 1702 - AvatarExpeditionDataNotify uint16 = 1632 - AvatarExpeditionGetRewardReq uint16 = 1640 - AvatarExpeditionGetRewardRsp uint16 = 1715 - AvatarExpeditionStartReq uint16 = 1697 - AvatarExpeditionStartRsp uint16 = 1646 - AvatarFetterDataNotify uint16 = 1617 - AvatarFetterLevelRewardReq uint16 = 1642 - AvatarFetterLevelRewardRsp uint16 = 1753 - AvatarFightPropNotify uint16 = 1300 - AvatarFightPropUpdateNotify uint16 = 1243 - AvatarFlycloakChangeNotify uint16 = 1790 - AvatarFollowRouteNotify uint16 = 3256 - AvatarGainCostumeNotify uint16 = 1625 - AvatarGainFlycloakNotify uint16 = 1676 - AvatarLifeStateChangeNotify uint16 = 1247 - AvatarPromoteGetRewardReq uint16 = 1684 - AvatarPromoteGetRewardRsp uint16 = 1658 - AvatarPromoteReq uint16 = 1731 - AvatarPromoteRsp uint16 = 1710 - AvatarPropChangeReasonNotify uint16 = 1278 - AvatarPropNotify uint16 = 1227 - AvatarRenameInfoNotify uint16 = 1797 - AvatarSatiationDataNotify uint16 = 1766 - AvatarSkillChangeNotify uint16 = 1099 - AvatarSkillDepotChangeNotify uint16 = 1019 - AvatarSkillInfoNotify uint16 = 1047 - AvatarSkillMaxChargeCountNotify uint16 = 1061 - AvatarSkillUpgradeReq uint16 = 1039 + ActivityTakeScoreRewardReq uint16 = 8971 + ActivityTakeScoreRewardRsp uint16 = 8583 + ActivityTakeWatcherRewardBatchReq uint16 = 2159 + ActivityTakeWatcherRewardBatchRsp uint16 = 2109 + ActivityTakeWatcherRewardReq uint16 = 2038 + ActivityTakeWatcherRewardRsp uint16 = 2034 + ActivityUpdateWatcherNotify uint16 = 2156 + AddAranaraCollectionNotify uint16 = 6368 + AddBackupAvatarTeamReq uint16 = 1687 + AddBackupAvatarTeamRsp uint16 = 1735 + AddBlacklistReq uint16 = 4088 + AddBlacklistRsp uint16 = 4026 + AddFriendNotify uint16 = 4022 + AddNoGachaAvatarCardNotify uint16 = 1655 + AddQuestContentProgressReq uint16 = 421 + AddQuestContentProgressRsp uint16 = 403 + AddRandTaskInfoNotify uint16 = 119 + AddSeenMonsterNotify uint16 = 223 + AdjustWorldLevelReq uint16 = 164 + AdjustWorldLevelRsp uint16 = 138 + AllCoopInfoNotify uint16 = 1976 + AllMarkPointNotify uint16 = 3283 + AllSeenMonsterNotify uint16 = 271 + AllShareCDDataNotify uint16 = 9072 + AllWidgetBackgroundActiveStateNotify uint16 = 6092 + AllWidgetDataNotify uint16 = 4271 + AnchorPointDataNotify uint16 = 4276 + AnchorPointOpReq uint16 = 4257 + AnchorPointOpRsp uint16 = 4252 + AnimatorForceSetAirMoveNotify uint16 = 374 + AntiAddictNotify uint16 = 180 + AranaraCollectionDataNotify uint16 = 6376 + AreaPlayInfoNotify uint16 = 3323 + ArenaChallengeFinishNotify uint16 = 2030 + AskAddFriendNotify uint16 = 4065 + AskAddFriendReq uint16 = 4007 + AskAddFriendRsp uint16 = 4021 + AssociateInferenceWordReq uint16 = 429 + AssociateInferenceWordRsp uint16 = 457 + AsterLargeInfoNotify uint16 = 2146 + AsterLittleInfoNotify uint16 = 2068 + AsterMidCampInfoNotify uint16 = 2133 + AsterMidInfoNotify uint16 = 2031 + AsterMiscInfoNotify uint16 = 2036 + AsterProgressInfoNotify uint16 = 2016 + AvatarAddNotify uint16 = 1769 + AvatarBuffAddNotify uint16 = 388 + AvatarBuffDelNotify uint16 = 326 + AvatarCardChangeReq uint16 = 688 + AvatarCardChangeRsp uint16 = 626 + AvatarChangeAnimHashReq uint16 = 1711 + AvatarChangeAnimHashRsp uint16 = 1647 + AvatarChangeCostumeNotify uint16 = 1644 + AvatarChangeCostumeReq uint16 = 1778 + AvatarChangeCostumeRsp uint16 = 1645 + AvatarChangeElementTypeReq uint16 = 1785 + AvatarChangeElementTypeRsp uint16 = 1651 + AvatarDataNotify uint16 = 1633 + AvatarDelNotify uint16 = 1773 + AvatarDieAnimationEndReq uint16 = 1610 + AvatarDieAnimationEndRsp uint16 = 1694 + AvatarEnterElementViewNotify uint16 = 334 + AvatarEquipAffixStartNotify uint16 = 1662 + AvatarEquipChangeNotify uint16 = 647 + AvatarExpeditionAllDataReq uint16 = 1722 + AvatarExpeditionAllDataRsp uint16 = 1648 + AvatarExpeditionCallBackReq uint16 = 1752 + AvatarExpeditionCallBackRsp uint16 = 1726 + AvatarExpeditionDataNotify uint16 = 1771 + AvatarExpeditionGetRewardReq uint16 = 1623 + AvatarExpeditionGetRewardRsp uint16 = 1784 + AvatarExpeditionStartReq uint16 = 1715 + AvatarExpeditionStartRsp uint16 = 1719 + AvatarFetterDataNotify uint16 = 1782 + AvatarFetterLevelRewardReq uint16 = 1653 + AvatarFetterLevelRewardRsp uint16 = 1606 + AvatarFightPropNotify uint16 = 1207 + AvatarFightPropUpdateNotify uint16 = 1221 + AvatarFlycloakChangeNotify uint16 = 1643 + AvatarFollowRouteNotify uint16 = 3458 + AvatarGainCostumeNotify uint16 = 1677 + AvatarGainFlycloakNotify uint16 = 1656 + AvatarLifeStateChangeNotify uint16 = 1290 + AvatarPromoteGetRewardReq uint16 = 1696 + AvatarPromoteGetRewardRsp uint16 = 1683 + AvatarPromoteReq uint16 = 1664 + AvatarPromoteRsp uint16 = 1639 + AvatarPropChangeReasonNotify uint16 = 1273 + AvatarPropNotify uint16 = 1231 + AvatarSatiationDataNotify uint16 = 1693 + AvatarSkillChangeNotify uint16 = 1097 + AvatarSkillDepotChangeNotify uint16 = 1035 + AvatarSkillInfoNotify uint16 = 1090 + AvatarSkillMaxChargeCountNotify uint16 = 1003 + AvatarSkillUpgradeReq uint16 = 1075 AvatarSkillUpgradeRsp uint16 = 1048 - AvatarTeamAllDataNotify uint16 = 1615 - AvatarTeamUpdateNotify uint16 = 1739 - AvatarUnlockTalentNotify uint16 = 1056 - AvatarUpgradeReq uint16 = 1653 - AvatarUpgradeRsp uint16 = 1792 - AvatarWearFlycloakReq uint16 = 1636 - AvatarWearFlycloakRsp uint16 = 1613 - BackMyWorldReq uint16 = 269 - BackMyWorldRsp uint16 = 218 - BackPlayCustomDungeonOfficialReq uint16 = 6224 - BackPlayCustomDungeonOfficialRsp uint16 = 6220 - BackRebornGalleryReq uint16 = 5507 - BackRebornGalleryRsp uint16 = 5517 - BargainOfferPriceReq uint16 = 407 - BargainOfferPriceRsp uint16 = 417 - BargainStartNotify uint16 = 444 - BargainTerminateNotify uint16 = 405 - BartenderCancelLevelReq uint16 = 8446 - BartenderCancelLevelRsp uint16 = 8698 - BartenderCancelOrderReq uint16 = 8249 - BartenderCancelOrderRsp uint16 = 8254 - BartenderCompleteOrderReq uint16 = 8880 - BartenderCompleteOrderRsp uint16 = 8870 - BartenderFinishLevelReq uint16 = 8122 - BartenderFinishLevelRsp uint16 = 8250 - BartenderGetFormulaReq uint16 = 8230 - BartenderGetFormulaRsp uint16 = 8975 - BartenderLevelProgressNotify uint16 = 8415 - BartenderStartLevelReq uint16 = 8590 - BartenderStartLevelRsp uint16 = 8142 - BatchBuyGoodsReq uint16 = 778 - BatchBuyGoodsRsp uint16 = 757 - BattlePassAllDataNotify uint16 = 2642 - BattlePassBuySuccNotify uint16 = 2602 - BattlePassCurScheduleUpdateNotify uint16 = 2635 - BattlePassMissionDelNotify uint16 = 2622 - BattlePassMissionUpdateNotify uint16 = 2641 - BeginCameraSceneLookNotify uint16 = 249 - BeginCameraSceneLookWithTemplateNotify uint16 = 3342 - BigTalentPointConvertReq uint16 = 1100 - BigTalentPointConvertRsp uint16 = 1043 - BlessingAcceptAllGivePicReq uint16 = 2009 - BlessingAcceptAllGivePicRsp uint16 = 2065 - BlessingAcceptGivePicReq uint16 = 2153 - BlessingAcceptGivePicRsp uint16 = 2010 - BlessingGetAllRecvPicRecordListReq uint16 = 2084 - BlessingGetAllRecvPicRecordListRsp uint16 = 2058 - BlessingGetFriendPicListReq uint16 = 2190 - BlessingGetFriendPicListRsp uint16 = 2076 - BlessingGiveFriendPicReq uint16 = 2108 - BlessingGiveFriendPicRsp uint16 = 2042 - BlessingRecvFriendPicNotify uint16 = 2107 - BlessingRedeemRewardReq uint16 = 2036 - BlessingRedeemRewardRsp uint16 = 2013 - BlessingScanReq uint16 = 2186 - BlessingScanRsp uint16 = 2166 - BlitzRushParkourRestartReq uint16 = 8986 - BlitzRushParkourRestartRsp uint16 = 8453 - BlossomBriefInfoNotify uint16 = 2756 - BlossomChestCreateNotify uint16 = 2743 - BlossomChestInfoNotify uint16 = 847 + AvatarTeamAllDataNotify uint16 = 1749 + AvatarTeamUpdateNotify uint16 = 1706 + AvatarUnlockTalentNotify uint16 = 1012 + AvatarUpgradeReq uint16 = 1770 + AvatarUpgradeRsp uint16 = 1701 + AvatarWearFlycloakReq uint16 = 1737 + AvatarWearFlycloakRsp uint16 = 1698 + BackMyWorldReq uint16 = 286 + BackMyWorldRsp uint16 = 201 + BackPlayCustomDungeonOfficialReq uint16 = 6203 + BackPlayCustomDungeonOfficialRsp uint16 = 6204 + BackRebornGalleryReq uint16 = 5593 + BackRebornGalleryRsp uint16 = 5527 + BargainOfferPriceReq uint16 = 493 + BargainOfferPriceRsp uint16 = 427 + BargainStartNotify uint16 = 404 + BargainTerminateNotify uint16 = 494 + BartenderCancelLevelReq uint16 = 8771 + BartenderCancelLevelRsp uint16 = 8686 + BartenderCancelOrderReq uint16 = 8442 + BartenderCancelOrderRsp uint16 = 8837 + BartenderCompleteOrderReq uint16 = 8414 + BartenderCompleteOrderRsp uint16 = 8125 + BartenderFinishLevelReq uint16 = 8227 + BartenderFinishLevelRsp uint16 = 8093 + BartenderGetFormulaReq uint16 = 8462 + BartenderGetFormulaRsp uint16 = 8842 + BartenderLevelProgressNotify uint16 = 8756 + BartenderStartLevelReq uint16 = 8507 + BartenderStartLevelRsp uint16 = 8402 + BattlePassAllDataNotify uint16 = 2626 + BattlePassBuySuccNotify uint16 = 2614 + BattlePassCurScheduleUpdateNotify uint16 = 2607 + BattlePassMissionDelNotify uint16 = 2625 + BattlePassMissionUpdateNotify uint16 = 2618 + BeginCameraSceneLookNotify uint16 = 270 + BeginCameraSceneLookWithTemplateNotify uint16 = 3160 + BigTalentPointConvertReq uint16 = 1007 + BigTalentPointConvertRsp uint16 = 1021 + BlessingAcceptAllGivePicReq uint16 = 2045 + BlessingAcceptAllGivePicRsp uint16 = 2044 + BlessingAcceptGivePicReq uint16 = 2006 + BlessingAcceptGivePicRsp uint16 = 2055 + BlessingGetAllRecvPicRecordListReq uint16 = 2096 + BlessingGetAllRecvPicRecordListRsp uint16 = 2083 + BlessingGetFriendPicListReq uint16 = 2043 + BlessingGetFriendPicListRsp uint16 = 2056 + BlessingGiveFriendPicReq uint16 = 2062 + BlessingGiveFriendPicRsp uint16 = 2053 + BlessingRecvFriendPicNotify uint16 = 2178 + BlessingRedeemRewardReq uint16 = 2137 + BlessingRedeemRewardRsp uint16 = 2098 + BlessingScanReq uint16 = 2081 + BlessingScanRsp uint16 = 2093 + BlitzRushParkourRestartReq uint16 = 8653 + BlitzRushParkourRestartRsp uint16 = 8944 + BlossomBriefInfoNotify uint16 = 2712 + BlossomChestCreateNotify uint16 = 2721 + BlossomChestInfoNotify uint16 = 890 BonusActivityInfoReq uint16 = 2548 - BonusActivityInfoRsp uint16 = 2599 - BonusActivityUpdateNotify uint16 = 2539 - BossChestActivateNotify uint16 = 861 - BounceConjuringSettleNotify uint16 = 8653 - BrickBreakerPlayerReadyNotify uint16 = 5396 - BrickBreakerPlayerSetAvatarNotify uint16 = 5362 - BrickBreakerPlayerSetChangingNotify uint16 = 5370 - BrickBreakerPlayerSetSkillNotify uint16 = 5351 - BrickBreakerQuitReq uint16 = 24991 - BrickBreakerQuitRsp uint16 = 24959 - BrickBreakerSelectAvatarReq uint16 = 5368 - BrickBreakerSelectAvatarRsp uint16 = 5359 - BrickBreakerSelectSkillReq uint16 = 5329 - BrickBreakerSelectSkillRsp uint16 = 5386 - BrickBreakerSetChangingReq uint16 = 5358 - BrickBreakerSetChangingRsp uint16 = 5314 - BrickBreakerSetReadyReq uint16 = 5371 - BrickBreakerSetReadyRsp uint16 = 5332 - BrickBreakerSettleNotify uint16 = 23886 - BrickBreakerTwiceStartReq uint16 = 24700 - BrickBreakerTwiceStartRsp uint16 = 20232 - BuoyantCombatSettleNotify uint16 = 8751 - BuyBattlePassLevelReq uint16 = 2643 - BuyBattlePassLevelRsp uint16 = 2609 - BuyGoodsReq uint16 = 756 - BuyGoodsRsp uint16 = 719 - BuyResinReq uint16 = 693 - BuyResinRsp uint16 = 654 - CalcWeaponUpgradeReturnItemsReq uint16 = 666 - CalcWeaponUpgradeReturnItemsRsp uint16 = 652 - CancelCityReputationRequestReq uint16 = 2857 - CancelCityReputationRequestRsp uint16 = 2827 - CancelCoopTaskReq uint16 = 1993 - CancelCoopTaskRsp uint16 = 1959 - CancelFinishParentQuestNotify uint16 = 422 - CanUseSkillNotify uint16 = 1042 - CardProductRewardNotify uint16 = 4135 - CataLogFinishedGlobalWatcherAllDataNotify uint16 = 6365 - CataLogNewFinishedGlobalWatcherNotify uint16 = 6368 - ChallengeDataNotify uint16 = 973 - ChallengeRecordNotify uint16 = 907 - ChangeAvatarReq uint16 = 1682 - ChangeAvatarRsp uint16 = 1699 - ChangeCustomDungeonRoomReq uint16 = 6217 - ChangeCustomDungeonRoomRsp uint16 = 6212 - ChangeGameTimeReq uint16 = 178 - ChangeGameTimeRsp uint16 = 157 + BonusActivityInfoRsp uint16 = 2597 + BonusActivityUpdateNotify uint16 = 2575 + BossChestActivateNotify uint16 = 803 + BounceConjuringSettleNotify uint16 = 8084 + BuoyantCombatSettleNotify uint16 = 8305 + BuyBattlePassLevelReq uint16 = 2647 + BuyBattlePassLevelRsp uint16 = 2637 + BuyGoodsReq uint16 = 712 + BuyGoodsRsp uint16 = 735 + BuyResinReq uint16 = 602 + BuyResinRsp uint16 = 619 + CalcWeaponUpgradeReturnItemsReq uint16 = 633 + CalcWeaponUpgradeReturnItemsRsp uint16 = 684 + CanUseSkillNotify uint16 = 1005 + CancelCityReputationRequestReq uint16 = 2899 + CancelCityReputationRequestRsp uint16 = 2831 + CancelCoopTaskReq uint16 = 1997 + CancelCoopTaskRsp uint16 = 1987 + CancelFinishParentQuestNotify uint16 = 424 + CardProductRewardNotify uint16 = 4107 + CataLogFinishedGlobalWatcherAllDataNotify uint16 = 6370 + CataLogNewFinishedGlobalWatcherNotify uint16 = 6395 + ChallengeDataNotify uint16 = 953 + ChallengeRecordNotify uint16 = 993 + ChangeAvatarReq uint16 = 1640 + ChangeAvatarRsp uint16 = 1607 + ChangeCustomDungeonRoomReq uint16 = 6222 + ChangeCustomDungeonRoomRsp uint16 = 6244 + ChangeGameTimeReq uint16 = 173 + ChangeGameTimeRsp uint16 = 199 ChangeMailStarNotify uint16 = 1448 - ChangeMpTeamAvatarReq uint16 = 1645 - ChangeMpTeamAvatarRsp uint16 = 1730 - ChangeServerGlobalValueNotify uint16 = 17 - ChangeTeamNameReq uint16 = 1706 - ChangeTeamNameRsp uint16 = 1696 - ChangeWidgetBackgroundActiveStateReq uint16 = 5959 - ChangeWidgetBackgroundActiveStateRsp uint16 = 5955 - ChangeWorldToSingleModeNotify uint16 = 3461 - ChangeWorldToSingleModeReq uint16 = 3296 - ChangeWorldToSingleModeRsp uint16 = 3258 - ChannelerSlabCheckEnterLoopDungeonReq uint16 = 8286 - ChannelerSlabCheckEnterLoopDungeonRsp uint16 = 8631 - ChannelerSlabEnterLoopDungeonReq uint16 = 8564 - ChannelerSlabEnterLoopDungeonRsp uint16 = 8526 - ChannelerSlabLoopDungeonChallengeInfoNotify uint16 = 8576 - ChannelerSlabLoopDungeonSelectConditionReq uint16 = 8659 - ChannelerSlabLoopDungeonSelectConditionRsp uint16 = 8858 - ChannelerSlabLoopDungeonTakeFirstPassRewardReq uint16 = 8498 - ChannelerSlabLoopDungeonTakeFirstPassRewardRsp uint16 = 8824 - ChannelerSlabLoopDungeonTakeScoreRewardReq uint16 = 8348 - ChannelerSlabLoopDungeonTakeScoreRewardRsp uint16 = 8369 - ChannelerSlabOneOffDungeonInfoNotify uint16 = 8015 - ChannelerSlabOneOffDungeonInfoReq uint16 = 8877 - ChannelerSlabOneOffDungeonInfoRsp uint16 = 8270 - ChannelerSlabSaveAssistInfoReq uint16 = 8039 - ChannelerSlabSaveAssistInfoRsp uint16 = 8071 - ChannelerSlabStageActiveChallengeIndexNotify uint16 = 8857 - ChannelerSlabStageOneoffDungeonNotify uint16 = 8692 - ChannelerSlabTakeoffBuffReq uint16 = 8299 - ChannelerSlabTakeoffBuffRsp uint16 = 8034 - ChannelerSlabWearBuffReq uint16 = 8664 - ChannelerSlabWearBuffRsp uint16 = 8285 - ChapterStateNotify uint16 = 442 - CharAmusementSettleNotify uint16 = 23128 + ChangeMpTeamAvatarReq uint16 = 1708 + ChangeMpTeamAvatarRsp uint16 = 1753 + ChangeServerGlobalValueNotify uint16 = 27 + ChangeTeamNameReq uint16 = 1603 + ChangeTeamNameRsp uint16 = 1666 + ChangeWidgetBackgroundActiveStateReq uint16 = 5907 + ChangeWidgetBackgroundActiveStateRsp uint16 = 6060 + ChangeWorldToSingleModeNotify uint16 = 3006 + ChangeWorldToSingleModeReq uint16 = 3066 + ChangeWorldToSingleModeRsp uint16 = 3282 + ChannelerSlabCheckEnterLoopDungeonReq uint16 = 8745 + ChannelerSlabCheckEnterLoopDungeonRsp uint16 = 8452 + ChannelerSlabEnterLoopDungeonReq uint16 = 8869 + ChannelerSlabEnterLoopDungeonRsp uint16 = 8081 + ChannelerSlabLoopDungeonChallengeInfoNotify uint16 = 8224 + ChannelerSlabLoopDungeonSelectConditionReq uint16 = 8503 + ChannelerSlabLoopDungeonSelectConditionRsp uint16 = 8509 + ChannelerSlabLoopDungeonTakeFirstPassRewardReq uint16 = 8589 + ChannelerSlabLoopDungeonTakeFirstPassRewardRsp uint16 = 8539 + ChannelerSlabLoopDungeonTakeScoreRewardReq uint16 = 8684 + ChannelerSlabLoopDungeonTakeScoreRewardRsp uint16 = 8433 + ChannelerSlabOneOffDungeonInfoNotify uint16 = 8729 + ChannelerSlabOneOffDungeonInfoReq uint16 = 8409 + ChannelerSlabOneOffDungeonInfoRsp uint16 = 8268 + ChannelerSlabSaveAssistInfoReq uint16 = 8416 + ChannelerSlabSaveAssistInfoRsp uint16 = 8932 + ChannelerSlabStageActiveChallengeIndexNotify uint16 = 8734 + ChannelerSlabStageOneofDungeonNotify uint16 = 8203 + ChannelerSlabTakeoffBuffReq uint16 = 8516 + ChannelerSlabTakeoffBuffRsp uint16 = 8237 + ChannelerSlabWearBuffReq uint16 = 8107 + ChannelerSlabWearBuffRsp uint16 = 8600 + ChapterStateNotify uint16 = 405 + CharAmusementSettleNotify uint16 = 23133 ChatChannelDataNotify uint16 = 4998 - ChatChannelInfoNotify uint16 = 4975 - ChatChannelShieldNotify uint16 = 5049 - ChatChannelUpdateNotify uint16 = 4989 - ChatHistoryNotify uint16 = 3309 - CheckAddItemExceedLimitNotify uint16 = 697 - CheckGroupReplacedReq uint16 = 3056 - CheckGroupReplacedRsp uint16 = 3411 - CheckSegmentCRCNotify uint16 = 16 - CheckSegmentCRCReq uint16 = 73 - CheckUgcStateReq uint16 = 6345 - CheckUgcStateRsp uint16 = 6302 - CheckUgcUpdateReq uint16 = 6315 - CheckUgcUpdateRsp uint16 = 6318 - ChessEscapedMonstersNotify uint16 = 5341 - ChessLeftMonstersNotify uint16 = 5336 - ChessManualRefreshCardsReq uint16 = 5326 - ChessManualRefreshCardsRsp uint16 = 5377 - ChessPickCardNotify uint16 = 5374 - ChessPickCardReq uint16 = 5366 - ChessPickCardRsp uint16 = 5352 - ChessPlayerInfoNotify uint16 = 5365 - ChessSelectedCardsNotify uint16 = 5397 - ChooseCurAvatarTeamReq uint16 = 1738 - ChooseCurAvatarTeamRsp uint16 = 1778 - CityReputationDataNotify uint16 = 2842 - CityReputationLevelupNotify uint16 = 2900 - ClearRoguelikeCurseNotify uint16 = 8038 - ClientAbilitiesInitFinishCombineNotify uint16 = 1161 - ClientAbilityChangeNotify uint16 = 1139 - ClientAbilityInitBeginNotify uint16 = 1156 - ClientAbilityInitFinishNotify uint16 = 1119 - ClientAIStateNotify uint16 = 1125 - ClientBulletCreateNotify uint16 = 44 - ClientCollectorDataNotify uint16 = 4252 - ClientHashDebugNotify uint16 = 3287 - ClientLoadingCostumeVerificationNotify uint16 = 3269 - ClientLockGameTimeNotify uint16 = 141 - ClientNewMailNotify uint16 = 1457 - ClientPauseNotify uint16 = 236 - ClientReconnectNotify uint16 = 39 - ClientRemoveCombatEndModifierNotify uint16 = 1190 - ClientReportNotify uint16 = 25 - ClientScriptEventNotify uint16 = 260 - ClientTransmitReq uint16 = 221 - ClientTransmitRsp uint16 = 222 + ChatChannelUpdateNotify uint16 = 5025 + ChatHistoryNotify uint16 = 3496 + CheckAddItemExceedLimitNotify uint16 = 692 + CheckGroupReplacedReq uint16 = 3113 + CheckGroupReplacedRsp uint16 = 3152 + CheckSegmentCRCNotify uint16 = 39 + CheckSegmentCRCReq uint16 = 53 + CheckUgcStateReq uint16 = 6342 + CheckUgcStateRsp uint16 = 6314 + CheckUgcUpdateReq uint16 = 6320 + CheckUgcUpdateRsp uint16 = 6345 + ChessEscapedMonstersNotify uint16 = 5314 + ChessLeftMonstersNotify uint16 = 5360 + ChessManualRefreshCardsReq uint16 = 5389 + ChessManualRefreshCardsRsp uint16 = 5359 + ChessPickCardNotify uint16 = 5380 + ChessPickCardReq uint16 = 5333 + ChessPickCardRsp uint16 = 5384 + ChessPlayerInfoNotify uint16 = 5332 + ChessSelectedCardsNotify uint16 = 5392 + ChooseCurAvatarTeamReq uint16 = 1796 + ChooseCurAvatarTeamRsp uint16 = 1661 + CityReputationDataNotify uint16 = 2805 + CityReputationLevelupNotify uint16 = 2807 + ClearRoguelikeCurseNotify uint16 = 8207 + ClientAIStateNotify uint16 = 1181 + ClientAbilitiesInitFinishCombineNotify uint16 = 1103 + ClientAbilityChangeNotify uint16 = 1175 + ClientAbilityInitBeginNotify uint16 = 1112 + ClientAbilityInitFinishNotify uint16 = 1135 + ClientBulletCreateNotify uint16 = 4 + ClientCollectorDataNotify uint16 = 4264 + ClientHashDebugNotify uint16 = 3086 + ClientLoadingCostumeVerificationNotify uint16 = 3487 + ClientLockGameTimeNotify uint16 = 114 + ClientNewMailNotify uint16 = 1499 + ClientPauseNotify uint16 = 260 + ClientReconnectNotify uint16 = 75 + ClientRemoveCombatEndModifierNotify uint16 = 1182 + ClientReportNotify uint16 = 81 + ClientScriptEventNotify uint16 = 213 + ClientTransmitReq uint16 = 291 + ClientTransmitRsp uint16 = 224 ClientTriggerEventNotify uint16 = 148 - CloseCommonTipsNotify uint16 = 3273 - ClosedItemNotify uint16 = 641 - CodexDataFullNotify uint16 = 4201 - CodexDataUpdateNotify uint16 = 4203 - CoinCollectCheckDoubleStartPlayReq uint16 = 22424 - CoinCollectCheckDoubleStartPlayRsp uint16 = 24124 - CoinCollectChooseSkillReq uint16 = 21667 - CoinCollectChooseSkillRsp uint16 = 23416 - CoinCollectGallerySettleNotify uint16 = 5546 - CoinCollectInterruptPlayReq uint16 = 20562 - CoinCollectInterruptPlayRsp uint16 = 23589 - CoinCollectPrepareReq uint16 = 23071 - CoinCollectPrepareRsp uint16 = 23817 - CoinCollectPrepareStageNotify uint16 = 6408 - CombatInvocationsNotify uint16 = 354 - CombineDataNotify uint16 = 677 - CombineFormulaDataNotify uint16 = 665 - CombineReq uint16 = 675 - CombineRsp uint16 = 634 - CommonPlayerTipsNotify uint16 = 8167 - CompoundDataNotify uint16 = 164 - CompoundUnlockNotify uint16 = 106 - CookDataNotify uint16 = 133 - CookGradeDataNotify uint16 = 180 - CookRecipeDataNotify uint16 = 110 - CoopCgShowNotify uint16 = 1951 - CoopCgUpdateNotify uint16 = 1962 - CoopChapterUpdateNotify uint16 = 1967 - CoopDataNotify uint16 = 1994 - CoopPointUpdateNotify uint16 = 1958 - CoopProgressUpdateNotify uint16 = 1987 - CoopRewardUpdateNotify uint16 = 1984 - CreateMassiveEntityNotify uint16 = 353 - CreateMassiveEntityReq uint16 = 311 - CreateMassiveEntityRsp uint16 = 350 - CreateVehicleReq uint16 = 807 - CreateVehicleRsp uint16 = 817 - CrystalLinkDungeonInfoNotify uint16 = 8408 - CrystalLinkEnterDungeonReq uint16 = 8179 - CrystalLinkEnterDungeonRsp uint16 = 8628 - CrystalLinkRestartDungeonReq uint16 = 8177 - CrystalLinkRestartDungeonRsp uint16 = 8741 - CustomDungeonBattleRecordNotify uint16 = 6225 - CustomDungeonOfficialNotify uint16 = 6236 - CustomDungeonRecoverNotify uint16 = 6228 - CustomDungeonUpdateNotify uint16 = 6230 - CutSceneBeginNotify uint16 = 283 - CutSceneEndNotify uint16 = 281 - CutSceneFinishNotify uint16 = 284 - DailyTaskDataNotify uint16 = 124 - DailyTaskFilterCityReq uint16 = 101 - DailyTaskFilterCityRsp uint16 = 138 - DailyTaskProgressNotify uint16 = 149 - DailyTaskScoreRewardNotify uint16 = 191 - DailyTaskUnlockedCitiesNotify uint16 = 169 - DataResVersionNotify uint16 = 153 - DealAddFriendReq uint16 = 4061 - DealAddFriendRsp uint16 = 4047 - DeathZoneInfoNotify uint16 = 6291 - DeathZoneObserveNotify uint16 = 3062 + CloseCommonTipsNotify uint16 = 3194 + ClosedItemNotify uint16 = 614 + CodexDataFullNotify uint16 = 4205 + CodexDataUpdateNotify uint16 = 4207 + CombatInvocationsNotify uint16 = 319 + CombineDataNotify uint16 = 659 + CombineFormulaDataNotify uint16 = 632 + CombineReq uint16 = 643 + CombineRsp uint16 = 674 + CommonPlayerTipsNotify uint16 = 8466 + CompoundDataNotify uint16 = 146 + CompoundUnlockNotify uint16 = 128 + CookDataNotify uint16 = 195 + CookGradeDataNotify uint16 = 134 + CookRecipeDataNotify uint16 = 106 + CoopCgShowNotify uint16 = 1983 + CoopCgUpdateNotify uint16 = 1994 + CoopChapterUpdateNotify uint16 = 1972 + CoopDataNotify uint16 = 1979 + CoopPointUpdateNotify uint16 = 1991 + CoopProgressUpdateNotify uint16 = 1998 + CoopRewardUpdateNotify uint16 = 1999 + CreateMassiveEntityNotify uint16 = 367 + CreateMassiveEntityReq uint16 = 342 + CreateMassiveEntityRsp uint16 = 330 + CreateVehicleReq uint16 = 893 + CreateVehicleRsp uint16 = 827 + CrystalLinkDungeonInfoNotify uint16 = 8858 + CrystalLinkEnterDungeonReq uint16 = 8325 + CrystalLinkEnterDungeonRsp uint16 = 8147 + CrystalLinkRestartDungeonReq uint16 = 8022 + CrystalLinkRestartDungeonRsp uint16 = 8119 + CustomDungeonBattleRecordNotify uint16 = 6236 + CustomDungeonOfficialNotify uint16 = 6221 + CustomDungeonRecoverNotify uint16 = 6217 + CustomDungeonUpdateNotify uint16 = 6223 + CutSceneBeginNotify uint16 = 296 + CutSceneEndNotify uint16 = 215 + CutSceneFinishNotify uint16 = 262 + DailyTaskDataNotify uint16 = 158 + DailyTaskFilterCityReq uint16 = 111 + DailyTaskFilterCityRsp uint16 = 144 + DailyTaskProgressNotify uint16 = 170 + DailyTaskScoreRewardNotify uint16 = 117 + DailyTaskUnlockedCitiesNotify uint16 = 186 + DataResVersionNotify uint16 = 167 + DealAddFriendReq uint16 = 4003 + DealAddFriendRsp uint16 = 4090 + DeathZoneInfoNotify uint16 = 6268 + DeathZoneObserveNotify uint16 = 3475 DebugNotify uint16 = 101 - DelBackupAvatarTeamReq uint16 = 1698 - DelBackupAvatarTeamRsp uint16 = 1666 - DeleteFriendNotify uint16 = 4073 - DeleteFriendReq uint16 = 4027 - DeleteFriendRsp uint16 = 4039 - DelMailReq uint16 = 1443 - DelMailRsp uint16 = 1461 - DelScenePlayTeamEntityNotify uint16 = 3237 - DelTeamEntityNotify uint16 = 393 - DeshretObeliskChestInfoNotify uint16 = 867 - DestroyMassiveEntityNotify uint16 = 324 - DestroyMaterialReq uint16 = 685 - DestroyMaterialRsp uint16 = 608 - DigActivityChangeGadgetStateReq uint16 = 8372 - DigActivityChangeGadgetStateRsp uint16 = 8289 - DigActivityMarkPointChangeNotify uint16 = 8871 - DisableRoguelikeTrapNotify uint16 = 8839 - DoGachaReq uint16 = 1556 - DoGachaRsp uint16 = 1519 - DoRoguelikeDungeonCardGachaReq uint16 = 8740 - DoRoguelikeDungeonCardGachaRsp uint16 = 8144 - DoSetPlayerBornDataNotify uint16 = 176 - DraftGuestReplyInviteNotify uint16 = 5447 - DraftGuestReplyInviteReq uint16 = 5443 - DraftGuestReplyInviteRsp uint16 = 5461 - DraftGuestReplyTwiceConfirmNotify uint16 = 5499 - DraftGuestReplyTwiceConfirmReq uint16 = 5427 - DraftGuestReplyTwiceConfirmRsp uint16 = 5439 - DraftInviteResultNotify uint16 = 5478 - DraftOwnerInviteNotify uint16 = 5500 - DraftOwnerStartInviteReq uint16 = 5456 - DraftOwnerStartInviteRsp uint16 = 5419 - DraftOwnerTwiceConfirmNotify uint16 = 5457 + DelBackupAvatarTeamReq uint16 = 1731 + DelBackupAvatarTeamRsp uint16 = 1729 + DelMailReq uint16 = 1421 + DelMailRsp uint16 = 1403 + DelScenePlayTeamEntityNotify uint16 = 3318 + DelTeamEntityNotify uint16 = 302 + DeleteFriendNotify uint16 = 4053 + DeleteFriendReq uint16 = 4031 + DeleteFriendRsp uint16 = 4075 + DeshretObeliskChestInfoNotify uint16 = 841 + DestroyMassiveEntityNotify uint16 = 358 + DestroyMaterialReq uint16 = 640 + DestroyMaterialRsp uint16 = 618 + DigActivityChangeGadgetStateReq uint16 = 8464 + DigActivityChangeGadgetStateRsp uint16 = 8430 + DigActivityMarkPointChangeNotify uint16 = 8109 + DisableRoguelikeTrapNotify uint16 = 8259 + DoGachaReq uint16 = 1512 + DoGachaRsp uint16 = 1535 + DoRoguelikeDungeonCardGachaReq uint16 = 8148 + DoRoguelikeDungeonCardGachaRsp uint16 = 8472 + DoSetPlayerBornDataNotify uint16 = 147 + DraftGuestReplyInviteNotify uint16 = 5490 + DraftGuestReplyInviteReq uint16 = 5421 + DraftGuestReplyInviteRsp uint16 = 5403 + DraftGuestReplyTwiceConfirmNotify uint16 = 5497 + DraftGuestReplyTwiceConfirmReq uint16 = 5431 + DraftGuestReplyTwiceConfirmRsp uint16 = 5475 + DraftInviteResultNotify uint16 = 5473 + DraftOwnerInviteNotify uint16 = 5407 + DraftOwnerStartInviteReq uint16 = 5412 + DraftOwnerStartInviteRsp uint16 = 5435 + DraftOwnerTwiceConfirmNotify uint16 = 5499 DraftTwiceConfirmResultNotify uint16 = 5448 - DragonSpineChapterFinishNotify uint16 = 2149 - DragonSpineChapterOpenNotify uint16 = 2123 - DragonSpineChapterProgressChangeNotify uint16 = 2035 - DragonSpineCoinChangeNotify uint16 = 2086 - DropHintNotify uint16 = 646 - DropItemReq uint16 = 657 - DropItemRsp uint16 = 627 - DungeonCandidateTeamChangeAvatarReq uint16 = 982 - DungeonCandidateTeamChangeAvatarRsp uint16 = 911 - DungeonCandidateTeamCreateReq uint16 = 933 - DungeonCandidateTeamCreateRsp uint16 = 910 - DungeonCandidateTeamDismissNotify uint16 = 903 - DungeonCandidateTeamInfoNotify uint16 = 917 - DungeonCandidateTeamInviteNotify uint16 = 905 - DungeonCandidateTeamInviteReq uint16 = 980 - DungeonCandidateTeamInviteRsp uint16 = 946 - DungeonCandidateTeamKickReq uint16 = 975 - DungeonCandidateTeamKickRsp uint16 = 934 - DungeonCandidateTeamLeaveReq uint16 = 995 - DungeonCandidateTeamLeaveRsp uint16 = 964 - DungeonCandidateTeamPlayerLeaveNotify uint16 = 972 - DungeonCandidateTeamRefuseNotify uint16 = 994 - DungeonCandidateTeamReplyInviteReq uint16 = 967 - DungeonCandidateTeamReplyInviteRsp uint16 = 915 - DungeonCandidateTeamSetChangingAvatarReq uint16 = 908 - DungeonCandidateTeamSetChangingAvatarRsp uint16 = 909 - DungeonCandidateTeamSetReadyReq uint16 = 921 - DungeonCandidateTeamSetReadyRsp uint16 = 922 - DungeonChallengeBeginNotify uint16 = 976 - DungeonChallengeFinishNotify uint16 = 916 - DungeonDataNotify uint16 = 990 - DungeonDieOptionReq uint16 = 939 + DragonSpineChapterFinishNotify uint16 = 2069 + DragonSpineChapterOpenNotify uint16 = 2022 + DragonSpineChapterProgressChangeNotify uint16 = 2065 + DragonSpineCoinChangeNotify uint16 = 2088 + DropHintNotify uint16 = 650 + DropItemReq uint16 = 699 + DropItemRsp uint16 = 631 + DungeonCandidateTeamChangeAvatarReq uint16 = 956 + DungeonCandidateTeamChangeAvatarRsp uint16 = 942 + DungeonCandidateTeamCreateReq uint16 = 995 + DungeonCandidateTeamCreateRsp uint16 = 906 + DungeonCandidateTeamDismissNotify uint16 = 963 + DungeonCandidateTeamInfoNotify uint16 = 927 + DungeonCandidateTeamInviteNotify uint16 = 994 + DungeonCandidateTeamInviteReq uint16 = 934 + DungeonCandidateTeamInviteRsp uint16 = 950 + DungeonCandidateTeamKickReq uint16 = 943 + DungeonCandidateTeamKickRsp uint16 = 974 + DungeonCandidateTeamLeaveReq uint16 = 976 + DungeonCandidateTeamLeaveRsp uint16 = 946 + DungeonCandidateTeamPlayerLeaveNotify uint16 = 926 + DungeonCandidateTeamRefuseNotify uint16 = 988 + DungeonCandidateTeamReplyInviteReq uint16 = 941 + DungeonCandidateTeamReplyInviteRsp uint16 = 949 + DungeonCandidateTeamSetChangingAvatarReq uint16 = 918 + DungeonCandidateTeamSetChangingAvatarRsp uint16 = 966 + DungeonCandidateTeamSetReadyReq uint16 = 991 + DungeonCandidateTeamSetReadyRsp uint16 = 924 + DungeonChallengeBeginNotify uint16 = 947 + DungeonChallengeFinishNotify uint16 = 939 + DungeonDataNotify uint16 = 982 + DungeonDieOptionReq uint16 = 975 DungeonDieOptionRsp uint16 = 948 - DungeonEntryInfoReq uint16 = 979 - DungeonEntryInfoRsp uint16 = 930 - DungeonEntryToBeExploreNotify uint16 = 3196 - DungeonFollowNotify uint16 = 937 - DungeonGetStatueDropReq uint16 = 989 - DungeonGetStatueDropRsp uint16 = 944 - DungeonInterruptChallengeReq uint16 = 991 - DungeonInterruptChallengeRsp uint16 = 993 - DungeonPlayerDieNotify uint16 = 927 - DungeonPlayerDieReq uint16 = 925 - DungeonPlayerDieRsp uint16 = 942 - DungeonRestartInviteNotify uint16 = 963 + DungeonEntryInfoReq uint16 = 972 + DungeonEntryInfoRsp uint16 = 998 + DungeonEntryToBeExploreNotify uint16 = 3147 + DungeonFollowNotify uint16 = 922 + DungeonGetStatueDropReq uint16 = 965 + DungeonGetStatueDropRsp uint16 = 904 + DungeonInterruptChallengeReq uint16 = 917 + DungeonInterruptChallengeRsp uint16 = 902 + DungeonPlayerDieNotify uint16 = 931 + DungeonPlayerDieReq uint16 = 981 + DungeonPlayerDieRsp uint16 = 905 + DungeonRestartInviteNotify uint16 = 957 DungeonRestartInviteReplyNotify uint16 = 987 - DungeonRestartInviteReplyReq uint16 = 904 - DungeonRestartInviteReplyRsp uint16 = 923 - DungeonRestartReq uint16 = 998 - DungeonRestartResultNotify uint16 = 985 - DungeonRestartRsp uint16 = 920 - DungeonReviseLevelNotify uint16 = 966 - DungeonSettleNotify uint16 = 957 - DungeonShowReminderNotify uint16 = 999 - DungeonSlipRevivePointActivateReq uint16 = 924 - DungeonSlipRevivePointActivateRsp uint16 = 949 - DungeonWayPointActivateReq uint16 = 947 - DungeonWayPointActivateRsp uint16 = 978 - DungeonWayPointNotify uint16 = 961 - EchoNotify uint16 = 89 - EchoShellTakeRewardReq uint16 = 8049 - EchoShellTakeRewardRsp uint16 = 8265 - EchoShellUpdateNotify uint16 = 8891 - EffigyChallengeInfoNotify uint16 = 2113 - EffigyChallengeResultNotify uint16 = 2022 - EffigyChallengeV2ChooseSkillReq uint16 = 23748 - EffigyChallengeV2ChooseSkillRsp uint16 = 23618 - EffigyChallengeV2DungeonInfoNotify uint16 = 24761 - EffigyChallengeV2EnterDungeonReq uint16 = 21069 - EffigyChallengeV2EnterDungeonRsp uint16 = 22024 - EffigyChallengeV2RestartDungeonReq uint16 = 21293 - EffigyChallengeV2RestartDungeonRsp uint16 = 23467 - EndCameraSceneLookNotify uint16 = 291 - EndCoinCollectPlaySingleModeReq uint16 = 23963 - EndCoinCollectPlaySingleModeRsp uint16 = 21015 - EnterChessDungeonReq uint16 = 8855 - EnterChessDungeonRsp uint16 = 8293 - EnterCustomDungeonReq uint16 = 6242 - EnterCustomDungeonRsp uint16 = 6241 - EnterFishingReq uint16 = 5842 - EnterFishingRsp uint16 = 5841 - EnterFungusFighterPlotDungeonReq uint16 = 23768 - EnterFungusFighterPlotDungeonRsp uint16 = 20791 - EnterFungusFighterTrainingDungeonReq uint16 = 23992 - EnterFungusFighterTrainingDungeonRsp uint16 = 22876 - EnterIrodoriChessDungeonReq uint16 = 8592 - EnterIrodoriChessDungeonRsp uint16 = 8238 - EnterMechanicusDungeonReq uint16 = 3927 - EnterMechanicusDungeonRsp uint16 = 3939 - EnterRogueDiaryDungeonReq uint16 = 8627 - EnterRogueDiaryDungeonRsp uint16 = 8152 - EnterRoguelikeDungeonNotify uint16 = 8657 - EnterSceneDoneReq uint16 = 232 - EnterSceneDoneRsp uint16 = 268 - EnterScenePeerNotify uint16 = 271 - EnterSceneReadyReq uint16 = 262 - EnterSceneReadyRsp uint16 = 251 - EnterSceneWeatherAreaNotify uint16 = 282 - EnterTransPointRegionNotify uint16 = 242 - EnterTrialAvatarActivityDungeonReq uint16 = 2142 - EnterTrialAvatarActivityDungeonRsp uint16 = 2176 - EnterWorldAreaReq uint16 = 246 - EnterWorldAreaRsp uint16 = 275 - EntityAiKillSelfNotify uint16 = 385 - EntityAiSyncNotify uint16 = 304 - EntityAuthorityChangeNotify uint16 = 305 - EntityConfigHashNotify uint16 = 3332 - EntityFightPropChangeReasonNotify uint16 = 1261 - EntityFightPropNotify uint16 = 1256 - EntityFightPropUpdateNotify uint16 = 1219 - EntityForceSyncReq uint16 = 234 - EntityForceSyncRsp uint16 = 295 - EntityJumpNotify uint16 = 237 - EntityMoveRoomNotify uint16 = 3337 - EntityPropNotify uint16 = 1279 - EntityTagChangeNotify uint16 = 3192 - EquipRoguelikeRuneReq uint16 = 8357 - EquipRoguelikeRuneRsp uint16 = 8815 - EvtAiSyncCombatThreatInfoNotify uint16 = 320 - EvtAiSyncSkillCdNotify uint16 = 395 - EvtAnimatorParameterNotify uint16 = 330 - EvtAnimatorStateChangedNotify uint16 = 327 - EvtAvatarEnterFocusNotify uint16 = 344 - EvtAvatarExitFocusNotify uint16 = 307 - EvtAvatarLockChairReq uint16 = 308 - EvtAvatarLockChairRsp uint16 = 309 - EvtAvatarSitDownNotify uint16 = 322 - EvtAvatarStandUpNotify uint16 = 382 - EvtAvatarUpdateFocusNotify uint16 = 317 - EvtBeingHealedNotify uint16 = 366 - EvtBeingHitNotify uint16 = 379 - EvtBeingHitsCombineNotify uint16 = 364 - EvtBulletDeactiveNotify uint16 = 399 + DungeonRestartInviteReplyReq uint16 = 1000 + DungeonRestartInviteReplyRsp uint16 = 916 + DungeonRestartReq uint16 = 961 + DungeonRestartResultNotify uint16 = 940 + DungeonRestartRsp uint16 = 929 + DungeonReviseLevelNotify uint16 = 933 + DungeonSettleNotify uint16 = 999 + DungeonShowReminderNotify uint16 = 997 + DungeonSlipRevivePointActivateReq uint16 = 958 + DungeonSlipRevivePointActivateRsp uint16 = 970 + DungeonWayPointActivateReq uint16 = 990 + DungeonWayPointActivateRsp uint16 = 973 + DungeonWayPointNotify uint16 = 903 + EchoNotify uint16 = 65 + EchoShellTakeRewardReq uint16 = 8114 + EchoShellTakeRewardRsp uint16 = 8797 + EchoShellUpdateNotify uint16 = 8150 + EffigyChallengeInfoNotify uint16 = 2090 + EffigyChallengeResultNotify uint16 = 2046 + EffigyChallengeV2ChooseSkillReq uint16 = 21269 + EffigyChallengeV2ChooseSkillRsp uint16 = 22448 + EffigyChallengeV2DungeonInfoNotify uint16 = 22835 + EffigyChallengeV2EnterDungeonReq uint16 = 23489 + EffigyChallengeV2EnterDungeonRsp uint16 = 24917 + EffigyChallengeV2RestartDungeonReq uint16 = 24522 + EffigyChallengeV2RestartDungeonRsp uint16 = 23167 + EndCameraSceneLookNotify uint16 = 217 + EnterChessDungeonReq uint16 = 8191 + EnterChessDungeonRsp uint16 = 8592 + EnterCustomDungeonReq uint16 = 6226 + EnterCustomDungeonRsp uint16 = 6218 + EnterFishingReq uint16 = 5826 + EnterFishingRsp uint16 = 5818 + EnterFungusFighterPlotDungeonReq uint16 = 23053 + EnterFungusFighterPlotDungeonRsp uint16 = 21008 + EnterFungusFighterTrainingDungeonReq uint16 = 23860 + EnterFungusFighterTrainingDungeonRsp uint16 = 21593 + EnterIrodoriChessDungeonReq uint16 = 8717 + EnterIrodoriChessDungeonRsp uint16 = 8546 + EnterMechanicusDungeonReq uint16 = 3931 + EnterMechanicusDungeonRsp uint16 = 3975 + EnterRogueDiaryDungeonReq uint16 = 8943 + EnterRogueDiaryDungeonRsp uint16 = 8352 + EnterRoguelikeDungeonNotify uint16 = 8652 + EnterSceneDoneReq uint16 = 277 + EnterSceneDoneRsp uint16 = 237 + EnterScenePeerNotify uint16 = 252 + EnterSceneReadyReq uint16 = 208 + EnterSceneReadyRsp uint16 = 209 + EnterSceneWeatherAreaNotify uint16 = 256 + EnterTransPointRegionNotify uint16 = 205 + EnterTrialAvatarActivityDungeonReq uint16 = 2118 + EnterTrialAvatarActivityDungeonRsp uint16 = 2183 + EnterWorldAreaReq uint16 = 250 + EnterWorldAreaRsp uint16 = 243 + EntityAiKillSelfNotify uint16 = 340 + EntityAiSyncNotify uint16 = 400 + EntityAuthorityChangeNotify uint16 = 394 + EntityConfigHashNotify uint16 = 3189 + EntityFightPropChangeReasonNotify uint16 = 1203 + EntityFightPropNotify uint16 = 1212 + EntityFightPropUpdateNotify uint16 = 1235 + EntityForceSyncReq uint16 = 274 + EntityForceSyncRsp uint16 = 276 + EntityJumpNotify uint16 = 222 + EntityMoveRoomNotify uint16 = 3178 + EntityPropNotify uint16 = 1272 + EntityTagChangeNotify uint16 = 3316 + EquipRoguelikeRuneReq uint16 = 8306 + EquipRoguelikeRuneRsp uint16 = 8705 + EvtAiSyncCombatThreatInfoNotify uint16 = 329 + EvtAiSyncSkillCdNotify uint16 = 376 + EvtAnimatorParameterNotify uint16 = 398 + EvtAnimatorStateChangedNotify uint16 = 331 + EvtAvatarEnterFocusNotify uint16 = 304 + EvtAvatarExitFocusNotify uint16 = 393 + EvtAvatarLockChairReq uint16 = 318 + EvtAvatarLockChairRsp uint16 = 366 + EvtAvatarSitDownNotify uint16 = 324 + EvtAvatarStandUpNotify uint16 = 356 + EvtAvatarUpdateFocusNotify uint16 = 327 + EvtBeingHealedNotify uint16 = 333 + EvtBeingHitNotify uint16 = 372 + EvtBeingHitsCombineNotify uint16 = 346 + EvtBulletDeactiveNotify uint16 = 397 EvtBulletHitNotify uint16 = 348 - EvtBulletMoveNotify uint16 = 389 - EvtCostStaminaNotify uint16 = 378 - EvtCreateGadgetNotify uint16 = 400 - EvtDestroyGadgetNotify uint16 = 343 + EvtBulletMoveNotify uint16 = 365 + EvtCostStaminaNotify uint16 = 373 + EvtCreateGadgetNotify uint16 = 307 + EvtDestroyGadgetNotify uint16 = 321 EvtDestroyServerGadgetNotify uint16 = 387 - EvtDoSkillSuccNotify uint16 = 319 - EvtEntityRenderersChangedNotify uint16 = 375 - EvtEntityStartDieEndNotify uint16 = 325 - EvtFaceToDirNotify uint16 = 347 - EvtFaceToEntityNotify uint16 = 361 - EvtLocalGadgetOwnerLeaveSceneNotify uint16 = 352 - EvtRushMoveNotify uint16 = 339 - EvtSetAttackTargetNotify uint16 = 357 - ExclusiveRuleNotify uint16 = 118 - ExecuteGadgetLuaReq uint16 = 235 - ExecuteGadgetLuaRsp uint16 = 240 - ExecuteGroupTriggerReq uint16 = 263 - ExecuteGroupTriggerRsp uint16 = 204 - ExitCustomDungeonTryReq uint16 = 6243 - ExitCustomDungeonTryRsp uint16 = 6209 - ExitFishingReq uint16 = 5802 - ExitFishingRsp uint16 = 5843 - ExitSceneWeatherAreaNotify uint16 = 211 - ExitTransPointRegionNotify uint16 = 290 - ExpeditionChallengeEnterRegionNotify uint16 = 2027 - ExpeditionChallengeFinishedNotify uint16 = 2074 - ExpeditionRecallReq uint16 = 2098 - ExpeditionRecallRsp uint16 = 2066 - ExpeditionStartReq uint16 = 2016 - ExpeditionStartRsp uint16 = 2182 - ExpeditionTakeRewardReq uint16 = 2015 - ExpeditionTakeRewardRsp uint16 = 2197 - FindHilichurlAcceptQuestNotify uint16 = 8893 - FindHilichurlFinishSecondQuestNotify uint16 = 8644 - FinishDeliveryNotify uint16 = 2030 - FinishedParentQuestNotify uint16 = 419 - FinishedParentQuestUpdateNotify uint16 = 500 - FinishedTalkIdListNotify uint16 = 578 - FinishLanternProjectionReq uint16 = 8932 - FinishLanternProjectionRsp uint16 = 8971 - FinishMainCoopReq uint16 = 1977 + EvtDoSkillSuccNotify uint16 = 335 + EvtEntityRenderersChangedNotify uint16 = 343 + EvtEntityStartDieEndNotify uint16 = 381 + EvtFaceToDirNotify uint16 = 390 + EvtFaceToEntityNotify uint16 = 303 + EvtLocalGadgetOwnerLeaveSceneNotify uint16 = 384 + EvtRushMoveNotify uint16 = 375 + EvtSetAttackTargetNotify uint16 = 399 + ExclusiveRuleNotify uint16 = 101 + ExecuteGadgetLuaReq uint16 = 269 + ExecuteGadgetLuaRsp uint16 = 210 + ExecuteGroupTriggerReq uint16 = 257 + ExecuteGroupTriggerRsp uint16 = 300 + ExitCustomDungeonTryReq uint16 = 6247 + ExitCustomDungeonTryRsp uint16 = 6237 + ExitFishingReq uint16 = 5814 + ExitFishingRsp uint16 = 5847 + ExitSceneWeatherAreaNotify uint16 = 242 + ExitTransPointRegionNotify uint16 = 282 + ExpeditionChallengeEnterRegionNotify uint16 = 2154 + ExpeditionChallengeFinishedNotify uint16 = 2091 + ExpeditionRecallReq uint16 = 2131 + ExpeditionRecallRsp uint16 = 2129 + ExpeditionStartReq uint16 = 2087 + ExpeditionStartRsp uint16 = 2135 + ExpeditionTakeRewardReq uint16 = 2149 + ExpeditionTakeRewardRsp uint16 = 2080 + FindHilichurlAcceptQuestNotify uint16 = 8659 + FindHilichurlFinishSecondQuestNotify uint16 = 8901 + FinishDeliveryNotify uint16 = 2089 + FinishLanternProjectionReq uint16 = 8704 + FinishLanternProjectionRsp uint16 = 8713 + FinishMainCoopReq uint16 = 1952 FinishMainCoopRsp uint16 = 1981 - FireworksLaunchDataNotify uint16 = 5917 - FireworksReformDataNotify uint16 = 5908 - FishAttractNotify uint16 = 5809 - FishBaitGoneNotify uint16 = 5830 - FishBattleBeginReq uint16 = 5815 - FishBattleBeginRsp uint16 = 5818 - FishBattleEndReq uint16 = 5808 - FishBattleEndRsp uint16 = 5845 - FishBiteReq uint16 = 5812 - FishBiteRsp uint16 = 5834 - FishCastRodReq uint16 = 5827 + FinishedParentQuestNotify uint16 = 435 + FinishedParentQuestUpdateNotify uint16 = 407 + FinishedTalkIdListNotify uint16 = 573 + FireworksLaunchDataNotify uint16 = 5928 + FireworksReformDataNotify uint16 = 6033 + FishAttractNotify uint16 = 5837 + FishBaitGoneNotify uint16 = 5823 + FishBattleBeginReq uint16 = 5820 + FishBattleBeginRsp uint16 = 5845 + FishBattleEndReq uint16 = 5841 + FishBattleEndRsp uint16 = 5842 + FishBiteReq uint16 = 5844 + FishBiteRsp uint16 = 5849 + FishCastRodReq uint16 = 5802 FishCastRodRsp uint16 = 5831 - FishChosenNotify uint16 = 5844 - FishEscapeNotify uint16 = 5817 - FishingGallerySettleNotify uint16 = 8464 - FishPoolDataNotify uint16 = 5837 - FleurFairBalloonSettleNotify uint16 = 2159 - FleurFairBuffEnergyNotify uint16 = 5322 - FleurFairFallSettleNotify uint16 = 2136 - FleurFairFinishGalleryStageNotify uint16 = 5311 - FleurFairMusicGameSettleReq uint16 = 2111 - FleurFairMusicGameSettleRsp uint16 = 2156 - FleurFairMusicGameStartReq uint16 = 2070 - FleurFairMusicGameStartRsp uint16 = 2146 - FleurFairReplayMiniGameReq uint16 = 2127 - FleurFairReplayMiniGameRsp uint16 = 2061 - FleurFairStageSettleNotify uint16 = 5382 - FlightActivityRestartReq uint16 = 2152 - FlightActivityRestartRsp uint16 = 2158 - FlightActivitySettleNotify uint16 = 2143 - FocusAvatarReq uint16 = 1793 - FocusAvatarRsp uint16 = 1786 - ForceAddPlayerFriendReq uint16 = 4063 - ForceAddPlayerFriendRsp uint16 = 4004 - ForceDragAvatarNotify uint16 = 3008 - ForceDragBackTransferNotify uint16 = 3494 - ForgeDataNotify uint16 = 674 - ForgeFormulaDataNotify uint16 = 626 - ForgeGetQueueDataReq uint16 = 664 - ForgeGetQueueDataRsp uint16 = 667 - ForgeQueueDataNotify uint16 = 695 - ForgeQueueManipulateReq uint16 = 622 - ForgeQueueManipulateRsp uint16 = 682 - ForgeStartReq uint16 = 615 - ForgeStartRsp uint16 = 621 - FoundationNotify uint16 = 876 - FoundationReq uint16 = 842 - FoundationRsp uint16 = 890 - FriendInfoChangeNotify uint16 = 4065 - FungusCaptureSettleNotify uint16 = 5510 - FungusCultivateReq uint16 = 23545 - FungusCultivateRsp uint16 = 20883 - FungusFighterClearTrainingRuntimeDataReq uint16 = 24267 - FungusFighterClearTrainingRuntimeDataRsp uint16 = 20749 - FungusFighterPlotInfoNotify uint16 = 23920 - FungusFighterRestartTrainingDungeonReq uint16 = 24273 - FungusFighterRestartTrainingDungeonRsp uint16 = 20579 - FungusFighterRuntimeDataNotify uint16 = 20567 - FungusFighterTrainingGallerySettleNotify uint16 = 23475 - FungusFighterTrainingInfoNotify uint16 = 5533 - FungusFighterTrainingSelectFungusReq uint16 = 24249 - FungusFighterTrainingSelectFungusRsp uint16 = 23309 - FungusFighterUseBackupFungusReq uint16 = 22075 - FungusFighterUseBackupFungusRsp uint16 = 21089 - FungusRenameReq uint16 = 22498 - FungusRenameRsp uint16 = 22216 - FurnitureCurModuleArrangeCountNotify uint16 = 4538 - FurnitureMakeBeHelpedNotify uint16 = 4766 - FurnitureMakeCancelReq uint16 = 4726 - FurnitureMakeCancelRsp uint16 = 4676 - FurnitureMakeFinishNotify uint16 = 4850 - FurnitureMakeHelpReq uint16 = 4478 - FurnitureMakeHelpRsp uint16 = 4507 - FurnitureMakeInfoChangeNotify uint16 = 4882 - FurnitureMakeReq uint16 = 4802 - FurnitureMakeRsp uint16 = 4504 - FurnitureMakeStartReq uint16 = 4581 - FurnitureMakeStartRsp uint16 = 4877 - GachaActivityCreateRobotReq uint16 = 8316 - GachaActivityCreateRobotRsp uint16 = 8494 - GachaActivityNextStageReq uint16 = 8342 - GachaActivityNextStageRsp uint16 = 8914 - GachaActivityPercentNotify uint16 = 8706 - GachaActivityResetReq uint16 = 8540 - GachaActivityResetRsp uint16 = 8416 - GachaActivityTakeRewardReq uint16 = 8853 - GachaActivityTakeRewardRsp uint16 = 8354 - GachaActivityUpdateElemNotify uint16 = 8241 - GachaOpenWishNotify uint16 = 1561 - GachaSimpleInfoNotify uint16 = 1547 - GachaWishReq uint16 = 1600 - GachaWishRsp uint16 = 1543 - GadgetAutoPickDropInfoNotify uint16 = 899 - GadgetChainLevelChangeNotify uint16 = 837 - GadgetChainLevelUpdateNotify uint16 = 873 - GadgetChangeLevelTagReq uint16 = 875 - GadgetChangeLevelTagRsp uint16 = 834 - GadgetCustomTreeInfoNotify uint16 = 846 + FishChosenNotify uint16 = 5829 + FishEscapeNotify uint16 = 5822 + FishPoolDataNotify uint16 = 5848 + FishingGallerySettleNotify uint16 = 8780 + FleurFairBalloonSettleNotify uint16 = 2099 + FleurFairBuffEnergyNotify uint16 = 5324 + FleurFairFallSettleNotify uint16 = 2017 + FleurFairFinishGalleryStageNotify uint16 = 5342 + FleurFairMusicGameSettleReq uint16 = 2194 + FleurFairMusicGameSettleRsp uint16 = 2113 + FleurFairMusicGameStartReq uint16 = 2167 + FleurFairMusicGameStartRsp uint16 = 2079 + FleurFairReplayMiniGameReq uint16 = 2181 + FleurFairReplayMiniGameRsp uint16 = 2052 + FleurFairStageSettleNotify uint16 = 5356 + FlightActivityRestartReq uint16 = 2037 + FlightActivityRestartRsp uint16 = 2165 + FlightActivitySettleNotify uint16 = 2195 + FocusAvatarReq uint16 = 1654 + FocusAvatarRsp uint16 = 1681 + ForceAddPlayerFriendReq uint16 = 4057 + ForceAddPlayerFriendRsp uint16 = 4100 + ForceDragAvatarNotify uint16 = 3235 + ForceDragBackTransferNotify uint16 = 3145 + ForgeDataNotify uint16 = 680 + ForgeFormulaDataNotify uint16 = 689 + ForgeGetQueueDataReq uint16 = 646 + ForgeGetQueueDataRsp uint16 = 641 + ForgeQueueDataNotify uint16 = 676 + ForgeQueueManipulateReq uint16 = 624 + ForgeQueueManipulateRsp uint16 = 656 + ForgeStartReq uint16 = 649 + ForgeStartRsp uint16 = 691 + FoundationNotify uint16 = 847 + FoundationReq uint16 = 805 + FoundationRsp uint16 = 882 + FriendInfoChangeNotify uint16 = 4032 + FungusCaptureSettleNotify uint16 = 5506 + FungusCultivateReq uint16 = 21749 + FungusCultivateRsp uint16 = 23532 + FungusFighterClearTrainingRuntimeDataReq uint16 = 24137 + FungusFighterClearTrainingRuntimeDataRsp uint16 = 22991 + FungusFighterPlotInfoNotify uint16 = 22174 + FungusFighterRestartTrainingDungeonReq uint16 = 23980 + FungusFighterRestartTrainingDungeonRsp uint16 = 22890 + FungusFighterRuntimeDataNotify uint16 = 24674 + FungusFighterTrainingGallerySettleNotify uint16 = 23931 + FungusFighterTrainingInfoNotify uint16 = 5595 + FungusFighterTrainingSelectFungusReq uint16 = 23903 + FungusFighterTrainingSelectFungusRsp uint16 = 21570 + FungusFighterUseBackupFungusReq uint16 = 21266 + FungusFighterUseBackupFungusRsp uint16 = 23428 + FungusRenameReq uint16 = 22006 + FungusRenameRsp uint16 = 20066 + FunitureMakeInfoChangeNotify uint16 = 4898 + FurnitureCurModuleArrangeCountNotify uint16 = 4498 + FurnitureMakeBeHelpedNotify uint16 = 4578 + FurnitureMakeCancelReq uint16 = 4555 + FurnitureMakeCancelRsp uint16 = 4683 + FurnitureMakeFinishNotify uint16 = 4841 + FurnitureMakeHelpReq uint16 = 4865 + FurnitureMakeHelpRsp uint16 = 4756 + FurnitureMakeReq uint16 = 4477 + FurnitureMakeRsp uint16 = 4782 + FurnitureMakeStartReq uint16 = 4633 + FurnitureMakeStartRsp uint16 = 4729 + GCGApplyInviteBattleNotify uint16 = 7820 + GCGApplyInviteBattleReq uint16 = 7730 + GCGApplyInviteBattleRsp uint16 = 7304 + GCGAskDuelReq uint16 = 7237 + GCGAskDuelRsp uint16 = 7869 + GCGBasicDataNotify uint16 = 7319 + GCGBossChallengeUpdateNotify uint16 = 7073 + GCGChallengeUpdateNotify uint16 = 7268 + GCGClientSettleReq uint16 = 7506 + GCGClientSettleRsp uint16 = 7105 + GCGDSCardBackUnlockNotify uint16 = 7265 + GCGDSCardFaceUnlockNotify uint16 = 7049 + GCGDSCardNumChangeNotify uint16 = 7358 + GCGDSCardProficiencyNotify uint16 = 7680 + GCGDSChangeCardBackReq uint16 = 7292 + GCGDSChangeCardBackRsp uint16 = 7044 + GCGDSChangeCardFaceReq uint16 = 7169 + GCGDSChangeCardFaceRsp uint16 = 7331 + GCGDSChangeCurDeckReq uint16 = 7131 + GCGDSChangeCurDeckRsp uint16 = 7301 + GCGDSChangeDeckNameReq uint16 = 7432 + GCGDSChangeDeckNameRsp uint16 = 7916 + GCGDSChangeFieldReq uint16 = 7541 + GCGDSChangeFieldRsp uint16 = 7444 + GCGDSCurDeckChangeNotify uint16 = 7796 + GCGDSDataNotify uint16 = 7122 + GCGDSDeckSaveReq uint16 = 7104 + GCGDSDeckSaveRsp uint16 = 7269 + GCGDSDeckUnlockNotify uint16 = 7732 + GCGDSDeleteDeckReq uint16 = 7988 + GCGDSDeleteDeckRsp uint16 = 7524 + GCGDSFieldUnlockNotify uint16 = 7333 + GCGGameBriefDataNotify uint16 = 7539 + GCGGrowthLevelNotify uint16 = 7736 + GCGGrowthLevelRewardNotify uint16 = 7477 + GCGGrowthLevelTakeRewardReq uint16 = 7051 + GCGGrowthLevelTakeRewardRsp uint16 = 7670 + GCGHeartBeatNotify uint16 = 7224 + GCGInitFinishReq uint16 = 7684 + GCGInitFinishRsp uint16 = 7433 + GCGInviteBattleNotify uint16 = 7692 + GCGInviteGuestBattleReq uint16 = 7783 + GCGInviteGuestBattleRsp uint16 = 7251 + GCGLevelChallengeFinishNotify uint16 = 7629 + GCGLevelChallengeNotify uint16 = 7055 + GCGMessagePackNotify uint16 = 7516 + GCGNewCardInfoNotify uint16 = 7203 + GCGOperationReq uint16 = 7107 + GCGOperationRsp uint16 = 7600 + GCGResourceStateNotify uint16 = 7876 + GCGSettleNotify uint16 = 7769 + GCGSettleOptionReq uint16 = 7124 + GCGSettleOptionRsp uint16 = 7735 + GCGSkillPreviewAskReq uint16 = 7509 + GCGSkillPreviewAskRsp uint16 = 7409 + GCGSkillPreviewNotify uint16 = 7503 + GCGStartChallengeReq uint16 = 7595 + GCGStartChallengeRsp uint16 = 7763 + GCGTCInviteReq uint16 = 7922 + GCGTCInviteRsp uint16 = 7328 + GCGTCTavernChallengeDataNotify uint16 = 7294 + GCGTCTavernChallengeUpdateNotify uint16 = 7184 + GCGTCTavernInfoNotify uint16 = 7011 + GCGTavernNpcInfoNotify uint16 = 7290 + GCGWeekChallengeInfoNotify uint16 = 7615 + GCGWorldChallengeUnlockNotify uint16 = 7204 + GMShowNavMeshReq uint16 = 2357 + GMShowNavMeshRsp uint16 = 2400 + GMShowObstacleReq uint16 = 2361 + GMShowObstacleRsp uint16 = 2329 + GachaActivityCreateRobotReq uint16 = 8614 + GachaActivityCreateRobotRsp uint16 = 8610 + GachaActivityNextStageReq uint16 = 8257 + GachaActivityNextStageRsp uint16 = 8918 + GachaActivityPercentNotify uint16 = 8450 + GachaActivityResetReq uint16 = 8163 + GachaActivityResetRsp uint16 = 8240 + GachaActivityTakeRewardReq uint16 = 8930 + GachaActivityTakeRewardRsp uint16 = 8768 + GachaActivityUpdateElemNotify uint16 = 8919 + GachaOpenWishNotify uint16 = 1503 + GachaSimpleInfoNotify uint16 = 1590 + GachaWishReq uint16 = 1507 + GachaWishRsp uint16 = 1521 + GadgetAutoPickDropInfoNotify uint16 = 897 + GadgetChainLevelChangeNotify uint16 = 822 + GadgetChainLevelUpdateNotify uint16 = 853 + GadgetChangeLevelTagReq uint16 = 843 + GadgetChangeLevelTagRsp uint16 = 874 + GadgetCustomTreeInfoNotify uint16 = 850 GadgetGeneralRewardInfoNotify uint16 = 848 - GadgetInteractReq uint16 = 879 - GadgetInteractRsp uint16 = 830 - GadgetPlayDataNotify uint16 = 827 - GadgetPlayStartNotify uint16 = 878 - GadgetPlayStopNotify uint16 = 857 - GadgetPlayUidOpNotify uint16 = 839 - GadgetStateNotify uint16 = 856 - GadgetTalkChangeNotify uint16 = 816 - GalleryBalloonScoreNotify uint16 = 5556 - GalleryBalloonShootNotify uint16 = 5530 - GalleryBounceConjuringHitNotify uint16 = 5542 - GalleryBrokenFloorFallNotify uint16 = 5539 - GalleryBulletHitNotify uint16 = 5527 - GalleryCrystalLinkBuffInfoNotify uint16 = 5516 - GalleryCrystalLinkKillMonsterNotify uint16 = 5576 - GalleryFallCatchNotify uint16 = 5600 - GalleryFallScoreNotify uint16 = 5543 - GalleryFlowerCatchNotify uint16 = 5578 - GalleryIslandPartyDownHillInfoNotify uint16 = 5537 - GalleryPreStartNotify uint16 = 5557 - GalleryStartNotify uint16 = 5579 - GalleryStopNotify uint16 = 5519 - GallerySumoKillMonsterNotify uint16 = 5590 - GalleryWillStartCountdownNotify uint16 = 5505 - GCGApplyInviteBattleNotify uint16 = 7984 - GCGApplyInviteBattleReq uint16 = 7032 - GCGApplyInviteBattleRsp uint16 = 7754 - GCGAskDuelReq uint16 = 7034 - GCGAskDuelRsp uint16 = 7564 - GCGBackToDuelReq uint16 = 7015 - GCGBackToDuelRsp uint16 = 7039 - GCGBasicDataNotify uint16 = 7739 - GCGBossChallengeUpdateNotify uint16 = 7852 - GCGChallengeUpdateNotify uint16 = 7270 - GCGClientSettleReq uint16 = 7035 - GCGClientSettleRsp uint16 = 7532 - GCGDebugReplayNotify uint16 = 7071 - GCGDSBanCardNotify uint16 = 7135 - GCGDSCardBackUnlockNotify uint16 = 7078 - GCGDSCardFaceUnlockNotify uint16 = 7767 - GCGDSCardFaceUpdateNotify uint16 = 7066 - GCGDSCardNumChangeNotify uint16 = 7244 - GCGDSCardProficiencyNotify uint16 = 7969 - GCGDSChangeCardBackReq uint16 = 7680 - GCGDSChangeCardBackRsp uint16 = 7011 - GCGDSChangeCardFaceReq uint16 = 7010 - GCGDSChangeCardFaceRsp uint16 = 7549 - GCGDSChangeCurDeckReq uint16 = 7257 - GCGDSChangeCurDeckRsp uint16 = 7908 - GCGDSChangeDeckNameReq uint16 = 7463 - GCGDSChangeDeckNameRsp uint16 = 7617 - GCGDSChangeFieldReq uint16 = 7788 - GCGDSChangeFieldRsp uint16 = 7036 - GCGDSCurDeckChangeNotify uint16 = 7769 - GCGDSDataNotify uint16 = 7850 - GCGDSDeckSaveReq uint16 = 7713 - GCGDSDeckSaveRsp uint16 = 7459 - GCGDSDeckUnlockNotify uint16 = 7427 - GCGDSDeckUpdateNotify uint16 = 7751 - GCGDSDeleteDeckReq uint16 = 7821 - GCGDSDeleteDeckRsp uint16 = 7067 - GCGDSFieldUnlockNotify uint16 = 7860 - GCGDSTakeCardProficiencyRewardReq uint16 = 7001 - GCGDSTakeCardProficiencyRewardRsp uint16 = 7718 - GCGGameBriefDataNotify uint16 = 7824 - GCGGameCreateFailReasonNotify uint16 = 7658 - GCGGameMaxNotify uint16 = 7226 - GCGGrowthLevelNotify uint16 = 7343 - GCGGrowthLevelRewardNotify uint16 = 7934 - GCGGrowthLevelTakeRewardReq uint16 = 7486 - GCGGrowthLevelTakeRewardRsp uint16 = 7602 - GCGHeartBeatNotify uint16 = 7576 - GCGInitFinishReq uint16 = 7348 - GCGInitFinishRsp uint16 = 7369 - GCGInviteBattleNotify uint16 = 7448 - GCGInviteGuestBattleReq uint16 = 7202 - GCGInviteGuestBattleRsp uint16 = 7997 - GCGLevelChallengeDeleteNotify uint16 = 7993 - GCGLevelChallengeFinishNotify uint16 = 7004 - GCGLevelChallengeNotify uint16 = 7183 - GCGMessagePackNotify uint16 = 7299 - GCGOperationReq uint16 = 7664 - GCGOperationRsp uint16 = 7285 - GCGResourceStateNotify uint16 = 7586 - GCGSettleNotify uint16 = 7562 - GCGSettleOptionReq uint16 = 7600 - GCGSettleOptionRsp uint16 = 7110 - GCGSkillPreviewAskReq uint16 = 7858 - GCGSkillPreviewAskRsp uint16 = 7877 - GCGSkillPreviewNotify uint16 = 7659 - GCGStartChallengeByCheckRewardReq uint16 = 7982 - GCGStartChallengeByCheckRewardRsp uint16 = 7727 - GCGStartChallengeReq uint16 = 7964 - GCGStartChallengeRsp uint16 = 7999 - GCGTavernNpcInfoNotify uint16 = 7267 - GCGTCInviteReq uint16 = 7341 - GCGTCInviteRsp uint16 = 7027 - GCGTCTavernChallengeDataNotify uint16 = 7356 - GCGTCTavernChallengeUpdateNotify uint16 = 7907 - GCGTCTavernInfoNotify uint16 = 7268 - GCGWeekChallengeInfoNotify uint16 = 7058 - GCGWorldChallengeUnlockNotify uint16 = 7370 - GCGWorldPlayerGCGStateReq uint16 = 7375 - GCGWorldPlayerGCGStateRsp uint16 = 7248 - GearActivityFinishPlayGearReq uint16 = 20236 - GearActivityFinishPlayGearRsp uint16 = 20776 - GearActivityFinishPlayPictureReq uint16 = 23793 - GearActivityFinishPlayPictureRsp uint16 = 20453 - GearActivityStartPlayGearReq uint16 = 20589 - GearActivityStartPlayGearRsp uint16 = 23953 - GearActivityStartPlayPictureReq uint16 = 24968 - GearActivityStartPlayPictureRsp uint16 = 20011 - GetActivityInfoReq uint16 = 2011 - GetActivityInfoRsp uint16 = 2043 - GetActivityScheduleReq uint16 = 2008 - GetActivityScheduleRsp uint16 = 2056 - GetActivityShopSheetInfoReq uint16 = 761 - GetActivityShopSheetInfoRsp uint16 = 747 - GetAllActivatedBargainDataReq uint16 = 403 - GetAllActivatedBargainDataRsp uint16 = 433 - GetAllH5ActivityInfoReq uint16 = 5691 - GetAllH5ActivityInfoRsp uint16 = 5692 - GetAllMailNotify uint16 = 1499 - GetAllMailReq uint16 = 1427 - GetAllMailResultNotify uint16 = 1425 - GetAllMailRsp uint16 = 1439 - GetAllSceneGalleryInfoReq uint16 = 5561 - GetAllSceneGalleryInfoRsp uint16 = 5547 - GetAllUnlockNameCardReq uint16 = 4017 - GetAllUnlockNameCardRsp uint16 = 4005 - GetAreaExplorePointReq uint16 = 267 - GetAreaExplorePointRsp uint16 = 215 - GetAuthkeyReq uint16 = 1447 - GetAuthkeyRsp uint16 = 1478 - GetAuthSalesmanInfoReq uint16 = 2049 - GetAuthSalesmanInfoRsp uint16 = 2087 - GetBargainDataReq uint16 = 494 - GetBargainDataRsp uint16 = 472 - GetBattlePassProductReq uint16 = 2612 - GetBattlePassProductRsp uint16 = 2634 - GetBlossomBriefInfoListReq uint16 = 2779 - GetBlossomBriefInfoListRsp uint16 = 2730 - GetBonusActivityRewardReq uint16 = 2525 - GetBonusActivityRewardRsp uint16 = 2542 - GetChatEmojiCollectionReq uint16 = 4088 - GetChatEmojiCollectionRsp uint16 = 4066 - GetCityHuntingOfferReq uint16 = 4322 - GetCityHuntingOfferRsp uint16 = 4335 - GetCityReputationInfoReq uint16 = 2879 - GetCityReputationInfoRsp uint16 = 2830 - GetCityReputationMapInfoReq uint16 = 2839 + GadgetInteractReq uint16 = 872 + GadgetInteractRsp uint16 = 898 + GadgetPlayDataNotify uint16 = 831 + GadgetPlayStartNotify uint16 = 873 + GadgetPlayStopNotify uint16 = 899 + GadgetPlayUidOpNotify uint16 = 875 + GadgetStateNotify uint16 = 812 + GadgetTalkChangeNotify uint16 = 839 + GalleryBalloonScoreNotify uint16 = 5512 + GalleryBalloonShootNotify uint16 = 5598 + GalleryBounceConjuringHitNotify uint16 = 5505 + GalleryBrokenFloorFallNotify uint16 = 5575 + GalleryBulletHitNotify uint16 = 5531 + GalleryCrystalLinkBuffInfoNotify uint16 = 5539 + GalleryCrystalLinkKillMonsterNotify uint16 = 5547 + GalleryFallCatchNotify uint16 = 5507 + GalleryFallScoreNotify uint16 = 5521 + GalleryFlowerCatchNotify uint16 = 5573 + GalleryIslandPartyDownHillInfoNotify uint16 = 5522 + GalleryPreStartNotify uint16 = 5599 + GalleryStartNotify uint16 = 5572 + GalleryStopNotify uint16 = 5535 + GallerySumoKillMonsterNotify uint16 = 5582 + GalleryWillStartCountdownNotify uint16 = 5594 + GearActivityFinishPlayGearReq uint16 = 21834 + GearActivityFinishPlayGearRsp uint16 = 21800 + GearActivityFinishPlayPictureReq uint16 = 21054 + GearActivityFinishPlayPictureRsp uint16 = 21851 + GearActivityStartPlayGearReq uint16 = 23467 + GearActivityStartPlayGearRsp uint16 = 21025 + GearActivityStartPlayPictureReq uint16 = 24550 + GearActivityStartPlayPictureRsp uint16 = 23388 + GetActivityInfoReq uint16 = 2095 + GetActivityInfoRsp uint16 = 2041 + GetActivityScheduleReq uint16 = 2136 + GetActivityScheduleRsp uint16 = 2107 + GetActivityShopSheetInfoReq uint16 = 703 + GetActivityShopSheetInfoRsp uint16 = 790 + GetAllActivatedBargainDataReq uint16 = 463 + GetAllActivatedBargainDataRsp uint16 = 495 + GetAllH5ActivityInfoReq uint16 = 5668 + GetAllH5ActivityInfoRsp uint16 = 5676 + GetAllMailNotify uint16 = 1497 + GetAllMailReq uint16 = 1431 + GetAllMailResultNotify uint16 = 1481 + GetAllMailRsp uint16 = 1475 + GetAllSceneGalleryInfoReq uint16 = 5503 + GetAllSceneGalleryInfoRsp uint16 = 5590 + GetAllUnlockNameCardReq uint16 = 4027 + GetAllUnlockNameCardRsp uint16 = 4094 + GetAreaExplorePointReq uint16 = 241 + GetAreaExplorePointRsp uint16 = 249 + GetAuthSalesmanInfoReq uint16 = 2070 + GetAuthSalesmanInfoRsp uint16 = 2004 + GetAuthkeyReq uint16 = 1490 + GetAuthkeyRsp uint16 = 1473 + GetBargainDataReq uint16 = 488 + GetBargainDataRsp uint16 = 426 + GetBattlePassProductReq uint16 = 2644 + GetBattlePassProductRsp uint16 = 2649 + GetBlossomBriefInfoListReq uint16 = 2772 + GetBlossomBriefInfoListRsp uint16 = 2798 + GetBonusActivityRewardReq uint16 = 2581 + GetBonusActivityRewardRsp uint16 = 2505 + GetChatEmojiCollectionReq uint16 = 4068 + GetChatEmojiCollectionRsp uint16 = 4033 + GetCityHuntingOfferReq uint16 = 4325 + GetCityHuntingOfferRsp uint16 = 4307 + GetCityReputationInfoReq uint16 = 2872 + GetCityReputationInfoRsp uint16 = 2898 + GetCityReputationMapInfoReq uint16 = 2875 GetCityReputationMapInfoRsp uint16 = 2848 - GetCompoundDataReq uint16 = 167 - GetCompoundDataRsp uint16 = 115 - GetCustomDungeonReq uint16 = 6205 - GetCustomDungeonRsp uint16 = 6211 - GetDailyDungeonEntryInfoReq uint16 = 950 - GetDailyDungeonEntryInfoRsp uint16 = 953 - GetDungeonEntryExploreConditionReq uint16 = 3364 - GetDungeonEntryExploreConditionRsp uint16 = 3425 - GetExpeditionAssistInfoListReq uint16 = 2088 - GetExpeditionAssistInfoListRsp uint16 = 2100 - GetFriendShowAvatarInfoReq uint16 = 4049 - GetFriendShowAvatarInfoRsp uint16 = 4091 - GetFriendShowNameCardInfoReq uint16 = 4098 - GetFriendShowNameCardInfoRsp uint16 = 4020 - GetFurnitureCurModuleArrangeCountReq uint16 = 4730 - GetGachaInfoReq uint16 = 1579 - GetGachaInfoRsp uint16 = 1530 - GetGameplayRecommendationReq uint16 = 155 - GetGameplayRecommendationRsp uint16 = 113 - GetHomeExchangeWoodInfoReq uint16 = 4777 - GetHomeExchangeWoodInfoRsp uint16 = 4580 - GetHomeLevelUpRewardReq uint16 = 4457 - GetHomeLevelUpRewardRsp uint16 = 4857 - GetHuntingOfferRewardReq uint16 = 4327 + GetCompoundDataReq uint16 = 141 + GetCompoundDataRsp uint16 = 149 + GetCustomDungeonReq uint16 = 6209 + GetCustomDungeonRsp uint16 = 6227 + GetDailyDungeonEntryInfoReq uint16 = 930 + GetDailyDungeonEntryInfoRsp uint16 = 967 + GetDungeonEntryExploreConditionReq uint16 = 3165 + GetDungeonEntryExploreConditionRsp uint16 = 3269 + GetExpeditionAssistInfoListReq uint16 = 2150 + GetExpeditionAssistInfoListRsp uint16 = 2035 + GetFriendShowAvatarInfoReq uint16 = 4070 + GetFriendShowAvatarInfoRsp uint16 = 4017 + GetFriendShowNameCardInfoReq uint16 = 4061 + GetFriendShowNameCardInfoRsp uint16 = 4029 + GetFurnitureCurModuleArrangeCountReq uint16 = 4711 + GetGachaInfoReq uint16 = 1572 + GetGachaInfoRsp uint16 = 1598 + GetGameplayRecommendationReq uint16 = 151 + GetGameplayRecommendationRsp uint16 = 123 + GetHomeExchangeWoodInfoReq uint16 = 4473 + GetHomeExchangeWoodInfoRsp uint16 = 4659 + GetHomeLevelUpRewardReq uint16 = 4557 + GetHomeLevelUpRewardRsp uint16 = 4603 + GetHuntingOfferRewardReq uint16 = 4302 GetHuntingOfferRewardRsp uint16 = 4331 - GetInvestigationMonsterReq uint16 = 1930 - GetInvestigationMonsterRsp uint16 = 1901 - GetMailItemReq uint16 = 1419 - GetMailItemRsp uint16 = 1500 - GetMapAreaReq uint16 = 3106 - GetMapAreaRsp uint16 = 3275 - GetMapMarkTipsReq uint16 = 3473 - GetMapMarkTipsRsp uint16 = 3272 - GetMechanicusInfoReq uint16 = 3979 - GetMechanicusInfoRsp uint16 = 3930 - GetNextResourceInfoReq uint16 = 197 - GetNextResourceInfoRsp uint16 = 102 - GetOnlinePlayerInfoReq uint16 = 90 - GetOnlinePlayerInfoRsp uint16 = 76 - GetOnlinePlayerListReq uint16 = 47 - GetOnlinePlayerListRsp uint16 = 78 - GetOpActivityInfoReq uint16 = 5179 - GetOpActivityInfoRsp uint16 = 5130 - GetParentQuestVideoKeyReq uint16 = 449 - GetParentQuestVideoKeyRsp uint16 = 491 - GetPlayerAskFriendListReq uint16 = 4008 - GetPlayerAskFriendListRsp uint16 = 4009 - GetPlayerBlacklistReq uint16 = 4015 - GetPlayerBlacklistRsp uint16 = 4021 - GetPlayerFriendListReq uint16 = 4079 - GetPlayerFriendListRsp uint16 = 4030 - GetPlayerHomeCompInfoReq uint16 = 4655 - GetPlayerMpModeAvailabilityReq uint16 = 1812 - GetPlayerMpModeAvailabilityRsp uint16 = 1834 - GetPlayerSocialDetailReq uint16 = 4078 - GetPlayerSocialDetailRsp uint16 = 4057 - GetPlayerTokenReq uint16 = 179 - GetPlayerTokenRsp uint16 = 130 - GetPushTipsRewardReq uint16 = 2217 - GetPushTipsRewardRsp uint16 = 2205 - GetQuestLackingResourceReq uint16 = 453 - GetQuestLackingResourceRsp uint16 = 424 - GetQuestTalkHistoryReq uint16 = 447 - GetQuestTalkHistoryRsp uint16 = 478 - GetRecentMpPlayerListReq uint16 = 4080 - GetRecentMpPlayerListRsp uint16 = 4046 - GetRecommendCustomDungeonReq uint16 = 6221 - GetRecommendCustomDungeonRsp uint16 = 6237 - GetRegionSearchReq uint16 = 5627 - GetReunionMissionInfoReq uint16 = 5062 - GetReunionMissionInfoRsp uint16 = 5084 - GetReunionPrivilegeInfoReq uint16 = 5093 - GetReunionPrivilegeInfoRsp uint16 = 5059 - GetReunionSignInInfoReq uint16 = 5077 + GetInvestigationMonsterReq uint16 = 1901 + GetInvestigationMonsterRsp uint16 = 1910 + GetMailItemReq uint16 = 1435 + GetMailItemRsp uint16 = 1407 + GetMapAreaReq uint16 = 3108 + GetMapAreaRsp uint16 = 3328 + GetMapMarkTipsReq uint16 = 3463 + GetMapMarkTipsRsp uint16 = 3327 + GetMechanicusInfoReq uint16 = 3972 + GetMechanicusInfoRsp uint16 = 3998 + GetNextResourceInfoReq uint16 = 192 + GetNextResourceInfoRsp uint16 = 120 + GetOnlinePlayerInfoReq uint16 = 82 + GetOnlinePlayerInfoRsp uint16 = 47 + GetOnlinePlayerListReq uint16 = 90 + GetOnlinePlayerListRsp uint16 = 73 + GetOpActivityInfoReq uint16 = 5172 + GetOpActivityInfoRsp uint16 = 5198 + GetParentQuestVideoKeyReq uint16 = 470 + GetParentQuestVideoKeyRsp uint16 = 417 + GetPlayerAskFriendListReq uint16 = 4018 + GetPlayerAskFriendListRsp uint16 = 4066 + GetPlayerBlacklistReq uint16 = 4049 + GetPlayerBlacklistRsp uint16 = 4091 + GetPlayerFriendListReq uint16 = 4072 + GetPlayerFriendListRsp uint16 = 4098 + GetPlayerHomeCompInfoReq uint16 = 4597 + GetPlayerMpModeAvailabilityReq uint16 = 1844 + GetPlayerMpModeAvailabilityRsp uint16 = 1849 + GetPlayerSocialDetailReq uint16 = 4073 + GetPlayerSocialDetailRsp uint16 = 4099 + GetPlayerTokenReq uint16 = 172 + GetPlayerTokenRsp uint16 = 198 + GetPushTipsRewardReq uint16 = 2227 + GetPushTipsRewardRsp uint16 = 2294 + GetQuestLackingResourceReq uint16 = 467 + GetQuestLackingResourceRsp uint16 = 458 + GetQuestTalkHistoryReq uint16 = 490 + GetQuestTalkHistoryRsp uint16 = 473 + GetRecentMpPlayerListReq uint16 = 4034 + GetRecentMpPlayerListRsp uint16 = 4050 + GetRecommendCustomDungeonReq uint16 = 6235 + GetRecommendCustomDungeonRsp uint16 = 6248 + GetRegionSearchReq uint16 = 5602 + GetReunionMissionInfoReq uint16 = 5094 + GetReunionMissionInfoRsp uint16 = 5099 + GetReunionPrivilegeInfoReq uint16 = 5097 + GetReunionPrivilegeInfoRsp uint16 = 5087 + GetReunionSignInInfoReq uint16 = 5052 GetReunionSignInInfoRsp uint16 = 5081 - GetRogueDairyRepairInfoReq uint16 = 8730 - GetRogueDairyRepairInfoRsp uint16 = 8656 - GetSceneAreaReq uint16 = 289 - GetSceneAreaRsp uint16 = 244 - GetSceneNpcPositionReq uint16 = 519 - GetSceneNpcPositionRsp uint16 = 600 - GetScenePerformanceReq uint16 = 3403 - GetScenePerformanceRsp uint16 = 3010 - GetScenePointReq uint16 = 299 - GetScenePointRsp uint16 = 225 - GetShopmallDataReq uint16 = 800 - GetShopmallDataRsp uint16 = 743 - GetShopReq uint16 = 779 - GetShopRsp uint16 = 730 - GetSignInRewardReq uint16 = 2600 - GetSignInRewardRsp uint16 = 2543 - GetStoreCustomDungeonReq uint16 = 6204 - GetStoreCustomDungeonRsp uint16 = 6210 - GetUgcBriefInfoReq uint16 = 6322 - GetUgcBriefInfoRsp uint16 = 6335 - GetUgcReq uint16 = 6342 - GetUgcRsp uint16 = 6341 - GetWidgetSlotReq uint16 = 4274 - GetWidgetSlotRsp uint16 = 4270 - GetWorldMpInfoReq uint16 = 3034 - GetWorldMpInfoRsp uint16 = 3310 - GiveUpRoguelikeDungeonCardReq uint16 = 8440 - GiveUpRoguelikeDungeonCardRsp uint16 = 8762 + GetRogueDairyRepairInfoReq uint16 = 8014 + GetRogueDairyRepairInfoRsp uint16 = 8447 + GetSceneAreaReq uint16 = 265 + GetSceneAreaRsp uint16 = 204 + GetSceneNpcPositionReq uint16 = 535 + GetSceneNpcPositionRsp uint16 = 507 + GetScenePerformanceReq uint16 = 3419 + GetScenePerformanceRsp uint16 = 3137 + GetScenePointReq uint16 = 297 + GetScenePointRsp uint16 = 281 + GetShopReq uint16 = 772 + GetShopRsp uint16 = 798 + GetShopmallDataReq uint16 = 707 + GetShopmallDataRsp uint16 = 721 + GetSignInRewardReq uint16 = 2507 + GetSignInRewardRsp uint16 = 2521 + GetStoreCustomDungeonReq uint16 = 6250 + GetStoreCustomDungeonRsp uint16 = 6212 + GetUgcBriefInfoReq uint16 = 6325 + GetUgcBriefInfoRsp uint16 = 6307 + GetUgcReq uint16 = 6326 + GetUgcRsp uint16 = 6318 + GetWidgetSlotReq uint16 = 4253 + GetWidgetSlotRsp uint16 = 4254 + GetWorldMpInfoReq uint16 = 3391 + GetWorldMpInfoRsp uint16 = 3320 + GiveUpRoguelikeDungeonCardReq uint16 = 8353 + GiveUpRoguelikeDungeonCardRsp uint16 = 8497 GivingRecordChangeNotify uint16 = 187 - GivingRecordNotify uint16 = 123 - GlobalBuildingInfoNotify uint16 = 5302 - GMShowNavMeshReq uint16 = 2363 - GMShowNavMeshRsp uint16 = 2304 - GMShowObstacleReq uint16 = 2398 - GMShowObstacleRsp uint16 = 2320 - GmTalkNotify uint16 = 5 - GmTalkReq uint16 = 30 - GmTalkRsp uint16 = 56 - GrantRewardNotify uint16 = 603 - GravenInnocenceEditCarveCombinationReq uint16 = 24150 - GravenInnocenceEditCarveCombinationRsp uint16 = 23400 - GravenInnocencePhotoFinishReq uint16 = 22391 - GravenInnocencePhotoFinishRsp uint16 = 22418 - GravenInnocencePhotoReminderNotify uint16 = 22577 - GravenInnocenceRaceRestartReq uint16 = 23067 - GravenInnocenceRaceRestartRsp uint16 = 20056 - GravenInnocenceRaceSettleNotify uint16 = 24427 - GroupLinkAllNotify uint16 = 5792 - GroupLinkChangeNotify uint16 = 5791 - GroupLinkDeleteNotify uint16 = 5772 - GroupLinkMarkUpdateNotify uint16 = 5785 - GroupSuiteNotify uint16 = 3489 - GroupUnloadNotify uint16 = 3138 - GuestBeginEnterSceneNotify uint16 = 3125 - GuestPostEnterSceneNotify uint16 = 3229 - H5ActivityIdsNotify uint16 = 5672 - HideAndSeekChooseMapReq uint16 = 8759 - HideAndSeekChooseMapRsp uint16 = 8501 - HideAndSeekPlayerCapturedNotify uint16 = 5580 - HideAndSeekPlayerReadyNotify uint16 = 5393 - HideAndSeekPlayerSetAvatarNotify uint16 = 5354 - HideAndSeekSelectAvatarReq uint16 = 5350 - HideAndSeekSelectAvatarRsp uint16 = 5353 - HideAndSeekSelectSkillReq uint16 = 8062 - HideAndSeekSelectSkillRsp uint16 = 8841 - HideAndSeekSetReadyReq uint16 = 5324 - HideAndSeekSetReadyRsp uint16 = 5349 - HideAndSeekSettleNotify uint16 = 5391 - HitClientTrivialNotify uint16 = 238 - HitTreeNotify uint16 = 3018 - HomeAllUnlockedBgmIdListNotify uint16 = 4841 - HomeAvatarAllFinishRewardNotify uint16 = 4798 - HomeAvatarCostumeChangeNotify uint16 = 4775 - HomeAvatarRewardEventGetReq uint16 = 4754 - HomeAvatarRewardEventGetRsp uint16 = 4713 - HomeAvatarRewardEventNotify uint16 = 4849 - HomeAvatarSummonAllEventNotify uint16 = 4670 - HomeAvatarSummonEventReq uint16 = 4894 - HomeAvatarSummonEventRsp uint16 = 4562 - HomeAvatarSummonFinishReq uint16 = 4804 - HomeAvatarSummonFinishRsp uint16 = 4814 - HomeAvatarTalkFinishInfoNotify uint16 = 4757 - HomeAvatarTalkReq uint16 = 4704 - HomeAvatarTalkRsp uint16 = 4718 - HomeAvtarAllFinishRewardNotify uint16 = 4535 - HomeBalloonGalleryScoreNotify uint16 = 4734 - HomeBalloonGallerySettleNotify uint16 = 4604 - HomeBasicInfoNotify uint16 = 4622 - HomeBlockNotify uint16 = 4679 - HomeBlueprintInfoNotify uint16 = 4813 - HomeChangeBgmNotify uint16 = 4518 - HomeChangeBgmReq uint16 = 4736 - HomeChangeBgmRsp uint16 = 4895 - HomeChangeEditModeReq uint16 = 4719 - HomeChangeEditModeRsp uint16 = 4661 - HomeChangeModuleReq uint16 = 4559 - HomeChangeModuleRsp uint16 = 4551 - HomeChooseModuleReq uint16 = 4456 - HomeChooseModuleRsp uint16 = 4638 - HomeClearGroupRecordReq uint16 = 4823 - HomeClearGroupRecordRsp uint16 = 4525 - HomeComfortInfoNotify uint16 = 4763 - HomeCreateBlueprintReq uint16 = 4539 - HomeCreateBlueprintRsp uint16 = 4806 - HomeCustomFurnitureInfoNotify uint16 = 4888 - HomeDeleteBlueprintReq uint16 = 4501 - HomeDeleteBlueprintRsp uint16 = 4545 - HomeEditCustomFurnitureReq uint16 = 4778 - HomeEditCustomFurnitureRsp uint16 = 4769 - HomeEnterEditModeFinishReq uint16 = 4865 - HomeEnterEditModeFinishRsp uint16 = 4583 - HomeExchangeWoodReq uint16 = 4808 - HomeExchangeWoodRsp uint16 = 4885 - HomeFishFarmingInfoNotify uint16 = 4842 - HomeGalleryInPlayingNotify uint16 = 5573 - HomeGetArrangementInfoReq uint16 = 4601 - HomeGetArrangementInfoRsp uint16 = 4878 - HomeGetBasicInfoReq uint16 = 4743 - HomeGetBlueprintSlotInfoReq uint16 = 4688 - HomeGetBlueprintSlotInfoRsp uint16 = 4498 - HomeGetFishFarmingInfoReq uint16 = 4835 - HomeGetFishFarmingInfoRsp uint16 = 4567 - HomeGetGroupRecordReq uint16 = 4756 - HomeGetGroupRecordRsp uint16 = 4824 - HomeGetOnlineStatusReq uint16 = 4856 - HomeGetOnlineStatusRsp uint16 = 4649 - HomeKickPlayerReq uint16 = 4684 - HomeKickPlayerRsp uint16 = 4657 - HomeLimitedShopBuyGoodsReq uint16 = 4574 - HomeLimitedShopBuyGoodsRsp uint16 = 4630 - HomeLimitedShopGoodsListReq uint16 = 4537 - HomeLimitedShopGoodsListRsp uint16 = 4492 + GivingRecordNotify uint16 = 116 + GlobalBuildingInfoNotify uint16 = 5320 + GmTalkNotify uint16 = 94 + GmTalkReq uint16 = 98 + GmTalkRsp uint16 = 12 + GrantRewardNotify uint16 = 663 + GravenInnocenceEditCarveCombinationReq uint16 = 23107 + GravenInnocenceEditCarveCombinationRsp uint16 = 20702 + GravenInnocencePhotoFinishReq uint16 = 21750 + GravenInnocencePhotoFinishRsp uint16 = 23948 + GravenInnocencePhotoReminderNotify uint16 = 23864 + GravenInnocenceRaceRestartReq uint16 = 22882 + GravenInnocenceRaceRestartRsp uint16 = 21880 + GravenInnocenceRaceSettleNotify uint16 = 20681 + GroupLinkAllNotify uint16 = 5776 + GroupLinkChangeNotify uint16 = 5768 + GroupLinkDeleteNotify uint16 = 5775 + GroupLinkMarkUpdateNotify uint16 = 5757 + GroupSuiteNotify uint16 = 3257 + GroupUnloadNotify uint16 = 3344 + GuestBeginEnterSceneNotify uint16 = 3031 + GuestPostEnterSceneNotify uint16 = 3144 + H5ActivityIdsNotify uint16 = 5675 + HideAndSeekPlayerReadyNotify uint16 = 5302 + HideAndSeekPlayerSetAvatarNotify uint16 = 5319 + HideAndSeekSelectAvatarReq uint16 = 5330 + HideAndSeekSelectAvatarRsp uint16 = 5367 + HideAndSeekSelectSkillReq uint16 = 8183 + HideAndSeekSelectSkillRsp uint16 = 8088 + HideAndSeekSetReadyReq uint16 = 5358 + HideAndSeekSetReadyRsp uint16 = 5370 + HideAndSeekSettleNotify uint16 = 5317 + HitClientTrivialNotify uint16 = 244 + HitTreeNotify uint16 = 3019 + HomeAllUnlockedBgmIdListNotify uint16 = 4608 + HomeAvatarAllFinishRewardNotify uint16 = 4741 + HomeAvatarCostumeChangeNotify uint16 = 4748 + HomeAvatarRewardEventGetReq uint16 = 4551 + HomeAvatarRewardEventGetRsp uint16 = 4833 + HomeAvatarRewardEventNotify uint16 = 4852 + HomeAvatarSummonAllEventNotify uint16 = 4808 + HomeAvatarSummonEventReq uint16 = 4806 + HomeAvatarSummonEventRsp uint16 = 4817 + HomeAvatarSummonFinishReq uint16 = 4629 + HomeAvatarSummonFinishRsp uint16 = 4696 + HomeAvatarTalkFinishInfoNotify uint16 = 4896 + HomeAvatarTalkReq uint16 = 4688 + HomeAvatarTalkRsp uint16 = 4464 + HomeAvtarAllFinishRewardNotify uint16 = 4453 + HomeBalloonGalleryScoreNotify uint16 = 4654 + HomeBalloonGallerySettleNotify uint16 = 4811 + HomeBasicInfoNotify uint16 = 4885 + HomeBlockNotify uint16 = 4543 + HomeBlueprintInfoNotify uint16 = 4765 + HomeChangeBgmNotify uint16 = 4872 + HomeChangeBgmReq uint16 = 4558 + HomeChangeBgmRsp uint16 = 4488 + HomeChangeEditModeReq uint16 = 4564 + HomeChangeEditModeRsp uint16 = 4559 + HomeChangeModuleReq uint16 = 4809 + HomeChangeModuleRsp uint16 = 4596 + HomeChooseModuleReq uint16 = 4524 + HomeChooseModuleRsp uint16 = 4648 + HomeClearGroupRecordReq uint16 = 4759 + HomeClearGroupRecordRsp uint16 = 4605 + HomeComfortInfoNotify uint16 = 4699 + HomeCreateBlueprintReq uint16 = 4619 + HomeCreateBlueprintRsp uint16 = 4606 + HomeCustomFurnitureInfoNotify uint16 = 4712 + HomeDeleteBlueprintReq uint16 = 4502 + HomeDeleteBlueprintRsp uint16 = 4586 + HomeEditCustomFurnitureReq uint16 = 4724 + HomeEditCustomFurnitureRsp uint16 = 4496 + HomeEnterEditModeFinishReq uint16 = 4537 + HomeEnterEditModeFinishRsp uint16 = 4615 + HomeExchangeWoodReq uint16 = 4576 + HomeExchangeWoodRsp uint16 = 4622 + HomeFishFarmingInfoNotify uint16 = 4677 + HomeGalleryInPlayingNotify uint16 = 5553 + HomeGetArrangementInfoReq uint16 = 4848 + HomeGetArrangementInfoRsp uint16 = 4844 + HomeGetBasicInfoReq uint16 = 4655 + HomeGetBlueprintSlotInfoReq uint16 = 4584 + HomeGetBlueprintSlotInfoRsp uint16 = 4662 + HomeGetFishFarmingInfoReq uint16 = 4476 + HomeGetFishFarmingInfoRsp uint16 = 4678 + HomeGetGroupRecordReq uint16 = 4523 + HomeGetGroupRecordRsp uint16 = 4538 + HomeGetOnlineStatusReq uint16 = 4820 + HomeGetOnlineStatusRsp uint16 = 4705 + HomeKickPlayerReq uint16 = 4870 + HomeKickPlayerRsp uint16 = 4691 + HomeLimitedShopBuyGoodsReq uint16 = 4760 + HomeLimitedShopBuyGoodsRsp uint16 = 4750 + HomeLimitedShopGoodsListReq uint16 = 4552 + HomeLimitedShopGoodsListRsp uint16 = 4546 HomeLimitedShopInfoChangeNotify uint16 = 4790 - HomeLimitedShopInfoNotify uint16 = 4475 - HomeLimitedShopInfoReq uint16 = 4815 - HomeLimitedShopInfoRsp uint16 = 4739 - HomeMarkPointNotify uint16 = 4868 - HomeModuleSeenReq uint16 = 4861 - HomeModuleSeenRsp uint16 = 4693 - HomeModuleUnlockNotify uint16 = 4674 - HomeNewUnlockedBgmIdListNotify uint16 = 4899 - HomePictureFrameInfoNotify uint16 = 4495 - HomePlantFieldNotify uint16 = 4848 - HomePlantInfoNotify uint16 = 4873 - HomePlantInfoReq uint16 = 4629 - HomePlantInfoRsp uint16 = 4460 - HomePlantSeedReq uint16 = 4768 - HomePlantSeedRsp uint16 = 4694 - HomePlantWeedReq uint16 = 4866 - HomePlantWeedRsp uint16 = 4619 - HomePreChangeEditModeNotify uint16 = 4720 - HomePreviewBlueprintReq uint16 = 4745 - HomePreviewBlueprintRsp uint16 = 4462 - HomePriorCheckNotify uint16 = 4557 - HomeRacingGallerySettleNotify uint16 = 4807 - HomeResourceNotify uint16 = 4762 - HomeResourceTakeFetterExpReq uint16 = 4521 - HomeResourceTakeFetterExpRsp uint16 = 4607 - HomeResourceTakeHomeCoinReq uint16 = 4800 - HomeResourceTakeHomeCoinRsp uint16 = 4779 - HomeSaveArrangementNoChangeReq uint16 = 4672 - HomeSaveArrangementNoChangeRsp uint16 = 4603 - HomeSceneInitFinishReq uint16 = 4451 - HomeSceneInitFinishRsp uint16 = 4531 - HomeSceneJumpReq uint16 = 4527 - HomeSceneJumpRsp uint16 = 4647 - HomeScenePointFishFarmingInfoNotify uint16 = 4834 - HomeSearchBlueprintReq uint16 = 4705 - HomeSearchBlueprintRsp uint16 = 4512 - HomeSeekFurnitureGalleryScoreNotify uint16 = 4723 - HomeSetBlueprintFriendOptionReq uint16 = 4472 - HomeSetBlueprintFriendOptionRsp uint16 = 4615 - HomeSetBlueprintSlotOptionReq uint16 = 4491 - HomeSetBlueprintSlotOptionRsp uint16 = 4621 - HomeTransferReq uint16 = 4613 - HomeTransferRsp uint16 = 4711 - HomeUpdateArrangementInfoReq uint16 = 4533 - HomeUpdateArrangementInfoRsp uint16 = 4776 - HomeUpdateFishFarmingInfoReq uint16 = 4767 - HomeUpdateFishFarmingInfoRsp uint16 = 4582 - HomeUpdatePictureFrameInfoReq uint16 = 4764 - HomeUpdatePictureFrameInfoRsp uint16 = 4468 - HomeUpdateScenePointFishFarmingInfoReq uint16 = 4652 - HomeUpdateScenePointFishFarmingInfoRsp uint16 = 4606 - HostPlayerNotify uint16 = 356 - HuntingFailNotify uint16 = 4315 - HuntingGiveUpReq uint16 = 4308 - HuntingGiveUpRsp uint16 = 4345 - HuntingOngoingNotify uint16 = 4318 - HuntingRevealClueNotify uint16 = 4317 - HuntingRevealFinalNotify uint16 = 4312 - HuntingStartNotify uint16 = 4344 - HuntingSuccessNotify uint16 = 4334 - InBattleMechanicusBuildingPointsNotify uint16 = 5361 - InBattleMechanicusCardResultNotify uint16 = 5399 + HomeLimitedShopInfoNotify uint16 = 4887 + HomeLimitedShopInfoReq uint16 = 4825 + HomeLimitedShopInfoRsp uint16 = 4796 + HomeMarkPointNotify uint16 = 4474 + HomeModuleSeenReq uint16 = 4499 + HomeModuleSeenRsp uint16 = 4821 + HomeModuleUnlockNotify uint16 = 4560 + HomeNewUnlockedBgmIdListNotify uint16 = 4847 + HomePictureFrameInfoNotify uint16 = 4878 + HomePlantFieldNotify uint16 = 4549 + HomePlantInfoNotify uint16 = 4587 + HomePlantInfoReq uint16 = 4647 + HomePlantInfoRsp uint16 = 4701 + HomePlantSeedReq uint16 = 4804 + HomePlantSeedRsp uint16 = 4556 + HomePlantWeedReq uint16 = 4640 + HomePlantWeedRsp uint16 = 4527 + HomePreChangeEditModeNotify uint16 = 4639 + HomePreviewBlueprintReq uint16 = 4478 + HomePreviewBlueprintRsp uint16 = 4738 + HomePriorCheckNotify uint16 = 4599 + HomeRacingGallerySettleNotify uint16 = 4805 + HomeResourceNotify uint16 = 4892 + HomeResourceTakeFetterExpReq uint16 = 4768 + HomeResourceTakeFetterExpRsp uint16 = 4645 + HomeResourceTakeHomeCoinReq uint16 = 4479 + HomeResourceTakeHomeCoinRsp uint16 = 4541 + HomeSaveArrangementNoChangeReq uint16 = 4704 + HomeSaveArrangementNoChangeRsp uint16 = 4668 + HomeSceneInitFinishReq uint16 = 4674 + HomeSceneInitFinishRsp uint16 = 4505 + HomeSceneJumpReq uint16 = 4528 + HomeSceneJumpRsp uint16 = 4698 + HomeScenePointFishFarmingInfoNotify uint16 = 4547 + HomeSearchBlueprintReq uint16 = 4889 + HomeSearchBlueprintRsp uint16 = 4593 + HomeSeekFurnitureGalleryScoreNotify uint16 = 4583 + HomeSetBlueprintFriendOptionReq uint16 = 4554 + HomeSetBlueprintFriendOptionRsp uint16 = 4604 + HomeSetBlueprintSlotOptionReq uint16 = 4798 + HomeSetBlueprintSlotOptionRsp uint16 = 4786 + HomeTransferReq uint16 = 4726 + HomeTransferRsp uint16 = 4616 + HomeUpdateArrangementInfoReq uint16 = 4510 + HomeUpdateArrangementInfoRsp uint16 = 4757 + HomeUpdateFishFarmingInfoReq uint16 = 4544 + HomeUpdateFishFarmingInfoRsp uint16 = 4857 + HomeUpdatePictureFrameInfoReq uint16 = 4486 + HomeUpdatePictureFrameInfoRsp uint16 = 4641 + HomeUpdateScenePointFishFarmingInfoReq uint16 = 4511 + HomeUpdateScenePointFishFarmingInfoRsp uint16 = 4540 + HostPlayerNotify uint16 = 312 + HuntingFailNotify uint16 = 4320 + HuntingGiveUpReq uint16 = 4341 + HuntingGiveUpRsp uint16 = 4342 + HuntingOngoingNotify uint16 = 4345 + HuntingRevealClueNotify uint16 = 4322 + HuntingRevealFinalNotify uint16 = 4344 + HuntingStartNotify uint16 = 4329 + HuntingSuccessNotify uint16 = 4349 + InBattleMechanicusBuildingPointsNotify uint16 = 5303 + InBattleMechanicusCardResultNotify uint16 = 5397 InBattleMechanicusConfirmCardNotify uint16 = 5348 - InBattleMechanicusConfirmCardReq uint16 = 5327 - InBattleMechanicusConfirmCardRsp uint16 = 5339 - InBattleMechanicusEscapeMonsterNotify uint16 = 5400 - InBattleMechanicusLeftMonsterNotify uint16 = 5343 - InBattleMechanicusPickCardNotify uint16 = 5357 - InBattleMechanicusPickCardReq uint16 = 5347 - InBattleMechanicusPickCardRsp uint16 = 5378 - InBattleMechanicusSettleNotify uint16 = 5342 - InstableSprayEnterDungeonReq uint16 = 21889 - InstableSprayEnterDungeonRsp uint16 = 24458 - InstableSprayGalleryInfoNotify uint16 = 5594 - InstableSprayLevelFinishNotify uint16 = 21512 - InstableSprayRestartDungeonReq uint16 = 22725 - InstableSprayRestartDungeonRsp uint16 = 23617 - InstableSpraySwitchTeamReq uint16 = 22524 - InstableSpraySwitchTeamRsp uint16 = 21806 - InteractDailyDungeonInfoNotify uint16 = 954 - InterpretInferenceWordReq uint16 = 454 - InterpretInferenceWordRsp uint16 = 498 + InBattleMechanicusConfirmCardReq uint16 = 5331 + InBattleMechanicusConfirmCardRsp uint16 = 5375 + InBattleMechanicusEscapeMonsterNotify uint16 = 5307 + InBattleMechanicusLeftMonsterNotify uint16 = 5321 + InBattleMechanicusPickCardNotify uint16 = 5399 + InBattleMechanicusPickCardReq uint16 = 5390 + InBattleMechanicusPickCardRsp uint16 = 5373 + InBattleMechanicusSettleNotify uint16 = 5305 + InstableSprayEnterDungeonReq uint16 = 24312 + InstableSprayEnterDungeonRsp uint16 = 23381 + InstableSprayGalleryInfoNotify uint16 = 5588 + InstableSprayLevelFinishNotify uint16 = 21961 + InstableSprayRestartDungeonReq uint16 = 23678 + InstableSprayRestartDungeonRsp uint16 = 24923 + InstableSpraySwitchTeamReq uint16 = 24857 + InstableSpraySwitchTeamRsp uint16 = 24152 + InteractDailyDungeonInfoNotify uint16 = 919 + InterpretInferenceWordReq uint16 = 419 + InterpretInferenceWordRsp uint16 = 461 InterruptGalleryReq uint16 = 5548 - InterruptGalleryRsp uint16 = 5599 - InvestigationMonsterUpdateNotify uint16 = 1910 - InvestigationQuestDailyNotify uint16 = 1926 - InvestigationReadQuestDailyNotify uint16 = 1908 - IrodoriChessEquipCardReq uint16 = 8766 - IrodoriChessEquipCardRsp uint16 = 8884 - IrodoriChessLeftMonsterNotify uint16 = 5331 - IrodoriChessPlayerInfoNotify uint16 = 5312 - IrodoriChessUnequipCardReq uint16 = 8409 - IrodoriChessUnequipCardRsp uint16 = 8537 - IrodoriEditFlowerCombinationReq uint16 = 8835 - IrodoriEditFlowerCombinationRsp uint16 = 8454 - IrodoriFillPoetryReq uint16 = 8926 - IrodoriFillPoetryRsp uint16 = 8076 - IrodoriMasterGalleryCgEndNotify uint16 = 8050 - IrodoriMasterGallerySettleNotify uint16 = 8792 - IrodoriMasterStartGalleryReq uint16 = 8243 - IrodoriMasterStartGalleryRsp uint16 = 8495 - IrodoriScanEntityReq uint16 = 8931 - IrodoriScanEntityRsp uint16 = 8840 - IslandPartyRaftInfoNotify uint16 = 5589 - IslandPartySailInfoNotify uint16 = 5544 - IslandPartySettleNotify uint16 = 24127 - ItemAddHintNotify uint16 = 700 - ItemCdGroupTimeNotify uint16 = 680 - ItemGivingReq uint16 = 185 - ItemGivingRsp uint16 = 108 - ItemRenameAvatarReq uint16 = 1688 - ItemRenameAvatarRsp uint16 = 1700 - JoinHomeWorldFailNotify uint16 = 4859 - JoinPlayerFailNotify uint16 = 258 - JoinPlayerSceneReq uint16 = 297 - JoinPlayerSceneRsp uint16 = 202 - KeepAliveNotify uint16 = 79 - LanternRiteDoFireworksReformReq uint16 = 8517 - LanternRiteDoFireworksReformRsp uint16 = 8171 - LanternRiteEndFireworksReformReq uint16 = 8936 - LanternRiteEndFireworksReformRsp uint16 = 8414 - LanternRiteStartFireworksReformReq uint16 = 8200 - LanternRiteStartFireworksReformRsp uint16 = 8652 - LanternRiteTakeSkinRewardReq uint16 = 8398 - LanternRiteTakeSkinRewardRsp uint16 = 8104 - LastPacketPrintNotify uint16 = 94 - LaunchFireworksReq uint16 = 5977 - LaunchFireworksRsp uint16 = 5936 - LeaveSceneReq uint16 = 230 - LeaveSceneRsp uint16 = 256 - LeaveWorldNotify uint16 = 3247 - LevelTagDataNotify uint16 = 3468 - LevelupCityReq uint16 = 223 + InterruptGalleryRsp uint16 = 5597 + InvestigationMonsterUpdateNotify uint16 = 1906 + InvestigationQuestDailyNotify uint16 = 1921 + InvestigationReadQuestDailyNotify uint16 = 1902 + IrodoriChessEquipCardReq uint16 = 8561 + IrodoriChessEquipCardRsp uint16 = 8308 + IrodoriChessLeftMonsterNotify uint16 = 5338 + IrodoriChessPlayerInfoNotify uint16 = 5364 + IrodoriChessUnequipCardReq uint16 = 8057 + IrodoriChessUnequipCardRsp uint16 = 8817 + IrodoriEditFlowerCombinationReq uint16 = 8608 + IrodoriEditFlowerCombinationRsp uint16 = 8833 + IrodoriFillPoetryReq uint16 = 8129 + IrodoriFillPoetryRsp uint16 = 8880 + IrodoriMasterGalleryCgEndNotify uint16 = 8061 + IrodoriMasterGallerySettleNotify uint16 = 8340 + IrodoriMasterStartGalleryReq uint16 = 8165 + IrodoriMasterStartGalleryRsp uint16 = 8381 + IrodoriScanEntityReq uint16 = 8767 + IrodoriScanEntityRsp uint16 = 8026 + IslandPartyRaftInfoNotify uint16 = 5565 + IslandPartySailInfoNotify uint16 = 5504 + IslandPartySettleNotify uint16 = 24601 + ItemAddHintNotify uint16 = 607 + ItemCdGroupTimeNotify uint16 = 634 + ItemGivingReq uint16 = 140 + ItemGivingRsp uint16 = 118 + JoinHomeWorldFailNotify uint16 = 4530 + JoinPlayerFailNotify uint16 = 236 + JoinPlayerSceneReq uint16 = 292 + JoinPlayerSceneRsp uint16 = 220 + KeepAliveNotify uint16 = 72 + LanternRiteDoFireworksReformReq uint16 = 8226 + LanternRiteDoFireworksReformRsp uint16 = 8657 + LanternRiteEndFireworksReformReq uint16 = 8277 + LanternRiteEndFireworksReformRsp uint16 = 8933 + LanternRiteStartFireworksReformReq uint16 = 8518 + LanternRiteStartFireworksReformRsp uint16 = 8862 + LanternRiteTakeSkinRewardReq uint16 = 8826 + LanternRiteTakeSkinRewardRsp uint16 = 8777 + LastPacketPrintNotify uint16 = 88 + LaunchFireworksReq uint16 = 6090 + LaunchFireworksRsp uint16 = 6057 + LeaveSceneReq uint16 = 298 + LeaveSceneRsp uint16 = 212 + LeaveWorldNotify uint16 = 3017 + LevelTagDataNotify uint16 = 3314 + LevelupCityReq uint16 = 216 LevelupCityRsp uint16 = 287 - LifeStateChangeNotify uint16 = 1230 - LikeCustomDungeonReq uint16 = 6203 - LikeCustomDungeonRsp uint16 = 6233 - LiveEndNotify uint16 = 810 - LiveStartNotify uint16 = 872 - LoadActivityTerrainNotify uint16 = 2089 - LuaEnvironmentEffectNotify uint16 = 3083 - LuaSetOptionNotify uint16 = 323 - LuminanceStoneChallengeSettleNotify uint16 = 8784 - LunaRiteAreaFinishNotify uint16 = 8382 - LunaRiteGroupBundleRegisterNotify uint16 = 8455 - LunaRiteHintPointRemoveNotify uint16 = 8763 - LunaRiteHintPointReq uint16 = 8811 - LunaRiteHintPointRsp uint16 = 8394 - LunaRiteSacrificeReq uint16 = 8717 - LunaRiteSacrificeRsp uint16 = 8215 - LunaRiteTakeSacrificeRewardReq uint16 = 8213 - LunaRiteTakeSacrificeRewardRsp uint16 = 8895 - MailChangeNotify uint16 = 1430 - MainCoopFailNotify uint16 = 1956 - MainCoopUpdateNotify uint16 = 1991 - MapAreaChangeNotify uint16 = 3485 - MarkEntityInMinMapNotify uint16 = 293 - MarkMapReq uint16 = 3282 - MarkMapRsp uint16 = 3346 - MarkNewNotify uint16 = 1239 - MarkTargetInvestigationMonsterNotify uint16 = 1921 - MassiveEntityElementOpBatchNotify uint16 = 363 - MassiveEntityStateChangedNotify uint16 = 349 - MaterialDeleteReturnNotify uint16 = 698 - MaterialDeleteUpdateNotify uint16 = 604 - McoinExchangeHcoinReq uint16 = 623 + LifeStateChangeNotify uint16 = 1298 + LikeCustomDungeonReq uint16 = 6210 + LikeCustomDungeonRsp uint16 = 6219 + LiveEndNotify uint16 = 806 + LiveStartNotify uint16 = 826 + LoadActivityTerrainNotify uint16 = 2029 + LuaEnvironmentEffectNotify uint16 = 3408 + LuaSetOptionNotify uint16 = 316 + LuminanceStoneChallengeSettleNotify uint16 = 8186 + LunaRiteAreaFinishNotify uint16 = 8213 + LunaRiteGroupBundleRegisterNotify uint16 = 8465 + LunaRiteHintPointRemoveNotify uint16 = 8787 + LunaRiteHintPointReq uint16 = 8195 + LunaRiteHintPointRsp uint16 = 8765 + LunaRiteSacrificeReq uint16 = 8805 + LunaRiteSacrificeRsp uint16 = 8080 + LunaRiteTakeSacrificeRewardReq uint16 = 8045 + LunaRiteTakeSacrificeRewardRsp uint16 = 8397 + MailChangeNotify uint16 = 1498 + MainCoopFailNotify uint16 = 1951 + MainCoopUpdateNotify uint16 = 1968 + MapAreaChangeNotify uint16 = 3378 + MarkEntityInMinMapNotify uint16 = 202 + MarkMapReq uint16 = 3466 + MarkMapRsp uint16 = 3079 + MarkNewNotify uint16 = 1275 + MarkTargetInvestigationMonsterNotify uint16 = 1915 + MassiveEntityElementOpBatchNotify uint16 = 357 + MassiveEntityStateChangedNotify uint16 = 370 + MaterialDeleteReturnNotify uint16 = 661 + MaterialDeleteUpdateNotify uint16 = 700 + McoinExchangeHcoinReq uint16 = 616 McoinExchangeHcoinRsp uint16 = 687 - MechanicusCandidateTeamCreateReq uint16 = 3925 - MechanicusCandidateTeamCreateRsp uint16 = 3942 - MechanicusCloseNotify uint16 = 3943 - MechanicusCoinNotify uint16 = 3919 - MechanicusLevelupGearReq uint16 = 3978 - MechanicusLevelupGearRsp uint16 = 3957 - MechanicusOpenNotify uint16 = 4000 - MechanicusSequenceOpenNotify uint16 = 3956 - MechanicusUnlockGearReq uint16 = 3961 - MechanicusUnlockGearRsp uint16 = 3947 - MeetNpcReq uint16 = 561 - MeetNpcRsp uint16 = 547 - MetNpcIdListNotify uint16 = 543 - MichiaeMatsuriDarkPressureLevelUpdateNotify uint16 = 8136 - MichiaeMatsuriGainCrystalExpUpdateNotify uint16 = 8318 - MichiaeMatsuriInteractStatueReq uint16 = 8008 - MichiaeMatsuriInteractStatueRsp uint16 = 8150 - MichiaeMatsuriRemoveChallengeMarkNotify uint16 = 8581 - MichiaeMatsuriRemoveChestMarkNotify uint16 = 8203 - MichiaeMatsuriStartBossChallengeReq uint16 = 8650 - MichiaeMatsuriStartBossChallengeRsp uint16 = 8953 - MichiaeMatsuriStartDarkChallengeReq uint16 = 8166 - MichiaeMatsuriStartDarkChallengeRsp uint16 = 8379 - MichiaeMatsuriUnlockCrystalSkillReq uint16 = 8632 - MichiaeMatsuriUnlockCrystalSkillRsp uint16 = 8874 - MiracleRingDataNotify uint16 = 5222 - MiracleRingDeliverItemReq uint16 = 5244 - MiracleRingDeliverItemRsp uint16 = 5217 - MiracleRingDestroyNotify uint16 = 5212 + MechanicusCandidateTeamCreateReq uint16 = 3981 + MechanicusCandidateTeamCreateRsp uint16 = 3905 + MechanicusCloseNotify uint16 = 3921 + MechanicusCoinNotify uint16 = 3935 + MechanicusLevelupGearReq uint16 = 3973 + MechanicusLevelupGearRsp uint16 = 3999 + MechanicusOpenNotify uint16 = 3907 + MechanicusSequenceOpenNotify uint16 = 3912 + MechanicusUnlockGearReq uint16 = 3903 + MechanicusUnlockGearRsp uint16 = 3990 + MeetNpcReq uint16 = 503 + MeetNpcRsp uint16 = 590 + MetNpcIdListNotify uint16 = 521 + MichiaeMatsuriDarkPressureLevelUpdateNotify uint16 = 8825 + MichiaeMatsuriGainCrystalExpUpdateNotify uint16 = 8523 + MichiaeMatsuriInteractStatueReq uint16 = 8718 + MichiaeMatsuriInteractStatueRsp uint16 = 8449 + MichiaeMatsuriRemoveChallengeMarkNotify uint16 = 8072 + MichiaeMatsuriRemoveChestMarkNotify uint16 = 8726 + MichiaeMatsuriStartBossChallengeReq uint16 = 8703 + MichiaeMatsuriStartBossChallengeRsp uint16 = 8426 + MichiaeMatsuriStartDarkChallengeReq uint16 = 8054 + MichiaeMatsuriStartDarkChallengeRsp uint16 = 8791 + MichiaeMatsuriUnlockCrystalSkillReq uint16 = 8345 + MichiaeMatsuriUnlockCrystalSkillRsp uint16 = 8588 + MiracleRingDataNotify uint16 = 5225 + MiracleRingDeliverItemReq uint16 = 5229 + MiracleRingDeliverItemRsp uint16 = 5222 + MiracleRingDestroyNotify uint16 = 5244 MiracleRingDropResultNotify uint16 = 5231 - MiracleRingTakeRewardReq uint16 = 5235 - MiracleRingTakeRewardRsp uint16 = 5227 - MistTrialDungeonFailNotify uint16 = 8320 - MistTrialFloorLevelNotify uint16 = 988 - MistTrialGetChallengeMissionReq uint16 = 8048 - MistTrialGetChallengeMissionRsp uint16 = 8193 - MistTrialGetDungeonExhibitionDataReq uint16 = 8983 - MistTrialGetDungeonExhibitionDataRsp uint16 = 8903 - MistTrialSelectAvatarAndEnterDungeonReq uint16 = 8226 - MistTrialSelectAvatarAndEnterDungeonRsp uint16 = 8658 - MistTrialSettleNotify uint16 = 8116 - MonsterAIConfigHashNotify uint16 = 3050 - MonsterAlertChangeNotify uint16 = 303 - MonsterForceAlertNotify uint16 = 333 - MonsterPointArrayRouteUpdateNotify uint16 = 3384 - MonsterSummonTagNotify uint16 = 1379 - MpBlockNotify uint16 = 1806 - MpPlayGuestReplyInviteReq uint16 = 1837 - MpPlayGuestReplyInviteRsp uint16 = 1804 - MpPlayGuestReplyNotify uint16 = 1810 - MpPlayInviteResultNotify uint16 = 1839 - MpPlayOwnerCheckReq uint16 = 1802 - MpPlayOwnerCheckRsp uint16 = 1843 - MpPlayOwnerInviteNotify uint16 = 1821 - MpPlayOwnerStartInviteReq uint16 = 1809 - MpPlayOwnerStartInviteRsp uint16 = 1830 - MpPlayPrepareInterruptNotify uint16 = 1850 - MpPlayPrepareNotify uint16 = 1801 - MultistagePlayEndNotify uint16 = 5345 - MultistagePlayFinishStageReq uint16 = 5330 - MultistagePlayFinishStageRsp uint16 = 5325 - MultistagePlayInfoNotify uint16 = 5379 - MultistagePlaySettleNotify uint16 = 5360 - MultistagePlayStageEndNotify uint16 = 5392 - MuqadasPotionActivityEnterDungeonReq uint16 = 22772 - MuqadasPotionActivityEnterDungeonRsp uint16 = 22650 - MuqadasPotionCaptureWeaknessReq uint16 = 24162 - MuqadasPotionCaptureWeaknessRsp uint16 = 21366 - MuqadasPotionDungeonSettleNotify uint16 = 22734 - MuqadasPotionRestartDungeonReq uint16 = 20087 - MuqadasPotionRestartDungeonRsp uint16 = 20780 - MusicGameSettleReq uint16 = 8998 - MusicGameSettleRsp uint16 = 8360 - MusicGameStartReq uint16 = 8820 - MusicGameStartRsp uint16 = 8216 - NavMeshStatsNotify uint16 = 2323 - NicknameAuditConfigNotify uint16 = 171 - NightCrowGadgetObservationMatchReq uint16 = 895 - NightCrowGadgetObservationMatchRsp uint16 = 864 - NormalUidOpNotify uint16 = 5742 - NpcTalkReq uint16 = 579 - NpcTalkRsp uint16 = 530 - NpcTalkStateNotify uint16 = 450 - ObstacleModifyNotify uint16 = 2356 - OfferingInteractReq uint16 = 2920 - OfferingInteractRsp uint16 = 2906 - OneoffGatherPointDetectorDataNotify uint16 = 4293 - OpActivityDataNotify uint16 = 5156 - OpActivityStateNotify uint16 = 2579 - OpActivityUpdateNotify uint16 = 5119 - OpenBlossomCircleCampGuideNotify uint16 = 2761 - OpenStateChangeNotify uint16 = 117 - OpenStateUpdateNotify uint16 = 107 + MiracleRingTakeRewardReq uint16 = 5207 + MiracleRingTakeRewardRsp uint16 = 5202 + MistTrialDungeonFailNotify uint16 = 8135 + MistTrialFloorLevelNotify uint16 = 968 + MistTrialGetChallengeMissionReq uint16 = 8893 + MistTrialGetChallengeMissionRsp uint16 = 8508 + MistTrialGetDungeonExhibitionDataReq uint16 = 8740 + MistTrialGetDungeonExhibitionDataRsp uint16 = 8066 + MistTrialSelectAvatarAndEnterDungeonReq uint16 = 8666 + MistTrialSelectAvatarAndEnterDungeonRsp uint16 = 8239 + MistTrialSettleNotify uint16 = 8373 + MonsterAIConfigHashNotify uint16 = 3039 + MonsterAlertChangeNotify uint16 = 363 + MonsterForceAlertNotify uint16 = 395 + MonsterPointArrayRouteUpdateNotify uint16 = 3410 + MonsterSummonTagNotify uint16 = 1372 + MpBlockNotify uint16 = 1801 + MpPlayGuestReplyInviteReq uint16 = 1848 + MpPlayGuestReplyInviteRsp uint16 = 1850 + MpPlayGuestReplyNotify uint16 = 1812 + MpPlayInviteResultNotify uint16 = 1815 + MpPlayOwnerCheckReq uint16 = 1814 + MpPlayOwnerCheckRsp uint16 = 1847 + MpPlayOwnerInviteNotify uint16 = 1835 + MpPlayOwnerStartInviteReq uint16 = 1837 + MpPlayOwnerStartInviteRsp uint16 = 1823 + MpPlayPrepareInterruptNotify uint16 = 1813 + MpPlayPrepareNotify uint16 = 1833 + MultistagePlayEndNotify uint16 = 5355 + MultistagePlayFinishStageReq uint16 = 5398 + MultistagePlayFinishStageRsp uint16 = 5381 + MultistagePlayInfoNotify uint16 = 5372 + MultistagePlaySettleNotify uint16 = 5313 + MultistagePlayStageEndNotify uint16 = 5379 + MuqadasPotionActivityEnterDungeonReq uint16 = 24602 + MuqadasPotionActivityEnterDungeonRsp uint16 = 21804 + MuqadasPotionCaptureWeaknessReq uint16 = 20011 + MuqadasPotionCaptureWeaknessRsp uint16 = 24081 + MuqadasPotionDungeonSettleNotify uint16 = 20005 + MuqadasPotionRestartDungeonReq uint16 = 22391 + MuqadasPotionRestartDungeonRsp uint16 = 21208 + MusicGameSettleReq uint16 = 8892 + MusicGameSettleRsp uint16 = 8673 + MusicGameStartReq uint16 = 8406 + MusicGameStartRsp uint16 = 8326 + NavMeshStatsNotify uint16 = 2316 + NicknameAuditConfigNotify uint16 = 152 + NightCrowGadgetObservationMatchReq uint16 = 876 + NightCrowGadgetObservationMatchRsp uint16 = 846 + NormalUidOpNotify uint16 = 5726 + NpcTalkReq uint16 = 572 + NpcTalkRsp uint16 = 598 + NpcTalkStateNotify uint16 = 430 + ObstacleModifyNotify uint16 = 2312 + OfferingInteractReq uint16 = 2918 + OfferingInteractRsp uint16 = 2908 + OneofGatherPointDetectorDataNotify uint16 = 4297 + OpActivityDataNotify uint16 = 5112 + OpActivityStateNotify uint16 = 2572 + OpActivityUpdateNotify uint16 = 5135 + OpenBlossomCircleCampGuideNotify uint16 = 2703 + OpenStateChangeNotify uint16 = 127 + OpenStateUpdateNotify uint16 = 193 OrderDisplayNotify uint16 = 4131 - OrderFinishNotify uint16 = 4122 - OtherPlayerEnterHomeNotify uint16 = 4749 - OutStuckCustomDungeonReq uint16 = 6213 - OutStuckCustomDungeonRsp uint16 = 6238 - ParentQuestInferenceDataNotify uint16 = 493 - PathfindingEnterSceneReq uint16 = 2400 - PathfindingEnterSceneRsp uint16 = 2343 - PathfindingPingNotify uint16 = 2319 - PerformOperationNotify uint16 = 1176 - PersistentDungeonSwitchAvatarReq uint16 = 1624 - PersistentDungeonSwitchAvatarRsp uint16 = 1677 - PersonalLineAllDataReq uint16 = 434 - PersonalLineAllDataRsp uint16 = 495 - PersonalLineNewUnlockNotify uint16 = 411 - PersonalSceneJumpReq uint16 = 252 - PersonalSceneJumpRsp uint16 = 274 - PhotoActivityClientViewReq uint16 = 9000 - PhotoActivityClientViewRsp uint16 = 8963 - PhotoActivityFinishReq uint16 = 8395 - PhotoActivityFinishRsp uint16 = 8847 - PingReq uint16 = 100 - PingRsp uint16 = 43 - PlantFlowerAcceptAllGiveFlowerReq uint16 = 8240 - PlantFlowerAcceptAllGiveFlowerRsp uint16 = 8313 - PlantFlowerAcceptGiveFlowerReq uint16 = 8300 - PlantFlowerAcceptGiveFlowerRsp uint16 = 8554 - PlantFlowerEditFlowerCombinationReq uint16 = 8396 - PlantFlowerEditFlowerCombinationRsp uint16 = 8684 - PlantFlowerGetCanGiveFriendFlowerReq uint16 = 8545 - PlantFlowerGetCanGiveFriendFlowerRsp uint16 = 8273 - PlantFlowerGetFriendFlowerWishListReq uint16 = 8132 - PlantFlowerGetFriendFlowerWishListRsp uint16 = 8682 - PlantFlowerGetRecvFlowerListReq uint16 = 8662 - PlantFlowerGetRecvFlowerListRsp uint16 = 8229 - PlantFlowerGetSeedInfoReq uint16 = 8674 - PlantFlowerGetSeedInfoRsp uint16 = 8912 - PlantFlowerGiveFriendFlowerReq uint16 = 8930 - PlantFlowerGiveFriendFlowerRsp uint16 = 8559 - PlantFlowerHaveRecvFlowerNotify uint16 = 8101 - PlantFlowerSetFlowerWishReq uint16 = 8420 - PlantFlowerSetFlowerWishRsp uint16 = 8324 - PlantFlowerTakeSeedRewardReq uint16 = 8611 - PlantFlowerTakeSeedRewardRsp uint16 = 8685 - PlatformChangeRouteNotify uint16 = 288 - PlatformStartRouteNotify uint16 = 208 - PlatformStopRouteNotify uint16 = 209 - PlayerAllowEnterMpAfterAgreeMatchNotify uint16 = 4184 - PlayerApplyEnterHomeNotify uint16 = 4486 - PlayerApplyEnterHomeResultNotify uint16 = 4793 - PlayerApplyEnterHomeResultReq uint16 = 4646 - PlayerApplyEnterHomeResultRsp uint16 = 4542 - PlayerApplyEnterMpAfterMatchAgreedNotify uint16 = 4168 - PlayerApplyEnterMpNotify uint16 = 1842 - PlayerApplyEnterMpReq uint16 = 1841 - PlayerApplyEnterMpResultNotify uint16 = 1835 - PlayerApplyEnterMpResultReq uint16 = 1827 - PlayerApplyEnterMpResultRsp uint16 = 1831 - PlayerApplyEnterMpRsp uint16 = 1822 - PlayerCancelMatchReq uint16 = 4185 - PlayerCancelMatchRsp uint16 = 4177 - PlayerChatCDNotify uint16 = 3450 - PlayerChatNotify uint16 = 3265 - PlayerChatReq uint16 = 3305 - PlayerChatRsp uint16 = 3087 - PlayerCompoundMaterialBoostReq uint16 = 159 - PlayerCompoundMaterialBoostRsp uint16 = 129 - PlayerCompoundMaterialReq uint16 = 146 - PlayerCompoundMaterialRsp uint16 = 175 - PlayerConfirmMatchReq uint16 = 4167 - PlayerConfirmMatchRsp uint16 = 4162 - PlayerCookArgsReq uint16 = 109 - PlayerCookArgsRsp uint16 = 188 - PlayerCookReq uint16 = 105 - PlayerCookRsp uint16 = 194 - PlayerDataNotify uint16 = 147 - PlayerDeathZoneNotify uint16 = 6272 - PlayerEnterDungeonReq uint16 = 956 - PlayerEnterDungeonRsp uint16 = 919 - PlayerEnterSceneInfoNotify uint16 = 241 - PlayerEnterSceneNotify uint16 = 279 - PlayerEyePointStateNotify uint16 = 3079 - PlayerFishingDataNotify uint16 = 5821 - PlayerForceExitReq uint16 = 126 - PlayerForceExitRsp uint16 = 177 - PlayerGameTimeByLuaNotify uint16 = 186 - PlayerGameTimeNotify uint16 = 127 - PlayerGCGMatchConfirmNotify uint16 = 4171 - PlayerGCGMatchDismissNotify uint16 = 4180 - PlayerGeneralMatchConfirmNotify uint16 = 4195 - PlayerGeneralMatchDismissNotify uint16 = 4158 - PlayerGetForceQuitBanInfoReq uint16 = 4152 - PlayerGetForceQuitBanInfoRsp uint16 = 4193 - PlayerHomeCompInfoNotify uint16 = 4818 - PlayerInjectFixNotify uint16 = 165 - PlayerInvestigationAllInfoNotify uint16 = 1916 - PlayerInvestigationNotify uint16 = 1915 - PlayerInvestigationTargetNotify uint16 = 1902 - PlayerLevelRewardUpdateNotify uint16 = 104 - PlayerLoginReq uint16 = 156 - PlayerLoginRsp uint16 = 119 - PlayerLogoutNotify uint16 = 161 - PlayerLogoutReq uint16 = 200 - PlayerLogoutRsp uint16 = 143 - PlayerLuaShellNotify uint16 = 166 - PlayerMatchAgreedResultNotify uint16 = 4165 - PlayerMatchInfoNotify uint16 = 4172 - PlayerMatchStopNotify uint16 = 4181 - PlayerMatchSuccNotify uint16 = 4194 - PlayerNicknameAuditDataNotify uint16 = 162 - PlayerNicknameNotify uint16 = 151 - PlayerOfferingDataNotify uint16 = 2911 - PlayerOfferingReq uint16 = 2915 - PlayerOfferingRsp uint16 = 2916 - PlayerPreEnterMpNotify uint16 = 1817 - PlayerPropChangeNotify uint16 = 116 - PlayerPropChangeReasonNotify uint16 = 1257 - PlayerPropNotify uint16 = 139 - PlayerQuitDungeonReq uint16 = 1000 - PlayerQuitDungeonRsp uint16 = 943 - PlayerQuitFromHomeNotify uint16 = 4724 - PlayerQuitFromMpNotify uint16 = 1844 - PlayerRandomCookReq uint16 = 172 - PlayerRandomCookRsp uint16 = 103 - PlayerRechargeDataNotify uint16 = 4127 - PlayerReportReq uint16 = 4022 - PlayerReportRsp uint16 = 4082 - PlayerRoutineDataNotify uint16 = 3542 - PlayerSetLanguageReq uint16 = 111 - PlayerSetLanguageRsp uint16 = 150 - PlayerSetOnlyMPWithPSPlayerReq uint16 = 1815 - PlayerSetOnlyMPWithPSPlayerRsp uint16 = 1818 - PlayerSetPauseReq uint16 = 122 - PlayerSetPauseRsp uint16 = 182 - PlayerSignatureAuditDataNotify uint16 = 4036 - PlayerSignatureNotify uint16 = 4041 - PlayerStartMatchReq uint16 = 4192 - PlayerStartMatchRsp uint16 = 4191 - PlayerStoreNotify uint16 = 679 - PlayerTimeNotify uint16 = 121 - PlayerWorldSceneInfoListNotify uint16 = 3059 - PostEnterSceneReq uint16 = 3286 - PostEnterSceneRsp uint16 = 3094 - PotionEnterDungeonNotify uint16 = 8777 - PotionEnterDungeonReq uint16 = 8945 - PotionEnterDungeonRsp uint16 = 8679 - PotionResetChallengeReq uint16 = 8331 - PotionResetChallengeRsp uint16 = 8804 - PotionRestartDungeonReq uint16 = 8575 - PotionRestartDungeonRsp uint16 = 8492 - PotionSaveDungeonResultReq uint16 = 8672 - PotionSaveDungeonResultRsp uint16 = 8579 - PrivateChatNotify uint16 = 5006 - PrivateChatReq uint16 = 5029 - PrivateChatRsp uint16 = 4980 - ProfilePictureChangeNotify uint16 = 4023 - ProjectorOptionReq uint16 = 803 - ProjectorOptionRsp uint16 = 833 - ProudSkillChangeNotify uint16 = 1027 - ProudSkillExtraLevelNotify uint16 = 1025 - ProudSkillUpgradeReq uint16 = 1078 - ProudSkillUpgradeRsp uint16 = 1057 - PSNBlackListNotify uint16 = 4085 + OrderFinishNotify uint16 = 4125 + OtherPlayerEnterHomeNotify uint16 = 4628 + OutStuckCustomDungeonReq uint16 = 6211 + OutStuckCustomDungeonRsp uint16 = 6234 + PSNBlackListNotify uint16 = 4040 PSNFriendListNotify uint16 = 4087 - PSPlayerApplyEnterMpReq uint16 = 1808 - PSPlayerApplyEnterMpRsp uint16 = 1845 - PublishCustomDungeonReq uint16 = 6245 - PublishCustomDungeonRsp uint16 = 6202 - PublishUgcReq uint16 = 6312 - PublishUgcRsp uint16 = 6334 - PullPrivateChatReq uint16 = 4993 - PullPrivateChatRsp uint16 = 5011 - PullRecentChatReq uint16 = 4997 - PullRecentChatRsp uint16 = 5028 - PushTipsAllDataNotify uint16 = 2237 - PushTipsChangeNotify uint16 = 2289 - PushTipsReadFinishReq uint16 = 2244 - PushTipsReadFinishRsp uint16 = 2207 - QueryCodexMonsterBeKilledNumReq uint16 = 4204 - QueryCodexMonsterBeKilledNumRsp uint16 = 4202 - QueryPathReq uint16 = 2379 - QueryPathRsp uint16 = 2330 - QuestCreateEntityReq uint16 = 457 - QuestCreateEntityRsp uint16 = 427 - QuestDelNotify uint16 = 456 - QuestDestroyEntityReq uint16 = 439 + PSPlayerApplyEnterMpReq uint16 = 1841 + PSPlayerApplyEnterMpRsp uint16 = 1842 + ParentQuestInferenceDataNotify uint16 = 402 + PathfindingEnterSceneReq uint16 = 2307 + PathfindingEnterSceneRsp uint16 = 2321 + PathfindingPingNotify uint16 = 2335 + PersistentDungeonSwitchAvatarReq uint16 = 1684 + PersistentDungeonSwitchAvatarRsp uint16 = 1768 + PersonalLineAllDataReq uint16 = 474 + PersonalLineAllDataRsp uint16 = 476 + PersonalLineNewUnlockNotify uint16 = 442 + PersonalSceneJumpReq uint16 = 284 + PersonalSceneJumpRsp uint16 = 280 + PhotoActivityClientViewReq uint16 = 8709 + PhotoActivityClientViewRsp uint16 = 8983 + PhotoActivityFinishReq uint16 = 8921 + PhotoActivityFinishRsp uint16 = 8854 + PingReq uint16 = 7 + PingRsp uint16 = 21 + PlantFlowerAcceptAllGiveFlowerReq uint16 = 8808 + PlantFlowerAcceptAllGiveFlowerRsp uint16 = 8888 + PlantFlowerAcceptGiveFlowerReq uint16 = 8383 + PlantFlowerAcceptGiveFlowerRsp uint16 = 8567 + PlantFlowerEditFlowerCombinationReq uint16 = 8843 + PlantFlowerEditFlowerCombinationRsp uint16 = 8788 + PlantFlowerGetCanGiveFriendFlowerReq uint16 = 8716 + PlantFlowerGetCanGiveFriendFlowerRsp uint16 = 8766 + PlantFlowerGetFriendFlowerWishListReq uint16 = 8126 + PlantFlowerGetFriendFlowerWishListRsp uint16 = 8511 + PlantFlowerGetRecvFlowerListReq uint16 = 8270 + PlantFlowerGetRecvFlowerListRsp uint16 = 8374 + PlantFlowerGetSeedInfoReq uint16 = 8560 + PlantFlowerGetSeedInfoRsp uint16 = 8764 + PlantFlowerGiveFriendFlowerReq uint16 = 8846 + PlantFlowerGiveFriendFlowerRsp uint16 = 8386 + PlantFlowerHaveRecvFlowerNotify uint16 = 8078 + PlantFlowerSetFlowerWishReq uint16 = 8547 + PlantFlowerSetFlowerWishRsp uint16 = 8910 + PlantFlowerTakeSeedRewardReq uint16 = 8968 + PlantFlowerTakeSeedRewardRsp uint16 = 8860 + PlatformChangeRouteNotify uint16 = 268 + PlatformStartRouteNotify uint16 = 218 + PlatformStopRouteNotify uint16 = 266 + PlayerAllowEnterMpAfterAgreeMatchNotify uint16 = 4199 + PlayerApplyEnterHomeNotify uint16 = 4533 + PlayerApplyEnterHomeResultNotify uint16 = 4468 + PlayerApplyEnterHomeResultReq uint16 = 4693 + PlayerApplyEnterHomeResultRsp uint16 = 4706 + PlayerApplyEnterMpAfterMatchAgreedNotify uint16 = 4195 + PlayerApplyEnterMpNotify uint16 = 1826 + PlayerApplyEnterMpReq uint16 = 1818 + PlayerApplyEnterMpResultNotify uint16 = 1807 + PlayerApplyEnterMpResultReq uint16 = 1802 + PlayerApplyEnterMpResultRsp uint16 = 1831 + PlayerApplyEnterMpRsp uint16 = 1825 + PlayerCancelMatchReq uint16 = 4157 + PlayerCancelMatchRsp uint16 = 4152 + PlayerChatCDNotify uint16 = 3367 + PlayerChatNotify uint16 = 3010 + PlayerChatReq uint16 = 3185 + PlayerChatRsp uint16 = 3228 + PlayerCompoundMaterialBoostReq uint16 = 185 + PlayerCompoundMaterialBoostRsp uint16 = 125 + PlayerCompoundMaterialReq uint16 = 150 + PlayerCompoundMaterialRsp uint16 = 143 + PlayerConfirmMatchReq uint16 = 4172 + PlayerConfirmMatchRsp uint16 = 4194 + PlayerCookArgsReq uint16 = 166 + PlayerCookArgsRsp uint16 = 168 + PlayerCookReq uint16 = 194 + PlayerCookRsp uint16 = 188 + PlayerDataNotify uint16 = 190 + PlayerDeathZoneNotify uint16 = 6275 + PlayerEnterDungeonReq uint16 = 912 + PlayerEnterDungeonRsp uint16 = 935 + PlayerEnterSceneInfoNotify uint16 = 214 + PlayerEnterSceneNotify uint16 = 272 + PlayerEyePointStateNotify uint16 = 3051 + PlayerFishingDataNotify uint16 = 5835 + PlayerForceExitReq uint16 = 189 + PlayerForceExitRsp uint16 = 159 + PlayerGCGMatchConfirmNotify uint16 = 4185 + PlayerGCGMatchDismissNotify uint16 = 4173 + PlayerGameTimeNotify uint16 = 131 + PlayerGeneralMatchConfirmNotify uint16 = 4192 + PlayerGeneralMatchDismissNotify uint16 = 4191 + PlayerGetForceQuitBanInfoReq uint16 = 4164 + PlayerGetForceQuitBanInfoRsp uint16 = 4197 + PlayerHomeCompInfoNotify uint16 = 4880 + PlayerInjectFixNotify uint16 = 132 + PlayerInvestigationAllInfoNotify uint16 = 1928 + PlayerInvestigationNotify uint16 = 1911 + PlayerInvestigationTargetNotify uint16 = 1929 + PlayerLevelRewardUpdateNotify uint16 = 200 + PlayerLoginReq uint16 = 112 + PlayerLoginRsp uint16 = 135 + PlayerLogoutNotify uint16 = 103 + PlayerLogoutReq uint16 = 107 + PlayerLogoutRsp uint16 = 121 + PlayerLuaShellNotify uint16 = 133 + PlayerMatchAgreedResultNotify uint16 = 4170 + PlayerMatchInfoNotify uint16 = 4175 + PlayerMatchStopNotify uint16 = 4181 + PlayerMatchSuccNotify uint16 = 4179 + PlayerNicknameAuditDataNotify uint16 = 108 + PlayerNicknameNotify uint16 = 109 + PlayerOfferingDataNotify uint16 = 2923 + PlayerOfferingReq uint16 = 2907 + PlayerOfferingRsp uint16 = 2917 + PlayerPreEnterMpNotify uint16 = 1822 + PlayerPropChangeNotify uint16 = 139 + PlayerPropChangeReasonNotify uint16 = 1299 + PlayerPropNotify uint16 = 175 + PlayerQuitDungeonReq uint16 = 907 + PlayerQuitDungeonRsp uint16 = 921 + PlayerQuitFromHomeNotify uint16 = 4656 + PlayerQuitFromMpNotify uint16 = 1829 + PlayerRandomCookReq uint16 = 126 + PlayerRandomCookRsp uint16 = 163 + PlayerRechargeDataNotify uint16 = 4102 + PlayerReportReq uint16 = 4024 + PlayerReportRsp uint16 = 4056 + PlayerRoutineDataNotify uint16 = 3526 + PlayerSetLanguageReq uint16 = 142 + PlayerSetLanguageRsp uint16 = 130 + PlayerSetOnlyMPWithPSPlayerReq uint16 = 1820 + PlayerSetOnlyMPWithPSPlayerRsp uint16 = 1845 + PlayerSetPauseReq uint16 = 124 + PlayerSetPauseRsp uint16 = 156 + PlayerSignatureAuditDataNotify uint16 = 4060 + PlayerSignatureNotify uint16 = 4014 + PlayerStartMatchReq uint16 = 4176 + PlayerStartMatchRsp uint16 = 4168 + PlayerStoreNotify uint16 = 672 + PlayerTimeNotify uint16 = 191 + PlayerWorldSceneInfoListNotify uint16 = 3129 + PostEnterSceneReq uint16 = 3312 + PostEnterSceneRsp uint16 = 3184 + PotionEnterDungeonNotify uint16 = 8531 + PotionEnterDungeonReq uint16 = 8261 + PotionEnterDungeonRsp uint16 = 8482 + PotionResetChallengeReq uint16 = 8377 + PotionResetChallengeRsp uint16 = 8067 + PotionRestartDungeonReq uint16 = 8273 + PotionRestartDungeonRsp uint16 = 8062 + PotionSaveDungeonResultReq uint16 = 8192 + PotionSaveDungeonResultRsp uint16 = 8688 + PrivateChatNotify uint16 = 4962 + PrivateChatReq uint16 = 5022 + PrivateChatRsp uint16 = 5048 + ProfilePictureChangeNotify uint16 = 4016 + ProjectorOptionReq uint16 = 863 + ProjectorOptionRsp uint16 = 895 + ProudSkillChangeNotify uint16 = 1031 + ProudSkillExtraLevelNotify uint16 = 1081 + ProudSkillUpgradeReq uint16 = 1073 + ProudSkillUpgradeRsp uint16 = 1099 + PublishCustomDungeonReq uint16 = 6242 + PublishCustomDungeonRsp uint16 = 6214 + PublishUgcReq uint16 = 6344 + PublishUgcRsp uint16 = 6349 + PullPrivateChatReq uint16 = 4971 + PullPrivateChatRsp uint16 = 4953 + PullRecentChatReq uint16 = 5040 + PullRecentChatRsp uint16 = 5023 + PushTipsAllDataNotify uint16 = 2222 + PushTipsChangeNotify uint16 = 2265 + PushTipsReadFinishReq uint16 = 2204 + PushTipsReadFinishRsp uint16 = 2293 + QueryCodexMonsterBeKilledNumReq uint16 = 4203 + QueryCodexMonsterBeKilledNumRsp uint16 = 4209 + QueryPathReq uint16 = 2372 + QueryPathRsp uint16 = 2398 + QuestCreateEntityReq uint16 = 499 + QuestCreateEntityRsp uint16 = 431 + QuestDelNotify uint16 = 412 + QuestDestroyEntityReq uint16 = 475 QuestDestroyEntityRsp uint16 = 448 - QuestDestroyNpcReq uint16 = 437 - QuestDestroyNpcRsp uint16 = 489 - QuestGlobalVarNotify uint16 = 480 - QuestListNotify uint16 = 479 - QuestListUpdateNotify uint16 = 430 - QuestProgressUpdateNotify uint16 = 490 - QuestRenameAvatarReq uint16 = 487 - QuestRenameAvatarRsp uint16 = 485 - QuestTransmitReq uint16 = 446 - QuestTransmitRsp uint16 = 475 - QuestUpdateQuestTimeVarNotify uint16 = 482 - QuestUpdateQuestVarNotify uint16 = 473 - QuestUpdateQuestVarReq uint16 = 476 - QuestUpdateQuestVarRsp uint16 = 416 - QuickOpenActivityReq uint16 = 8302 - QuickOpenActivityRsp uint16 = 8677 - QuickUseWidgetReq uint16 = 4284 - QuickUseWidgetRsp uint16 = 4265 - ReadMailNotify uint16 = 1456 - ReadNicknameAuditReq uint16 = 132 - ReadNicknameAuditRsp uint16 = 168 - ReadPrivateChatReq uint16 = 5007 - ReadPrivateChatRsp uint16 = 4977 - ReadSignatureAuditReq uint16 = 4002 - ReadSignatureAuditRsp uint16 = 4012 - ReceivedTrialAvatarActivityRewardReq uint16 = 2155 - ReceivedTrialAvatarActivityRewardRsp uint16 = 2175 - RechargeReq uint16 = 4142 - RechargeRsp uint16 = 4141 - RedeemLegendaryKeyReq uint16 = 464 - RedeemLegendaryKeyRsp uint16 = 467 - ReformFireworksReq uint16 = 6074 - ReformFireworksRsp uint16 = 6062 - RefreshBackgroundAvatarReq uint16 = 1765 - RefreshBackgroundAvatarRsp uint16 = 1744 - RefreshEntityAuthNotify uint16 = 3099 - RefreshRogueDiaryCardReq uint16 = 8868 - RefreshRogueDiaryCardRsp uint16 = 8359 - RefreshRoguelikeDungeonCardReq uint16 = 8065 - RefreshRoguelikeDungeonCardRsp uint16 = 8994 - RegionalPlayInfoNotify uint16 = 6292 - RegionSearchChangeRegionNotify uint16 = 5641 - RegionSearchNotify uint16 = 5642 - ReliquaryDecomposeReq uint16 = 631 - ReliquaryDecomposeRsp uint16 = 601 - ReliquaryFilterStateNotify uint16 = 669 - ReliquaryFilterStateSaveNotify uint16 = 638 - ReliquaryPromoteReq uint16 = 617 - ReliquaryPromoteRsp uint16 = 605 - ReliquaryUpgradeReq uint16 = 644 - ReliquaryUpgradeRsp uint16 = 607 - RemotePlayerWidgetNotify uint16 = 5910 - RemoveBlacklistReq uint16 = 4003 - RemoveBlacklistRsp uint16 = 4033 - RemoveCustomDungeonReq uint16 = 6234 - RemoveCustomDungeonRsp uint16 = 6215 - RemoveRandTaskInfoNotify uint16 = 198 - ReplayCustomDungeonReq uint16 = 6214 - ReplayCustomDungeonRsp uint16 = 6248 - ReportFightAntiCheatNotify uint16 = 388 - ReportTrackingIOInfoNotify uint16 = 4144 - RequestLiveInfoReq uint16 = 805 - RequestLiveInfoRsp uint16 = 894 - ReserveRogueDiaryAvatarReq uint16 = 8311 - ReserveRogueDiaryAvatarRsp uint16 = 8901 - ResetRogueDiaryPlayReq uint16 = 8125 - ResetRogueDiaryPlayRsp uint16 = 8943 - ResinCardDataUpdateNotify uint16 = 4134 - ResinChangeNotify uint16 = 611 - RestartCoinCollectPlaySingleModeReq uint16 = 21382 - RestartCoinCollectPlaySingleModeRsp uint16 = 23294 - RestartEffigyChallengeReq uint16 = 2051 - RestartEffigyChallengeRsp uint16 = 2172 - ResumeRogueDiaryDungeonReq uint16 = 8704 - ResumeRogueDiaryDungeonRsp uint16 = 8332 - RetryCurRogueDiaryDungeonReq uint16 = 8696 - RetryCurRogueDiaryDungeonRsp uint16 = 8269 - ReunionActivateNotify uint16 = 5071 - ReunionBriefInfoReq uint16 = 5092 - ReunionBriefInfoRsp uint16 = 5091 - ReunionDailyRefreshNotify uint16 = 5054 - ReunionPrivilegeChangeNotify uint16 = 5087 - ReunionSettleNotify uint16 = 5080 - RobotPushPlayerDataNotify uint16 = 99 - RogueCellUpdateNotify uint16 = 8851 - RogueDiaryCoinAddNotify uint16 = 8525 - RogueDiaryDungeonInfoNotify uint16 = 8096 - RogueDiaryDungeonSettleNotify uint16 = 8726 - RogueDiaryRepairInfoNotify uint16 = 8084 - RogueDiaryReviveAvatarReq uint16 = 8678 - RogueDiaryReviveAvatarRsp uint16 = 8061 - RogueDiaryTiredAvatarNotify uint16 = 8660 - RogueDungeonPlayerCellChangeNotify uint16 = 8093 - RogueFinishRepairReq uint16 = 8483 - RogueFinishRepairRsp uint16 = 8503 - RogueHealAvatarsReq uint16 = 8175 - RogueHealAvatarsRsp uint16 = 8252 - RoguelikeCardGachaNotify uint16 = 8057 - RoguelikeEffectDataNotify uint16 = 8544 - RoguelikeEffectViewReq uint16 = 8605 - RoguelikeEffectViewRsp uint16 = 8437 - RoguelikeGiveUpReq uint16 = 8442 - RoguelikeGiveUpRsp uint16 = 8905 - RoguelikeMistClearNotify uint16 = 8768 - RoguelikeRefreshCardCostUpdateNotify uint16 = 8210 - RoguelikeResourceBonusPropUpdateNotify uint16 = 8426 - RoguelikeRuneRecordUpdateNotify uint16 = 8629 - RoguelikeSelectAvatarAndEnterDungeonReq uint16 = 8988 - RoguelikeSelectAvatarAndEnterDungeonRsp uint16 = 8910 - RoguelikeTakeStageFirstPassRewardReq uint16 = 8531 - RoguelikeTakeStageFirstPassRewardRsp uint16 = 8182 - RogueResumeDungeonReq uint16 = 8275 - RogueResumeDungeonRsp uint16 = 8772 - RogueSwitchAvatarReq uint16 = 8399 - RogueSwitchAvatarRsp uint16 = 8445 - SalesmanDeliverItemReq uint16 = 2057 - SalesmanDeliverItemRsp uint16 = 2151 - SalesmanTakeRewardReq uint16 = 2069 - SalesmanTakeRewardRsp uint16 = 2026 - SalesmanTakeSpecialRewardReq uint16 = 2067 - SalesmanTakeSpecialRewardRsp uint16 = 2044 - SalvageEscortRestartReq uint16 = 8520 - SalvageEscortRestartRsp uint16 = 8553 - SalvageEscortSettleNotify uint16 = 8798 - SalvagePreventRestartReq uint16 = 8796 - SalvagePreventRestartRsp uint16 = 8493 - SalvagePreventSettleNotify uint16 = 8435 - SaveCoopDialogReq uint16 = 1954 - SaveCoopDialogRsp uint16 = 1960 - SaveCustomDungeonRoomReq uint16 = 6222 - SaveCustomDungeonRoomRsp uint16 = 6235 - SaveMainCoopReq uint16 = 1972 - SaveMainCoopRsp uint16 = 1985 - SaveUgcReq uint16 = 6344 - SaveUgcRsp uint16 = 6317 - SceneAreaUnlockNotify uint16 = 207 - SceneAreaWeatherNotify uint16 = 250 - SceneAudioNotify uint16 = 3009 - SceneAvatarStaminaStepReq uint16 = 257 - SceneAvatarStaminaStepRsp uint16 = 227 - SceneCreateEntityReq uint16 = 294 - SceneCreateEntityRsp uint16 = 272 - SceneDataNotify uint16 = 3368 - SceneDestroyEntityReq uint16 = 203 - SceneDestroyEntityRsp uint16 = 233 - SceneEntitiesMoveCombineNotify uint16 = 3452 - SceneEntitiesMovesReq uint16 = 292 - SceneEntitiesMovesRsp uint16 = 245 - SceneEntityAppearNotify uint16 = 243 - SceneEntityDisappearNotify uint16 = 261 - SceneEntityDrownReq uint16 = 217 - SceneEntityDrownRsp uint16 = 205 - SceneEntityMoveNotify uint16 = 239 - SceneEntityMoveReq uint16 = 247 - SceneEntityMoveRsp uint16 = 278 - SceneEntityUpdateNotify uint16 = 3115 - SceneForceLockNotify uint16 = 280 - SceneForceUnlockNotify uint16 = 210 - SceneGalleryInfoNotify uint16 = 5525 - SceneGalleryVintageHuntingSettleNotify uint16 = 22325 - SceneInitFinishReq uint16 = 219 - SceneInitFinishRsp uint16 = 300 - SceneKickPlayerNotify uint16 = 201 - SceneKickPlayerReq uint16 = 212 - SceneKickPlayerRsp uint16 = 231 - ScenePlayBattleInfoListNotify uint16 = 4375 - ScenePlayBattleInfoNotify uint16 = 4429 - ScenePlayBattleInterruptNotify uint16 = 4389 + QuestDestroyNpcReq uint16 = 422 + QuestDestroyNpcRsp uint16 = 465 + QuestGlobalVarNotify uint16 = 434 + QuestListNotify uint16 = 472 + QuestListUpdateNotify uint16 = 498 + QuestProgressUpdateNotify uint16 = 482 + QuestTransmitReq uint16 = 450 + QuestTransmitRsp uint16 = 443 + QuestUpdateQuestTimeVarNotify uint16 = 456 + QuestUpdateQuestVarNotify uint16 = 453 + QuestUpdateQuestVarReq uint16 = 447 + QuestUpdateQuestVarRsp uint16 = 439 + QuickOpenActivityReq uint16 = 8178 + QuickOpenActivityRsp uint16 = 8882 + QuickUseWidgetReq uint16 = 4299 + QuickUseWidgetRsp uint16 = 4270 + ReadMailNotify uint16 = 1412 + ReadNicknameAuditReq uint16 = 177 + ReadNicknameAuditRsp uint16 = 137 + ReadPrivateChatReq uint16 = 5049 + ReadPrivateChatRsp uint16 = 4981 + ReadSignatureAuditReq uint16 = 4020 + ReadSignatureAuditRsp uint16 = 4064 + ReceivedTrialAvatarActivityRewardReq uint16 = 2130 + ReceivedTrialAvatarActivityRewardRsp uint16 = 2076 + RechargeReq uint16 = 4126 + RechargeRsp uint16 = 4118 + RedeemLegendaryKeyReq uint16 = 446 + RedeemLegendaryKeyRsp uint16 = 441 + ReformFireworksReq uint16 = 6036 + ReformFireworksRsp uint16 = 5929 + RefreshBackgroundAvatarReq uint16 = 1743 + RefreshBackgroundAvatarRsp uint16 = 1800 + RefreshEntityAuthNotify uint16 = 3259 + RefreshRogueDiaryCardReq uint16 = 8991 + RefreshRogueDiaryCardRsp uint16 = 8028 + RefreshRoguelikeDungeonCardReq uint16 = 8279 + RefreshRoguelikeDungeonCardRsp uint16 = 8349 + RegionSearchChangeRegionNotify uint16 = 5618 + RegionSearchNotify uint16 = 5626 + RegionalPlayInfoNotify uint16 = 6276 + ReliquaryDecomposeReq uint16 = 638 + ReliquaryDecomposeRsp uint16 = 611 + ReliquaryPromoteReq uint16 = 627 + ReliquaryPromoteRsp uint16 = 694 + ReliquaryUpgradeReq uint16 = 604 + ReliquaryUpgradeRsp uint16 = 693 + RemotePlayerWidgetNotify uint16 = 5995 + RemoveBlacklistReq uint16 = 4063 + RemoveBlacklistRsp uint16 = 4095 + RemoveCustomDungeonReq uint16 = 6249 + RemoveCustomDungeonRsp uint16 = 6220 + RemoveRandTaskInfoNotify uint16 = 161 + ReplayCustomDungeonReq uint16 = 6243 + ReplayCustomDungeonRsp uint16 = 6240 + ReportFightAntiCheatNotify uint16 = 368 + ReportTrackingIOInfoNotify uint16 = 4129 + RequestLiveInfoReq uint16 = 894 + RequestLiveInfoRsp uint16 = 888 + ReserveRogueDiaryAvatarReq uint16 = 8748 + ReserveRogueDiaryAvatarRsp uint16 = 8799 + ResetRogueDiaryPlayReq uint16 = 8127 + ResetRogueDiaryPlayRsp uint16 = 8948 + ResinCardDataUpdateNotify uint16 = 4149 + ResinChangeNotify uint16 = 642 + RestartEffigyChallengeReq uint16 = 2148 + RestartEffigyChallengeRsp uint16 = 2042 + ResumeRogueDiaryDungeonReq uint16 = 8838 + ResumeRogueDiaryDungeonRsp uint16 = 8989 + RetryCurRogueDiaryDungeonReq uint16 = 8398 + RetryCurRogueDiaryDungeonRsp uint16 = 8334 + ReunionActivateNotify uint16 = 5085 + ReunionBriefInfoReq uint16 = 5076 + ReunionBriefInfoRsp uint16 = 5068 + ReunionDailyRefreshNotify uint16 = 5100 + ReunionPrivilegeChangeNotify uint16 = 5098 + ReunionSettleNotify uint16 = 5073 + RobotPushPlayerDataNotify uint16 = 97 + RogueCellUpdateNotify uint16 = 8642 + RogueDiaryCoinAddNotify uint16 = 8602 + RogueDiaryDungeonInfoNotify uint16 = 8597 + RogueDiaryDungeonSettleNotify uint16 = 8895 + RogueDiaryRepairInfoNotify uint16 = 8641 + RogueDiaryReviveAvatarReq uint16 = 8038 + RogueDiaryReviveAvatarRsp uint16 = 8343 + RogueDiaryTiredAvatarNotify uint16 = 8514 + RogueDungeonPlayerCellChangeNotify uint16 = 8347 + RogueFinishRepairReq uint16 = 8363 + RogueFinishRepairRsp uint16 = 8535 + RogueHealAvatarsReq uint16 = 8947 + RogueHealAvatarsRsp uint16 = 8949 + RogueResumeDungeonReq uint16 = 8795 + RogueResumeDungeonRsp uint16 = 8647 + RogueSwitchAvatarReq uint16 = 8201 + RogueSwitchAvatarRsp uint16 = 8915 + RoguelikeCardGachaNotify uint16 = 8925 + RoguelikeEffectDataNotify uint16 = 8222 + RoguelikeEffectViewReq uint16 = 8528 + RoguelikeEffectViewRsp uint16 = 8639 + RoguelikeGiveUpReq uint16 = 8660 + RoguelikeGiveUpRsp uint16 = 8139 + RoguelikeMistClearNotify uint16 = 8324 + RoguelikeRefreshCardCostUpdateNotify uint16 = 8927 + RoguelikeResourceBonusPropUpdateNotify uint16 = 8555 + RoguelikeRuneRecordUpdateNotify uint16 = 8973 + RoguelikeSelectAvatarAndEnterDungeonReq uint16 = 8457 + RoguelikeSelectAvatarAndEnterDungeonRsp uint16 = 8538 + RoguelikeTakeStageFirstPassRewardReq uint16 = 8421 + RoguelikeTakeStageFirstPassRewardRsp uint16 = 8552 + SalesmanDeliverItemReq uint16 = 2138 + SalesmanDeliverItemRsp uint16 = 2104 + SalesmanTakeRewardReq uint16 = 2191 + SalesmanTakeRewardRsp uint16 = 2110 + SalesmanTakeSpecialRewardReq uint16 = 2145 + SalesmanTakeSpecialRewardRsp uint16 = 2124 + SalvageEscortRestartReq uint16 = 8396 + SalvageEscortRestartRsp uint16 = 8959 + SalvageEscortSettleNotify uint16 = 8499 + SalvagePreventRestartReq uint16 = 8367 + SalvagePreventRestartRsp uint16 = 8938 + SalvagePreventSettleNotify uint16 = 8231 + SaveCoopDialogReq uint16 = 2000 + SaveCoopDialogRsp uint16 = 1962 + SaveCustomDungeonRoomReq uint16 = 6225 + SaveCustomDungeonRoomRsp uint16 = 6207 + SaveMainCoopReq uint16 = 1975 + SaveMainCoopRsp uint16 = 1957 + SaveUgcReq uint16 = 6329 + SaveUgcRsp uint16 = 6322 + SceneAreaUnlockNotify uint16 = 293 + SceneAreaWeatherNotify uint16 = 230 + SceneAudioNotify uint16 = 3166 + SceneAvatarStaminaStepReq uint16 = 299 + SceneAvatarStaminaStepRsp uint16 = 231 + SceneCreateEntityReq uint16 = 288 + SceneCreateEntityRsp uint16 = 226 + SceneDataNotify uint16 = 3203 + SceneDestroyEntityReq uint16 = 263 + SceneDestroyEntityRsp uint16 = 295 + SceneEntitiesMoveCombineNotify uint16 = 3387 + SceneEntitiesMovesReq uint16 = 279 + SceneEntitiesMovesRsp uint16 = 255 + SceneEntityAppearNotify uint16 = 221 + SceneEntityDisappearNotify uint16 = 203 + SceneEntityDrownReq uint16 = 227 + SceneEntityDrownRsp uint16 = 294 + SceneEntityMoveNotify uint16 = 275 + SceneEntityMoveReq uint16 = 290 + SceneEntityMoveRsp uint16 = 273 + SceneEntityUpdateNotify uint16 = 3412 + SceneForceLockNotify uint16 = 234 + SceneForceUnlockNotify uint16 = 206 + SceneGalleryInfoNotify uint16 = 5581 + SceneGalleryVintageHuntingSettleNotify uint16 = 20324 + SceneInitFinishReq uint16 = 235 + SceneInitFinishRsp uint16 = 207 + SceneKickPlayerNotify uint16 = 211 + SceneKickPlayerReq uint16 = 264 + SceneKickPlayerRsp uint16 = 238 + ScenePlayBattleInfoListNotify uint16 = 4431 + ScenePlayBattleInfoNotify uint16 = 4422 + ScenePlayBattleInterruptNotify uint16 = 4425 ScenePlayBattleResultNotify uint16 = 4398 - ScenePlayBattleUidOpNotify uint16 = 4449 - ScenePlayerBackgroundAvatarRefreshNotify uint16 = 3388 - ScenePlayerInfoNotify uint16 = 253 + ScenePlayBattleUidOpNotify uint16 = 4447 + ScenePlayGuestReplyInviteReq uint16 = 4353 + ScenePlayGuestReplyInviteRsp uint16 = 4440 + ScenePlayGuestReplyNotify uint16 = 4423 + ScenePlayInfoListNotify uint16 = 4381 + ScenePlayInviteResultNotify uint16 = 4449 + ScenePlayOutofRegionNotify uint16 = 4355 + ScenePlayOwnerCheckReq uint16 = 4448 + ScenePlayOwnerCheckRsp uint16 = 4362 + ScenePlayOwnerInviteNotify uint16 = 4371 + ScenePlayOwnerStartInviteReq uint16 = 4385 + ScenePlayOwnerStartInviteRsp uint16 = 4357 + ScenePlayerBackgroundAvatarRefreshNotify uint16 = 3274 + ScenePlayerInfoNotify uint16 = 267 ScenePlayerLocationNotify uint16 = 248 - ScenePlayerSoundNotify uint16 = 266 - ScenePlayGuestReplyInviteReq uint16 = 4411 - ScenePlayGuestReplyInviteRsp uint16 = 4397 - ScenePlayGuestReplyNotify uint16 = 4428 - ScenePlayInfoListNotify uint16 = 4377 - ScenePlayInviteResultNotify uint16 = 4407 - ScenePlayOutofRegionNotify uint16 = 4392 - ScenePlayOwnerCheckReq uint16 = 4380 - ScenePlayOwnerCheckRsp uint16 = 4406 - ScenePlayOwnerInviteNotify uint16 = 4393 - ScenePlayOwnerStartInviteReq uint16 = 4369 - ScenePlayOwnerStartInviteRsp uint16 = 4450 - ScenePointUnlockNotify uint16 = 276 - SceneRouteChangeNotify uint16 = 285 - SceneTeamUpdateNotify uint16 = 1728 - SceneTimeNotify uint16 = 296 - SceneTransToPointReq uint16 = 216 - SceneTransToPointRsp uint16 = 273 - SceneWeatherForecastReq uint16 = 3350 - SceneWeatherForecastRsp uint16 = 3064 - SeaLampCoinNotify uint16 = 2188 - SeaLampContributeItemReq uint16 = 2133 - SeaLampContributeItemRsp uint16 = 2116 - SeaLampFlyLampNotify uint16 = 2114 - SeaLampFlyLampReq uint16 = 2187 - SeaLampFlyLampRsp uint16 = 2161 - SeaLampPopularityNotify uint16 = 2135 - SeaLampTakeContributionRewardReq uint16 = 2199 - SeaLampTakeContributionRewardRsp uint16 = 2003 - SeaLampTakePhaseRewardReq uint16 = 2006 - SeaLampTakePhaseRewardRsp uint16 = 2105 - SealBattleBeginNotify uint16 = 226 - SealBattleEndNotify uint16 = 277 - SealBattleProgressNotify uint16 = 265 - SearchCustomDungeonReq uint16 = 6201 - SearchCustomDungeonRsp uint16 = 6239 - SeeMonsterReq uint16 = 206 - SeeMonsterRsp uint16 = 255 - SelectAsterMidDifficultyReq uint16 = 2060 - SelectAsterMidDifficultyRsp uint16 = 2101 - SelectEffigyChallengeConditionReq uint16 = 2131 - SelectEffigyChallengeConditionRsp uint16 = 2110 - SelectRoguelikeDungeonCardReq uint16 = 8529 - SelectRoguelikeDungeonCardRsp uint16 = 8720 - SelectWorktopOptionReq uint16 = 900 - SelectWorktopOptionRsp uint16 = 843 - ServerAnnounceNotify uint16 = 2129 - ServerAnnounceRevokeNotify uint16 = 2064 - ServerBuffChangeNotify uint16 = 398 - ServerCombatEndNotify uint16 = 1142 - ServerCondMeetQuestListUpdateNotify uint16 = 410 - ServerDisconnectClientNotify uint16 = 152 - ServerGlobalValueChangeNotify uint16 = 1199 - ServerLogNotify uint16 = 27 - ServerMessageNotify uint16 = 5741 - ServerTimeNotify uint16 = 57 - ServerTryCancelGeneralMatchNotify uint16 = 4159 + ScenePlayerSoundNotify uint16 = 233 + ScenePointUnlockNotify uint16 = 247 + SceneRouteChangeNotify uint16 = 240 + SceneTeamUpdateNotify uint16 = 1775 + SceneTimeNotify uint16 = 245 + SceneTransToPointReq uint16 = 239 + SceneTransToPointRsp uint16 = 253 + SceneWeatherForecastReq uint16 = 3110 + SceneWeatherForecastRsp uint16 = 3012 + SeaLampCoinNotify uint16 = 2114 + SeaLampContributeItemReq uint16 = 2123 + SeaLampContributeItemRsp uint16 = 2139 + SeaLampFlyLampNotify uint16 = 2105 + SeaLampFlyLampReq uint16 = 2199 + SeaLampFlyLampRsp uint16 = 2192 + SeaLampPopularityNotify uint16 = 2032 + SeaLampTakeContributionRewardReq uint16 = 2019 + SeaLampTakeContributionRewardRsp uint16 = 2177 + SeaLampTakePhaseRewardReq uint16 = 2176 + SeaLampTakePhaseRewardRsp uint16 = 2190 + SealBattleBeginNotify uint16 = 289 + SealBattleEndNotify uint16 = 259 + SealBattleProgressNotify uint16 = 232 + SearchCustomDungeonReq uint16 = 6233 + SearchCustomDungeonRsp uint16 = 6215 + SeeMonsterReq uint16 = 228 + SeeMonsterRsp uint16 = 251 + SelectAsterMidDifficultyReq uint16 = 2134 + SelectAsterMidDifficultyRsp uint16 = 2180 + SelectEffigyChallengeConditionReq uint16 = 2064 + SelectEffigyChallengeConditionRsp uint16 = 2039 + SelectRoguelikeDungeonCardReq uint16 = 8085 + SelectRoguelikeDungeonCardRsp uint16 = 8138 + SelectWorktopOptionReq uint16 = 807 + SelectWorktopOptionRsp uint16 = 821 + ServerAnnounceNotify uint16 = 2197 + ServerAnnounceRevokeNotify uint16 = 2092 + ServerBuffChangeNotify uint16 = 361 + ServerCombatEndNotify uint16 = 1105 + ServerCondMeetQuestListUpdateNotify uint16 = 406 + ServerDisconnectClientNotify uint16 = 184 + ServerGlobalValueChangeNotify uint16 = 1197 + ServerLogNotify uint16 = 31 + ServerMessageNotify uint16 = 5718 + ServerTimeNotify uint16 = 99 + ServerTryCancelGeneralMatchNotify uint16 = 4187 ServerUpdateGlobalValueNotify uint16 = 1148 - SetBattlePassViewedReq uint16 = 2608 - SetBattlePassViewedRsp uint16 = 2645 - SetChatEmojiCollectionReq uint16 = 4052 - SetChatEmojiCollectionRsp uint16 = 4074 - SetCodexPushtipsReadReq uint16 = 4209 - SetCodexPushtipsReadRsp uint16 = 4205 - SetCoopChapterViewedReq uint16 = 1989 - SetCoopChapterViewedRsp uint16 = 2000 - SetCurExpeditionChallengeIdReq uint16 = 2028 - SetCurExpeditionChallengeIdRsp uint16 = 2005 - SetEntityClientDataNotify uint16 = 3318 - SetEquipLockStateReq uint16 = 609 - SetEquipLockStateRsp uint16 = 688 - SetFriendEnterHomeOptionReq uint16 = 4853 - SetFriendEnterHomeOptionRsp uint16 = 4526 - SetFriendRemarkNameReq uint16 = 4011 - SetFriendRemarkNameRsp uint16 = 4050 - SetH5ActivityRedDotTimestampReq uint16 = 5685 - SetH5ActivityRedDotTimestampRsp uint16 = 5677 - SetIsAutoUnlockSpecificEquipReq uint16 = 602 - SetIsAutoUnlockSpecificEquipRsp uint16 = 612 - SetLimitOptimizationNotify uint16 = 8066 - SetNameCardReq uint16 = 4044 - SetNameCardRsp uint16 = 4007 - SetOpenStateReq uint16 = 189 - SetOpenStateRsp uint16 = 144 + SetBattlePassViewedReq uint16 = 2641 + SetBattlePassViewedRsp uint16 = 2642 + SetChatEmojiCollectionReq uint16 = 4084 + SetChatEmojiCollectionRsp uint16 = 4080 + SetCodexPushtipsReadReq uint16 = 4208 + SetCodexPushtipsReadRsp uint16 = 4206 + SetCoopChapterViewedReq uint16 = 1965 + SetCoopChapterViewedRsp uint16 = 1963 + SetCurExpeditionChallengeIdReq uint16 = 2021 + SetCurExpeditionChallengeIdRsp uint16 = 2049 + SetEntityClientDataNotify uint16 = 3146 + SetEquipLockStateReq uint16 = 666 + SetEquipLockStateRsp uint16 = 668 + SetFriendEnterHomeOptionReq uint16 = 4494 + SetFriendEnterHomeOptionRsp uint16 = 4743 + SetFriendRemarkNameReq uint16 = 4042 + SetFriendRemarkNameRsp uint16 = 4030 + SetH5ActivityRedDotTimestampReq uint16 = 5657 + SetH5ActivityRedDotTimestampRsp uint16 = 5652 + SetIsAutoUnlockSpecificEquipReq uint16 = 620 + SetIsAutoUnlockSpecificEquipRsp uint16 = 664 + SetLimitOptimizationNotify uint16 = 8851 + SetNameCardReq uint16 = 4004 + SetNameCardRsp uint16 = 4093 + SetOpenStateReq uint16 = 165 + SetOpenStateRsp uint16 = 104 SetPlayerBirthdayReq uint16 = 4048 - SetPlayerBirthdayRsp uint16 = 4099 - SetPlayerBornDataReq uint16 = 142 - SetPlayerBornDataRsp uint16 = 190 - SetPlayerHeadImageReq uint16 = 4090 - SetPlayerHeadImageRsp uint16 = 4076 - SetPlayerNameReq uint16 = 173 - SetPlayerNameRsp uint16 = 137 - SetPlayerPropReq uint16 = 199 - SetPlayerPropRsp uint16 = 125 - SetPlayerSignatureReq uint16 = 4025 - SetPlayerSignatureRsp uint16 = 4042 - SetSceneWeatherAreaReq uint16 = 214 - SetSceneWeatherAreaRsp uint16 = 270 - SetUpAvatarTeamReq uint16 = 1713 - SetUpAvatarTeamRsp uint16 = 1622 - SetUpLunchBoxWidgetReq uint16 = 4267 - SetUpLunchBoxWidgetRsp uint16 = 4262 - SetWidgetSlotReq uint16 = 4255 - SetWidgetSlotRsp uint16 = 4261 - ShowClientGuideNotify uint16 = 3369 - ShowClientTutorialNotify uint16 = 3204 - ShowCommonTipsNotify uint16 = 3065 - ShowMessageNotify uint16 = 19 - ShowTemplateReminderNotify uint16 = 3300 - SignatureAuditConfigNotify uint16 = 4097 - SignInInfoReq uint16 = 2556 - SignInInfoRsp uint16 = 2519 - SingleRestartBrickBreakerReq uint16 = 20021 - SingleRestartBrickBreakerRsp uint16 = 22269 - SingleStartBrickBreakerReq uint16 = 23663 - SingleStartBrickBreakerRsp uint16 = 20712 - SkyCrystalDetectorDataUpdateNotify uint16 = 4259 - SocialDataNotify uint16 = 4075 - SpiceActivityFinishMakeSpiceReq uint16 = 8838 - SpiceActivityFinishMakeSpiceRsp uint16 = 8946 - SpiceActivityGivingRecordNotify uint16 = 8719 - SpiceActivityProcessFoodReq uint16 = 8523 - SpiceActivityProcessFoodRsp uint16 = 8381 - SpringUseReq uint16 = 1651 - SpringUseRsp uint16 = 1772 - StartArenaChallengeLevelReq uint16 = 2196 - StartArenaChallengeLevelRsp uint16 = 2171 - StartBuoyantCombatGalleryReq uint16 = 8427 - StartBuoyantCombatGalleryRsp uint16 = 8969 - StartCoopPointReq uint16 = 1995 - StartCoopPointRsp uint16 = 1952 - StartEffigyChallengeReq uint16 = 2157 - StartEffigyChallengeRsp uint16 = 2169 - StartFishingReq uint16 = 5822 - StartFishingRsp uint16 = 5835 - StartRogueDiaryPlayReq uint16 = 8220 - StartRogueDiaryPlayRsp uint16 = 8881 - StartRogueDiaryRoomReq uint16 = 8279 - StartRogueDiaryRoomRsp uint16 = 8806 - StartRogueEliteCellChallengeReq uint16 = 8485 - StartRogueEliteCellChallengeRsp uint16 = 8967 - StartRogueNormalCellChallengeReq uint16 = 8247 - StartRogueNormalCellChallengeRsp uint16 = 8146 - StopReminderNotify uint16 = 3119 - StoreCustomDungeonReq uint16 = 6250 - StoreCustomDungeonRsp uint16 = 6206 - StoreItemChangeNotify uint16 = 656 - StoreItemDelNotify uint16 = 619 - StoreWeightLimitNotify uint16 = 630 - SubmitInferenceWordReq uint16 = 404 - SubmitInferenceWordRsp uint16 = 423 - SummerTimeFloatSignalPositionNotify uint16 = 8701 - SummerTimeFloatSignalUpdateNotify uint16 = 8508 - SummerTimeSprintBoatRestartReq uint16 = 8111 - SummerTimeSprintBoatRestartRsp uint16 = 8466 - SummerTimeSprintBoatSettleNotify uint16 = 8451 - SummerTimeV2BoatSettleNotify uint16 = 8153 - SummerTimeV2RestartBoatGalleryReq uint16 = 8885 - SummerTimeV2RestartBoatGalleryRsp uint16 = 8225 - SummerTimeV2RestartDungeonReq uint16 = 8073 - SummerTimeV2RestartDungeonRsp uint16 = 8686 - SumoDungeonSettleNotify uint16 = 8434 - SumoEnterDungeonNotify uint16 = 8297 - SumoLeaveDungeonNotify uint16 = 8567 - SumoRestartDungeonReq uint16 = 8725 - SumoRestartDungeonRsp uint16 = 8276 - SumoSaveTeamReq uint16 = 8022 - SumoSaveTeamRsp uint16 = 8739 - SumoSelectTeamAndEnterDungeonReq uint16 = 8978 - SumoSelectTeamAndEnterDungeonRsp uint16 = 8744 - SumoSetNoSwitchPunishTimeNotify uint16 = 8610 - SumoSwitchTeamReq uint16 = 8738 - SumoSwitchTeamRsp uint16 = 8201 - SyncScenePlayTeamEntityNotify uint16 = 3393 - SyncTeamEntityNotify uint16 = 391 - TakeAchievementGoalRewardReq uint16 = 2677 + SetPlayerBirthdayRsp uint16 = 4097 + SetPlayerBornDataReq uint16 = 105 + SetPlayerBornDataRsp uint16 = 182 + SetPlayerHeadImageReq uint16 = 4082 + SetPlayerHeadImageRsp uint16 = 4047 + SetPlayerNameReq uint16 = 153 + SetPlayerNameRsp uint16 = 122 + SetPlayerPropReq uint16 = 197 + SetPlayerPropRsp uint16 = 181 + SetPlayerSignatureReq uint16 = 4081 + SetPlayerSignatureRsp uint16 = 4005 + SetSceneWeatherAreaReq uint16 = 254 + SetSceneWeatherAreaRsp uint16 = 283 + SetUpAvatarTeamReq uint16 = 1690 + SetUpAvatarTeamRsp uint16 = 1646 + SetUpLunchBoxWidgetReq uint16 = 4272 + SetUpLunchBoxWidgetRsp uint16 = 4294 + SetWidgetSlotReq uint16 = 4259 + SetWidgetSlotRsp uint16 = 4277 + ShowClientGuideNotify uint16 = 3005 + ShowClientTutorialNotify uint16 = 3305 + ShowCommonTipsNotify uint16 = 3352 + ShowMessageNotify uint16 = 35 + ShowTemplateReminderNotify uint16 = 3491 + SignInInfoReq uint16 = 2512 + SignInInfoRsp uint16 = 2535 + SignatureAuditConfigNotify uint16 = 4092 + SkyCrystalDetectorDataUpdateNotify uint16 = 4287 + SocialDataNotify uint16 = 4043 + SpiceActivityFinishMakeSpiceReq uint16 = 8096 + SpiceActivityFinishMakeSpiceRsp uint16 = 8481 + SpiceActivityGivingRecordNotify uint16 = 8407 + SpiceActivityProcessFoodReq uint16 = 8216 + SpiceActivityProcessFoodRsp uint16 = 8772 + SpringUseReq uint16 = 1748 + SpringUseRsp uint16 = 1642 + StartArenaChallengeLevelReq uint16 = 2127 + StartArenaChallengeLevelRsp uint16 = 2125 + StartBuoyantCombatGalleryReq uint16 = 8732 + StartBuoyantCombatGalleryRsp uint16 = 8680 + StartCoopPointReq uint16 = 1992 + StartCoopPointRsp uint16 = 1964 + StartEffigyChallengeReq uint16 = 2169 + StartEffigyChallengeRsp uint16 = 2173 + StartFishingReq uint16 = 5825 + StartFishingRsp uint16 = 5807 + StartRogueDiaryPlayReq uint16 = 8419 + StartRogueDiaryPlayRsp uint16 = 8385 + StartRogueDiaryRoomReq uint16 = 8159 + StartRogueDiaryRoomRsp uint16 = 8793 + StartRogueEliteCellChallengeReq uint16 = 8242 + StartRogueEliteCellChallengeRsp uint16 = 8958 + StartRogueNormalCellChallengeReq uint16 = 8205 + StartRogueNormalCellChallengeRsp uint16 = 8036 + StopReminderNotify uint16 = 3004 + StoreCustomDungeonReq uint16 = 6213 + StoreCustomDungeonRsp uint16 = 6201 + StoreItemChangeNotify uint16 = 612 + StoreItemDelNotify uint16 = 635 + StoreWeightLimitNotify uint16 = 698 + SubmitInferenceWordReq uint16 = 500 + SubmitInferenceWordRsp uint16 = 416 + SummerTimeFloatSignalPositionNotify uint16 = 8077 + SummerTimeFloatSignalUpdateNotify uint16 = 8781 + SummerTimeSprintBoatRestartReq uint16 = 8410 + SummerTimeSprintBoatRestartRsp uint16 = 8356 + SummerTimeSprintBoatSettleNotify uint16 = 8651 + SummerTimeV2BoatSettleNotify uint16 = 8870 + SummerTimeV2RestartBoatGalleryReq uint16 = 8476 + SummerTimeV2RestartBoatGalleryRsp uint16 = 8004 + SummerTimeV2RestartDungeonReq uint16 = 8346 + SummerTimeV2RestartDungeonRsp uint16 = 8996 + SumoDungeonSettleNotify uint16 = 8291 + SumoEnterDungeonNotify uint16 = 8013 + SumoLeaveDungeonNotify uint16 = 8640 + SumoRestartDungeonReq uint16 = 8612 + SumoRestartDungeonRsp uint16 = 8214 + SumoSaveTeamReq uint16 = 8313 + SumoSaveTeamRsp uint16 = 8319 + SumoSelectTeamAndEnterDungeonReq uint16 = 8215 + SumoSelectTeamAndEnterDungeonRsp uint16 = 8193 + SumoSetNoSwitchPunishTimeNotify uint16 = 8935 + SumoSwitchTeamReq uint16 = 8351 + SumoSwitchTeamRsp uint16 = 8525 + SyncScenePlayTeamEntityNotify uint16 = 3333 + SyncTeamEntityNotify uint16 = 317 + TakeAchievementGoalRewardReq uint16 = 2652 TakeAchievementGoalRewardRsp uint16 = 2681 - TakeAchievementRewardReq uint16 = 2672 - TakeAchievementRewardRsp uint16 = 2685 - TakeAsterSpecialRewardReq uint16 = 2019 - TakeAsterSpecialRewardRsp uint16 = 2132 - TakeBackGivingItemReq uint16 = 128 - TakeBackGivingItemRsp uint16 = 196 - TakeBattlePassMissionPointReq uint16 = 2644 - TakeBattlePassMissionPointRsp uint16 = 2617 - TakeBattlePassRewardReq uint16 = 2627 + TakeAchievementRewardReq uint16 = 2675 + TakeAchievementRewardRsp uint16 = 2657 + TakeAsterSpecialRewardReq uint16 = 2097 + TakeAsterSpecialRewardRsp uint16 = 2193 + TakeBackGivingItemReq uint16 = 171 + TakeBackGivingItemRsp uint16 = 145 + TakeBattlePassMissionPointReq uint16 = 2629 + TakeBattlePassMissionPointRsp uint16 = 2622 + TakeBattlePassRewardReq uint16 = 2602 TakeBattlePassRewardRsp uint16 = 2631 - TakeCityReputationExploreRewardReq uint16 = 2899 - TakeCityReputationExploreRewardRsp uint16 = 2825 - TakeCityReputationLevelRewardReq uint16 = 2856 - TakeCityReputationLevelRewardRsp uint16 = 2819 - TakeCityReputationParentQuestReq uint16 = 2843 - TakeCityReputationParentQuestRsp uint16 = 2861 - TakeCompoundOutputReq uint16 = 134 - TakeCompoundOutputRsp uint16 = 195 - TakeCoopRewardReq uint16 = 1980 - TakeCoopRewardRsp uint16 = 1971 - TakeDeliveryDailyRewardReq uint16 = 2075 - TakeDeliveryDailyRewardRsp uint16 = 2174 - TakeEffigyFirstPassRewardReq uint16 = 2138 - TakeEffigyFirstPassRewardRsp uint16 = 2178 - TakeEffigyRewardReq uint16 = 2082 - TakeEffigyRewardRsp uint16 = 2099 - TakeFirstShareRewardReq uint16 = 4034 - TakeFirstShareRewardRsp uint16 = 4095 - TakeFurnitureMakeReq uint16 = 4506 - TakeFurnitureMakeRsp uint16 = 4803 - TakeHuntingOfferReq uint16 = 4342 - TakeHuntingOfferRsp uint16 = 4341 - TakeInvestigationRewardReq uint16 = 1924 - TakeInvestigationRewardRsp uint16 = 1907 - TakeInvestigationTargetRewardReq uint16 = 1903 - TakeInvestigationTargetRewardRsp uint16 = 1905 - TakeMaterialDeleteReturnReq uint16 = 620 - TakeMaterialDeleteReturnRsp uint16 = 663 - TakeoffEquipReq uint16 = 642 - TakeoffEquipRsp uint16 = 690 - TakeOfferingLevelRewardReq uint16 = 2901 - TakeOfferingLevelRewardRsp uint16 = 2902 - TakePlayerLevelRewardReq uint16 = 120 - TakePlayerLevelRewardRsp uint16 = 163 - TakeRegionSearchRewardReq uint16 = 5622 - TakeRegionSearchRewardRsp uint16 = 5635 - TakeResinCardDailyRewardReq uint16 = 4117 - TakeResinCardDailyRewardRsp uint16 = 4112 - TakeReunionFirstGiftRewardReq uint16 = 5072 - TakeReunionFirstGiftRewardRsp uint16 = 5085 - TakeReunionMissionRewardReq uint16 = 5095 - TakeReunionMissionRewardRsp uint16 = 5052 - TakeReunionSignInRewardReq uint16 = 5094 - TakeReunionSignInRewardRsp uint16 = 5067 - TakeReunionWatcherRewardReq uint16 = 5065 - TakeReunionWatcherRewardRsp uint16 = 5068 - TanukiTravelFinishGuideQuestNotify uint16 = 8481 - TaskVarNotify uint16 = 136 - TeamResonanceChangeNotify uint16 = 1090 - ToTheMoonAddObstacleReq uint16 = 6143 - ToTheMoonAddObstacleRsp uint16 = 6161 - ToTheMoonEnterSceneReq uint16 = 6119 - ToTheMoonEnterSceneRsp uint16 = 6200 - ToTheMoonObstaclesModifyNotify uint16 = 6157 - ToTheMoonPingNotify uint16 = 6156 - ToTheMoonQueryPathReq uint16 = 6179 - ToTheMoonQueryPathRsp uint16 = 6130 - ToTheMoonRemoveObstacleReq uint16 = 6147 - ToTheMoonRemoveObstacleRsp uint16 = 6178 - TowerAllDataReq uint16 = 2447 - TowerAllDataRsp uint16 = 2478 - TowerBriefDataNotify uint16 = 2479 + TakeCityReputationExploreRewardReq uint16 = 2897 + TakeCityReputationExploreRewardRsp uint16 = 2881 + TakeCityReputationLevelRewardReq uint16 = 2812 + TakeCityReputationLevelRewardRsp uint16 = 2835 + TakeCityReputationParentQuestReq uint16 = 2821 + TakeCityReputationParentQuestRsp uint16 = 2803 + TakeCompoundOutputReq uint16 = 174 + TakeCompoundOutputRsp uint16 = 176 + TakeCoopRewardReq uint16 = 1973 + TakeCoopRewardRsp uint16 = 1985 + TakeDeliveryDailyRewardReq uint16 = 2121 + TakeDeliveryDailyRewardRsp uint16 = 2162 + TakeEffigyFirstPassRewardReq uint16 = 2196 + TakeEffigyFirstPassRewardRsp uint16 = 2061 + TakeEffigyRewardReq uint16 = 2040 + TakeEffigyRewardRsp uint16 = 2007 + TakeFirstShareRewardReq uint16 = 4074 + TakeFirstShareRewardRsp uint16 = 4076 + TakeFurnitureMakeReq uint16 = 4772 + TakeFurnitureMakeRsp uint16 = 4769 + TakeHuntingOfferReq uint16 = 4326 + TakeHuntingOfferRsp uint16 = 4318 + TakeInvestigationRewardReq uint16 = 1912 + TakeInvestigationRewardRsp uint16 = 1922 + TakeInvestigationTargetRewardReq uint16 = 1918 + TakeInvestigationTargetRewardRsp uint16 = 1916 + TakeMaterialDeleteReturnReq uint16 = 629 + TakeMaterialDeleteReturnRsp uint16 = 657 + TakeOfferingLevelRewardReq uint16 = 2919 + TakeOfferingLevelRewardRsp uint16 = 2911 + TakePlayerLevelRewardReq uint16 = 129 + TakePlayerLevelRewardRsp uint16 = 157 + TakeRegionSearchRewardReq uint16 = 5625 + TakeRegionSearchRewardRsp uint16 = 5607 + TakeResinCardDailyRewardReq uint16 = 4122 + TakeResinCardDailyRewardRsp uint16 = 4144 + TakeReunionFirstGiftRewardReq uint16 = 5075 + TakeReunionFirstGiftRewardRsp uint16 = 5057 + TakeReunionMissionRewardReq uint16 = 5092 + TakeReunionMissionRewardRsp uint16 = 5064 + TakeReunionSignInRewardReq uint16 = 5079 + TakeReunionSignInRewardRsp uint16 = 5072 + TakeReunionWatcherRewardReq uint16 = 5070 + TakeReunionWatcherRewardRsp uint16 = 5095 + TakeoffEquipReq uint16 = 605 + TakeoffEquipRsp uint16 = 682 + TanukiTravelFinishGuideQuestNotify uint16 = 8924 + TaskVarNotify uint16 = 160 + TeamResonanceChangeNotify uint16 = 1082 + ToTheMoonAddObstacleReq uint16 = 6121 + ToTheMoonAddObstacleRsp uint16 = 6103 + ToTheMoonEnterSceneReq uint16 = 6135 + ToTheMoonEnterSceneRsp uint16 = 6107 + ToTheMoonObstaclesModifyNotify uint16 = 6199 + ToTheMoonPingNotify uint16 = 6112 + ToTheMoonQueryPathReq uint16 = 6172 + ToTheMoonQueryPathRsp uint16 = 6198 + ToTheMoonRemoveObstacleReq uint16 = 6190 + ToTheMoonRemoveObstacleRsp uint16 = 6173 + TowerAllDataReq uint16 = 2490 + TowerAllDataRsp uint16 = 2473 + TowerBriefDataNotify uint16 = 2472 TowerBuffSelectReq uint16 = 2448 - TowerBuffSelectRsp uint16 = 2499 - TowerCurLevelRecordChangeNotify uint16 = 2456 - TowerDailyRewardProgressChangeNotify uint16 = 2419 - TowerEnterLevelReq uint16 = 2427 - TowerEnterLevelRsp uint16 = 2439 - TowerFloorRecordChangeNotify uint16 = 2430 - TowerGetFloorStarRewardReq uint16 = 2444 - TowerGetFloorStarRewardRsp uint16 = 2407 - TowerLevelEndNotify uint16 = 2433 - TowerLevelStarCondNotify uint16 = 2410 - TowerMiddleLevelChangeTeamNotify uint16 = 2480 - TowerRecordHandbookReq uint16 = 2446 - TowerRecordHandbookRsp uint16 = 2475 - TowerSurrenderReq uint16 = 2437 - TowerSurrenderRsp uint16 = 2489 - TowerTeamSelectReq uint16 = 2443 - TowerTeamSelectRsp uint16 = 2461 - TreasureMapBonusChallengeNotify uint16 = 2097 - TreasureMapCurrencyNotify uint16 = 2032 - TreasureMapDetectorDataNotify uint16 = 4254 - TreasureMapGuideTaskDoneNotify uint16 = 2046 - TreasureMapHostInfoNotify uint16 = 8296 - TreasureMapMpChallengeNotify uint16 = 2021 - TreasureMapPreTaskDoneNotify uint16 = 2177 - TreasureMapRegionActiveNotify uint16 = 2085 - TreasureMapRegionInfoNotify uint16 = 2179 - TreasureSeelieCollectOrbsNotify uint16 = 20380 - TrialAvatarFirstPassDungeonNotify uint16 = 2134 - TrialAvatarInDungeonIndexNotify uint16 = 2063 - TriggerCreateGadgetToEquipPartNotify uint16 = 346 - TriggerRoguelikeCurseNotify uint16 = 8965 - TriggerRoguelikeRuneReq uint16 = 8822 - TriggerRoguelikeRuneRsp uint16 = 8133 - TryCustomDungeonReq uint16 = 6218 - TryCustomDungeonRsp uint16 = 6208 - TryEnterHomeReq uint16 = 4648 - TryEnterHomeRsp uint16 = 4796 - TryEnterNextRogueDiaryDungeonReq uint16 = 8791 - TryEnterNextRogueDiaryDungeonRsp uint16 = 8487 - TryInterruptRogueDiaryDungeonReq uint16 = 8438 - TryInterruptRogueDiaryDungeonRsp uint16 = 8234 - UgcNotify uint16 = 6308 - UnfreezeGroupLimitNotify uint16 = 3483 - UnionCmdNotify uint16 = 42 - Unk3300_DGBNCDEIIFC uint16 = 952 - Unk3300_DMOBAABGOBF uint16 = 7193 - Unk3300_ICAGMOCOALO uint16 = 4187 - Unk3300_LOINGBJLJEM uint16 = 7048 - UnlockAvatarTalentReq uint16 = 1079 - UnlockAvatarTalentRsp uint16 = 1030 - UnlockCoopChapterReq uint16 = 1965 - UnlockCoopChapterRsp uint16 = 1968 - UnlockedFurnitureFormulaDataNotify uint16 = 4716 - UnlockedFurnitureSuiteDataNotify uint16 = 4532 - UnlockNameCardNotify uint16 = 4010 - UnlockPersonalLineReq uint16 = 415 - UnlockPersonalLineRsp uint16 = 421 - UnlockTransPointReq uint16 = 3200 - UnlockTransPointRsp uint16 = 3046 - UnmarkEntityInMinMapNotify uint16 = 254 - UpdateAbilityCreatedMovingPlatformNotify uint16 = 825 - UpdatePlayerShowAvatarListReq uint16 = 4053 - UpdatePlayerShowAvatarListRsp uint16 = 4024 - UpdatePlayerShowNameCardListReq uint16 = 4093 - UpdatePlayerShowNameCardListRsp uint16 = 4054 - UpdatePS4BlockListReq uint16 = 4064 - UpdatePS4BlockListRsp uint16 = 4067 - UpdatePS4FriendListNotify uint16 = 4016 - UpdatePS4FriendListReq uint16 = 4026 - UpdatePS4FriendListRsp uint16 = 4077 - UpdateRedPointNotify uint16 = 7 - UpdateReunionWatcherNotify uint16 = 5058 - UpdateSalvageBundleMarkReq uint16 = 8906 - UpdateSalvageBundleMarkRsp uint16 = 8620 - UpgradeRoguelikeShikigamiReq uint16 = 8282 - UpgradeRoguelikeShikigamiRsp uint16 = 8314 - UseItemReq uint16 = 647 - UseItemRsp uint16 = 678 - UseMiracleRingReq uint16 = 5242 - UseMiracleRingRsp uint16 = 5241 - UseWidgetCreateGadgetReq uint16 = 4264 - UseWidgetCreateGadgetRsp uint16 = 4298 - UseWidgetRetractGadgetReq uint16 = 4275 - UseWidgetRetractGadgetRsp uint16 = 4263 - VehicleInteractReq uint16 = 889 - VehicleInteractRsp uint16 = 844 - VehicleStaminaNotify uint16 = 880 - ViewCodexReq uint16 = 4206 - ViewCodexRsp uint16 = 4210 - ViewLanternProjectionLevelTipsReq uint16 = 8303 - ViewLanternProjectionLevelTipsRsp uint16 = 8962 - ViewLanternProjectionTipsReq uint16 = 8560 - ViewLanternProjectionTipsRsp uint16 = 8623 - VintageCampGroupBundleRegisterNotify uint16 = 24329 - VintageCampStageFinishNotify uint16 = 21839 - VintageDecorateBoothReq uint16 = 22958 - VintageDecorateBoothRsp uint16 = 21588 - VintageHuntingStartGalleryReq uint16 = 21649 - VintageHuntingStartGalleryRsp uint16 = 22068 - VintageMarketDeliverItemReq uint16 = 21131 - VintageMarketDeliverItemRsp uint16 = 23763 - VintageMarketDividendFinishNotify uint16 = 22064 - VintageMarketFinishStorePlayReq uint16 = 21911 - VintageMarketFinishStorePlayRsp uint16 = 20941 - VintageMarketNpcEventFinishNotify uint16 = 24781 - VintageMarketStartStorePlayReq uint16 = 22447 - VintageMarketStartStorePlayRsp uint16 = 23017 - VintageMarketStoreChooseStrategyReq uint16 = 21624 - VintageMarketStoreChooseStrategyRsp uint16 = 21298 - VintageMarketStoreUnlockSlotReq uint16 = 22367 - VintageMarketStoreUnlockSlotRsp uint16 = 23327 - VintageMarketStoreViewStrategyReq uint16 = 21834 - VintageMarketStoreViewStrategyRsp uint16 = 22881 - VintagePresentFinishNoify uint16 = 21400 - VintagePresentFinishNotify uint16 = 20454 - WatcherAllDataNotify uint16 = 2279 - WatcherChangeNotify uint16 = 2230 - WatcherEventNotify uint16 = 2256 - WatcherEventStageNotify uint16 = 2300 - WatcherEventTypeNotify uint16 = 2219 - WaterSpritePhaseFinishNotify uint16 = 2120 - WeaponAwakenReq uint16 = 633 - WeaponAwakenRsp uint16 = 610 - WeaponPromoteReq uint16 = 637 - WeaponPromoteRsp uint16 = 689 - WeaponUpgradeReq uint16 = 616 - WeaponUpgradeRsp uint16 = 673 - WearEquipReq uint16 = 699 - WearEquipRsp uint16 = 625 - WidgetActiveChangeNotify uint16 = 4297 - WidgetCaptureAnimalReq uint16 = 4279 - WidgetCaptureAnimalRsp uint16 = 4296 - WidgetCoolDownNotify uint16 = 4268 - WidgetDoBagReq uint16 = 4269 - WidgetDoBagRsp uint16 = 4299 - WidgetGadgetAllDataNotify uint16 = 4288 - WidgetGadgetDataNotify uint16 = 4276 - WidgetGadgetDestroyNotify uint16 = 4257 - WidgetQuickHitTreeReq uint16 = 3068 - WidgetQuickHitTreeRsp uint16 = 3250 - WidgetReportReq uint16 = 4258 - WidgetReportRsp uint16 = 4295 - WidgetSlotChangeNotify uint16 = 4278 - WidgetUpdateExtraCDReq uint16 = 5907 - WidgetUpdateExtraCDRsp uint16 = 6076 - WidgetUseAttachAbilityGroupChangeNotify uint16 = 4290 - WidgetWeatherWizardDataNotify uint16 = 5952 - WindFieldGalleryChallengeInfoNotify uint16 = 5503 - WindFieldGalleryInfoNotify uint16 = 5572 - WindFieldRestartDungeonReq uint16 = 24309 - WindFieldRestartDungeonRsp uint16 = 20706 - WindSeedClientNotify uint16 = 1157 - WinterCampAcceptAllGiveItemReq uint16 = 8538 - WinterCampAcceptAllGiveItemRsp uint16 = 8731 - WinterCampAcceptGiveItemReq uint16 = 8516 - WinterCampAcceptGiveItemRsp uint16 = 8966 - WinterCampEditSnowmanCombinationReq uint16 = 8157 - WinterCampEditSnowmanCombinationRsp uint16 = 8951 - WinterCampGetCanGiveFriendItemReq uint16 = 8443 - WinterCampGetCanGiveFriendItemRsp uint16 = 8021 - WinterCampGetFriendWishListReq uint16 = 8764 - WinterCampGetFriendWishListRsp uint16 = 8208 - WinterCampGetRecvItemListReq uint16 = 8794 - WinterCampGetRecvItemListRsp uint16 = 8957 - WinterCampGiveFriendItemReq uint16 = 8102 - WinterCampGiveFriendItemRsp uint16 = 8735 - WinterCampRaceScoreNotify uint16 = 8960 - WinterCampRecvItemNotify uint16 = 8952 - WinterCampSetWishListReq uint16 = 8380 - WinterCampSetWishListRsp uint16 = 8288 - WinterCampStageInfoChangeNotify uint16 = 8878 - WinterCampTakeBattleRewardReq uint16 = 8484 - WinterCampTakeBattleRewardRsp uint16 = 8310 - WinterCampTakeExploreRewardReq uint16 = 8014 - WinterCampTakeExploreRewardRsp uint16 = 8323 - WinterCampTriathlonRestartReq uint16 = 8524 - WinterCampTriathlonRestartRsp uint16 = 8468 - WinterCampTriathlonSettleNotify uint16 = 8194 - WorktopOptionNotify uint16 = 819 - WorldAllRoutineTypeNotify uint16 = 3541 - WorldChestOpenNotify uint16 = 3242 - WorldDataNotify uint16 = 3436 - WorldOwnerBlossomBriefInfoNotify uint16 = 2719 - WorldOwnerBlossomScheduleInfoNotify uint16 = 2800 - WorldOwnerDailyTaskNotify uint16 = 193 - WorldPlayerDieNotify uint16 = 259 - WorldPlayerInfoNotify uint16 = 3150 - WorldPlayerLocationNotify uint16 = 224 - WorldPlayerReviveReq uint16 = 229 - WorldPlayerReviveRsp uint16 = 286 - WorldPlayerRTTNotify uint16 = 37 - WorldRoutineChangeNotify uint16 = 3535 - WorldRoutineTypeCloseNotify uint16 = 3527 - WorldRoutineTypeRefreshNotify uint16 = 3522 + TowerBuffSelectRsp uint16 = 2497 + TowerCurLevelRecordChangeNotify uint16 = 2412 + TowerDailyRewardProgressChangeNotify uint16 = 2435 + TowerEnterLevelReq uint16 = 2431 + TowerEnterLevelRsp uint16 = 2475 + TowerFloorRecordChangeNotify uint16 = 2498 + TowerGetFloorStarRewardReq uint16 = 2404 + TowerGetFloorStarRewardRsp uint16 = 2493 + TowerLevelEndNotify uint16 = 2495 + TowerLevelStarCondNotify uint16 = 2406 + TowerMiddleLevelChangeTeamNotify uint16 = 2434 + TowerRecordHandbookReq uint16 = 2450 + TowerRecordHandbookRsp uint16 = 2443 + TowerSurrenderReq uint16 = 2422 + TowerSurrenderRsp uint16 = 2465 + TowerTeamSelectReq uint16 = 2421 + TowerTeamSelectRsp uint16 = 2403 + TreasureMapBonusChallengeNotify uint16 = 2115 + TreasureMapCurrencyNotify uint16 = 2171 + TreasureMapDetectorDataNotify uint16 = 4300 + TreasureMapGuideTaskDoneNotify uint16 = 2119 + TreasureMapHostInfoNotify uint16 = 8681 + TreasureMapMpChallengeNotify uint16 = 2048 + TreasureMapPreTaskDoneNotify uint16 = 2152 + TreasureMapRegionActiveNotify uint16 = 2122 + TreasureMapRegionInfoNotify uint16 = 2185 + TreasureSeelieCollectOrbsNotify uint16 = 20754 + TrialAvatarFirstPassDungeonNotify uint16 = 2013 + TrialAvatarInDungeonIndexNotify uint16 = 2186 + TriggerCreateGadgetToEquipPartNotify uint16 = 350 + TriggerRoguelikeCurseNotify uint16 = 8412 + TriggerRoguelikeRuneReq uint16 = 8463 + TriggerRoguelikeRuneRsp uint16 = 8065 + TryCustomDungeonReq uint16 = 6245 + TryCustomDungeonRsp uint16 = 6241 + TryEnterHomeReq uint16 = 4482 + TryEnterHomeRsp uint16 = 4653 + TryEnterNextRogueDiaryDungeonReq uint16 = 8280 + TryEnterNextRogueDiaryDungeonRsp uint16 = 8362 + TryInterruptRogueDiaryDungeonReq uint16 = 8617 + TryInterruptRogueDiaryDungeonRsp uint16 = 8903 + UgcNotify uint16 = 6341 + UnfreezeGroupLimitNotify uint16 = 3220 + UnionCmdNotify uint16 = 5 + UnlockAvatarTalentReq uint16 = 1072 + UnlockAvatarTalentRsp uint16 = 1098 + UnlockCoopChapterReq uint16 = 1970 + UnlockCoopChapterRsp uint16 = 1995 + UnlockNameCardNotify uint16 = 4006 + UnlockPersonalLineReq uint16 = 449 + UnlockPersonalLineRsp uint16 = 491 + UnlockTransPointReq uint16 = 3035 + UnlockTransPointRsp uint16 = 3426 + UnlockedFurnitureFormulaDataNotify uint16 = 4846 + UnlockedFurnitureSuiteDataNotify uint16 = 4454 + UnmarkEntityInMinMapNotify uint16 = 219 + UpdateAbilityCreatedMovingPlatformNotify uint16 = 881 + UpdatePS4BlockListReq uint16 = 4046 + UpdatePS4BlockListRsp uint16 = 4041 + UpdatePS4FriendListNotify uint16 = 4039 + UpdatePS4FriendListReq uint16 = 4089 + UpdatePS4FriendListRsp uint16 = 4059 + UpdatePlayerShowAvatarListReq uint16 = 4067 + UpdatePlayerShowAvatarListRsp uint16 = 4058 + UpdatePlayerShowNameCardListReq uint16 = 4002 + UpdatePlayerShowNameCardListRsp uint16 = 4019 + UpdateRedPointNotify uint16 = 93 + UpdateReunionWatcherNotify uint16 = 5091 + UpdateSalvageBundleMarkReq uint16 = 8967 + UpdateSalvageBundleMarkRsp uint16 = 8459 + UpgradeRoguelikeShikigamiReq uint16 = 8151 + UpgradeRoguelikeShikigamiRsp uint16 = 8966 + UseItemReq uint16 = 690 + UseItemRsp uint16 = 673 + UseMiracleRingReq uint16 = 5226 + UseMiracleRingRsp uint16 = 5218 + UseWidgetCreateGadgetReq uint16 = 4293 + UseWidgetCreateGadgetRsp uint16 = 4290 + UseWidgetRetractGadgetReq uint16 = 4286 + UseWidgetRetractGadgetRsp uint16 = 4261 + VehicleInteractReq uint16 = 865 + VehicleInteractRsp uint16 = 804 + VehicleStaminaNotify uint16 = 834 + ViewCodexReq uint16 = 4202 + ViewCodexRsp uint16 = 4201 + ViewLanternProjectionLevelTipsReq uint16 = 8758 + ViewLanternProjectionLevelTipsRsp uint16 = 8411 + ViewLanternProjectionTipsReq uint16 = 8218 + ViewLanternProjectionTipsRsp uint16 = 8590 + VintageCampGroupBundleRegisterNotify uint16 = 24244 + VintageCampStageFinishNotify uint16 = 22830 + VintageDecorateBoothReq uint16 = 20846 + VintageDecorateBoothRsp uint16 = 20993 + VintageHuntingStartGalleryReq uint16 = 21780 + VintageHuntingStartGalleryRsp uint16 = 21951 + VintageMarketDeliverItemReq uint16 = 23141 + VintageMarketDeliverItemRsp uint16 = 22181 + VintageMarketDividendFinishNotify uint16 = 23147 + VintageMarketFinishStorePlayReq uint16 = 20676 + VintageMarketFinishStorePlayRsp uint16 = 23462 + VintageMarketNpcEventFinishNotify uint16 = 24201 + VintageMarketStartStorePlayReq uint16 = 22864 + VintageMarketStartStorePlayRsp uint16 = 22130 + VintageMarketStoreChooseStrategyReq uint16 = 21248 + VintageMarketStoreChooseStrategyRsp uint16 = 24860 + VintageMarketStoreUnlockSlotReq uint16 = 20626 + VintageMarketStoreUnlockSlotRsp uint16 = 20733 + VintageMarketStoreViewStrategyReq uint16 = 21700 + VintageMarketStoreViewStrategyRsp uint16 = 21814 + VintagePresentFinishNoify uint16 = 24142 + VintagePresentFinishNotify uint16 = 20086 + WatcherAllDataNotify uint16 = 2272 + WatcherChangeNotify uint16 = 2298 + WatcherEventNotify uint16 = 2212 + WatcherEventStageNotify uint16 = 2207 + WatcherEventTypeNotify uint16 = 2235 + WaterSpritePhaseFinishNotify uint16 = 2025 + WeaponAwakenReq uint16 = 695 + WeaponAwakenRsp uint16 = 606 + WeaponPromoteReq uint16 = 622 + WeaponPromoteRsp uint16 = 665 + WeaponUpgradeReq uint16 = 639 + WeaponUpgradeRsp uint16 = 653 + WearEquipReq uint16 = 697 + WearEquipRsp uint16 = 681 + WidgetActiveChangeNotify uint16 = 4280 + WidgetCaptureAnimalReq uint16 = 4256 + WidgetCaptureAnimalRsp uint16 = 4289 + WidgetCoolDownNotify uint16 = 4295 + WidgetDoBagReq uint16 = 4255 + WidgetDoBagRsp uint16 = 4296 + WidgetGadgetAllDataNotify uint16 = 4284 + WidgetGadgetDataNotify uint16 = 4266 + WidgetGadgetDestroyNotify uint16 = 4274 + WidgetQuickHitTreeReq uint16 = 3345 + WidgetQuickHitTreeRsp uint16 = 3336 + WidgetReportReq uint16 = 4291 + WidgetReportRsp uint16 = 4292 + WidgetSlotChangeNotify uint16 = 4267 + WidgetUpdateExtraCDReq uint16 = 5960 + WidgetUpdateExtraCDRsp uint16 = 6056 + WidgetUseAttachAbilityGroupChangeNotify uint16 = 4258 + WindFieldGalleryChallengeInfoNotify uint16 = 5563 + WindFieldGalleryInfoNotify uint16 = 5526 + WindFieldRestartDungeonReq uint16 = 20731 + WindFieldRestartDungeonRsp uint16 = 24712 + WindSeedClientNotify uint16 = 1199 + WinterCampAcceptAllGiveItemReq uint16 = 9000 + WinterCampAcceptAllGiveItemRsp uint16 = 8626 + WinterCampAcceptGiveItemReq uint16 = 8387 + WinterCampAcceptGiveItemRsp uint16 = 8185 + WinterCampEditSnowmanCombinationReq uint16 = 8144 + WinterCampEditSnowmanCombinationRsp uint16 = 8142 + WinterCampGetCanGiveFriendItemReq uint16 = 8964 + WinterCampGetCanGiveFriendItemRsp uint16 = 8357 + WinterCampGetFriendWishListReq uint16 = 8946 + WinterCampGetFriendWishListRsp uint16 = 8937 + WinterCampGetRecvItemListReq uint16 = 8143 + WinterCampGetRecvItemListRsp uint16 = 8423 + WinterCampGiveFriendItemReq uint16 = 8572 + WinterCampGiveFriendItemRsp uint16 = 8264 + WinterCampRaceScoreNotify uint16 = 8149 + WinterCampRecvItemNotify uint16 = 8580 + WinterCampSetWishListReq uint16 = 8753 + WinterCampSetWishListRsp uint16 = 8281 + WinterCampStageInfoChangeNotify uint16 = 8154 + WinterCampTakeBattleRewardReq uint16 = 8401 + WinterCampTakeBattleRewardRsp uint16 = 8153 + WinterCampTakeExploreRewardReq uint16 = 8607 + WinterCampTakeExploreRewardRsp uint16 = 8978 + WinterCampTriathlonRestartReq uint16 = 8844 + WinterCampTriathlonRestartRsp uint16 = 8569 + WinterCampTriathlonSettleNotify uint16 = 8342 + WorktopOptionNotify uint16 = 835 + WorldAllRoutineTypeNotify uint16 = 3518 + WorldChestOpenNotify uint16 = 3295 + WorldDataNotify uint16 = 3308 + WorldOwnerBlossomBriefInfoNotify uint16 = 2735 + WorldOwnerBlossomScheduleInfoNotify uint16 = 2707 + WorldOwnerDailyTaskNotify uint16 = 102 + WorldPlayerDieNotify uint16 = 285 + WorldPlayerInfoNotify uint16 = 3116 + WorldPlayerLocationNotify uint16 = 258 + WorldPlayerRTTNotify uint16 = 22 + WorldPlayerReviveReq uint16 = 225 + WorldPlayerReviveRsp uint16 = 278 + WorldRoutineChangeNotify uint16 = 3507 + WorldRoutineTypeCloseNotify uint16 = 3502 + WorldRoutineTypeRefreshNotify uint16 = 3525 ) diff --git a/protocol/cmd/cmd_id_fix.go b/protocol/cmd/cmd_id_fix.go new file mode 100644 index 00000000..adbb7d8b --- /dev/null +++ b/protocol/cmd/cmd_id_fix.go @@ -0,0 +1,5 @@ +package cmd + +const ( + GCGDSBanCardNotify uint16 = 65501 +) diff --git a/protocol/cmd/cmd_id_proto_obj_map.go b/protocol/cmd/cmd_id_proto_obj_map.go index 9f1963d2..160c35d0 100644 --- a/protocol/cmd/cmd_id_proto_obj_map.go +++ b/protocol/cmd/cmd_id_proto_obj_map.go @@ -105,6 +105,8 @@ func (c *CmdProtoMap) registerAllMessage() { c.registerMessage(SceneEntityDrownReq, &proto.SceneEntityDrownReq{}) // 场景实体溺水请求 c.registerMessage(SceneEntityDrownRsp, &proto.SceneEntityDrownRsp{}) // 场景实体溺水响应 c.registerMessage(ObstacleModifyNotify, &proto.ObstacleModifyNotify{}) // 寻路阻挡变动通知 + c.registerMessage(DungeonWayPointNotify, &proto.DungeonWayPointNotify{}) // 地牢副本相关 + c.registerMessage(DungeonDataNotify, &proto.DungeonDataNotify{}) // 地牢副本相关 // 战斗与同步 c.registerMessage(AvatarFightPropNotify, &proto.AvatarFightPropNotify{}) // 角色战斗属性通知 @@ -261,15 +263,12 @@ func (c *CmdProtoMap) registerAllMessage() { c.registerMessage(GCGAskDuelRsp, &proto.GCGAskDuelRsp{}) // GCG决斗响应 c.registerMessage(GCGInitFinishReq, &proto.GCGInitFinishReq{}) // GCG初始化完成请求 c.registerMessage(GCGInitFinishRsp, &proto.GCGInitFinishRsp{}) // GCG初始化完成响应 - c.registerMessage(Unk3300_DGBNCDEIIFC, &proto.Unk3300_DGBNCDEIIFC{}) // GCG - c.registerMessage(DungeonWayPointNotify, &proto.DungeonWayPointNotify{}) // GCG - c.registerMessage(DungeonDataNotify, &proto.DungeonDataNotify{}) // GCG - //// TODO 客户端开始GCG游戏 - //c.registerMessage(GCGStartChallengeByCheckRewardReq, &proto.GCGStartChallengeByCheckRewardReq{}) // GCG开始挑战来自检测奖励请求 - //c.registerMessage(GCGStartChallengeByCheckRewardRsp, &proto.GCGStartChallengeByCheckRewardRsp{}) // GCG开始挑战来自检测奖励响应 - //c.registerMessage(GCGStartChallengeReq, &proto.GCGStartChallengeReq{}) // GCG开始挑战请求 - //c.registerMessage(GCGStartChallengeRsp, &proto.GCGStartChallengeRsp{}) // GCG开始挑战响应 + // // TODO 客户端开始GCG游戏 + // c.registerMessage(GCGStartChallengeByCheckRewardReq, &proto.GCGStartChallengeByCheckRewardReq{}) // GCG开始挑战来自检测奖励请求 + // c.registerMessage(GCGStartChallengeByCheckRewardRsp, &proto.GCGStartChallengeByCheckRewardRsp{}) // GCG开始挑战来自检测奖励响应 + // c.registerMessage(GCGStartChallengeReq, &proto.GCGStartChallengeReq{}) // GCG开始挑战请求 + // c.registerMessage(GCGStartChallengeRsp, &proto.GCGStartChallengeRsp{}) // GCG开始挑战响应 // 乱七八糟 c.registerMessage(MarkMapReq, &proto.MarkMapReq{}) // 标记地图请求 diff --git a/protocol/proto/GCGActionType.proto b/protocol/proto/GCGActionType.proto index 07422837..f67e1814 100644 --- a/protocol/proto/GCGActionType.proto +++ b/protocol/proto/GCGActionType.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; enum GCGActionType { diff --git a/protocol/proto/GCGApplyInviteBattleNotify.proto b/protocol/proto/GCGApplyInviteBattleNotify.proto index 5183a95e..fe6e0d11 100644 --- a/protocol/proto/GCGApplyInviteBattleNotify.proto +++ b/protocol/proto/GCGApplyInviteBattleNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGApplyInviteBattleNotify { diff --git a/protocol/proto/GCGApplyInviteBattleReq.proto b/protocol/proto/GCGApplyInviteBattleReq.proto index fcb22c5c..0c59c146 100644 --- a/protocol/proto/GCGApplyInviteBattleReq.proto +++ b/protocol/proto/GCGApplyInviteBattleReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGApplyInviteBattleReq { diff --git a/protocol/proto/GCGApplyInviteBattleRsp.proto b/protocol/proto/GCGApplyInviteBattleRsp.proto index 984f4653..e45b44b2 100644 --- a/protocol/proto/GCGApplyInviteBattleRsp.proto +++ b/protocol/proto/GCGApplyInviteBattleRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGApplyInviteBattleRsp { diff --git a/protocol/proto/GCGAskDuelReq.proto b/protocol/proto/GCGAskDuelReq.proto index 6e8beb61..202dbcbb 100644 --- a/protocol/proto/GCGAskDuelReq.proto +++ b/protocol/proto/GCGAskDuelReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGAskDuelReq { diff --git a/protocol/proto/GCGAskDuelRsp.proto b/protocol/proto/GCGAskDuelRsp.proto index 70395eb4..338b1c54 100644 --- a/protocol/proto/GCGAskDuelRsp.proto +++ b/protocol/proto/GCGAskDuelRsp.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGDuel.proto"; +package proto; option go_package = "./;proto"; message GCGAskDuelRsp { diff --git a/protocol/proto/GCGAttackCostInfo.proto b/protocol/proto/GCGAttackCostInfo.proto index f14df01b..0c3069be 100644 --- a/protocol/proto/GCGAttackCostInfo.proto +++ b/protocol/proto/GCGAttackCostInfo.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "Uint32Pair.proto"; +package proto; option go_package = "./;proto"; message GCGAttackCostInfo { diff --git a/protocol/proto/GCGBackToDuelReq.proto b/protocol/proto/GCGBackToDuelReq.proto index 403448a8..21c2b540 100644 --- a/protocol/proto/GCGBackToDuelReq.proto +++ b/protocol/proto/GCGBackToDuelReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGBackToDuelReq { diff --git a/protocol/proto/GCGBackToDuelRsp.proto b/protocol/proto/GCGBackToDuelRsp.proto index 8125811e..239048e4 100644 --- a/protocol/proto/GCGBackToDuelRsp.proto +++ b/protocol/proto/GCGBackToDuelRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGBackToDuelRsp { diff --git a/protocol/proto/GCGBasicDataNotify.proto b/protocol/proto/GCGBasicDataNotify.proto index 5195d08a..4b127b43 100644 --- a/protocol/proto/GCGBasicDataNotify.proto +++ b/protocol/proto/GCGBasicDataNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGBasicDataNotify { diff --git a/protocol/proto/GCGBossChallengeData.proto b/protocol/proto/GCGBossChallengeData.proto index 3712cc0e..d4c626af 100644 --- a/protocol/proto/GCGBossChallengeData.proto +++ b/protocol/proto/GCGBossChallengeData.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGBossChallengeData { diff --git a/protocol/proto/GCGBossChallengeUpdateNotify.proto b/protocol/proto/GCGBossChallengeUpdateNotify.proto index 32d44c3d..500d809f 100644 --- a/protocol/proto/GCGBossChallengeUpdateNotify.proto +++ b/protocol/proto/GCGBossChallengeUpdateNotify.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGBossChallengeData.proto"; +package proto; option go_package = "./;proto"; message GCGBossChallengeUpdateNotify { diff --git a/protocol/proto/GCGCard.proto b/protocol/proto/GCGCard.proto index d58654b9..ec26c589 100644 --- a/protocol/proto/GCGCard.proto +++ b/protocol/proto/GCGCard.proto @@ -19,6 +19,7 @@ syntax = "proto3"; import "GCGSkillLimitsInfo.proto"; import "GCGToken.proto"; +package proto; option go_package = "./;proto"; message GCGCard { diff --git a/protocol/proto/GCGCardSkillLimitsInfo.proto b/protocol/proto/GCGCardSkillLimitsInfo.proto index ee19f0a6..50ddc760 100644 --- a/protocol/proto/GCGCardSkillLimitsInfo.proto +++ b/protocol/proto/GCGCardSkillLimitsInfo.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGSkillLimitsInfo.proto"; +package proto; option go_package = "./;proto"; message GCGCardSkillLimitsInfo { diff --git a/protocol/proto/GCGChallengeData.proto b/protocol/proto/GCGChallengeData.proto index aaa02c82..ab326949 100644 --- a/protocol/proto/GCGChallengeData.proto +++ b/protocol/proto/GCGChallengeData.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGChallengeData { diff --git a/protocol/proto/GCGChallengeUpdateNotify.proto b/protocol/proto/GCGChallengeUpdateNotify.proto index 34feb554..532e919d 100644 --- a/protocol/proto/GCGChallengeUpdateNotify.proto +++ b/protocol/proto/GCGChallengeUpdateNotify.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGDuelChallenge.proto"; +package proto; option go_package = "./;proto"; message GCGChallengeUpdateNotify { diff --git a/protocol/proto/GCGChangeOnstageInfo.proto b/protocol/proto/GCGChangeOnstageInfo.proto index 573624df..b9e283b0 100644 --- a/protocol/proto/GCGChangeOnstageInfo.proto +++ b/protocol/proto/GCGChangeOnstageInfo.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGSkillPreviewInfo.proto"; +package proto; option go_package = "./;proto"; message GCGChangeOnstageInfo { diff --git a/protocol/proto/GCGClientPerformType.proto b/protocol/proto/GCGClientPerformType.proto index f768196f..228b14bf 100644 --- a/protocol/proto/GCGClientPerformType.proto +++ b/protocol/proto/GCGClientPerformType.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; enum GCGClientPerformType { diff --git a/protocol/proto/GCGClientSettleReq.proto b/protocol/proto/GCGClientSettleReq.proto index 616c4143..26eeeb03 100644 --- a/protocol/proto/GCGClientSettleReq.proto +++ b/protocol/proto/GCGClientSettleReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGClientSettleReq { diff --git a/protocol/proto/GCGClientSettleRsp.proto b/protocol/proto/GCGClientSettleRsp.proto index 35d980d2..a726585f 100644 --- a/protocol/proto/GCGClientSettleRsp.proto +++ b/protocol/proto/GCGClientSettleRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGClientSettleRsp { diff --git a/protocol/proto/GCGControllerShowInfo.proto b/protocol/proto/GCGControllerShowInfo.proto index ac99fab3..65856423 100644 --- a/protocol/proto/GCGControllerShowInfo.proto +++ b/protocol/proto/GCGControllerShowInfo.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "ProfilePicture.proto"; +package proto; option go_package = "./;proto"; message GCGControllerShowInfo { diff --git a/protocol/proto/GCGCostReviseInfo.proto b/protocol/proto/GCGCostReviseInfo.proto index 4356ed7d..450a3618 100644 --- a/protocol/proto/GCGCostReviseInfo.proto +++ b/protocol/proto/GCGCostReviseInfo.proto @@ -20,6 +20,7 @@ import "GCGAttackCostInfo.proto"; import "GCGPlayCardCostInfo.proto"; import "GCGSelectOnStageCostInfo.proto"; +package proto; option go_package = "./;proto"; message GCGCostReviseInfo { diff --git a/protocol/proto/GCGDSBanCardNotify.proto b/protocol/proto/GCGDSBanCardNotify.proto index c92487a2..05673131 100644 --- a/protocol/proto/GCGDSBanCardNotify.proto +++ b/protocol/proto/GCGDSBanCardNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSBanCardNotify { diff --git a/protocol/proto/GCGDSCardBackUnlockNotify.proto b/protocol/proto/GCGDSCardBackUnlockNotify.proto index 2a7acb55..e83092b6 100644 --- a/protocol/proto/GCGDSCardBackUnlockNotify.proto +++ b/protocol/proto/GCGDSCardBackUnlockNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSCardBackUnlockNotify { diff --git a/protocol/proto/GCGDSCardData.proto b/protocol/proto/GCGDSCardData.proto index fc692862..97038444 100644 --- a/protocol/proto/GCGDSCardData.proto +++ b/protocol/proto/GCGDSCardData.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSCardData { diff --git a/protocol/proto/GCGDSCardFaceUnlockNotify.proto b/protocol/proto/GCGDSCardFaceUnlockNotify.proto index 7353b074..8518fd82 100644 --- a/protocol/proto/GCGDSCardFaceUnlockNotify.proto +++ b/protocol/proto/GCGDSCardFaceUnlockNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSCardFaceUnlockNotify { diff --git a/protocol/proto/GCGDSCardFaceUpdateNotify.proto b/protocol/proto/GCGDSCardFaceUpdateNotify.proto index c97593c0..f72b81d3 100644 --- a/protocol/proto/GCGDSCardFaceUpdateNotify.proto +++ b/protocol/proto/GCGDSCardFaceUpdateNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSCardFaceUpdateNotify { diff --git a/protocol/proto/GCGDSCardNumChangeNotify.proto b/protocol/proto/GCGDSCardNumChangeNotify.proto index 753c42a8..c934f3b1 100644 --- a/protocol/proto/GCGDSCardNumChangeNotify.proto +++ b/protocol/proto/GCGDSCardNumChangeNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSCardNumChangeNotify { diff --git a/protocol/proto/GCGDSCardProficiencyNotify.proto b/protocol/proto/GCGDSCardProficiencyNotify.proto index f3a4ab33..c4d7984c 100644 --- a/protocol/proto/GCGDSCardProficiencyNotify.proto +++ b/protocol/proto/GCGDSCardProficiencyNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSCardProficiencyNotify { diff --git a/protocol/proto/GCGDSChangeCardBackReq.proto b/protocol/proto/GCGDSChangeCardBackReq.proto index 39c9b4bc..2a8e8c0f 100644 --- a/protocol/proto/GCGDSChangeCardBackReq.proto +++ b/protocol/proto/GCGDSChangeCardBackReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSChangeCardBackReq { diff --git a/protocol/proto/GCGDSChangeCardBackRsp.proto b/protocol/proto/GCGDSChangeCardBackRsp.proto index d2b185bb..0085796a 100644 --- a/protocol/proto/GCGDSChangeCardBackRsp.proto +++ b/protocol/proto/GCGDSChangeCardBackRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSChangeCardBackRsp { diff --git a/protocol/proto/GCGDSChangeCardFaceReq.proto b/protocol/proto/GCGDSChangeCardFaceReq.proto index 0ffa1d72..3bc41e2c 100644 --- a/protocol/proto/GCGDSChangeCardFaceReq.proto +++ b/protocol/proto/GCGDSChangeCardFaceReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSChangeCardFaceReq { diff --git a/protocol/proto/GCGDSChangeCardFaceRsp.proto b/protocol/proto/GCGDSChangeCardFaceRsp.proto index 1bd76896..cd6e7471 100644 --- a/protocol/proto/GCGDSChangeCardFaceRsp.proto +++ b/protocol/proto/GCGDSChangeCardFaceRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSChangeCardFaceRsp { diff --git a/protocol/proto/GCGDSChangeCurDeckReq.proto b/protocol/proto/GCGDSChangeCurDeckReq.proto index 578c3251..7d3f812c 100644 --- a/protocol/proto/GCGDSChangeCurDeckReq.proto +++ b/protocol/proto/GCGDSChangeCurDeckReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSChangeCurDeckReq { diff --git a/protocol/proto/GCGDSChangeCurDeckRsp.proto b/protocol/proto/GCGDSChangeCurDeckRsp.proto index 8f3e03c8..c4a2bfc2 100644 --- a/protocol/proto/GCGDSChangeCurDeckRsp.proto +++ b/protocol/proto/GCGDSChangeCurDeckRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSChangeCurDeckRsp { diff --git a/protocol/proto/GCGDSChangeDeckNameReq.proto b/protocol/proto/GCGDSChangeDeckNameReq.proto index 49a9d10c..0090541d 100644 --- a/protocol/proto/GCGDSChangeDeckNameReq.proto +++ b/protocol/proto/GCGDSChangeDeckNameReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSChangeDeckNameReq { diff --git a/protocol/proto/GCGDSChangeDeckNameRsp.proto b/protocol/proto/GCGDSChangeDeckNameRsp.proto index 0aaa2615..e191abfb 100644 --- a/protocol/proto/GCGDSChangeDeckNameRsp.proto +++ b/protocol/proto/GCGDSChangeDeckNameRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSChangeDeckNameRsp { diff --git a/protocol/proto/GCGDSChangeFieldReq.proto b/protocol/proto/GCGDSChangeFieldReq.proto index 23d0d3b4..f040bb43 100644 --- a/protocol/proto/GCGDSChangeFieldReq.proto +++ b/protocol/proto/GCGDSChangeFieldReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSChangeFieldReq { diff --git a/protocol/proto/GCGDSChangeFieldRsp.proto b/protocol/proto/GCGDSChangeFieldRsp.proto index dfd494c2..1a3864d5 100644 --- a/protocol/proto/GCGDSChangeFieldRsp.proto +++ b/protocol/proto/GCGDSChangeFieldRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSChangeFieldRsp { diff --git a/protocol/proto/GCGDSCurDeckChangeNotify.proto b/protocol/proto/GCGDSCurDeckChangeNotify.proto index fe5905b5..53056298 100644 --- a/protocol/proto/GCGDSCurDeckChangeNotify.proto +++ b/protocol/proto/GCGDSCurDeckChangeNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSCurDeckChangeNotify { diff --git a/protocol/proto/GCGDSDataNotify.proto b/protocol/proto/GCGDSDataNotify.proto index 23944809..ae08bea0 100644 --- a/protocol/proto/GCGDSDataNotify.proto +++ b/protocol/proto/GCGDSDataNotify.proto @@ -19,6 +19,7 @@ syntax = "proto3"; import "GCGDSCardData.proto"; import "GCGDSDeckData.proto"; +package proto; option go_package = "./;proto"; message GCGDSDataNotify { diff --git a/protocol/proto/GCGDSDeckData.proto b/protocol/proto/GCGDSDeckData.proto index 6c1c7405..4199d2df 100644 --- a/protocol/proto/GCGDSDeckData.proto +++ b/protocol/proto/GCGDSDeckData.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSDeckData { diff --git a/protocol/proto/GCGDSDeckSaveReq.proto b/protocol/proto/GCGDSDeckSaveReq.proto index a37df41d..045edf66 100644 --- a/protocol/proto/GCGDSDeckSaveReq.proto +++ b/protocol/proto/GCGDSDeckSaveReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSDeckSaveReq { diff --git a/protocol/proto/GCGDSDeckSaveRsp.proto b/protocol/proto/GCGDSDeckSaveRsp.proto index f0cb6e98..975dc8cb 100644 --- a/protocol/proto/GCGDSDeckSaveRsp.proto +++ b/protocol/proto/GCGDSDeckSaveRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSDeckSaveRsp { diff --git a/protocol/proto/GCGDSDeckUnlockNotify.proto b/protocol/proto/GCGDSDeckUnlockNotify.proto index e63e411e..7d926ba6 100644 --- a/protocol/proto/GCGDSDeckUnlockNotify.proto +++ b/protocol/proto/GCGDSDeckUnlockNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSDeckUnlockNotify { diff --git a/protocol/proto/GCGDSDeckUpdateNotify.proto b/protocol/proto/GCGDSDeckUpdateNotify.proto index cd546b91..cf6cee10 100644 --- a/protocol/proto/GCGDSDeckUpdateNotify.proto +++ b/protocol/proto/GCGDSDeckUpdateNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSDeckUpdateNotify { diff --git a/protocol/proto/GCGDSDeleteDeckReq.proto b/protocol/proto/GCGDSDeleteDeckReq.proto index 5dc3f3aa..b10378a3 100644 --- a/protocol/proto/GCGDSDeleteDeckReq.proto +++ b/protocol/proto/GCGDSDeleteDeckReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSDeleteDeckReq { diff --git a/protocol/proto/GCGDSDeleteDeckRsp.proto b/protocol/proto/GCGDSDeleteDeckRsp.proto index 0764cdfc..cf078df0 100644 --- a/protocol/proto/GCGDSDeleteDeckRsp.proto +++ b/protocol/proto/GCGDSDeleteDeckRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSDeleteDeckRsp { diff --git a/protocol/proto/GCGDSFieldUnlockNotify.proto b/protocol/proto/GCGDSFieldUnlockNotify.proto index b8b6f4c7..6f759571 100644 --- a/protocol/proto/GCGDSFieldUnlockNotify.proto +++ b/protocol/proto/GCGDSFieldUnlockNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSFieldUnlockNotify { diff --git a/protocol/proto/GCGDSTakeCardProficiencyRewardReq.proto b/protocol/proto/GCGDSTakeCardProficiencyRewardReq.proto index f9fadd7e..806b5ed9 100644 --- a/protocol/proto/GCGDSTakeCardProficiencyRewardReq.proto +++ b/protocol/proto/GCGDSTakeCardProficiencyRewardReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSTakeCardProficiencyRewardReq { diff --git a/protocol/proto/GCGDSTakeCardProficiencyRewardRsp.proto b/protocol/proto/GCGDSTakeCardProficiencyRewardRsp.proto index 4e77ffeb..2e402b99 100644 --- a/protocol/proto/GCGDSTakeCardProficiencyRewardRsp.proto +++ b/protocol/proto/GCGDSTakeCardProficiencyRewardRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDSTakeCardProficiencyRewardRsp { diff --git a/protocol/proto/GCGDamageDetail.proto b/protocol/proto/GCGDamageDetail.proto index 6639bc6e..3119944b 100644 --- a/protocol/proto/GCGDamageDetail.proto +++ b/protocol/proto/GCGDamageDetail.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDamageDetail { diff --git a/protocol/proto/GCGDebugReplayNotify.proto b/protocol/proto/GCGDebugReplayNotify.proto index 56536495..86e03195 100644 --- a/protocol/proto/GCGDebugReplayNotify.proto +++ b/protocol/proto/GCGDebugReplayNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDebugReplayNotify { diff --git a/protocol/proto/GCGDiceSideType.proto b/protocol/proto/GCGDiceSideType.proto index 0fe73103..fc8d9f4c 100644 --- a/protocol/proto/GCGDiceSideType.proto +++ b/protocol/proto/GCGDiceSideType.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; enum GCGDiceSideType { diff --git a/protocol/proto/GCGDuel.proto b/protocol/proto/GCGDuel.proto index ddc8e424..43fa24f8 100644 --- a/protocol/proto/GCGDuel.proto +++ b/protocol/proto/GCGDuel.proto @@ -27,6 +27,7 @@ import "GCGPhase.proto"; import "GCGPlayerField.proto"; import "Unk3300_ADHENCIFKNI.proto"; +package proto; option go_package = "./;proto"; message GCGDuel { diff --git a/protocol/proto/GCGDuelChallenge.proto b/protocol/proto/GCGDuelChallenge.proto index 3a5be7fd..a8a37819 100644 --- a/protocol/proto/GCGDuelChallenge.proto +++ b/protocol/proto/GCGDuelChallenge.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGDuelChallenge { diff --git a/protocol/proto/GCGDuelExtra.proto b/protocol/proto/GCGDuelExtra.proto index 63d8ddc4..7d43210c 100644 --- a/protocol/proto/GCGDuelExtra.proto +++ b/protocol/proto/GCGDuelExtra.proto @@ -19,6 +19,7 @@ syntax = "proto3"; import "GCGChallengeData.proto"; import "PlatformType.proto"; +package proto; option go_package = "./;proto"; message GCGDuelExtra { diff --git a/protocol/proto/GCGEndReason.proto b/protocol/proto/GCGEndReason.proto index 91d89b8f..2619af0d 100644 --- a/protocol/proto/GCGEndReason.proto +++ b/protocol/proto/GCGEndReason.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; enum GCGEndReason { diff --git a/protocol/proto/GCGGameBriefData.proto b/protocol/proto/GCGGameBriefData.proto index 20089a49..dd49145d 100644 --- a/protocol/proto/GCGGameBriefData.proto +++ b/protocol/proto/GCGGameBriefData.proto @@ -19,6 +19,7 @@ syntax = "proto3"; import "GCGGameBusinessType.proto"; import "GCGPlayerBriefData.proto"; +package proto; option go_package = "./;proto"; message GCGGameBriefData { diff --git a/protocol/proto/GCGGameBriefDataNotify.proto b/protocol/proto/GCGGameBriefDataNotify.proto index 9f03c490..62be3735 100644 --- a/protocol/proto/GCGGameBriefDataNotify.proto +++ b/protocol/proto/GCGGameBriefDataNotify.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGGameBriefData.proto"; +package proto; option go_package = "./;proto"; message GCGGameBriefDataNotify { diff --git a/protocol/proto/GCGGameBusinessType.proto b/protocol/proto/GCGGameBusinessType.proto index 42cd64cd..6cdea9f3 100644 --- a/protocol/proto/GCGGameBusinessType.proto +++ b/protocol/proto/GCGGameBusinessType.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; enum GCGGameBusinessType { diff --git a/protocol/proto/GCGGameCreateFailReasonNotify.proto b/protocol/proto/GCGGameCreateFailReasonNotify.proto index 2393b8b6..6251ac1c 100644 --- a/protocol/proto/GCGGameCreateFailReasonNotify.proto +++ b/protocol/proto/GCGGameCreateFailReasonNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGGameCreateFailReasonNotify { diff --git a/protocol/proto/GCGGameMaxNotify.proto b/protocol/proto/GCGGameMaxNotify.proto index 8d4b2256..2aad53bb 100644 --- a/protocol/proto/GCGGameMaxNotify.proto +++ b/protocol/proto/GCGGameMaxNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGGameMaxNotify { diff --git a/protocol/proto/GCGGrowthLevelNotify.proto b/protocol/proto/GCGGrowthLevelNotify.proto index 7de084f7..53269bb2 100644 --- a/protocol/proto/GCGGrowthLevelNotify.proto +++ b/protocol/proto/GCGGrowthLevelNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGGrowthLevelNotify { diff --git a/protocol/proto/GCGGrowthLevelRewardNotify.proto b/protocol/proto/GCGGrowthLevelRewardNotify.proto index 2f44a9da..7254a3ed 100644 --- a/protocol/proto/GCGGrowthLevelRewardNotify.proto +++ b/protocol/proto/GCGGrowthLevelRewardNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGGrowthLevelRewardNotify { diff --git a/protocol/proto/GCGGrowthLevelTakeRewardReq.proto b/protocol/proto/GCGGrowthLevelTakeRewardReq.proto index 8cfbb485..7afe085c 100644 --- a/protocol/proto/GCGGrowthLevelTakeRewardReq.proto +++ b/protocol/proto/GCGGrowthLevelTakeRewardReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGGrowthLevelTakeRewardReq { diff --git a/protocol/proto/GCGGrowthLevelTakeRewardRsp.proto b/protocol/proto/GCGGrowthLevelTakeRewardRsp.proto index 632c91cd..c4a391fc 100644 --- a/protocol/proto/GCGGrowthLevelTakeRewardRsp.proto +++ b/protocol/proto/GCGGrowthLevelTakeRewardRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGGrowthLevelTakeRewardRsp { diff --git a/protocol/proto/GCGHeartBeatNotify.proto b/protocol/proto/GCGHeartBeatNotify.proto index 5dfda75a..830d7afd 100644 --- a/protocol/proto/GCGHeartBeatNotify.proto +++ b/protocol/proto/GCGHeartBeatNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGHeartBeatNotify { diff --git a/protocol/proto/GCGInitFinishReq.proto b/protocol/proto/GCGInitFinishReq.proto index 812907d0..a6c96ed0 100644 --- a/protocol/proto/GCGInitFinishReq.proto +++ b/protocol/proto/GCGInitFinishReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGInitFinishReq { diff --git a/protocol/proto/GCGInitFinishRsp.proto b/protocol/proto/GCGInitFinishRsp.proto index 9bfe279a..39e0aef7 100644 --- a/protocol/proto/GCGInitFinishRsp.proto +++ b/protocol/proto/GCGInitFinishRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGInitFinishRsp { diff --git a/protocol/proto/GCGIntentionChangeType.proto b/protocol/proto/GCGIntentionChangeType.proto index 2c75d37d..68085c60 100644 --- a/protocol/proto/GCGIntentionChangeType.proto +++ b/protocol/proto/GCGIntentionChangeType.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; enum GCGIntentionChangeType { diff --git a/protocol/proto/GCGInviteBattleNotify.proto b/protocol/proto/GCGInviteBattleNotify.proto index 5ab70a57..2b9a7237 100644 --- a/protocol/proto/GCGInviteBattleNotify.proto +++ b/protocol/proto/GCGInviteBattleNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGInviteBattleNotify { diff --git a/protocol/proto/GCGInviteGuestBattleReq.proto b/protocol/proto/GCGInviteGuestBattleReq.proto index 1ac11a77..761ef074 100644 --- a/protocol/proto/GCGInviteGuestBattleReq.proto +++ b/protocol/proto/GCGInviteGuestBattleReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGInviteGuestBattleReq { diff --git a/protocol/proto/GCGInviteGuestBattleRsp.proto b/protocol/proto/GCGInviteGuestBattleRsp.proto index 937227b2..f407019f 100644 --- a/protocol/proto/GCGInviteGuestBattleRsp.proto +++ b/protocol/proto/GCGInviteGuestBattleRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGInviteGuestBattleRsp { diff --git a/protocol/proto/GCGLevelChallengeDeleteNotify.proto b/protocol/proto/GCGLevelChallengeDeleteNotify.proto index 2bc8c75b..7e8165c7 100644 --- a/protocol/proto/GCGLevelChallengeDeleteNotify.proto +++ b/protocol/proto/GCGLevelChallengeDeleteNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGLevelChallengeDeleteNotify { diff --git a/protocol/proto/GCGLevelChallengeFinishNotify.proto b/protocol/proto/GCGLevelChallengeFinishNotify.proto index ad3b840b..deabf8eb 100644 --- a/protocol/proto/GCGLevelChallengeFinishNotify.proto +++ b/protocol/proto/GCGLevelChallengeFinishNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGLevelChallengeFinishNotify { diff --git a/protocol/proto/GCGLevelChallengeNotify.proto b/protocol/proto/GCGLevelChallengeNotify.proto index b4d2bd2b..93f21a69 100644 --- a/protocol/proto/GCGLevelChallengeNotify.proto +++ b/protocol/proto/GCGLevelChallengeNotify.proto @@ -19,6 +19,7 @@ syntax = "proto3"; import "GCGBossChallengeData.proto"; import "GCGLevelData.proto"; +package proto; option go_package = "./;proto"; message GCGLevelChallengeNotify { diff --git a/protocol/proto/GCGLevelData.proto b/protocol/proto/GCGLevelData.proto index 61a281dc..2b298ce1 100644 --- a/protocol/proto/GCGLevelData.proto +++ b/protocol/proto/GCGLevelData.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGLevelData { diff --git a/protocol/proto/GCGLevelType.proto b/protocol/proto/GCGLevelType.proto index 31c1390c..9ed1a4ed 100644 --- a/protocol/proto/GCGLevelType.proto +++ b/protocol/proto/GCGLevelType.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; enum GCGLevelType { diff --git a/protocol/proto/GCGLimitsInfo.proto b/protocol/proto/GCGLimitsInfo.proto index 022e8842..28715f0d 100644 --- a/protocol/proto/GCGLimitsInfo.proto +++ b/protocol/proto/GCGLimitsInfo.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGLimitsInfo { diff --git a/protocol/proto/GCGMatchInfo.proto b/protocol/proto/GCGMatchInfo.proto index ec7bb200..b2f29a78 100644 --- a/protocol/proto/GCGMatchInfo.proto +++ b/protocol/proto/GCGMatchInfo.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "MatchPlayerInfo.proto"; +package proto; option go_package = "./;proto"; message GCGMatchInfo { diff --git a/protocol/proto/GCGMessage.proto b/protocol/proto/GCGMessage.proto index 5df466f6..4bb60486 100644 --- a/protocol/proto/GCGMessage.proto +++ b/protocol/proto/GCGMessage.proto @@ -51,6 +51,7 @@ import "GCGMsgUseSkill.proto"; import "GCGMsgUseSkillEnd.proto"; import "GCGMsgWaitingListChange.proto"; +package proto; option go_package = "./;proto"; message GCGMessage { diff --git a/protocol/proto/GCGMessagePack.proto b/protocol/proto/GCGMessagePack.proto index 8ebdef3b..ff232935 100644 --- a/protocol/proto/GCGMessagePack.proto +++ b/protocol/proto/GCGMessagePack.proto @@ -19,6 +19,7 @@ syntax = "proto3"; import "GCGActionType.proto"; import "GCGMessage.proto"; +package proto; option go_package = "./;proto"; message GCGMessagePack { diff --git a/protocol/proto/GCGMessagePackNotify.proto b/protocol/proto/GCGMessagePackNotify.proto index 1a1a5614..09b33da4 100644 --- a/protocol/proto/GCGMessagePackNotify.proto +++ b/protocol/proto/GCGMessagePackNotify.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGMessagePack.proto"; +package proto; option go_package = "./;proto"; message GCGMessagePackNotify { diff --git a/protocol/proto/GCGMsgAddCards.proto b/protocol/proto/GCGMsgAddCards.proto index daa30885..5fbd850c 100644 --- a/protocol/proto/GCGMsgAddCards.proto +++ b/protocol/proto/GCGMsgAddCards.proto @@ -19,6 +19,7 @@ syntax = "proto3"; import "GCGReason.proto"; import "GCGZoneType.proto"; +package proto; option go_package = "./;proto"; message GCGMsgAddCards { diff --git a/protocol/proto/GCGMsgAddDice.proto b/protocol/proto/GCGMsgAddDice.proto index 07e40a1d..7e4f4b46 100644 --- a/protocol/proto/GCGMsgAddDice.proto +++ b/protocol/proto/GCGMsgAddDice.proto @@ -19,6 +19,7 @@ syntax = "proto3"; import "GCGDiceSideType.proto"; import "GCGReason.proto"; +package proto; option go_package = "./;proto"; message GCGMsgAddDice { diff --git a/protocol/proto/GCGMsgCardUpdate.proto b/protocol/proto/GCGMsgCardUpdate.proto index 69f85853..8523eff7 100644 --- a/protocol/proto/GCGMsgCardUpdate.proto +++ b/protocol/proto/GCGMsgCardUpdate.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGCard.proto"; +package proto; option go_package = "./;proto"; message GCGMsgCardUpdate { diff --git a/protocol/proto/GCGMsgCharDie.proto b/protocol/proto/GCGMsgCharDie.proto index 78b66994..24d4217d 100644 --- a/protocol/proto/GCGMsgCharDie.proto +++ b/protocol/proto/GCGMsgCharDie.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGMsgCharDie { diff --git a/protocol/proto/GCGMsgClientPerform.proto b/protocol/proto/GCGMsgClientPerform.proto index 65686822..2195bc43 100644 --- a/protocol/proto/GCGMsgClientPerform.proto +++ b/protocol/proto/GCGMsgClientPerform.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGClientPerformType.proto"; +package proto; option go_package = "./;proto"; message GCGMsgClientPerform { diff --git a/protocol/proto/GCGMsgCostDice.proto b/protocol/proto/GCGMsgCostDice.proto index 116fbc4b..a6a9ebbb 100644 --- a/protocol/proto/GCGMsgCostDice.proto +++ b/protocol/proto/GCGMsgCostDice.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGReason.proto"; +package proto; option go_package = "./;proto"; message GCGMsgCostDice { diff --git a/protocol/proto/GCGMsgCostRevise.proto b/protocol/proto/GCGMsgCostRevise.proto index 09fd91c6..04ac6507 100644 --- a/protocol/proto/GCGMsgCostRevise.proto +++ b/protocol/proto/GCGMsgCostRevise.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGCostReviseInfo.proto"; +package proto; option go_package = "./;proto"; message GCGMsgCostRevise { diff --git a/protocol/proto/GCGMsgDiceReroll.proto b/protocol/proto/GCGMsgDiceReroll.proto index 17fcb2f1..256e1ae7 100644 --- a/protocol/proto/GCGMsgDiceReroll.proto +++ b/protocol/proto/GCGMsgDiceReroll.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGDiceSideType.proto"; +package proto; option go_package = "./;proto"; message GCGMsgDiceReroll { diff --git a/protocol/proto/GCGMsgDiceRoll.proto b/protocol/proto/GCGMsgDiceRoll.proto index 4633b7a6..e7ce35e5 100644 --- a/protocol/proto/GCGMsgDiceRoll.proto +++ b/protocol/proto/GCGMsgDiceRoll.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGDiceSideType.proto"; +package proto; option go_package = "./;proto"; message GCGMsgDiceRoll { diff --git a/protocol/proto/GCGMsgDuelDataChange.proto b/protocol/proto/GCGMsgDuelDataChange.proto index 982af2f7..86953018 100644 --- a/protocol/proto/GCGMsgDuelDataChange.proto +++ b/protocol/proto/GCGMsgDuelDataChange.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGMsgDuelDataChange { diff --git a/protocol/proto/GCGMsgGameOver.proto b/protocol/proto/GCGMsgGameOver.proto index d122beca..4c11afa0 100644 --- a/protocol/proto/GCGMsgGameOver.proto +++ b/protocol/proto/GCGMsgGameOver.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGEndReason.proto"; +package proto; option go_package = "./;proto"; message GCGMsgGameOver { diff --git a/protocol/proto/GCGMsgModifyAdd.proto b/protocol/proto/GCGMsgModifyAdd.proto index c0327d3b..b346fc25 100644 --- a/protocol/proto/GCGMsgModifyAdd.proto +++ b/protocol/proto/GCGMsgModifyAdd.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGReason.proto"; +package proto; option go_package = "./;proto"; message GCGMsgModifyAdd { diff --git a/protocol/proto/GCGMsgModifyRemove.proto b/protocol/proto/GCGMsgModifyRemove.proto index 8c9000e8..073a8f1c 100644 --- a/protocol/proto/GCGMsgModifyRemove.proto +++ b/protocol/proto/GCGMsgModifyRemove.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGReason.proto"; +package proto; option go_package = "./;proto"; message GCGMsgModifyRemove { diff --git a/protocol/proto/GCGMsgMoveCard.proto b/protocol/proto/GCGMsgMoveCard.proto index 24a6df2d..7a06aaa3 100644 --- a/protocol/proto/GCGMsgMoveCard.proto +++ b/protocol/proto/GCGMsgMoveCard.proto @@ -19,6 +19,7 @@ syntax = "proto3"; import "GCGReason.proto"; import "GCGZoneType.proto"; +package proto; option go_package = "./;proto"; message GCGMsgMoveCard { diff --git a/protocol/proto/GCGMsgNewCard.proto b/protocol/proto/GCGMsgNewCard.proto index 77dd09d2..c2a06db4 100644 --- a/protocol/proto/GCGMsgNewCard.proto +++ b/protocol/proto/GCGMsgNewCard.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGCard.proto"; +package proto; option go_package = "./;proto"; message GCGMsgNewCard { diff --git a/protocol/proto/GCGMsgNoDamageSkillResult.proto b/protocol/proto/GCGMsgNoDamageSkillResult.proto index 36538248..e65e0434 100644 --- a/protocol/proto/GCGMsgNoDamageSkillResult.proto +++ b/protocol/proto/GCGMsgNoDamageSkillResult.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGDamageDetail.proto"; +package proto; option go_package = "./;proto"; message GCGMsgNoDamageSkillResult { diff --git a/protocol/proto/GCGMsgOpTimer.proto b/protocol/proto/GCGMsgOpTimer.proto index 08176a5c..06f675ab 100644 --- a/protocol/proto/GCGMsgOpTimer.proto +++ b/protocol/proto/GCGMsgOpTimer.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGPhaseType.proto"; +package proto; option go_package = "./;proto"; message GCGMsgOpTimer { diff --git a/protocol/proto/GCGMsgPVEIntention.proto b/protocol/proto/GCGMsgPVEIntention.proto index 91b0f172..c101d9db 100644 --- a/protocol/proto/GCGMsgPVEIntention.proto +++ b/protocol/proto/GCGMsgPVEIntention.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGMsgPVEIntention { diff --git a/protocol/proto/GCGMsgPVEIntentionChange.proto b/protocol/proto/GCGMsgPVEIntentionChange.proto index 7a94da6a..aedfa870 100644 --- a/protocol/proto/GCGMsgPVEIntentionChange.proto +++ b/protocol/proto/GCGMsgPVEIntentionChange.proto @@ -19,6 +19,7 @@ syntax = "proto3"; import "GCGIntentionChangeType.proto"; import "GCGMsgPVEIntention.proto"; +package proto; option go_package = "./;proto"; message GCGMsgPVEIntentionChange { diff --git a/protocol/proto/GCGMsgPVEIntentionInfo.proto b/protocol/proto/GCGMsgPVEIntentionInfo.proto index d683c61a..5856a5ba 100644 --- a/protocol/proto/GCGMsgPVEIntentionInfo.proto +++ b/protocol/proto/GCGMsgPVEIntentionInfo.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGMsgPVEIntention.proto"; +package proto; option go_package = "./;proto"; message GCGMsgPVEIntentionInfo { diff --git a/protocol/proto/GCGMsgPass.proto b/protocol/proto/GCGMsgPass.proto index fb542b97..770262e0 100644 --- a/protocol/proto/GCGMsgPass.proto +++ b/protocol/proto/GCGMsgPass.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGMsgPass { diff --git a/protocol/proto/GCGMsgPhaseChange.proto b/protocol/proto/GCGMsgPhaseChange.proto index 73063623..d83e2e92 100644 --- a/protocol/proto/GCGMsgPhaseChange.proto +++ b/protocol/proto/GCGMsgPhaseChange.proto @@ -19,6 +19,7 @@ syntax = "proto3"; import "GCGPhaseType.proto"; import "Uint32Pair.proto"; +package proto; option go_package = "./;proto"; message GCGMsgPhaseChange { diff --git a/protocol/proto/GCGMsgPhaseContinue.proto b/protocol/proto/GCGMsgPhaseContinue.proto index b9c6ca8b..e1b4e801 100644 --- a/protocol/proto/GCGMsgPhaseContinue.proto +++ b/protocol/proto/GCGMsgPhaseContinue.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGMsgPhaseContinue {} diff --git a/protocol/proto/GCGMsgReactionBegin.proto b/protocol/proto/GCGMsgReactionBegin.proto index 0da05916..cd56754a 100644 --- a/protocol/proto/GCGMsgReactionBegin.proto +++ b/protocol/proto/GCGMsgReactionBegin.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGMsgReactionBegin { diff --git a/protocol/proto/GCGMsgReactionEnd.proto b/protocol/proto/GCGMsgReactionEnd.proto index bcefa357..c2ef6397 100644 --- a/protocol/proto/GCGMsgReactionEnd.proto +++ b/protocol/proto/GCGMsgReactionEnd.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGMsgReactionEnd { diff --git a/protocol/proto/GCGMsgRemoveCards.proto b/protocol/proto/GCGMsgRemoveCards.proto index 9b39b559..85c55c4f 100644 --- a/protocol/proto/GCGMsgRemoveCards.proto +++ b/protocol/proto/GCGMsgRemoveCards.proto @@ -19,6 +19,7 @@ syntax = "proto3"; import "GCGReason.proto"; import "GCGZoneType.proto"; +package proto; option go_package = "./;proto"; message GCGMsgRemoveCards { diff --git a/protocol/proto/GCGMsgSelectOnStage.proto b/protocol/proto/GCGMsgSelectOnStage.proto index 9ea2cb11..52fb4714 100644 --- a/protocol/proto/GCGMsgSelectOnStage.proto +++ b/protocol/proto/GCGMsgSelectOnStage.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGReason.proto"; +package proto; option go_package = "./;proto"; message GCGMsgSelectOnStage { diff --git a/protocol/proto/GCGMsgSelectOnStageByEffect.proto b/protocol/proto/GCGMsgSelectOnStageByEffect.proto index bcd053a7..fb9d3de2 100644 --- a/protocol/proto/GCGMsgSelectOnStageByEffect.proto +++ b/protocol/proto/GCGMsgSelectOnStageByEffect.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGMsgSelectOnStageByEffect { diff --git a/protocol/proto/GCGMsgSkillLimitsChange.proto b/protocol/proto/GCGMsgSkillLimitsChange.proto index e03cefb1..1a60a44f 100644 --- a/protocol/proto/GCGMsgSkillLimitsChange.proto +++ b/protocol/proto/GCGMsgSkillLimitsChange.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGCardSkillLimitsInfo.proto"; +package proto; option go_package = "./;proto"; message GCGMsgSkillLimitsChange { diff --git a/protocol/proto/GCGMsgSkillResult.proto b/protocol/proto/GCGMsgSkillResult.proto index 1325bb46..23787b67 100644 --- a/protocol/proto/GCGMsgSkillResult.proto +++ b/protocol/proto/GCGMsgSkillResult.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGDamageDetail.proto"; +package proto; option go_package = "./;proto"; message GCGMsgSkillResult { diff --git a/protocol/proto/GCGMsgTokenChange.proto b/protocol/proto/GCGMsgTokenChange.proto index 5ebf04ca..868c62f9 100644 --- a/protocol/proto/GCGMsgTokenChange.proto +++ b/protocol/proto/GCGMsgTokenChange.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGReason.proto"; +package proto; option go_package = "./;proto"; message GCGMsgTokenChange { diff --git a/protocol/proto/GCGMsgUpdateController.proto b/protocol/proto/GCGMsgUpdateController.proto index 5f80c2cd..160f6b56 100644 --- a/protocol/proto/GCGMsgUpdateController.proto +++ b/protocol/proto/GCGMsgUpdateController.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "Uint32Pair.proto"; +package proto; option go_package = "./;proto"; message GCGMsgUpdateController { diff --git a/protocol/proto/GCGMsgUseSkill.proto b/protocol/proto/GCGMsgUseSkill.proto index c1c1578d..38c8cb04 100644 --- a/protocol/proto/GCGMsgUseSkill.proto +++ b/protocol/proto/GCGMsgUseSkill.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGMsgUseSkill { diff --git a/protocol/proto/GCGMsgUseSkillEnd.proto b/protocol/proto/GCGMsgUseSkillEnd.proto index 3786681a..326918cb 100644 --- a/protocol/proto/GCGMsgUseSkillEnd.proto +++ b/protocol/proto/GCGMsgUseSkillEnd.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGMsgUseSkillEnd { diff --git a/protocol/proto/GCGMsgWaitingListChange.proto b/protocol/proto/GCGMsgWaitingListChange.proto index e8790eb5..e171efa5 100644 --- a/protocol/proto/GCGMsgWaitingListChange.proto +++ b/protocol/proto/GCGMsgWaitingListChange.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGMsgWaitingListChange { diff --git a/protocol/proto/GCGOperation.proto b/protocol/proto/GCGOperation.proto index dc1bd04e..b200e6ac 100644 --- a/protocol/proto/GCGOperation.proto +++ b/protocol/proto/GCGOperation.proto @@ -25,6 +25,7 @@ import "GCGOperationRedraw.proto"; import "GCGOperationReroll.proto"; import "GCGOperationSurrender.proto"; +package proto; option go_package = "./;proto"; message GCGOperation { diff --git a/protocol/proto/GCGOperationAttack.proto b/protocol/proto/GCGOperationAttack.proto index ba7ece0f..91a371f0 100644 --- a/protocol/proto/GCGOperationAttack.proto +++ b/protocol/proto/GCGOperationAttack.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGOperationAttack { diff --git a/protocol/proto/GCGOperationOnStageSelect.proto b/protocol/proto/GCGOperationOnStageSelect.proto index 21f45de8..461bbca2 100644 --- a/protocol/proto/GCGOperationOnStageSelect.proto +++ b/protocol/proto/GCGOperationOnStageSelect.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGOperationOnStageSelect { diff --git a/protocol/proto/GCGOperationPass.proto b/protocol/proto/GCGOperationPass.proto index 1528ac33..be154a09 100644 --- a/protocol/proto/GCGOperationPass.proto +++ b/protocol/proto/GCGOperationPass.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGOperationPass {} diff --git a/protocol/proto/GCGOperationPlayCard.proto b/protocol/proto/GCGOperationPlayCard.proto index d2fdcd98..2eac0685 100644 --- a/protocol/proto/GCGOperationPlayCard.proto +++ b/protocol/proto/GCGOperationPlayCard.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGOperationPlayCard { diff --git a/protocol/proto/GCGOperationReboot.proto b/protocol/proto/GCGOperationReboot.proto index b6e39a0b..2ccdb7da 100644 --- a/protocol/proto/GCGOperationReboot.proto +++ b/protocol/proto/GCGOperationReboot.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGOperationReboot { diff --git a/protocol/proto/GCGOperationRedraw.proto b/protocol/proto/GCGOperationRedraw.proto index 30a7bd1d..2af3f3be 100644 --- a/protocol/proto/GCGOperationRedraw.proto +++ b/protocol/proto/GCGOperationRedraw.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGOperationRedraw { diff --git a/protocol/proto/GCGOperationReplay.proto b/protocol/proto/GCGOperationReplay.proto index 395609dc..1fdf06f2 100644 --- a/protocol/proto/GCGOperationReplay.proto +++ b/protocol/proto/GCGOperationReplay.proto @@ -20,6 +20,7 @@ import "GCGReplayControllerData.proto"; import "GCGReplayOperationData.proto"; import "Unk3300_PPKPCOCOMDH.proto"; +package proto; option go_package = "./;proto"; message GCGOperationReplay { diff --git a/protocol/proto/GCGOperationReq.proto b/protocol/proto/GCGOperationReq.proto index 0fc49b1f..ea9fcf18 100644 --- a/protocol/proto/GCGOperationReq.proto +++ b/protocol/proto/GCGOperationReq.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGOperation.proto"; +package proto; option go_package = "./;proto"; message GCGOperationReq { diff --git a/protocol/proto/GCGOperationReroll.proto b/protocol/proto/GCGOperationReroll.proto index 846628da..71d41594 100644 --- a/protocol/proto/GCGOperationReroll.proto +++ b/protocol/proto/GCGOperationReroll.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGOperationReroll { diff --git a/protocol/proto/GCGOperationRsp.proto b/protocol/proto/GCGOperationRsp.proto index b86be2fd..399e9f1b 100644 --- a/protocol/proto/GCGOperationRsp.proto +++ b/protocol/proto/GCGOperationRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGOperationRsp { diff --git a/protocol/proto/GCGOperationSurrender.proto b/protocol/proto/GCGOperationSurrender.proto index c3dc25d4..c941ad8a 100644 --- a/protocol/proto/GCGOperationSurrender.proto +++ b/protocol/proto/GCGOperationSurrender.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGOperationSurrender {} diff --git a/protocol/proto/GCGPVEIntention.proto b/protocol/proto/GCGPVEIntention.proto index a96a1662..93e097d5 100644 --- a/protocol/proto/GCGPVEIntention.proto +++ b/protocol/proto/GCGPVEIntention.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGPVEIntention { diff --git a/protocol/proto/GCGPhase.proto b/protocol/proto/GCGPhase.proto index 205984a4..ac957759 100644 --- a/protocol/proto/GCGPhase.proto +++ b/protocol/proto/GCGPhase.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGPhaseType.proto"; +package proto; option go_package = "./;proto"; message GCGPhase { diff --git a/protocol/proto/GCGPhaseType.proto b/protocol/proto/GCGPhaseType.proto index fba694a1..d494ba0a 100644 --- a/protocol/proto/GCGPhaseType.proto +++ b/protocol/proto/GCGPhaseType.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; enum GCGPhaseType { diff --git a/protocol/proto/GCGPlayCardCostInfo.proto b/protocol/proto/GCGPlayCardCostInfo.proto index 609e7819..90cba292 100644 --- a/protocol/proto/GCGPlayCardCostInfo.proto +++ b/protocol/proto/GCGPlayCardCostInfo.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "Uint32Pair.proto"; +package proto; option go_package = "./;proto"; message GCGPlayCardCostInfo { diff --git a/protocol/proto/GCGPlayerBriefData.proto b/protocol/proto/GCGPlayerBriefData.proto index 40f2f917..6d1ab7c7 100644 --- a/protocol/proto/GCGPlayerBriefData.proto +++ b/protocol/proto/GCGPlayerBriefData.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "ProfilePicture.proto"; +package proto; option go_package = "./;proto"; message GCGPlayerBriefData { diff --git a/protocol/proto/GCGPlayerField.proto b/protocol/proto/GCGPlayerField.proto index 763d7914..179051c5 100644 --- a/protocol/proto/GCGPlayerField.proto +++ b/protocol/proto/GCGPlayerField.proto @@ -21,6 +21,7 @@ import "GCGPVEIntention.proto"; import "GCGWaitingCharacter.proto"; import "GCGZone.proto"; +package proto; option go_package = "./;proto"; message GCGPlayerField { diff --git a/protocol/proto/GCGPlayerGCGState.proto b/protocol/proto/GCGPlayerGCGState.proto index 0a8b421b..7b401dda 100644 --- a/protocol/proto/GCGPlayerGCGState.proto +++ b/protocol/proto/GCGPlayerGCGState.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGPlayerGCGState { diff --git a/protocol/proto/GCGReason.proto b/protocol/proto/GCGReason.proto index bcd21930..56bf387b 100644 --- a/protocol/proto/GCGReason.proto +++ b/protocol/proto/GCGReason.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; enum GCGReason { diff --git a/protocol/proto/GCGReplayControllerData.proto b/protocol/proto/GCGReplayControllerData.proto index 24e1ddac..7bd7dcdf 100644 --- a/protocol/proto/GCGReplayControllerData.proto +++ b/protocol/proto/GCGReplayControllerData.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGReplayControllerData { diff --git a/protocol/proto/GCGReplayOperationData.proto b/protocol/proto/GCGReplayOperationData.proto index 40264cb1..6da6559c 100644 --- a/protocol/proto/GCGReplayOperationData.proto +++ b/protocol/proto/GCGReplayOperationData.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGOperation.proto"; +package proto; option go_package = "./;proto"; message GCGReplayOperationData { diff --git a/protocol/proto/GCGResourceStateNotify.proto b/protocol/proto/GCGResourceStateNotify.proto index 1f02d7f8..2f7661bb 100644 --- a/protocol/proto/GCGResourceStateNotify.proto +++ b/protocol/proto/GCGResourceStateNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGResourceStateNotify { diff --git a/protocol/proto/GCGSelectOnStageCostInfo.proto b/protocol/proto/GCGSelectOnStageCostInfo.proto index c33a1c4c..fb01552f 100644 --- a/protocol/proto/GCGSelectOnStageCostInfo.proto +++ b/protocol/proto/GCGSelectOnStageCostInfo.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "Uint32Pair.proto"; +package proto; option go_package = "./;proto"; message GCGSelectOnStageCostInfo { diff --git a/protocol/proto/GCGSettleNotify.proto b/protocol/proto/GCGSettleNotify.proto index bd434c11..d38f13e8 100644 --- a/protocol/proto/GCGSettleNotify.proto +++ b/protocol/proto/GCGSettleNotify.proto @@ -20,6 +20,7 @@ import "GCGEndReason.proto"; import "GCGGameBusinessType.proto"; import "ItemParam.proto"; +package proto; option go_package = "./;proto"; message GCGSettleNotify { diff --git a/protocol/proto/GCGSettleOption.proto b/protocol/proto/GCGSettleOption.proto index 02c58fa2..aa181a01 100644 --- a/protocol/proto/GCGSettleOption.proto +++ b/protocol/proto/GCGSettleOption.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; enum GCGSettleOption { diff --git a/protocol/proto/GCGSettleOptionReq.proto b/protocol/proto/GCGSettleOptionReq.proto index bc61e918..f609dd33 100644 --- a/protocol/proto/GCGSettleOptionReq.proto +++ b/protocol/proto/GCGSettleOptionReq.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGSettleOption.proto"; +package proto; option go_package = "./;proto"; message GCGSettleOptionReq { diff --git a/protocol/proto/GCGSettleOptionRsp.proto b/protocol/proto/GCGSettleOptionRsp.proto index 940ac860..4d7dd090 100644 --- a/protocol/proto/GCGSettleOptionRsp.proto +++ b/protocol/proto/GCGSettleOptionRsp.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGSettleOption.proto"; +package proto; option go_package = "./;proto"; message GCGSettleOptionRsp { diff --git a/protocol/proto/GCGSkillHpChangeType.proto b/protocol/proto/GCGSkillHpChangeType.proto index 2f1985b3..affdd924 100644 --- a/protocol/proto/GCGSkillHpChangeType.proto +++ b/protocol/proto/GCGSkillHpChangeType.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; enum GCGSkillHpChangeType { diff --git a/protocol/proto/GCGSkillLimitsInfo.proto b/protocol/proto/GCGSkillLimitsInfo.proto index e30b50fa..4b06f831 100644 --- a/protocol/proto/GCGSkillLimitsInfo.proto +++ b/protocol/proto/GCGSkillLimitsInfo.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGLimitsInfo.proto"; +package proto; option go_package = "./;proto"; message GCGSkillLimitsInfo { diff --git a/protocol/proto/GCGSkillPreviewAskReq.proto b/protocol/proto/GCGSkillPreviewAskReq.proto index 198730fc..c2059e2c 100644 --- a/protocol/proto/GCGSkillPreviewAskReq.proto +++ b/protocol/proto/GCGSkillPreviewAskReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGSkillPreviewAskReq { diff --git a/protocol/proto/GCGSkillPreviewAskRsp.proto b/protocol/proto/GCGSkillPreviewAskRsp.proto index be5d9d7e..b6eb8813 100644 --- a/protocol/proto/GCGSkillPreviewAskRsp.proto +++ b/protocol/proto/GCGSkillPreviewAskRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGSkillPreviewAskRsp { diff --git a/protocol/proto/GCGSkillPreviewCardInfo.proto b/protocol/proto/GCGSkillPreviewCardInfo.proto index f5bd67ba..a928a3f5 100644 --- a/protocol/proto/GCGSkillPreviewCardInfo.proto +++ b/protocol/proto/GCGSkillPreviewCardInfo.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGZoneType.proto"; +package proto; option go_package = "./;proto"; message GCGSkillPreviewCardInfo { diff --git a/protocol/proto/GCGSkillPreviewElementReactionInfo.proto b/protocol/proto/GCGSkillPreviewElementReactionInfo.proto index 74918669..862cdc8b 100644 --- a/protocol/proto/GCGSkillPreviewElementReactionInfo.proto +++ b/protocol/proto/GCGSkillPreviewElementReactionInfo.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGSkillPreviewReactionInfo.proto"; +package proto; option go_package = "./;proto"; message GCGSkillPreviewElementReactionInfo { diff --git a/protocol/proto/GCGSkillPreviewExtraInfo.proto b/protocol/proto/GCGSkillPreviewExtraInfo.proto index 6e79c513..4c1377a4 100644 --- a/protocol/proto/GCGSkillPreviewExtraInfo.proto +++ b/protocol/proto/GCGSkillPreviewExtraInfo.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGSkillPreviewCardInfo.proto"; +package proto; option go_package = "./;proto"; message GCGSkillPreviewExtraInfo { diff --git a/protocol/proto/GCGSkillPreviewHpInfo.proto b/protocol/proto/GCGSkillPreviewHpInfo.proto index 44451379..25956cb8 100644 --- a/protocol/proto/GCGSkillPreviewHpInfo.proto +++ b/protocol/proto/GCGSkillPreviewHpInfo.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGSkillHpChangeType.proto"; +package proto; option go_package = "./;proto"; message GCGSkillPreviewHpInfo { diff --git a/protocol/proto/GCGSkillPreviewInfo.proto b/protocol/proto/GCGSkillPreviewInfo.proto index ba17e3f3..558adc65 100644 --- a/protocol/proto/GCGSkillPreviewInfo.proto +++ b/protocol/proto/GCGSkillPreviewInfo.proto @@ -23,6 +23,7 @@ import "GCGSkillPreviewHpInfo.proto"; import "GCGSkillPreviewOnstageChangeInfo.proto"; import "GCGSkillPreviewTokenChangeInfo.proto"; +package proto; option go_package = "./;proto"; message GCGSkillPreviewInfo { diff --git a/protocol/proto/GCGSkillPreviewNotify.proto b/protocol/proto/GCGSkillPreviewNotify.proto index 150fd5ba..4b65c26e 100644 --- a/protocol/proto/GCGSkillPreviewNotify.proto +++ b/protocol/proto/GCGSkillPreviewNotify.proto @@ -20,6 +20,7 @@ import "GCGChangeOnstageInfo.proto"; import "GCGSkillPreviewInfo.proto"; import "GCGSkillPreviewPlayCardInfo.proto"; +package proto; option go_package = "./;proto"; message GCGSkillPreviewNotify { diff --git a/protocol/proto/GCGSkillPreviewOnstageChangeInfo.proto b/protocol/proto/GCGSkillPreviewOnstageChangeInfo.proto index 32862130..1216f014 100644 --- a/protocol/proto/GCGSkillPreviewOnstageChangeInfo.proto +++ b/protocol/proto/GCGSkillPreviewOnstageChangeInfo.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGSkillPreviewOnstageChangeInfo { diff --git a/protocol/proto/GCGSkillPreviewPlayCardInfo.proto b/protocol/proto/GCGSkillPreviewPlayCardInfo.proto index ed09d722..3c52ea0b 100644 --- a/protocol/proto/GCGSkillPreviewPlayCardInfo.proto +++ b/protocol/proto/GCGSkillPreviewPlayCardInfo.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGSkillPreviewInfo.proto"; +package proto; option go_package = "./;proto"; message GCGSkillPreviewPlayCardInfo { diff --git a/protocol/proto/GCGSkillPreviewReactionInfo.proto b/protocol/proto/GCGSkillPreviewReactionInfo.proto index 945b838d..f6bb3dd1 100644 --- a/protocol/proto/GCGSkillPreviewReactionInfo.proto +++ b/protocol/proto/GCGSkillPreviewReactionInfo.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGSkillPreviewReactionInfo { diff --git a/protocol/proto/GCGSkillPreviewTokenChangeInfo.proto b/protocol/proto/GCGSkillPreviewTokenChangeInfo.proto index 0b19382e..f6961f3d 100644 --- a/protocol/proto/GCGSkillPreviewTokenChangeInfo.proto +++ b/protocol/proto/GCGSkillPreviewTokenChangeInfo.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGSkillPreviewTokenInfo.proto"; +package proto; option go_package = "./;proto"; message GCGSkillPreviewTokenChangeInfo { diff --git a/protocol/proto/GCGSkillPreviewTokenInfo.proto b/protocol/proto/GCGSkillPreviewTokenInfo.proto index a9095721..8130c79f 100644 --- a/protocol/proto/GCGSkillPreviewTokenInfo.proto +++ b/protocol/proto/GCGSkillPreviewTokenInfo.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGSkillPreviewTokenInfo { diff --git a/protocol/proto/GCGStartChallengeByCheckRewardReq.proto b/protocol/proto/GCGStartChallengeByCheckRewardReq.proto index 72cea95e..9e544de5 100644 --- a/protocol/proto/GCGStartChallengeByCheckRewardReq.proto +++ b/protocol/proto/GCGStartChallengeByCheckRewardReq.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGLevelType.proto"; +package proto; option go_package = "./;proto"; message GCGStartChallengeByCheckRewardReq { diff --git a/protocol/proto/GCGStartChallengeByCheckRewardRsp.proto b/protocol/proto/GCGStartChallengeByCheckRewardRsp.proto index c7bd26e5..237d6264 100644 --- a/protocol/proto/GCGStartChallengeByCheckRewardRsp.proto +++ b/protocol/proto/GCGStartChallengeByCheckRewardRsp.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGLevelType.proto"; +package proto; option go_package = "./;proto"; message GCGStartChallengeByCheckRewardRsp { diff --git a/protocol/proto/GCGStartChallengeReq.proto b/protocol/proto/GCGStartChallengeReq.proto index 8c0125f3..8c51105a 100644 --- a/protocol/proto/GCGStartChallengeReq.proto +++ b/protocol/proto/GCGStartChallengeReq.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGLevelType.proto"; +package proto; option go_package = "./;proto"; message GCGStartChallengeReq { diff --git a/protocol/proto/GCGStartChallengeRsp.proto b/protocol/proto/GCGStartChallengeRsp.proto index 0a09ead4..41f29b62 100644 --- a/protocol/proto/GCGStartChallengeRsp.proto +++ b/protocol/proto/GCGStartChallengeRsp.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGLevelType.proto"; +package proto; option go_package = "./;proto"; message GCGStartChallengeRsp { diff --git a/protocol/proto/GCGTCInviteReq.proto b/protocol/proto/GCGTCInviteReq.proto index ab5ac00b..15b154d5 100644 --- a/protocol/proto/GCGTCInviteReq.proto +++ b/protocol/proto/GCGTCInviteReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGTCInviteReq { diff --git a/protocol/proto/GCGTCInviteRsp.proto b/protocol/proto/GCGTCInviteRsp.proto index 396d9fad..b539d8a6 100644 --- a/protocol/proto/GCGTCInviteRsp.proto +++ b/protocol/proto/GCGTCInviteRsp.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGTCInviteRsp { diff --git a/protocol/proto/GCGTCTavernChallengeData.proto b/protocol/proto/GCGTCTavernChallengeData.proto index cb74bdcd..68da9777 100644 --- a/protocol/proto/GCGTCTavernChallengeData.proto +++ b/protocol/proto/GCGTCTavernChallengeData.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGTCTavernChallengeData { diff --git a/protocol/proto/GCGTCTavernChallengeDataNotify.proto b/protocol/proto/GCGTCTavernChallengeDataNotify.proto index daae2132..2227fb72 100644 --- a/protocol/proto/GCGTCTavernChallengeDataNotify.proto +++ b/protocol/proto/GCGTCTavernChallengeDataNotify.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGTCTavernChallengeData.proto"; +package proto; option go_package = "./;proto"; message GCGTCTavernChallengeDataNotify { diff --git a/protocol/proto/GCGTCTavernChallengeUpdateNotify.proto b/protocol/proto/GCGTCTavernChallengeUpdateNotify.proto index ad788697..82b6df43 100644 --- a/protocol/proto/GCGTCTavernChallengeUpdateNotify.proto +++ b/protocol/proto/GCGTCTavernChallengeUpdateNotify.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGTCTavernChallengeData.proto"; +package proto; option go_package = "./;proto"; message GCGTCTavernChallengeUpdateNotify { diff --git a/protocol/proto/GCGTCTavernInfoNotify.proto b/protocol/proto/GCGTCTavernInfoNotify.proto index 87d9708b..d5b66990 100644 --- a/protocol/proto/GCGTCTavernInfoNotify.proto +++ b/protocol/proto/GCGTCTavernInfoNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGTCTavernInfoNotify { diff --git a/protocol/proto/GCGTavernNpcInfo.proto b/protocol/proto/GCGTavernNpcInfo.proto index a87dc6ee..5d8944d3 100644 --- a/protocol/proto/GCGTavernNpcInfo.proto +++ b/protocol/proto/GCGTavernNpcInfo.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGTavernNpcInfo { diff --git a/protocol/proto/GCGTavernNpcInfoNotify.proto b/protocol/proto/GCGTavernNpcInfoNotify.proto index b1db4ddc..753707f9 100644 --- a/protocol/proto/GCGTavernNpcInfoNotify.proto +++ b/protocol/proto/GCGTavernNpcInfoNotify.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGTavernNpcInfo.proto"; +package proto; option go_package = "./;proto"; message GCGTavernNpcInfoNotify { diff --git a/protocol/proto/GCGToken.proto b/protocol/proto/GCGToken.proto index d39a3236..d9ed1e25 100644 --- a/protocol/proto/GCGToken.proto +++ b/protocol/proto/GCGToken.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGToken { diff --git a/protocol/proto/GCGWaitingCharacter.proto b/protocol/proto/GCGWaitingCharacter.proto index 3ac862b2..549f256f 100644 --- a/protocol/proto/GCGWaitingCharacter.proto +++ b/protocol/proto/GCGWaitingCharacter.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGWaitingCharacter { diff --git a/protocol/proto/GCGWeekChallengeInfo.proto b/protocol/proto/GCGWeekChallengeInfo.proto index cddae4b5..61b0c460 100644 --- a/protocol/proto/GCGWeekChallengeInfo.proto +++ b/protocol/proto/GCGWeekChallengeInfo.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGWeekChallengeInfo { diff --git a/protocol/proto/GCGWeekChallengeInfoNotify.proto b/protocol/proto/GCGWeekChallengeInfoNotify.proto index f45148b9..6cdfa82d 100644 --- a/protocol/proto/GCGWeekChallengeInfoNotify.proto +++ b/protocol/proto/GCGWeekChallengeInfoNotify.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGWeekChallengeInfo.proto"; +package proto; option go_package = "./;proto"; message GCGWeekChallengeInfoNotify { diff --git a/protocol/proto/GCGWorldChallengeUnlockNotify.proto b/protocol/proto/GCGWorldChallengeUnlockNotify.proto index e9aee1ed..db9c5abe 100644 --- a/protocol/proto/GCGWorldChallengeUnlockNotify.proto +++ b/protocol/proto/GCGWorldChallengeUnlockNotify.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGWorldChallengeUnlockNotify { diff --git a/protocol/proto/GCGWorldPlayerGCGStateReq.proto b/protocol/proto/GCGWorldPlayerGCGStateReq.proto index cd15e89e..50f400ec 100644 --- a/protocol/proto/GCGWorldPlayerGCGStateReq.proto +++ b/protocol/proto/GCGWorldPlayerGCGStateReq.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGWorldPlayerGCGStateReq { diff --git a/protocol/proto/GCGWorldPlayerGCGStateRsp.proto b/protocol/proto/GCGWorldPlayerGCGStateRsp.proto index dac2e221..a208ff34 100644 --- a/protocol/proto/GCGWorldPlayerGCGStateRsp.proto +++ b/protocol/proto/GCGWorldPlayerGCGStateRsp.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGPlayerGCGState.proto"; +package proto; option go_package = "./;proto"; message GCGWorldPlayerGCGStateRsp { diff --git a/protocol/proto/GCGZone.proto b/protocol/proto/GCGZone.proto index 5229ee09..e9d53af2 100644 --- a/protocol/proto/GCGZone.proto +++ b/protocol/proto/GCGZone.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message GCGZone { diff --git a/protocol/proto/GCGZoneType.proto b/protocol/proto/GCGZoneType.proto index 9e76acd9..260c0cde 100644 --- a/protocol/proto/GCGZoneType.proto +++ b/protocol/proto/GCGZoneType.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; enum GCGZoneType { diff --git a/protocol/proto/Unk3300_ADHENCIFKNI.proto b/protocol/proto/Unk3300_ADHENCIFKNI.proto index b7edfa96..201dbbff 100644 --- a/protocol/proto/Unk3300_ADHENCIFKNI.proto +++ b/protocol/proto/Unk3300_ADHENCIFKNI.proto @@ -16,6 +16,7 @@ syntax = "proto3"; +package proto; option go_package = "./;proto"; message Unk3300_ADHENCIFKNI { diff --git a/protocol/proto/GCGOperationData.proto b/protocol/proto/Unk3300_DGBNCDEIIFC.proto similarity index 79% rename from protocol/proto/GCGOperationData.proto rename to protocol/proto/Unk3300_DGBNCDEIIFC.proto index 1a807f4b..bcfaa371 100644 --- a/protocol/proto/GCGOperationData.proto +++ b/protocol/proto/Unk3300_DGBNCDEIIFC.proto @@ -16,12 +16,17 @@ syntax = "proto3"; -import "GCGOperation.proto"; - package proto; option go_package = "./;proto"; -message GCGOperationData { - uint32 controller_id = 2; - GCGOperation op = 12; +message Unk3300_DGBNCDEIIFC { + // enum CmdId { + // option allow_alias = true; + // NONE = 0; + // CMD_ID = 952; + // ENET_CHANNEL_ID = 0; + // ENET_IS_RELIABLE = 1; + // } + + repeated uint32 monster_id_list = 9; } diff --git a/protocol/proto/GCGMsgPVEGenCardOp.proto b/protocol/proto/Unk3300_DMOBAABGOBF.proto similarity index 76% rename from protocol/proto/GCGMsgPVEGenCardOp.proto rename to protocol/proto/Unk3300_DMOBAABGOBF.proto index 7702dadb..09c46dab 100644 --- a/protocol/proto/GCGMsgPVEGenCardOp.proto +++ b/protocol/proto/Unk3300_DMOBAABGOBF.proto @@ -19,7 +19,16 @@ syntax = "proto3"; package proto; option go_package = "./;proto"; -message GCGMsgPVEGenCardOp { - repeated uint32 skill_id_list = 1; - uint32 card_guid = 11; +message Unk3300_DMOBAABGOBF { + // enum CmdId { + // option allow_alias = true; + // NONE = 0; + // CMD_ID = 7193; + // ENET_CHANNEL_ID = 0; + // ENET_IS_RELIABLE = 1; + // } + + bool is_success = 6; + string Unk3300_NKHMMPMEILJ = 7; + string Unk3300_JOCKIGCENGI = 13; } diff --git a/protocol/proto/GCGNewCardInfoNotify.proto b/protocol/proto/Unk3300_ICAGMOCOALO.proto similarity index 80% rename from protocol/proto/GCGNewCardInfoNotify.proto rename to protocol/proto/Unk3300_ICAGMOCOALO.proto index c942dede..92d6eba4 100644 --- a/protocol/proto/GCGNewCardInfoNotify.proto +++ b/protocol/proto/Unk3300_ICAGMOCOALO.proto @@ -16,14 +16,17 @@ syntax = "proto3"; -import "GCGCard.proto"; - package proto; option go_package = "./;proto"; -// CmdId: 7203 -// EnetChannelId: 0 -// EnetIsReliable: true -message GCGNewCardInfoNotify { - GCGCard card = 1; +message Unk3300_ICAGMOCOALO { + // enum CmdId { + // option allow_alias = true; + // NONE = 0; + // CMD_ID = 4187; + // ENET_CHANNEL_ID = 0; + // ENET_IS_RELIABLE = 1; + // } + + uint32 match_id = 3; } diff --git a/protocol/proto/GCGMsgPVEDoOp.proto b/protocol/proto/Unk3300_LOINGBJLJEM.proto similarity index 70% rename from protocol/proto/GCGMsgPVEDoOp.proto rename to protocol/proto/Unk3300_LOINGBJLJEM.proto index c13f9b36..5f13bf00 100644 --- a/protocol/proto/GCGMsgPVEDoOp.proto +++ b/protocol/proto/Unk3300_LOINGBJLJEM.proto @@ -19,7 +19,19 @@ syntax = "proto3"; package proto; option go_package = "./;proto"; -message GCGMsgPVEDoOp { - uint32 skill_id = 4; - uint32 card_guid = 10; +message Unk3300_LOINGBJLJEM { + // enum CmdId { + // option allow_alias = true; + // NONE = 0; + // CMD_ID = 7048; + // ENET_CHANNEL_ID = 0; + // ENET_IS_RELIABLE = 1; + // } + + enum Unk3300_KDBJPJADJKF { + Unk3300_KDBJPJADJKF_Unk3300_EKBFJPGGECM = 0; + Unk3300_KDBJPJADJKF_Unk3300_NALHJBKMPCH = 1; + } + + Unk3300_KDBJPJADJKF Unk3300_NOFBEJLNMLA = 4; } diff --git a/protocol/proto/Unk3300_PPKPCOCOMDH.proto b/protocol/proto/Unk3300_PPKPCOCOMDH.proto index 5b304b4c..6e4786b3 100644 --- a/protocol/proto/Unk3300_PPKPCOCOMDH.proto +++ b/protocol/proto/Unk3300_PPKPCOCOMDH.proto @@ -18,6 +18,7 @@ syntax = "proto3"; import "GCGDuel.proto"; +package proto; option go_package = "./;proto"; message Unk3300_PPKPCOCOMDH {