// gameserver/src/handlers.zig — CW lines (line numbers from PearlSR @ 06aa2d2 + working tree) 23:const grid_fight = @import("services/grid_fight.zig"); 25:const grid_fight_talent = @import("services/grid_fight_talent.zig"); 40: .{ CmdID.CmdGridFightGetDataCsReq, grid_fight.onGetData }, 41: .{ CmdID.CmdGridFightStartGamePlayCsReq, grid_fight.onStartGamePlay }, 42: .{ CmdID.CmdGridFightQuitLeaveGamePlayCsReq, grid_fight.onQuitLeaveGamePlay }, 43: .{ CmdID.CmdGridFightResumeGamePlayCsReq, grid_fight.onResumeGamePlay }, 44: .{ CmdID.CmdGridFightRefreshShopCsReq, grid_fight.onRefreshShop }, 45: .{ CmdID.CmdGridFightBuyGoodsCsReq, grid_fight.onBuyGoods }, 46: .{ CmdID.CmdGridFightBuyExpCsReq, grid_fight.onBuyExp }, 47: .{ CmdID.CmdGridFightRecycleRoleCsReq, grid_fight.onRecycleRole }, 48: .{ CmdID.CmdGridFightUpdatePosCsReq, grid_fight.onUpdatePos }, 49: .{ CmdID.CmdGridFightLockShopCsReq, grid_fight.onLockShop }, 50: .{ CmdID.CmdGridFightEnterBattleStageCsReq, grid_fight.onEnterBattleStage }, 51: .{ CmdID.CmdGridFightBackToPrepareReq, grid_fight.onBackToPrepare }, 52: .{ CmdID.CmdGridFightEnterBonfireCsReq, grid_fight.onEnterBonfire }, 53: .{ CmdID.CmdGridFightHandleBonfireHealHpCsReq, grid_fight.onBonfireHeal }, 54: .{ CmdID.CmdGridFightEquipDressCsReq, grid_fight.onEquipDress }, 55: .{ CmdID.CmdGridFightEquipCraftCsReq, grid_fight.onEquipCraft }, 56: .{ CmdID.CmdGridFightRecycleItemCsReq, grid_fight.onRecycleItem }, 57: // GridFightGetOrbCsReq (open dropped orbs); name obfuscated in this protocol. 58: .{ CmdID.CmdIKMOCJBMGOJ, grid_fight.onGetOrb }, 59: .{ CmdID.CmdGridFightQuitSettleCsReq, grid_fight.onQuitSettle }, 60: .{ CmdID.CmdGridFightGetArchiveCsReq, grid_fight.onGetArchive }, 61: .{ CmdID.CmdGetGameFormationCsReq, grid_fight.onGetGameFormation }, 62: .{ CmdID.CmdUpdateGameFormationCsReq, grid_fight.onUpdateGameFormation }, 63: .{ CmdID.CmdMOIONLDJGJI, grid_fight.onUseConsumable }, 64: .{ CmdID.CmdGridFightUseForgeCsReq, grid_fight.onUseForge }, 65: .{ CmdID.CmdGetActivityScheduleConfigCsReq, grid_fight.onGetActivitySchedule }, 66: .{ CmdID.CmdCycleScoreRewardGetDataCsReq, grid_fight.onCycleScoreRewardGetData }, 67: .{ CmdID.CmdGetOfferingInfoCsReq, grid_fight.onGetOfferingInfo }, 68: .{ CmdID.CmdGridFightTraitUpdateCsReq, grid_fight.onTraitUpdate }, 101: .{ CmdID.CmdPVEBattleResultCsReq, grid_fight.onPVEBattleResult }, 107: .{ CmdID.CmdGetCurBattleInfoCsReq, grid_fight.onGetCurBattleInfo }, 199: //.{ CmdID.CmdGetActivityScheduleConfigCsReq, events.onGetActivity }, 223: .{ CmdID.CmdGridFightPermanentTalentEnableCsReq, grid_fight_talent.onPermanentTalentEnable }, 224: .{ CmdID.CmdGridFightSeasonTalentEnableCsReq, grid_fight_talent.onSeasonTalentEnable }, 246: .{ CmdID.CmdGridFightFinishTutorialCsReq, CmdID.CmdGridFightFinishTutorialScRsp }, 247: .{ CmdID.CmdGridFightUpdateEquipTrackCsReq, CmdID.CmdGridFightUpdateEquipTrackScRsp }, 248: .{ CmdID.CmdGridFightUpdateEquipTrackPriorityCsReq, CmdID.CmdGridFightUpdateEquipTrackPriorityScRsp }, 249: .{ CmdID.CmdGridFightUpdateSpotLightTrackCsReq, CmdID.CmdGridFightUpdateSpotLightTrackScRsp }, 250: .{ CmdID.CmdGridFightPermanentTalentResetCsReq, CmdID.CmdGridFightPermanentTalentResetScRsp }, 251: .{ CmdID.CmdGridFightSeasonTalentResetCsReq, CmdID.CmdGridFightSeasonTalentResetScRsp }, 387: if (try @import("services/grid_fight.zig").handleRest(session, packet, arena.allocator())) return; 430:/// login produced seven such exceptions (EvolveBuild, GridFight, CycleScore, // gameserver/src/control.zig 14:const grid_fight = @import("services/grid_fight.zig"); 15-const watermark = @import("watermark.zig"); 16-const LineupStore = @import("manager/lineup_store.zig"); 17-const ConfigManager = @import("manager/config_mgr.zig"); 18- -- 169: if (std.mem.eql(u8, line, "gridfight-reset")) { 170- lock.lock(); 171- defer lock.unlock(); 172: return grid_fight.controlReset(); 173- } 174- if (std.mem.eql(u8, line, "status")) { 175- lock.lock(); 176- defer lock.unlock(); // gameserver/src/services/mission.zig 74-/// (ActivityFinalityBattleLevel UnlockQuest). Reported finished so every 75-/// stage is open from the start, whatever quests.json holds. The Currency Wars 76:/// Overclock unlock quest is reported the same way (grid_fight.isUnlockQuest). 77-var event_quests: ?[]const u32 = null; 78-fn eventUnlockQuest(id: u32) bool { -- 115- quest.progress = 200; 116- quest.status = if (quests.value.questFinished(id.quest_id) or eventUnlockQuest(id.quest_id) or 117: @import("grid_fight.zig").isUnlockQuest(id.quest_id)) 118- protocol.QuestStatus.QUEST_FINISH 119- else // gameserver/src/services/elation.zig 354- if (mech_entrance.matches(req.entry_id, floor) and mech_entrance.enabled(allocator)) 355- return mech_entrance.enterScene(session, req, allocator); 356- if (!entrance.matches(req.entry_id, floor) or !entranceEnabled(allocator)) 357: return @import("grid_fight.zig").onEnterScene(session, packet, allocator); 358- 359- var manager = @import("../manager/scene_mgr.zig").SceneManager.init(allocator, session.player_uid);