🐞 fix(gvg): 双方都在积分点时挑战替换据点

This commit is contained in:
luying
2023-03-02 21:14:50 +08:00
parent a1c6deae92
commit fd71dfbb15
3 changed files with 24 additions and 4 deletions

View File

@@ -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);
}

View File

@@ -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) {

View File

@@ -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: '数据表未找到' },