diff --git a/game-server/app/servers/guild/handler/gvgBattleHandler.ts b/game-server/app/servers/guild/handler/gvgBattleHandler.ts index 0bad4a1f2..948c6497e 100644 --- a/game-server/app/servers/guild/handler/gvgBattleHandler.ts +++ b/game-server/app/servers/guild/handler/gvgBattleHandler.ts @@ -7,7 +7,7 @@ import { Application, BackendSession, ChannelService, HandlerService, pinus } fr import { resResult, genCode } from "../../../pubUtils/util"; import { GVGLeagueModel } from '../../../db/GVGLeague'; import { getGroupKey, getGVGConfig, getGVGPeriodData, getGVGServerType } from '../../../services/gvg/gvgService'; -import { redisAddBattleScore, battleEndSendMessage, calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBattleRanksByCity, getBirthAreaOfCity, getGVGWarId, getOppHeroes, getTechKnifeHurt, getTechReviveMinus, initRobots, pushTeamMoveMessage, getGVGCitiesInfo, leaveCity, refreshTeams, checkEnterCityTime, generNewLineup, getBattleRank } from '../../../services/gvg/gvgBattleService'; +import { redisAddBattleScore, battleEndSendMessage, calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBattleRanksByCity, getBirthAreaOfCity, getGVGWarId, getOppHeroes, getTechKnifeHurt, getTechReviveMinus, initRobots, pushTeamMoveMessage, getGVGCitiesInfo, leaveCity, refreshTeams, checkEnterCityTime, generNewLineup, getBattleRank, checkSettleStatus } from '../../../services/gvg/gvgBattleService'; import { getGVGBattleData } from '../../../services/gvg/gvgBattleMemory'; import { GVGBattleRecModel } from '../../../db/GVGBattleRec'; import { getFightTimeByPeriod } from '../../../services/gvg/gvgFightService'; @@ -381,6 +381,9 @@ export class GVGBattleHandler { let myTeam = await GVGTeamModel.findMyTeamByCode(roleId, teamCode); if(!myTeam) return resResult(STATUS.GVG_TEAM_NOT_FOUND); + let checkResult = checkSettleStatus(myTeam); + if(checkResult.code != 0) return resResult(checkResult); + let dicAreaPoint = gameData.gvgAreaPoint.get(pointId); if(dicAreaPoint.areaId != myTeam.areaId) return resResult(STATUS.GVG_POINT_NOT_AREA); @@ -490,8 +493,10 @@ export class GVGBattleHandler { if(defenseTeam.curTeamBreak) { let attackScore = calBattleScoreByCe(isSuccess, defenseTeam.lineupCe); let attackCurTeamBreak = attackTeam.curTeamBreak; + let originPointId = attackTeam.originPointId; attackTeam = await GVGTeamModel.addScore(attackTeam.teamCode, attackScore, 0); attackTeam.curTeamBreak = attackCurTeamBreak; + attackTeam.originPointId = originPointId; await redisAddBattleScore(attackTeam, attackScore); } diff --git a/game-server/app/services/gvg/gvgBattleService.ts b/game-server/app/services/gvg/gvgBattleService.ts index baf158b79..6b1a83042 100644 --- a/game-server/app/services/gvg/gvgBattleService.ts +++ b/game-server/app/services/gvg/gvgBattleService.ts @@ -106,7 +106,7 @@ export function checkMoveStatus(team: GVGTeamType, cityId: number, areaId: numbe if(team.pointId > 0) return STATUS.GVG_BATTLE_TEAM_IS_SELLTED; if(team.stopMoveTime > nowSeconds()) return STATUS.GVG_BATTLE_IS_MOVING; if(team.moveCdTime > nowSeconds()) return STATUS.GVG_BATTLE_IS_MOVING_CD; - if(team.lockTime > nowSeconds()) return STATUS.GVG_BATTLE_TEAM_LOCK; + if(team.lockTime > nowSeconds()) return STATUS.GVG_TEAM_DEFENSEING; if(team.restartTime > nowSeconds()) return STATUS.GVG_BATTLE_TEAM_REVIVE; let dicArea = gameData.gvgArea.get(areaId); if(!dicArea) return STATUS.DIC_DATA_NOT_FOUND; @@ -114,6 +114,15 @@ export function checkMoveStatus(team: GVGTeamType, cityId: number, areaId: numbe return STATUS.SUCCESS; } +export function checkSettleStatus(team: GVGTeamType) { + if(!team) return STATUS.GVG_BATTLE_TEAM_NOT_FOUND; + if(team.stopMoveTime > nowSeconds()) return STATUS.GVG_BATTLE_IS_MOVING; + if(team.moveCdTime > nowSeconds()) return STATUS.GVG_BATTLE_IS_MOVING_CD; + if(team.lockTime > nowSeconds()) return STATUS.GVG_TEAM_DEFENSEING; + if(team.restartTime > nowSeconds()) return STATUS.GVG_BATTLE_TEAM_REVIVE; + return STATUS.SUCCESS; +} + export async function initRobots(configId: number, groupKey: string, city: GVGCityType | { cityId: number, guardLeague: string }) { let { cityId, guardLeague = '' } = city; if(guardLeague) return []; @@ -663,8 +672,13 @@ export async function pushTeamBeHurtMessage(team: GVGTeamType, replaceTeam?: GVG if(team.curTeamBreak && team.originPointId > 0) { await sendMessageToGVGAreaByTeamWithSuc(team.groupKey, team.fromAreaId, PUSH_ROUTE.GVG_AREA_POINT_CHANGE, { - cityId: team.cityId, areaId: team.fromAreaId, targetPointId: team.pointId, originPointId: team.originPointId, point: new GVGTeamInListOnPoint(team.originPointId, replaceTeam && !replaceTeam.curTeamBreak, replaceTeam) + cityId: team.cityId, areaId: team.fromAreaId, targetPointId: team.originPointId, originPointId: replaceTeam?.pointId??0, point: new GVGTeamInListOnPoint(team.pointId, true, team) }); + if(!team.curTeamBreak) { + await sendMessageToGVGAreaByTeamWithSuc(replaceTeam.groupKey, replaceTeam.fromAreaId, PUSH_ROUTE.GVG_AREA_POINT_CHANGE, { + cityId: replaceTeam.cityId, areaId: replaceTeam.fromAreaId, targetPointId: replaceTeam.pointId, originPointId: replaceTeam.originPointId, point: new GVGTeamInListOnPoint(replaceTeam.pointId, true, replaceTeam) + }); + } } if(team.curTeamBreak) { diff --git a/shared/consts/statusCode.ts b/shared/consts/statusCode.ts index a4bfb349b..a2f076f8e 100644 --- a/shared/consts/statusCode.ts +++ b/shared/consts/statusCode.ts @@ -382,10 +382,11 @@ export const STATUS = { GVG_TEAM_NOT_SAME_AREA: { code: 21415, simStr: '对方不在同一个区域内' }, GVG_POINT_HAS_SETTLED: { code: 21416, simStr: '该据点已经有其他队伍驻守' }, GVG_POINT_NOT_AREA: { code: 21417, simStr: '您不在该积分点所在区域' }, - GVG_TEAM_NOT_NEED_REVIVE: { code: 21418, simStr: '此队伍不需要复活' }, + GVG_TEAM_NOT_NEED_REVIVE: { code: 21418, simStr: '您的队伍已复活,无需重复复活' }, GVG_BATTLE_IS_MOVING_CD: { code: 21403, simStr: '移动冷却中' }, GVG_BATTLE_TEAM_REVIVE: { code: 21404, simStr: '队伍复活中' }, GVG_BATTLE_TEAM_LOCK: { code: 21405, simStr: '正在有玩家挑战您,请等待' }, + GVG_BATTLE_TEAM_HAS_SELLTED: { code: 21406, simStr: '该编队已驻守据点了' }, // 通用 30000 - 30099 DIC_DATA_NOT_FOUND: { code: 30000, simStr: '数据表未找到' },