关卡:添加扫荡次数

This commit is contained in:
luying
2022-07-14 13:57:59 +08:00
parent a93e8c95f1
commit 8eaadb5245
5 changed files with 102 additions and 21 deletions
@@ -12,7 +12,7 @@ import { STATUS } from '../../../consts/statusCode';
import { resResult } from '../../../pubUtils/util';
import { RoleModel } from '../../../db/Role';
import { RScriptRecordModel } from '../../../db/RScriptRecord';
import { checkBattleHeroes, roleLevelup, getBattleList, calculateWarStar, getBattleListOfTypes, getMainChapter, getStarOfChapter } from '../../../services/normalBattleService';
import { checkBattleHeroes, roleLevelup, getBattleList, calculateWarStar, getBattleListOfTypes, getMainChapter, getStarOfChapter, checkWarCountAndInc } from '../../../services/normalBattleService';
import { checkDungeonNum, checkDungeonAndIncrease, saveDungeonFirst } from '../../../services/dungeonService';
// import { switchOnFunc } from '../../../services/funcSwitchService';
import { gameData } from '../../../pubUtils/data';
@@ -53,7 +53,7 @@ export class NormalBattleHandler {
if (!warInfo) {
return resResult(STATUS.BATTLE_MISS_INFO);
}
let role = await RoleModel.findByRoleId(roleId, 'lv');
let role = await RoleModel.findByRoleId(roleId, 'lv warStar warCount roleId refWarCount');
let apJson = await getAp(roleId, ip, role.lv);
let { ap } = apJson;
if (ap < warInfo.cost) {
@@ -62,10 +62,11 @@ export class NormalBattleHandler {
if(role.lv < warInfo.lvLimited) {
return resResult(STATUS.COM_BATTLE_LV_NOT_ENOUGH);
}
// 前置关卡是否挑战过
// 前置关卡是否挑战过
let { warStar } = role;
let previousGk = warInfo.previousGk;
if (previousGk) {
let { warStar } = await RoleModel.findByRoleId(roleId);
let preBattle = warStar.findIndex(cur => cur.id == previousGk);
if (preBattle == -1) return resResult(STATUS.BATTLE_NEED_PREVIOUS_GK);
}
@@ -77,7 +78,12 @@ export class NormalBattleHandler {
let dailyNum = {};
let towerData = {};
let dungeonNum = {};
if (warInfo.warType == WAR_TYPE.DAILY) {
if (warInfo.warType == WAR_TYPE.NORMAL || warInfo.warType == WAR_TYPE.MAIN_ELITE) {
let checkResult = await checkWarCountAndInc(battleId, 0, role, true);
if (checkResult.code != 0) {
return checkResult
}
} else if (warInfo.warType == WAR_TYPE.DAILY) {
let checkResult = await checkDaily(roleId, battleId, 1);
if (checkResult.status == -1) {
return checkResult.resResult
@@ -169,7 +175,7 @@ export class NormalBattleHandler {
return resResult(STATUS.BATTLE_INFO_VALIDATE_ERR);
}
let role = await RoleModel.findByRoleId(roleId, 'lv vipStartTime warStar');
let role = await RoleModel.findByRoleId(roleId, 'lv vipStartTime warStar warCount refWarCount roleId');
let apJson = await setAp(serverId, roleId, ip, role.lv, isSuccess? -1 * warInfo.cost: 0, sid, getReasonByWarType(warInfo.warType)); // 扣除体力
if (!apJson) {
return resResult(STATUS.BATTLE_ACTION_POINT_LACK);
@@ -181,8 +187,15 @@ export class NormalBattleHandler {
let dailyNum = {};
let towerStatus = null;
let dungeonNum = {};
if (warInfo.warType == WAR_TYPE.DAILY) {
if(warInfo.warType == WAR_TYPE.NORMAL || warInfo.warType == WAR_TYPE.MAIN_ELITE) {
let isFirst = warStar.findIndex(cur => cur.id == battleId) == -1;
if(!isFirst) {
let checkResult = await checkWarCountAndInc(battleId, 1, role, false);
if (checkResult.code != 0) {
return checkResult
}
}
} else if (warInfo.warType == WAR_TYPE.DAILY) {
let checkResult = await checkDailyAndIncrease(roleId, warStar, battleId, isSuccess?1:0, false, stars, role);
if (checkResult.status == -1) {
return checkResult.resResult;
@@ -312,18 +325,16 @@ export class NormalBattleHandler {
if (!curWar || curWar.star < 3) {
return resResult(STATUS.BATTLE_SWEEP_CONDITION_STAR);
}
// 扣体力
let role = await RoleModel.findByRoleId(roleId, 'lv');
let apJson = await setAp(serverId, roleId, ip, role.lv, -1 * warInfo.cost * count, sid, getReasonByWarType(warInfo.warType)); // 扣除体力
if (!apJson) {
return resResult(STATUS.BATTLE_ACTION_POINT_LACK);
}
let role = await RoleModel.findByRoleId(roleId, 'lv warCount refWarCount roleId');
// 扫荡次数
let dailyNum = {};
let dungeonNum = {};
if (warInfo.warType == WAR_TYPE.DAILY) {
if(warInfo.warType == WAR_TYPE.NORMAL || warInfo.warType == WAR_TYPE.MAIN_ELITE) {
let checkResult = await checkWarCountAndInc(battleId, count, role, true);
if (checkResult.code != 0) {
return checkResult
}
} else if (warInfo.warType == WAR_TYPE.DAILY) {
let checkResult = await checkDailyAndIncrease(roleId, warStar, battleId, count, true);
if (checkResult.status == -1) {
return checkResult.resResult
@@ -337,6 +348,13 @@ export class NormalBattleHandler {
dungeonNum = Object.assign(dungeonNum, checkResult.data)
}
// 扣体力
let apJson = await setAp(serverId, roleId, ip, role.lv, -1 * warInfo.cost * count, sid, getReasonByWarType(warInfo.warType)); // 扣除体力
if (!apJson) {
return resResult(STATUS.BATTLE_ACTION_POINT_LACK);
}
// 发奖励
let warReward = new WarReward(roleId, roleName, sid, battleId, true);
let result = await warReward.saveReward(count, true);