diff --git a/game-server/app/servers/battle/handler/ladderHandler.ts b/game-server/app/servers/battle/handler/ladderHandler.ts index 826317604..7d3845538 100644 --- a/game-server/app/servers/battle/handler/ladderHandler.ts +++ b/game-server/app/servers/battle/handler/ladderHandler.ts @@ -286,7 +286,7 @@ export class LadderHandler { if(isHeroHidden(...hids)) return resResult(STATUS.HERO_IS_HIDDEN); for(let { actorId, subHid } of heroes) { let dicHero = gameData.hero.get(actorId); - if(!dicHero || dicHero.urType != 1) return resResult(STATUS.HERO_CAN_NOT_SET_SUB); + if(subHid && (!dicHero || dicHero.urType != 1)) return resResult(STATUS.HERO_CAN_NOT_SET_SUB); if(subHid && hids.indexOf(subHid) != -1) return resResult(STATUS.HERO_SUB_DUPLICATE); } diff --git a/game-server/app/servers/battle/handler/pvpHandler.ts b/game-server/app/servers/battle/handler/pvpHandler.ts index c681cabd1..32d478a47 100644 --- a/game-server/app/servers/battle/handler/pvpHandler.ts +++ b/game-server/app/servers/battle/handler/pvpHandler.ts @@ -470,7 +470,7 @@ export class PvpHandler { for(let { actorId, subHid } of heroes) { if(isHeroHidden(actorId)) return resResult(STATUS.HERO_IS_HIDDEN); let dicHero = gameData.hero.get(actorId); - if(!dicHero || dicHero.urType != 1) return resResult(STATUS.HERO_CAN_NOT_SET_SUB); + if(subHid && (!dicHero || dicHero.urType != 1)) return resResult(STATUS.HERO_CAN_NOT_SET_SUB); if(subHid && heroes.findIndex(hero => hero.actorId == subHid) != -1) return resResult(STATUS.HERO_SUB_DUPLICATE); let heroScore = pvpDefense.heroScores.find(cur => cur.hid == actorId); diff --git a/game-server/app/services/gvg/gvgBattleService.ts b/game-server/app/services/gvg/gvgBattleService.ts index 7b500ec22..ffd933d3b 100644 --- a/game-server/app/services/gvg/gvgBattleService.ts +++ b/game-server/app/services/gvg/gvgBattleService.ts @@ -876,7 +876,7 @@ export async function checkGVGLineupWhenSave(roleId: string, index: number, line const teams = await GVGTeamModel.findByRole(roleId, '-_id index lineup'); for(let { actorId, subHid } of lineup) { let dicHero = gameData.hero.get(actorId); - if(!dicHero || dicHero.urType != 1) return STATUS.HERO_CAN_NOT_SET_SUB; + if(subHid && (!dicHero || dicHero.urType != 1)) return STATUS.HERO_CAN_NOT_SET_SUB; for(let team of teams) { // 查actorId没有在其他队伍中使用