diff --git a/game-server/app/servers/battle/handler/pvpHandler.ts b/game-server/app/servers/battle/handler/pvpHandler.ts index 92a8fd43a..cc333657f 100644 --- a/game-server/app/servers/battle/handler/pvpHandler.ts +++ b/game-server/app/servers/battle/handler/pvpHandler.ts @@ -159,13 +159,28 @@ export class PvpHandler { let pvpDefense = await PvpDefenseModel.findByRoleId(roleId); if (!pvpDefense) return resResult(STATUS.PVP_NOT_OPEN); // 检查挑战次数 + let seasonNum: number = this.app.get('pvpSeasonNum'); let seasonEndTime: number = this.app.get('pvpSeasonEndTime'); let { challengeCnt, challengeRefTime } = refChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime); if (challengeCnt == 0) { return resResult(STATUS.PVP_CHALLENGE_TIMES_NOT_ENOUGH); } - await PvpDefenseModel.updateInfo(roleId, { challengeCnt, challengeRefTime }); - let { oppPlayers } = pvpDefense; + + // 对手记录更新 + await PvpHistoryOppModel.setStatus(roleId, oppRoleId, 1); + + let update: pvpUpdateInter = {}; + // 刷新对手 + const role = await RoleModel.findByRoleId(roleId, null, true); + let oppPlayers = await refreshEnemies(role, seasonNum, pvpDefense.score ,pvpDefense.attack.score, pvpDefense.attack.pLv||1); + update.oppPlayers = oppPlayers; + + // 减少挑战次数 + let refChallengeObj = refChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime); + refChallengeObj.challengeCnt--; + update = {...update, ...refChallengeObj}; + + pvpDefense = await PvpDefenseModel.updateInfo(roleId, update); let curOpp = oppPlayers.find(cur => cur.roleId == oppRoleId); if (!curOpp) return resResult(STATUS.PVP_ROLE_NOT_FOUND) @@ -183,8 +198,14 @@ export class PvpHandler { }, true); await checkTask(roleId, sid, TASK_TYPE.PVP, 1, true, {}); + let result = new PvpDataReturn(); // 返回对象 + result.setPvpDefense(pvpDefense); + let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum); + result.setOppPlayers(oppPlayersReturn); + return resResult(STATUS.SUCCESS, { - battleCode + battleCode, + ...pick(result, ['oppPlayers', 'challengeCnt', 'challengeRefTime']) }); } @@ -232,25 +253,13 @@ export class PvpHandler { // 战报记录 await PvpRecordModel.createRec({ roleId1: roleId, roleId2: robotIdComBack(oppRoleId), warId: BattleRecord.battleId, attackInfo, defenseInfo, createTime: nowSeconds() }); - // 对手记录更新 - await PvpHistoryOppModel.setStatus(roleId, oppRoleId, 1); - - // 刷新对手 let seasonNum: number = this.app.get('pvpSeasonNum'); - let seasonEndTime: number = this.app.get('pvpSeasonEndTime'); - let oppPlayers = await refreshEnemies(role, seasonNum, pvpDefense.score ,pvpDefense.attack.score, pvpDefense.attack.pLv||1); - update.oppPlayers = oppPlayers; // 更新battleRecord await BattleRecordModel.updateBattleRecordByCode(battleCode, { $set: { status: isSuccess ? 1 : 2 } }, true); - // 减少挑战次数 - let refChallengeObj = refChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime); - refChallengeObj.challengeCnt--; - update = {...update, ...refChallengeObj}; - pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, update);