✨ feat(gvg): 激战期获取挑战对手阵容
This commit is contained in:
@@ -8,7 +8,7 @@ import { Application, BackendSession, ChannelService, HandlerService } from "pin
|
||||
import { resResult, genCode } from "../../../pubUtils/util";
|
||||
import { GVGLeagueModel } from '../../../db/GVGLeague';
|
||||
import { checkGVGPeriod, getGroupIdOfServer, getGVGConfig, getGVGPeriodData, getGVGServerType } from '../../../services/gvg/gvgService';
|
||||
import { calBattleScoreByCe, calLeagueScore, checkAreaIsInCity, checkMoveStatus, getBirthAreaOfCity, initRobots, teamBreak } from '../../../services/gvg/gvgBattleService';
|
||||
import { calBattleScoreByCe, checkAreaIsInCity, checkMoveStatus, getBirthAreaOfCity, getGVGWarId, getOppHeroes, initRobots, teamBreak } from '../../../services/gvg/gvgBattleService';
|
||||
import { getGVGBattleData } from '../../../services/gvg/gvgBattleMemory';
|
||||
import { nowSeconds } from '../../../pubUtils/timeUtil';
|
||||
import { GVGBattleRecModel } from '../../../db/GVGBattleRec';
|
||||
@@ -198,7 +198,7 @@ export class GVGBattleHandler {
|
||||
teams = await GVGTeamModel.findByRole(roleId, '-_id');
|
||||
// 更新内存队伍信息
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
teamObj.enterCity(teams);
|
||||
teamObj.enterCity(...teams);
|
||||
}
|
||||
|
||||
const recs = await GVGRecModel.findByCity(cityId, configId);
|
||||
@@ -289,10 +289,8 @@ export class GVGBattleHandler {
|
||||
let teams = await GVGTeamModel.findByAreaId(groupId, serverType, cityId, myTeam.areaId);
|
||||
let points: GVGTeamInListOnPoint[] = [], players: GVGTeamInList[] = [];
|
||||
let pointIds = gameData.gvgPointByAreaId.get(myTeam.areaId)||[];
|
||||
console.log('#### teams', teams, teams.length);
|
||||
for(let pointId of pointIds) {
|
||||
let team = teams.find(cur => cur.pointId == pointId);
|
||||
console.log('#### point', pointId, team);
|
||||
let obj = new GVGTeamInListOnPoint(pointId, !!team, team);
|
||||
points.push(obj);
|
||||
}
|
||||
@@ -387,16 +385,18 @@ export class GVGBattleHandler {
|
||||
if(attackTeam.durability <= 0) return resResult(STATUS.GVG_ATTACK_TEAM_BROKEN);
|
||||
if(defenseTeam.durability <= 0) return resResult(STATUS.GVG_DEFENSE_TEAM_BROKEN);
|
||||
|
||||
const battleRecord = await GVGBattleRecModel.createRec(attackTeam, defenseTeam);
|
||||
const warId = getGVGWarId(defenseTeam);
|
||||
const battleRecord = await GVGBattleRecModel.createRec(warId, attackTeam, defenseTeam);
|
||||
|
||||
attackTeam = await GVGTeamModel.battleStartLockAttack(teamCode);
|
||||
defenseTeam = await GVGTeamModel.battleStartLockDefense(oppoTeamCode, teamCode);
|
||||
// 内存处理
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
teamObj.setTime(teamCode, attackTeam);
|
||||
teamObj.setTime(teamCode, defenseTeam);
|
||||
teamObj.setTime(attackTeam.teamCode, attackTeam);
|
||||
teamObj.setTime(defenseTeam.teamCode, defenseTeam);
|
||||
let heroes = getOppHeroes(warId, defenseTeam.isRobot, defenseTeam.lineup)
|
||||
|
||||
return resResult(STATUS.SUCCESS, { battleCode: battleRecord.battleCode, curTeam: attackTeam });
|
||||
return resResult(STATUS.SUCCESS, { battleCode: battleRecord.battleCode, warId, isRobot: defenseTeam.isRobot, heroes, curTeam: attackTeam });
|
||||
}
|
||||
|
||||
// 队伍停止攻击
|
||||
@@ -417,17 +417,17 @@ export class GVGBattleHandler {
|
||||
|
||||
// 计算并更新两支队伍耐久
|
||||
let { win, fail } = gameData.gvgBattleDurabilityMinus;
|
||||
attackTeam = await GVGTeamModel.battleEndAttack(attackTeam.teamCode, isSuccess? -win: -fail, calBattleScoreByCe(isSuccess, attackTeam.lineupCe), calLeagueScore(defenseTeam));
|
||||
attackTeam = await GVGTeamModel.battleEndAttack(attackTeam.teamCode, isSuccess? -win: -fail, calBattleScoreByCe(isSuccess, attackTeam.lineupCe));
|
||||
defenseTeam = await GVGTeamModel.battleEndDefense(defenseTeam.teamCode, isSuccess? -fail: -win, calBattleScoreByCe(isSuccess, defenseTeam.lineupCe));
|
||||
|
||||
if(attackTeam.durability <= 0) attackTeam = await teamBreak(city, attackTeam);
|
||||
if(defenseTeam.durability <= 0) defenseTeam = await teamBreak(city, defenseTeam);
|
||||
|
||||
// ! 推送战斗结果给对手队伍
|
||||
// const channel = this.channelService.getChannel(teamCode, false);
|
||||
// if (!!channel) {
|
||||
// channel.pushMessage('onBattleResult', { isSuccess });
|
||||
// }
|
||||
// 更新内存
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
teamObj.battleEnd([attackTeam, defenseTeam]);
|
||||
// 更新rec
|
||||
await GVGBattleRecModel.battleEnd(battleCode, isSuccess);
|
||||
// TODO 完善推送
|
||||
if(!defenseTeam.isRobot) {
|
||||
sendMessageToUserWithSuc(defenseTeam.roleId, PUSH_ROUTE.GVG_TEAM_ATTACKED, { cityId, areaId: defenseTeam.areaId, teams: [defenseTeam] });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user