🐞 fix(正在战斗中的队伍不可移动):
This commit is contained in:
@@ -17,7 +17,7 @@ import { dispatch } from "../../pubUtils/dispatcher";
|
||||
import { Rank } from "../rankService";
|
||||
import { LeagueRankInfo, RoleRankInfo } from "../../domain/rank";
|
||||
import { findKeys, getAllServerName } from "../redisService";
|
||||
import { sendMessageToGVGAreaByTeamWithSuc, sendMessageToGVGAreaWithSuc, sendMessageToGVGCityWithSuc } from "../pushService";
|
||||
import { sendMessageToGVGAreaByTeamWithSuc, sendMessageToGVGAreaWithSuc, sendMessageToGVGCityWithSuc, sendMessageToUserWithSuc } from "../pushService";
|
||||
import { sendMailByContent, sendMailToLeagueByContent } from "../mailService";
|
||||
import { GVGCityAreaPointModel } from "../../db/GVGCityAreaPoint";
|
||||
import { addCityGuardMessage } from "./gvgRecService";
|
||||
@@ -106,6 +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_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;
|
||||
@@ -310,6 +311,7 @@ export function checkGVGBattleStart(roleId: string, attackTeam: GVGTeamType, def
|
||||
|
||||
if(attackTeam.attackTime > nowSeconds()) return STATUS.GVG_TEAM_ATTACKING;
|
||||
if(defenseTeam.defenseTime > nowSeconds() || defenseTeam.lockTime > nowSeconds()) return STATUS.GVG_TEAM_DEFENSEING;
|
||||
if(attackTeam.lockTime > nowSeconds()) return STATUS.GVG_BATTLE_TEAM_LOCK;
|
||||
if(attackTeam.durability <= 0) return STATUS.GVG_ATTACK_TEAM_BROKEN;
|
||||
if(defenseTeam.durability <= 0) return STATUS.GVG_DEFENSE_TEAM_BROKEN;
|
||||
|
||||
@@ -364,7 +366,9 @@ export async function initCatapult(cityId: number, groupKey: string, leagueCode:
|
||||
|
||||
// 投石车投伤害
|
||||
export async function catapultHurt() {
|
||||
let { configId } = getGVGConfig();
|
||||
let { configId, period } = getGVGPeriodData();
|
||||
let { startFightTime, endFightTime } = getFightTimeByPeriod(period);
|
||||
if(nowSeconds() < startFightTime || nowSeconds() > endFightTime) return;
|
||||
for(let [_key, teamObj] of getGVGBattleMap()) {
|
||||
let teams = teamObj.findCatapult();
|
||||
for(let catapult of teams) {
|
||||
@@ -381,18 +385,28 @@ export async function catapultHurt() {
|
||||
}
|
||||
teamObj.battleEnd(teams);
|
||||
if(teams.length > 0) {
|
||||
await sendMessageToGVGAreaByTeamWithSuc(teamObj.groupKey, areaId, PUSH_ROUTE.GVG_TEAM_ATTACKED, {
|
||||
cityId: catapult.cityId, areaId, attackType: GVG_ATTACK_TYPE.CATAPULT, teams: teams.map(team => new GVGTeamInList(team))
|
||||
});
|
||||
await sendMessageToGVGCityWithSuc(teamObj.groupKey, catapult.cityId, PUSH_ROUTE.GVG_SPINE_ATTACKED, {
|
||||
cityId: catapult.cityId, areaId, teamCode: catapult.teamCode, attackType: GVG_ATTACK_TYPE.CATAPULT, spines: teams.map(team => new GVGAttackSpine(team, catapult.captapultAtk))
|
||||
});
|
||||
let roleToTeams = new Map<string, GVGTeamInList[]>();
|
||||
let areaTeams: GVGTeamInList[] = [];
|
||||
for(let team of teams) {
|
||||
await pushTeamBeHurtMessage(team);
|
||||
if(team.curTeamBreak && team.originPointId > 0) {
|
||||
await GVGCityAreaPointModel.leavePoint(configId, teamObj.groupKey, team.originPointId);
|
||||
}
|
||||
if(!roleToTeams.has(team.roleId)) roleToTeams.set(team.roleId, []);
|
||||
roleToTeams.get(team.roleId).push(new GVGTeamInList(team));
|
||||
areaTeams.push(new GVGTeamInList(team));
|
||||
}
|
||||
await sendMessageToGVGAreaByTeamWithSuc(teamObj.groupKey, areaId, PUSH_ROUTE.GVG_TEAM_ATTACKED, {
|
||||
cityId: catapult.cityId, areaId, attackType: GVG_ATTACK_TYPE.CATAPULT, teams: areaTeams
|
||||
});
|
||||
for(let [roleId, myTeams] of roleToTeams) {
|
||||
await sendMessageToUserWithSuc(roleId, PUSH_ROUTE.GVG_MY_TEAM_ATTACKED, {
|
||||
cityId: catapult.cityId, areaId, attackType: GVG_ATTACK_TYPE.CATAPULT, teams: myTeams
|
||||
});
|
||||
}
|
||||
await sendMessageToGVGCityWithSuc(teamObj.groupKey, catapult.cityId, PUSH_ROUTE.GVG_SPINE_ATTACKED, {
|
||||
cityId: catapult.cityId, areaId, teamCode: catapult.teamCode, attackType: GVG_ATTACK_TYPE.CATAPULT, spines: teams.map(team => new GVGAttackSpine(team, catapult.captapultAtk))
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -479,9 +493,11 @@ export async function gvgBattleSeconds() {
|
||||
|
||||
}
|
||||
|
||||
for(let { groupKey, cityId } of keys) {
|
||||
let { ranks } = await getBattleRanksByCity(configId, groupKey, cityId);
|
||||
await sendMessageToGVGCityWithSuc(groupKey, cityId, PUSH_ROUTE.GVG_CITY_RANK_UPDATE, { cityId, ranks });
|
||||
if(startFightTime <= nowSeconds() && endFightTime >= nowSeconds()) {
|
||||
for(let { groupKey, cityId } of keys) {
|
||||
let { ranks } = await getBattleRanksByCity(configId, groupKey, cityId);
|
||||
await sendMessageToGVGCityWithSuc(groupKey, cityId, PUSH_ROUTE.GVG_CITY_RANK_UPDATE, { cityId, ranks });
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -588,6 +604,11 @@ export async function battleEndSendMessage(groupKey: string, cityId: number, def
|
||||
await sendMessageToGVGAreaByTeamWithSuc(groupKey, areaId, PUSH_ROUTE.GVG_TEAM_ATTACKED, {
|
||||
cityId, areaId, attackType, teams: [new GVGTeamInList(defenseTeam), new GVGTeamInList(attackTeam)]
|
||||
});
|
||||
if(!defenseTeam.isRobot) {
|
||||
await sendMessageToUserWithSuc(defenseTeam.roleId, PUSH_ROUTE.GVG_MY_TEAM_ATTACKED, {
|
||||
cityId, areaId, attackType, teams: [new GVGTeamInList(defenseTeam)]
|
||||
});
|
||||
}
|
||||
await pushTeamBeHurtMessage(defenseTeam, attackTeam);
|
||||
await pushTeamBeHurtMessage(attackTeam);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user