pvp:修复保存最强防守阵容位置无效bug
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user