🐞 fix(巅峰演武): 赛季切换后结算不再计入
This commit is contained in:
@@ -185,7 +185,7 @@ export class PvpHandler {
|
|||||||
status: 0,
|
status: 0,
|
||||||
warName: warInfo.gk_name,
|
warName: warInfo.gk_name,
|
||||||
warType: warInfo.warType,
|
warType: warInfo.warType,
|
||||||
record: { heroes, pos: curOpp.pos, oppRoleId }
|
record: { heroes, pos: curOpp.pos, oppRoleId, pvpSeasonNum: seasonNum }
|
||||||
}
|
}
|
||||||
}, true);
|
}, true);
|
||||||
await checkTask(serverId, roleId, sid, TASK_TYPE.PVP);
|
await checkTask(serverId, roleId, sid, TASK_TYPE.PVP);
|
||||||
@@ -235,7 +235,7 @@ export class PvpHandler {
|
|||||||
return resResult(STATUS.BATTLE_STATUS_WRONG);
|
return resResult(STATUS.BATTLE_STATUS_WRONG);
|
||||||
}
|
}
|
||||||
|
|
||||||
let { record: { heroes: dbHeroes, oppRoleId, pos }, createdAt } = BattleRecord;
|
let { record: { heroes: dbHeroes, oppRoleId, pos, pvpSeasonNum }, createdAt } = BattleRecord;
|
||||||
|
|
||||||
let flag = 1; // 对比hero信息
|
let flag = 1; // 对比hero信息
|
||||||
for (let { hid } of myHeroes) {
|
for (let { hid } of myHeroes) {
|
||||||
@@ -260,29 +260,32 @@ export class PvpHandler {
|
|||||||
if (!curOpp) return resResult(STATUS.PVP_ROLE_NOT_FOUND);
|
if (!curOpp) return resResult(STATUS.PVP_ROLE_NOT_FOUND);
|
||||||
const defenseInfo = await generPVPOppRecInfo(isSuccess, curOpp, oppHeroes, serverId);
|
const defenseInfo = await generPVPOppRecInfo(isSuccess, curOpp, oppHeroes, serverId);
|
||||||
|
|
||||||
// 战报记录
|
|
||||||
await PvpRecordModel.createRec({ roleId1: roleId, roleId2: robotIdComBack(oppRoleId), warId: BattleRecord.battleId, attackInfo, defenseInfo, createTime: nowSeconds() });
|
|
||||||
|
|
||||||
let seasonNum: number = this.app.get('pvpSeasonNum');
|
let seasonNum: number = this.app.get('pvpSeasonNum');
|
||||||
|
// 战报记录
|
||||||
|
await PvpRecordModel.createRec({ roleId1: roleId, roleId2: robotIdComBack(oppRoleId), warId: BattleRecord.battleId, attackInfo, defenseInfo, createTime: nowSeconds(), timeout: seasonNum != pvpSeasonNum });
|
||||||
|
|
||||||
// 更新battleRecord
|
// 更新battleRecord
|
||||||
await BattleRecordModel.updateBattleRecordByCode(battleCode, {
|
await BattleRecordModel.updateBattleRecordByCode(battleCode, {
|
||||||
$set: { status: isSuccess ? 1 : 2 }
|
$set: { status: isSuccess ? 1 : 2 }
|
||||||
}, true);
|
}, true);
|
||||||
|
|
||||||
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, update);
|
if(seasonNum == pvpSeasonNum) {
|
||||||
|
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, update);
|
||||||
|
}
|
||||||
|
|
||||||
let result = new PvpDataReturn(); // 返回对象
|
let result = new PvpDataReturn(); // 返回对象
|
||||||
result.setPvpDefense(pvpDefense);
|
result.setPvpDefense(pvpDefense);
|
||||||
let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers, pvpDefense.winStreakNum);
|
||||||
result.setOppPlayers(oppPlayersReturn);
|
result.setOppPlayers(oppPlayersReturn);
|
||||||
|
|
||||||
// 加入排行榜
|
|
||||||
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum });
|
if(seasonNum == pvpSeasonNum) {
|
||||||
await r.setRankWithRoleInfo(roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), role);
|
// 加入排行榜
|
||||||
let myRank = await r.getMyRank({ roleId });
|
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum: pvpSeasonNum });
|
||||||
result.setMyRank(myRank);
|
await r.setRankWithRoleInfo(roleId, pvpDefense.score, pvpDefense.updatedAt.getTime(), role);
|
||||||
|
let myRank = await r.getMyRank({ roleId });
|
||||||
|
result.setMyRank(myRank);
|
||||||
|
}
|
||||||
|
|
||||||
await checkTaskInPvpEnd(serverId, roleId, sid, isSuccess, pvpDefense.heroScores, pvpDefense.seasonWinNum);
|
await checkTaskInPvpEnd(serverId, roleId, sid, isSuccess, pvpDefense.heroScores, pvpDefense.seasonWinNum);
|
||||||
if(hisWinStreakNum < pvpDefense.hisWinStreakNum) {
|
if(hisWinStreakNum < pvpDefense.hisWinStreakNum) {
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ class Record {
|
|||||||
bossDamage?: number; // boss本造成的伤害
|
bossDamage?: number; // boss本造成的伤害
|
||||||
@prop({ required: false })
|
@prop({ required: false })
|
||||||
encourageCnt?: number;
|
encourageCnt?: number;
|
||||||
|
@prop({ required: false })
|
||||||
|
pvpSeasonNum?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
@index({ roleId: 1, battleId: 1 })
|
@index({ roleId: 1, battleId: 1 })
|
||||||
|
|||||||
@@ -134,8 +134,10 @@ export default class PvpRecord extends BaseModel {
|
|||||||
|
|
||||||
@prop({ required: true, default: 0 })
|
@prop({ required: true, default: 0 })
|
||||||
createTime: number;
|
createTime: number;
|
||||||
|
@prop({ required: true, default: 0 })
|
||||||
|
timeout: boolean;
|
||||||
|
|
||||||
public static async createRec(param: { roleId1: string, roleId2: string, warId: number, attackInfo: PvpRecordPlayerInfo, defenseInfo: PvpRecordPlayerInfo, createTime: number }) {
|
public static async createRec(param: { roleId1: string, roleId2: string, warId: number, attackInfo: PvpRecordPlayerInfo, defenseInfo: PvpRecordPlayerInfo, createTime: number, timeout?: boolean }) {
|
||||||
await this.delPvpRecords();
|
await this.delPvpRecords();
|
||||||
let code = genCode(6);
|
let code = genCode(6);
|
||||||
const result = await PvpRecordModel.findOneAndUpdate({ code }, param, { new: true, upsert: true }).lean();
|
const result = await PvpRecordModel.findOneAndUpdate({ code }, param, { new: true, upsert: true }).lean();
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ export class HeroParam {
|
|||||||
ePlace: EPlace[]; // 武将装备引用数组
|
ePlace: EPlace[]; // 武将装备引用数组
|
||||||
|
|
||||||
artifact: number = 0;
|
artifact: number = 0;
|
||||||
|
subHid: number = 0;
|
||||||
talent: Talent[] = [];
|
talent: Talent[] = [];
|
||||||
usedTalentPoint: number = 0;
|
usedTalentPoint: number = 0;
|
||||||
totalTalentPoint: number = 0;
|
totalTalentPoint: number = 0;
|
||||||
@@ -96,6 +97,7 @@ export class HeroParam {
|
|||||||
}
|
}
|
||||||
this.ePlace = hero.ePlace;
|
this.ePlace = hero.ePlace;
|
||||||
this.artifact = hero.artifact;
|
this.artifact = hero.artifact;
|
||||||
|
this.subHid = hero.subHid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user