🐞 fix(gvg): 修复gvg激战期bug

This commit is contained in:
luying
2023-02-21 17:16:23 +08:00
parent 2dffaa7f80
commit 8a14b5bd48
11 changed files with 71 additions and 38 deletions
@@ -346,7 +346,7 @@ export class GVGBattleHandler {
await addRoleToAreaTeamChannel(roleId, groupKey, areaId, sid); await addRoleToAreaTeamChannel(roleId, groupKey, areaId, sid);
await pushTeamMoveMessage(team); await pushTeamMoveMessage(team);
return resResult(STATUS.SUCCESS, { areaId, cityId, stopMoveTime: team.stopMoveTime }); return resResult(STATUS.SUCCESS, { areaId, cityId, stopMoveTime: team.stopMoveTime, moveCdTime: team.moveCdTime });
} }
// 停止移动 // 停止移动
@@ -495,7 +495,7 @@ export class GVGBattleHandler {
let teamObj = getGVGBattleData(groupKey); let teamObj = getGVGBattleData(groupKey);
teamObj.battleEnd([attackTeam, defenseTeam]); teamObj.battleEnd([attackTeam, defenseTeam]);
// 更新rec // 更新rec
let rec = await GVGBattleRecModel.battleEnd(battleCode, isSuccess); let rec = await GVGBattleRecModel.battleEnd(battleCode, isSuccess, attackTeam, defenseTeam);
await battleEndSendMessage(groupKey, cityId, defenseTeam, attackTeam); await battleEndSendMessage(groupKey, cityId, defenseTeam, attackTeam);
addBattleEndRec(rec); addBattleEndRec(rec);
@@ -87,6 +87,7 @@ export function checkMoveStatus(team: GVGTeamType, cityId: number, areaId: numbe
if(team.cityId != cityId) return STATUS.GVG_BATTLE_IS_NOT_IN_CITY; if(team.cityId != cityId) return STATUS.GVG_BATTLE_IS_NOT_IN_CITY;
if(team.pointId > 0) return STATUS.GVG_BATTLE_TEAM_IS_SELLTED; if(team.pointId > 0) return STATUS.GVG_BATTLE_TEAM_IS_SELLTED;
if(team.stopMoveTime > nowSeconds()) return STATUS.GVG_BATTLE_IS_MOVING; if(team.stopMoveTime > nowSeconds()) return STATUS.GVG_BATTLE_IS_MOVING;
if(team.moveCdTime > nowSeconds()) return STATUS.GVG_BATTLE_IS_MOVING_CD;
let dicArea = gameData.gvgArea.get(areaId); let dicArea = gameData.gvgArea.get(areaId);
if(!dicArea) return STATUS.DIC_DATA_NOT_FOUND; if(!dicArea) return STATUS.DIC_DATA_NOT_FOUND;
if(dicArea.relateArea.indexOf(team.areaId) == -1) return STATUS.GVG_BATTLE_AREA_NOT_RELATE; if(dicArea.relateArea.indexOf(team.areaId) == -1) return STATUS.GVG_BATTLE_AREA_NOT_RELATE;
@@ -397,7 +397,7 @@ export async function saveVestigeRankSchedule() {
let r = new Rank(REDIS_KEY.GVG_VESTIGE_LEAGUE, { groupKey, day}); let r = new Rank(REDIS_KEY.GVG_VESTIGE_LEAGUE, { groupKey, day});
let ranks = await r.getRankByRangeRaw(); let ranks = await r.getRankByRangeRaw();
await GVGVestigeLeagueRankModel.saveRank(groupKey, ranks); await GVGVestigeLeagueRankModel.saveRank(groupKey, ranks);
await addVestigeLeagueRankRec(config.configId, ranks); await addVestigeLeagueRankRec(config.configId, groupKey, ranks);
} }
let memberKeys = await findKeys(`${REDIS_KEY.GVG_VESTIGE_MEMBER_ALL}:${day}:`); let memberKeys = await findKeys(`${REDIS_KEY.GVG_VESTIGE_MEMBER_ALL}:${day}:`);
+25 -22
View File
@@ -42,13 +42,13 @@ function getResourceNameByType(resourceType: GVG_RESOURCE_TYPE) {
export async function addVestigeBattleEndRec(rec: GVGVestigeRecType) { export async function addVestigeBattleEndRec(rec: GVGVestigeRecType) {
if(!rec) return; if(!rec) return;
let { configId, vestigeId } = rec; let { configId, vestigeId, groupKey } = rec;
let vestigeName = gameData.gvgVestigeName.get(vestigeId); let vestigeName = gameData.gvgVestigeName.get(vestigeId);
if(rec.defenseInfo && rec.defenseInfo.isRobot) { // 对手是机器人,驻扎动态 if(rec.defenseInfo && rec.defenseInfo.isRobot) { // 对手是机器人,驻扎动态
let { roleId, roleName, leagueCode, newRank, isSuccess } = rec.attackInfo; let { roleId, roleName, leagueCode, newRank, isSuccess } = rec.attackInfo;
if(isSuccess) { if(isSuccess) {
let params = [ roleName, vestigeName, `第${newRank}名`]; let params = [ roleName, vestigeName, `第${newRank}名`];
await GVGRecModel.addRec({ roleId, leagueCode, configId, type: GVG_REC_TYPE.PREPARE, recId: GVG_REC_ID.SETTLE_POINT, createTime: nowSeconds(), params }); await GVGRecModel.addRec({ roleId, leagueCode, configId, groupKey, type: GVG_REC_TYPE.PREPARE, recId: GVG_REC_ID.SETTLE_POINT, createTime: nowSeconds(), params });
} }
} }
if(rec.defenseInfo && !rec.defenseInfo.isRobot && rec.attackInfo.leagueCode != rec.defenseInfo.leagueCode) { if(rec.defenseInfo && !rec.defenseInfo.isRobot && rec.attackInfo.leagueCode != rec.defenseInfo.leagueCode) {
@@ -56,36 +56,39 @@ export async function addVestigeBattleEndRec(rec: GVGVestigeRecType) {
let { roleId, leagueCode, roleName } = rec.defenseInfo; let { roleId, leagueCode, roleName } = rec.defenseInfo;
if(isSuccess) { if(isSuccess) {
let params = [ roleName, vestigeName, `第${newRank}名`, leagueName]; let params = [ roleName, vestigeName, `第${newRank}名`, leagueName];
await GVGRecModel.addRec({ roleId, leagueCode, configId, type: GVG_REC_TYPE.PREPARE, recId: GVG_REC_ID.POINT_BE_GRAB, createTime: nowSeconds(), params }); await GVGRecModel.addRec({ roleId, leagueCode, configId, groupKey, type: GVG_REC_TYPE.PREPARE, recId: GVG_REC_ID.POINT_BE_GRAB, createTime: nowSeconds(), params });
} }
} }
} }
export async function addVestigeLeagueRankRec(configId: number, ranks: { rank: number, field: string }[]) { export async function addVestigeLeagueRankRec(configId: number, groupKey: string, ranks: { rank: number, field: string }[]) {
await GVGRecModel.addRecs(ranks.map(({ rank, field: leagueCode }) => { await GVGRecModel.addRecs(ranks.map(({ rank, field: leagueCode }) => {
let params = [ `第${rank}名`]; let params = [ `第${rank}名`];
return { leagueCode, configId, type: GVG_REC_TYPE.PREPARE, recId: GVG_REC_ID.VESTIGE_RANK, createTime: nowSeconds(), params }; return { leagueCode, configId, groupKey, type: GVG_REC_TYPE.PREPARE, recId: GVG_REC_ID.VESTIGE_RANK, createTime: nowSeconds(), params };
})); }));
} }
export async function addBattleEndRec(rec: GVGBattleRecType) { export async function addBattleEndRec(rec: GVGBattleRecType) {
let { isSuccess, attackTeam, defenseTeam, configId } = rec; let { isSuccess, attackTeamAfter: attackTeam, defenseTeamAfter: defenseTeam, configId, groupKey } = rec;
let { roleId, leagueCode, cityId, index, curTeamBreak, originPointId } = defenseTeam; let { roleId, leagueCode, cityId, index, curTeamBreak, originPointId } = defenseTeam;
if(!defenseTeam.isRobot) { // 防守的不是机器 if(isSuccess) {
if(isSuccess) { if(!defenseTeam.isRobot) {
await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, type: GVG_REC_TYPE.BATTLE_BY_ROLE, recId: GVG_REC_ID.TEAM_BE_HIT, createTime: nowSeconds(), params: [`${attackTeam.roleName}`, `队伍${index}`] }); await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, groupKey, type: GVG_REC_TYPE.BATTLE_BY_ROLE, recId: GVG_REC_ID.TEAM_BE_HIT, createTime: nowSeconds(), params: [`${attackTeam.roleName}`, `队伍${index}`] });
if(curTeamBreak && originPointId > 0 ) { }
await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, type: GVG_REC_TYPE.BATTLE_BY_ROLE, recId: GVG_REC_ID.TEAM_LOST_POINT, createTime: nowSeconds(), params: [`${attackTeam.roleName}`, `队伍${index}`, getPointName(originPointId)] }); if(curTeamBreak && originPointId > 0 ) {
await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, type: GVG_REC_TYPE.BATTLE_BY_CITY, recId: GVG_REC_ID.CITY_OCCUPY_CHANGE, createTime: nowSeconds(), params: [`${attackTeam.roleName}`, `${defenseTeam.roleName}`, getPointName(originPointId)] }); if(!defenseTeam.isRobot) {
await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, type: GVG_REC_TYPE.BATTLE_BY_LEAGUE, recId: GVG_REC_ID.LEAGUE_OCCUPY_CHANGE, createTime: nowSeconds(), params: [`${attackTeam.roleName}`, `${defenseTeam.roleName}`, getPointName(originPointId)] }); await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, groupKey, type: GVG_REC_TYPE.BATTLE_BY_ROLE, recId: GVG_REC_ID.TEAM_LOST_POINT, createTime: nowSeconds(), params: [`${attackTeam.roleName}`, `队伍${index}`, getPointName(originPointId)] });
} }
} else { await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, groupKey, type: GVG_REC_TYPE.BATTLE_BY_CITY, recId: GVG_REC_ID.CITY_OCCUPY_CHANGE, createTime: nowSeconds(), params: [`${attackTeam.roleName}`, `${defenseTeam.roleName}`, getPointName(originPointId)] });
await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, type: GVG_REC_TYPE.BATTLE_BY_ROLE, recId: GVG_REC_ID.TEAM_GUARD_SUCCESS, createTime: nowSeconds(), params: [`${attackTeam.roleName}`, `队伍${index}`] }); await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, groupKey, type: GVG_REC_TYPE.BATTLE_BY_LEAGUE, recId: GVG_REC_ID.LEAGUE_OCCUPY_CHANGE, createTime: nowSeconds(), params: [`${attackTeam.roleName}`, `${defenseTeam.roleName}`, getPointName(originPointId)] });
}
} else {
if(!defenseTeam.isRobot) {
await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, groupKey, type: GVG_REC_TYPE.BATTLE_BY_ROLE, recId: GVG_REC_ID.TEAM_GUARD_SUCCESS, createTime: nowSeconds(), params: [`${attackTeam.roleName}`, `队伍${index}`] });
} }
} }
if(defenseTeam.isRobot && defenseTeam.isCatapult) { if(defenseTeam.isRobot && defenseTeam.isCatapult) {
await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, type: GVG_REC_TYPE.BATTLE_BY_CITY, recId: GVG_REC_ID.CITY_CATAPULT, createTime: nowSeconds(), params: [`${attackTeam.roleName}`, getCityName(cityId)] }); await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, groupKey, type: GVG_REC_TYPE.BATTLE_BY_CITY, recId: GVG_REC_ID.CITY_CATAPULT, createTime: nowSeconds(), params: [`${attackTeam.roleName}`, getCityName(cityId)] });
} }
} }
@@ -103,12 +106,12 @@ function getCityName(cityId: number) {
} }
export async function addTeamSettleRec(team: GVGTeamType) { export async function addTeamSettleRec(team: GVGTeamType) {
let { roleId, roleName, leagueCode, configId, cityId, pointId } = team; let { roleId, roleName, leagueCode, configId, cityId, pointId, groupKey } = team;
await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, type: GVG_REC_TYPE.BATTLE_BY_CITY, recId: GVG_REC_ID.CITY_TEAM_SETTLE, createTime: nowSeconds(), params: [`${roleName}`, getPointName(pointId)] }); await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, groupKey, type: GVG_REC_TYPE.BATTLE_BY_CITY, recId: GVG_REC_ID.CITY_TEAM_SETTLE, createTime: nowSeconds(), params: [`${roleName}`, getPointName(pointId)] });
await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, type: GVG_REC_TYPE.BATTLE_BY_LEAGUE, recId: GVG_REC_ID.LEAGUE_TEAM_SETTLE, createTime: nowSeconds(), params: [`${roleName}`, getPointName(pointId)] }); await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, groupKey, type: GVG_REC_TYPE.BATTLE_BY_LEAGUE, recId: GVG_REC_ID.LEAGUE_TEAM_SETTLE, createTime: nowSeconds(), params: [`${roleName}`, getPointName(pointId)] });
} }
export async function addTeamLeaveRec(team: GVGTeamType, pointId: number) { export async function addTeamLeaveRec(team: GVGTeamType, pointId: number) {
let { roleId, roleName, leagueCode, configId, cityId } = team; let { roleId, roleName, leagueCode, configId, cityId, groupKey } = team;
await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, type: GVG_REC_TYPE.BATTLE_BY_LEAGUE, recId: GVG_REC_ID.LEAGUE_TEAM_LEAVE, createTime: nowSeconds(), params: [`${roleName}`, getPointName(pointId)] }); await GVGRecModel.addRec({ roleId, leagueCode, configId, cityId, groupKey, type: GVG_REC_TYPE.BATTLE_BY_LEAGUE, recId: GVG_REC_ID.LEAGUE_TEAM_LEAVE, createTime: nowSeconds(), params: [`${roleName}`, getPointName(pointId)] });
} }
+16 -9
View File
@@ -80,11 +80,14 @@ export async function setGVGConfig(config?: GVGConfigType) {
if(!config) { if(!config) {
config = await GVGConfigModel.findConfig(); config = await GVGConfigModel.findConfig();
} }
pinus.app.set('gvgConfigId', config.configId); if(config.teamTime > nowSeconds()) {
pinus.app.set('gvgTeamTime', config.teamTime); config = null;
pinus.app.set('gvgPrepareTime', config.prepareTime); }
pinus.app.set('gvgBattleTime', config.battleTime); pinus.app.set('gvgConfigId', config?.configId||0);
pinus.app.set('gvgScheduleTime', config.scheduleTime); pinus.app.set('gvgTeamTime', config?.teamTime||0);
pinus.app.set('gvgPrepareTime', config?.prepareTime||0);
pinus.app.set('gvgBattleTime', config?.battleTime||0);
pinus.app.set('gvgScheduleTime', config?.scheduleTime||0);
} }
/** /**
@@ -138,18 +141,22 @@ export function getGVGPeriodData() {
countdownTime = scheduleTime; break; countdownTime = scheduleTime; break;
} }
} }
console.log('######## getGVGPeriodData', configId, teamTime, prepareTime, battleTime, scheduleTime)
return { configId, period, countdownTime }; return { configId, period, countdownTime };
} }
export function getCurPeriod() { export function getCurPeriod() {
let { teamTime, prepareTime, battleTime } = getGVGConfig(); let { teamTime, prepareTime, battleTime, scheduleTime } = getGVGConfig();
let now = nowSeconds(); let now = nowSeconds();
if(now >= teamTime && now < prepareTime) { if(now >= teamTime && now < prepareTime) {
return GVG_PERIOD.TEAM; return GVG_PERIOD.TEAM;
} else if (now >= prepareTime && now < battleTime) { } else if (now >= prepareTime && now < battleTime) {
return GVG_PERIOD.PREPARE; return GVG_PERIOD.PREPARE;
} else { } else if (now >= battleTime && now < scheduleTime){
return GVG_PERIOD.BATTLE; return GVG_PERIOD.BATTLE;
} else {
return GVG_PERIOD.NO;
} }
} }
@@ -204,7 +211,7 @@ export async function getGVGInfoInGuild(roleId: string, guild: GuildType) {
let { configId, period, countdownTime } = getGVGPeriodData(); let { configId, period, countdownTime } = getGVGPeriodData();
let type = await getGVGServerType(serverId); let type = await getGVGServerType(serverId);
if(hasLeague) { if(hasLeague && configId > 0) {
return { return {
hasLeague, hasLeague,
configId, period, countdownTime, configId, period, countdownTime,
@@ -257,7 +264,7 @@ export async function getMainData(roleId: string, leagueCode: string, configId:
let leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, league.leagueCode); let leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, league.leagueCode);
data.setLeagueParpare(leaguePrepare); data.setLeagueParpare(leaguePrepare);
data.setTechQueue(leaguePrepare.techQueue); data.setTechQueue(leaguePrepare?.techQueue||[]);
let userData = await GVGUserDataModel.findByRole(configId, league.leagueCode, roleId); let userData = await GVGUserDataModel.findByRole(configId, league.leagueCode, roleId);
let items = await GVGUserItemModel.findByRole(configId, league.leagueCode, roleId); let items = await GVGUserItemModel.findByRole(configId, league.leagueCode, roleId);
+12 -1
View File
@@ -905,6 +905,9 @@ export async function initGVGConfigSchedule() {
config = await createNewGVGConfig(); config = await createNewGVGConfig();
} }
scheduleJob(`gvgTeam`, config.teamTime * 1000, async () => {
await pinus.app.rpc.guild.guildRemote.setGVGConfig.broadcast(config);
})
scheduleJob(`gvgConfig`, config.scheduleTime * 1000, createNewGVGConfig); scheduleJob(`gvgConfig`, config.scheduleTime * 1000, createNewGVGConfig);
if(nowSeconds() > config.prepareTime) { if(nowSeconds() > config.prepareTime) {
@@ -917,7 +920,11 @@ export async function initGVGConfigSchedule() {
let { startFightTime, endFightTime } = getFightTimeByPeriod(GVG_PERIOD.BATTLE, config.battleTime); let { startFightTime, endFightTime } = getFightTimeByPeriod(GVG_PERIOD.BATTLE, config.battleTime);
scheduleJob(`gvgBattleStartSchedule`, startFightTime * 1000, gvgBattleStartSchedule); if(nowSeconds() > startFightTime && nowSeconds() < endFightTime) {
startGvgBattleSeconds();
} else {
scheduleJob(`gvgBattleStartSchedule`, startFightTime * 1000, gvgBattleStartSchedule);
}
scheduleJob(`gvgBattleEndSchedule`, endFightTime * 1000, gvgBattleEndSchedule); scheduleJob(`gvgBattleEndSchedule`, endFightTime * 1000, gvgBattleEndSchedule);
} }
@@ -931,6 +938,10 @@ export async function gvgBattleStartSchedule() {
if(guildServers.length > 0) { if(guildServers.length > 0) {
pinus.app.rpc.guild.guildRemote.gvgBattleStart.toServer(getRandSingleEelm(guildServers).id); pinus.app.rpc.guild.guildRemote.gvgBattleStart.toServer(getRandSingleEelm(guildServers).id);
} }
startGvgBattleSeconds();
}
function startGvgBattleSeconds() {
// 发放道具 // 发放道具
if(gvgBattleSecondJob) gvgBattleSecondJob.cancel(); if(gvgBattleSecondJob) gvgBattleSecondJob.cancel();
gvgBattleSecondJob = scheduleJob('gvgBattleSecondJob', '*/5 * * * * *', gvgBattleSecondSchedule); gvgBattleSecondJob = scheduleJob('gvgBattleSecondJob', '*/5 * * * * *', gvgBattleSecondSchedule);
+1
View File
@@ -1,4 +1,5 @@
export enum GVG_PERIOD { export enum GVG_PERIOD {
NO = 0, // 什么期都不是
TEAM = 1, // 组建期 TEAM = 1, // 组建期
PREPARE = 2, // 备战期 PREPARE = 2, // 备战期
BATTLE = 3, // 战斗器 BATTLE = 3, // 战斗器
+3
View File
@@ -325,6 +325,9 @@ export function getInfoKeyByRedisKey(redisKey: REDIS_KEY) {
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] }; return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
case REDIS_KEY.GVG_BATTLE_LEAGUE_RANK: // 激战期联军排行榜 case REDIS_KEY.GVG_BATTLE_LEAGUE_RANK: // 激战期联军排行榜
return { infoKey: REDIS_KEY.LEAGUE_INFO, extraKey: [] }; return { infoKey: REDIS_KEY.LEAGUE_INFO, extraKey: [] };
case REDIS_KEY.GVG_BATTLE_LEAGUE_RANK_BY_CITY: // 激战期联军排行榜
return { infoKey: REDIS_KEY.LEAGUE_INFO, extraKey: [] };
default: default:
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] }; return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
} }
+1
View File
@@ -380,6 +380,7 @@ export const STATUS = {
GVG_POINT_HAS_SETTLED: { code: 21416, simStr: '该据点已经有其他队伍驻守' }, GVG_POINT_HAS_SETTLED: { code: 21416, simStr: '该据点已经有其他队伍驻守' },
GVG_POINT_NOT_AREA: { code: 21417, 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: '移动冷却中' },
// 通用 30000 - 30099 // 通用 30000 - 30099
DIC_DATA_NOT_FOUND: { code: 30000, simStr: '数据表未找到' }, DIC_DATA_NOT_FOUND: { code: 30000, simStr: '数据表未找到' },
+8 -2
View File
@@ -82,6 +82,12 @@ export default class GVGBattleRec extends BaseModel {
@prop({ required: true, type: TeamInfo, _id: false }) @prop({ required: true, type: TeamInfo, _id: false })
defenseTeam: TeamInfo; // 防守队伍 defenseTeam: TeamInfo; // 防守队伍
@prop({ required: true, type: TeamInfo, _id: false })
attackTeamAfter: TeamInfo; // 挑战队伍
@prop({ required: true, type: TeamInfo, _id: false })
defenseTeamAfter: TeamInfo; // 防守队伍
@prop({ required: true }) @prop({ required: true })
isSuccess: boolean; isSuccess: boolean;
@@ -99,8 +105,8 @@ export default class GVGBattleRec extends BaseModel {
return result; return result;
} }
public static async battleEnd(battleCode: string, isSuccess: boolean) { public static async battleEnd(battleCode: string, isSuccess: boolean, attackTeam: GVGTeamType, defenseTeam: GVGTeamType) {
const result: GVGBattleRecType = await GVGBattleRecModel.findOneAndUpdate({ battleCode }, { $set: { isSuccess, battleEndTime: nowSeconds() } }, { new: true }).lean(); const result: GVGBattleRecType = await GVGBattleRecModel.findOneAndUpdate({ battleCode }, { $set: { isSuccess, battleEndTime: nowSeconds(), attackTeamAfter: attackTeam, defenseTeamAfter: defenseTeam } }, { new: true }).lean();
return result; return result;
} }
} }
+1 -1
View File
@@ -758,7 +758,7 @@ export class MyTeamInfo {
this.index = team.index; this.index = team.index;
this.head = team.head; this.head = team.head;
this.frame = team.spine; this.frame = team.spine;
this.lineup = team.lineup.map(({ actorId, dataId, outIndex }) => ({ actorId, dataId, order: outIndex })); if(team.lineup) this.lineup = team.lineup.map(({ actorId, dataId, outIndex }) => ({ actorId, dataId, order: outIndex }));
this.durability = team.durability; this.durability = team.durability;
this.maxDurability = team.maxDurability; this.maxDurability = team.maxDurability;
this.restartTime = team.restartTime; this.restartTime = team.restartTime;