diff --git a/game-server/app/servers/battle/handler/pvpHandler.ts b/game-server/app/servers/battle/handler/pvpHandler.ts index 47c1085c6..edc24023a 100644 --- a/game-server/app/servers/battle/handler/pvpHandler.ts +++ b/game-server/app/servers/battle/handler/pvpHandler.ts @@ -316,41 +316,51 @@ export class PvpHandler { let { challengeCnt, challengeRefTime } = refresh(lastChallengeCnt, lastChallengeRefTime, seasonEndTime); if (!!isDefaultHero) { - let role = await RoleModel.findByRoleId(roleId); - let { resHeroes } = await defaultHeroes(role, challengeCnt, challengeRefTime, true); - return resResult(STATUS.SUCCESS, { heroes: resHeroes, challengeCnt, challengeRefTime, isDefaultHero} ); - } else { - for (let dataId = PVP_HERO_POS.START; dataId <= PVP_HERO_POS.END; dataId++) { - let index = findIndex(heroes, {dataId}); - let defIndex = findIndex(defHeros, {dataId}); - if (defIndex == -1) { - defIndex = defHeros.length; - defHeros.push({actorId:0, order:0,ce:0, hero:null,dataId}); + let { topLineup } = await RoleModel.findByRoleId(roleId); + let hids = topLineup.filter(cur => { + return !heroes.find(ccur => ccur.actorId == cur.hid); + }).map(cur => cur.hid); + for(let hero of heroes) { + if(hero.actorId) { + let isInTop = topLineup.find(cur => cur.hid == hero.actorId); + if(!isInTop) { + hero.actorId = hids.shift(); + } } - if (index == -1) { - defHeros[defIndex].actorId = 0; - defHeros[defIndex].order = 0; - defHeros[defIndex].ce = 0; - defHeros[defIndex].hero = null; - defHeros[defIndex].dataId = dataId; - continue; - } - if (heroes[index].order < 1 || heroes[index].order > LINEUP_NUM) { - return resResult(STATUS.WRONG_PARMS); - } - let hero = await HeroModel.findByHidAndRole(heroes[index].actorId, roleId); - if (!hero) { - continue; - } - defHeros[defIndex].actorId = heroes[index].actorId; - defHeros[defIndex].order = heroes[index].order; - defHeros[defIndex].ce = hero.ce; - defHeros[defIndex].hero = hero._id; - defCe += hero.ce; } - let { heroes: resHeroes } = await PvpDefenseModel.updateInfo(roleId, {defCe, heroes: defHeros, challengeCnt, challengeRefTime, isDefaultHero }); - return resResult(STATUS.SUCCESS, { heroes: resHeroes, challengeCnt, challengeRefTime, isDefaultHero }); } + + for (let dataId = PVP_HERO_POS.START; dataId <= PVP_HERO_POS.END; dataId++) { + let index = findIndex(heroes, {dataId}); + let defIndex = findIndex(defHeros, {dataId}); + if (defIndex == -1) { + defIndex = defHeros.length; + defHeros.push({actorId:0, order:0,ce:0, hero:null,dataId}); + } + if (index == -1) { + defHeros[defIndex].actorId = 0; + defHeros[defIndex].order = 0; + defHeros[defIndex].ce = 0; + defHeros[defIndex].hero = null; + defHeros[defIndex].dataId = dataId; + continue; + } + if (heroes[index].order < 1 || heroes[index].order > LINEUP_NUM) { + return resResult(STATUS.WRONG_PARMS); + } + let hero = await HeroModel.findByHidAndRole(heroes[index].actorId, roleId); + if (!hero) { + continue; + } + defHeros[defIndex].actorId = heroes[index].actorId; + defHeros[defIndex].order = heroes[index].order; + defHeros[defIndex].ce = hero.ce; + defHeros[defIndex].hero = hero._id; + defCe += hero.ce; + } + let { heroes: resHeroes } = await PvpDefenseModel.updateInfo(roleId, {defCe, heroes: defHeros, challengeCnt, challengeRefTime, isDefaultHero }); + return resResult(STATUS.SUCCESS, { heroes: resHeroes, challengeCnt, challengeRefTime, isDefaultHero }); + } async getRank(msg: {}, session: BackendSession) { diff --git a/shared/resource/jsons/dic_email_content.json b/shared/resource/jsons/dic_email_content.json index b90e2f407..cf6d895cf 100644 --- a/shared/resource/jsons/dic_email_content.json +++ b/shared/resource/jsons/dic_email_content.json @@ -1,4 +1,9 @@ [ + { + "id": 0, + "content": "%d", + "time": 24 + }, { "id": 1, "content": "您对军团%d的申请被拒绝",