From b592b6898198108b04e054f8244eb9d8c9b20a7a Mon Sep 17 00:00:00 2001 From: luying Date: Mon, 11 Jul 2022 19:50:57 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=98=E5=A2=83=EF=BC=9A=E7=A7=98=E5=A2=83?= =?UTF-8?q?=E5=85=B3=E5=8D=A1=E9=A6=96=E6=AC=A1=E9=80=9A=E5=85=B3=E4=B8=8D?= =?UTF-8?q?=E6=B6=88=E8=80=97=E6=AC=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../battle/handler/normalBattleHandler.ts | 6 +++--- game-server/app/services/dungeonService.ts | 18 +++++++++++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/game-server/app/servers/battle/handler/normalBattleHandler.ts b/game-server/app/servers/battle/handler/normalBattleHandler.ts index 36a5d1b50..32783b9b0 100644 --- a/game-server/app/servers/battle/handler/normalBattleHandler.ts +++ b/game-server/app/servers/battle/handler/normalBattleHandler.ts @@ -97,7 +97,7 @@ export class NormalBattleHandler { return checkResult.resResult } } else if (warInfo.warType == WAR_TYPE.MYSTERY || warInfo.warType == WAR_TYPE.MYSTERY_ELITE) { - let checkResult = await checkDungeonNum(roleId, 1); + let checkResult = await checkDungeonNum(roleId, 1, battleId); if (checkResult.status == -1) { return checkResult.resResult } @@ -202,7 +202,7 @@ export class NormalBattleHandler { warReward.setFixReward(towerEndResult.data.towerReward) } } else if (warInfo.warType == WAR_TYPE.MYSTERY || warInfo.warType == WAR_TYPE.MYSTERY_ELITE) { - let checkResult = await checkDungeonAndIncrease(roleId, isSuccess?1:0, false); + let checkResult = await checkDungeonAndIncrease(roleId, isSuccess?1:0, false, battleId); let role = await RoleModel.saveDungeonHero(roleId, battleId, heroes, isSuccess); if (role) { await saveDungeonFirst(role, battleId, BattleRecord); @@ -330,7 +330,7 @@ export class NormalBattleHandler { } dailyNum = Object.assign(dailyNum, checkResult.data) } else if (warInfo.warType == WAR_TYPE.MYSTERY || warInfo.warType == WAR_TYPE.MYSTERY_ELITE) { - let checkResult = await checkDungeonAndIncrease(roleId, count, true); + let checkResult = await checkDungeonAndIncrease(roleId, count, true, battleId); if (checkResult.status == -1) { return checkResult.resResult } diff --git a/game-server/app/services/dungeonService.ts b/game-server/app/services/dungeonService.ts index 1d3541bc5..5ce755de6 100644 --- a/game-server/app/services/dungeonService.ts +++ b/game-server/app/services/dungeonService.ts @@ -4,7 +4,7 @@ import { resResult, shouldRefresh, } from '../pubUtils/util'; import { STATUS } from '../consts/statusCode'; -import { RoleModel, RoleType } from '../db/Role'; +import { RoleModel, RoleType, WarStar } from '../db/Role'; import * as dicParam from '../pubUtils/dicParam'; import { RankParam } from '../domain/rank'; import { BattleRecordType } from '../db/BattleRecord'; @@ -34,9 +34,16 @@ export async function getDungeonData(role: RoleType) { } } +function isFirstPass(warStar: WarStar[], warId: number) { + let index = warStar.findIndex(cur => cur.id == warId); + return index == -1; +} + // 检查秘境本次数checkBattle使用 -export async function checkDungeonNum(roleId: string, inc: number) { - let { dungeonCnt = 0, dungeonBuyCnt = 0, dungeonRefTime, vipStartTime } = await RoleModel.findByRoleId(roleId); +export async function checkDungeonNum(roleId: string, inc: number, warId: number) { + let { dungeonCnt = 0, dungeonBuyCnt = 0, dungeonRefTime, vipStartTime, warStar } = await RoleModel.findByRoleId(roleId); + if(isFirstPass(warStar, warId)) inc = 0; + let curTime = new Date(); let needRefresh = shouldRefresh(dungeonRefTime, curTime); if(needRefresh) { @@ -61,9 +68,10 @@ export async function checkDungeonNum(roleId: string, inc: number) { * @param isRef 在计算之前是否检查每日的刷新 */ -export async function checkDungeonAndIncrease(roleId: string, inc: number, isRef: boolean) { +export async function checkDungeonAndIncrease(roleId: string, inc: number, isRef: boolean, warId: number) { - let { dungeonCnt = 0, dungeonBuyCnt = 0, dungeonRefTime, vipStartTime } = await RoleModel.findByRoleId(roleId); + let { dungeonCnt = 0, dungeonBuyCnt = 0, dungeonRefTime, vipStartTime, warStar } = await RoleModel.findByRoleId(roleId); + if(isFirstPass(warStar, warId)) inc = 0; let curTime = new Date(); let needRefresh = isRef && shouldRefresh(dungeonRefTime, curTime);