Merge branch 'feature/test'
This commit is contained in:
@@ -159,14 +159,13 @@ 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;
|
||||
let curOpp = oppPlayers.find(cur => cur.roleId == oppRoleId);
|
||||
let curOpp = pvpDefense.oppPlayers.find(cur => cur.roleId == oppRoleId);
|
||||
if (!curOpp) return resResult(STATUS.PVP_ROLE_NOT_FOUND)
|
||||
|
||||
const battleCode = genCode(8); // 关卡唯一值
|
||||
@@ -183,8 +182,32 @@ export class PvpHandler {
|
||||
}, true);
|
||||
await checkTask(roleId, sid, TASK_TYPE.PVP, 1, true, {});
|
||||
|
||||
// 对手记录更新
|
||||
await PvpHistoryOppModel.setStatus(roleId, oppRoleId, 1);
|
||||
|
||||
let update: pvpUpdateInter = {
|
||||
oppBeforePlayers: pvpDefense.oppPlayers
|
||||
};
|
||||
// 刷新对手
|
||||
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.updateInfoAndInclude(roleId, update);
|
||||
|
||||
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'])
|
||||
});
|
||||
}
|
||||
|
||||
@@ -225,32 +248,20 @@ export class PvpHandler {
|
||||
let { attackInfo, showHeroScores, updateParam } = myRecInfo
|
||||
update = { ...update, ...updateParam };
|
||||
|
||||
let curOpp = pvpDefense.oppPlayers.find(cur => cur.roleId == oppRoleId && cur.pos == pos);
|
||||
let curOpp = pvpDefense.oppBeforePlayers.find(cur => cur.roleId == oppRoleId && cur.pos == pos);
|
||||
if (!curOpp) return resResult(STATUS.PVP_ROLE_NOT_FOUND);
|
||||
const defenseInfo = await generPVPOppRecInfo(isSuccess, curOpp, oppHeroes, role.lv);
|
||||
|
||||
// 战报记录
|
||||
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);
|
||||
|
||||
|
||||
@@ -354,14 +365,14 @@ export class PvpHandler {
|
||||
let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
|
||||
let refChallengeObj = refChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime);
|
||||
// 更新挑战阵容
|
||||
let score = 0;
|
||||
let scores: number[] = [];
|
||||
for(let { actorId } of heroes) {
|
||||
let heroScore = pvpDefense.heroScores.find(cur => cur.hid == actorId);
|
||||
if(heroScore) {
|
||||
score += heroScore.score;
|
||||
scores.push(heroScore.score);
|
||||
}
|
||||
}
|
||||
let attack = new Attack(heroes, score);
|
||||
let attack = new Attack(heroes, scores);
|
||||
let lineupCe = await generPvpLineupCe(roleId, pvpDefense.lineupCe, attack.heroes, []);
|
||||
// 刷对手
|
||||
let role = <RoleType>pvpDefense.role;
|
||||
@@ -391,11 +402,11 @@ export class PvpHandler {
|
||||
let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
|
||||
let refChallengeObj = refChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime);
|
||||
// 更新防守阵容
|
||||
let score = 0, heroIdMap = new Map<number, string>(), hids: number[] = [];
|
||||
let scores: number[] = [], heroIdMap = new Map<number, string>(), hids: number[] = [];
|
||||
for(let { actorId } of heroes) {
|
||||
let heroScore = pvpDefense.heroScores.find(cur => cur.hid == actorId);
|
||||
if(heroScore) {
|
||||
score += heroScore.score;
|
||||
scores.push(heroScore.score);
|
||||
}
|
||||
// 记录hero的objectId,用于存defense.heroes.hero
|
||||
if(pvpDefense.defense && pvpDefense.defense.heroes) {
|
||||
@@ -417,7 +428,7 @@ export class PvpHandler {
|
||||
let defenseHeroes = heroes.map(cur => {
|
||||
return new DefenseHero(cur, heroIdMap.get(cur.actorId));
|
||||
});
|
||||
let defense = new Defense(defenseHeroes, score, warId, buff);
|
||||
let defense = new Defense(defenseHeroes, scores, warId, buff);
|
||||
let lineupCe = await generPvpLineupCe(roleId, pvpDefense.lineupCe, defense.heroes, dbHeroes);
|
||||
|
||||
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, { ...refChallengeObj, defense, lineupCe });
|
||||
|
||||
Reference in New Issue
Block a user