diff --git a/game-server/app/servers/battle/handler/normalBattleHandler.ts b/game-server/app/servers/battle/handler/normalBattleHandler.ts index 8f75837a8..01b16af31 100644 --- a/game-server/app/servers/battle/handler/normalBattleHandler.ts +++ b/game-server/app/servers/battle/handler/normalBattleHandler.ts @@ -69,7 +69,7 @@ export class NormalBattleHandler { if (preBattle == -1) return resResult(STATUS.BATTLE_NEED_PREVIOUS_GK); } - let { isOK, hids, lineup } = await checkBattleHeroes(roleId, seqIds); + let { isOK, hids, heroes, lineup } = await checkBattleHeroes(roleId, seqIds); if (!isOK) return resResult(STATUS.BATTLE_HERO_NOT_FOUND); const battleCode = genCode(8); // 关卡唯一值 @@ -83,7 +83,7 @@ export class NormalBattleHandler { } dailyNum = Object.assign(dailyNum, checkResult.data); } else if (warInfo.warType == WAR_TYPE.TOWER) { - let checkResult = await checkTowerWar(roleId, battleId, seqIds, hids); + let checkResult = await checkTowerWar(roleId, battleId, seqIds, heroes); if (checkResult.status == -1) { return checkResult.resResult } diff --git a/game-server/app/servers/battle/handler/towerBattleHandler.ts b/game-server/app/servers/battle/handler/towerBattleHandler.ts index 6bbd22796..20fb1a4fc 100644 --- a/game-server/app/servers/battle/handler/towerBattleHandler.ts +++ b/game-server/app/servers/battle/handler/towerBattleHandler.ts @@ -309,7 +309,7 @@ export class TowerBattleHandler { let { warStatus, heroes: recHeroes } = await getTowerRecByLv(roleId, role.towerLv); // 检查战力是否足够 - let heroes = await HeroModel.findByRole(roleId, [{ field: 'ce', sortBy: -1 }], 'hid ce', true); + let heroes = await HeroModel.findByRole(roleId, [{ field: 'ce', sortBy: -1 }], 'hid ce job', true); let recommendCeSum = 0, heroesCeSum = 0; let newWarStar: WarStar[] = []; for(let { warId, status } of warStatus) { @@ -318,7 +318,7 @@ export class TowerBattleHandler { recommendCeSum += dicWar.recommendedPower; let heroNum = 0; for(let hero of heroes) { - if(recHeroes.indexOf(hero.hid) == -1 && !checkForbiddenChar(hero.hid, dicWar.fobiddenCharactor)) { + if(recHeroes.indexOf(hero.hid) == -1 && !checkForbiddenChar(hero.hid, hero.job, dicWar.fobiddenCharactor)) { heroNum++; recHeroes.push(hero.hid); heroesCeSum += hero.ce; diff --git a/game-server/app/services/battleService.ts b/game-server/app/services/battleService.ts index 2d13a46f9..b3ded27eb 100644 --- a/game-server/app/services/battleService.ts +++ b/game-server/app/services/battleService.ts @@ -1,4 +1,4 @@ -import { HeroModel } from './../db/Hero'; +import { HeroModel, HeroType } from './../db/Hero'; import { HangUpRecordModel } from './../db/HangUpRecord'; import { HANG_UP_CONSTS, REDIS_KEY, TASK_TYPE, TOWER_FORBIDDEN_CHARA_TYPE, TOWER_TASK_STATUS, MAIL_TYPE, MSG_SOURCE } from './../consts'; import { BattleRecordModel } from './../db/BattleRecord'; @@ -141,7 +141,7 @@ export function checkTaskRewards(batchCode: string, tasks: TowerTaskRecType[]) { return { compTasks, rewards }; } -export async function checkTowerWar(roleId: string, battleId: number, seqIds: number[], heroes: Array) { +export async function checkTowerWar(roleId: string, battleId: number, seqIds: number[], heroes: HeroType[]) { let { towerLv } = await RoleModel.findByRoleId(roleId); const towerInfo = gameData.tower.get(towerLv); if (!towerInfo) { @@ -166,8 +166,8 @@ export async function checkTowerWar(roleId: string, battleId: number, seqIds: nu return { status: -1, resResult: resResult(STATUS.TOWER_DUPLICATE_HERO) }; } } - for(let hid of heroes) { - if(checkForbiddenChar(hid, fobiddenCharactor)) { + for(let {hid, job} of heroes) { + if(checkForbiddenChar(hid, job, fobiddenCharactor)) { return { status: -1, resResult: resResult(STATUS.TOWER_HERO_FORBIDDEN) }; } } @@ -183,9 +183,9 @@ export async function checkTowerWar(roleId: string, battleId: number, seqIds: nu }; } -export function checkForbiddenChar(hid: number, fobiddenCharactor: {type: number, id: number}[]) { +export function checkForbiddenChar(hid: number, job: number, fobiddenCharactor: {type: number, id: number}[]) { let dicHero = gameData.hero.get(hid); - let dicJob = gameData.job.get(dicHero.jobid); + let dicJob = gameData.job.get(job); let flag = false; for(let { type, id } of fobiddenCharactor) { switch(type) {