✨ feat(副将): pvp相关副将设置
This commit is contained in:
@@ -275,7 +275,7 @@ export class LadderHandler {
|
||||
}
|
||||
|
||||
// 9. 设置防守阵容
|
||||
async saveDefense(msg: { warId: number, heroes: { actorId: number, ai: number, dataId: number, order: number }[] }, session: BackendSession) {
|
||||
async saveDefense(msg: { warId: number, heroes: { actorId: number, ai: number, dataId: number, order: number, subHid?: number }[] }, session: BackendSession) {
|
||||
let { warId, heroes } = msg;
|
||||
let roleId = session.get('roleId');
|
||||
|
||||
@@ -284,6 +284,12 @@ export class LadderHandler {
|
||||
|
||||
let hids: number[] = heroes.map(cur => cur.actorId);
|
||||
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 && hids.indexOf(subHid) != -1) return resResult(STATUS.HERO_SUB_DUPLICATE);
|
||||
}
|
||||
|
||||
let dbHeroes = await HeroModel.findByHidRange(hids, roleId, '_id hid ce', true);
|
||||
|
||||
let defenseHeroes = heroes.map(cur => {
|
||||
|
||||
@@ -449,7 +449,7 @@ export class PvpHandler {
|
||||
}
|
||||
|
||||
//3. 保存防守阵容
|
||||
async saveDefense(msg: { heroes: { actorId: number, dataId: number, order: number, ai: number }[], warId: number, buff: number }, session: BackendSession) {
|
||||
async saveDefense(msg: { heroes: { actorId: number, dataId: number, order: number, ai: number, subHid?: number }[], warId: number, buff: number }, session: BackendSession) {
|
||||
let { heroes, warId, buff } = msg;
|
||||
let roleId = session.get('roleId');
|
||||
if (heroes.length > LINEUP_NUM || heroes.length <= 0) {
|
||||
@@ -467,8 +467,11 @@ export class PvpHandler {
|
||||
let refChallengeObj = await refChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime, roleId, session.get('vipStartTime'));
|
||||
// 更新防守阵容
|
||||
let scores: number[] = [], heroIdMap = new Map<number, string>(), hids: number[] = [];
|
||||
for(let { actorId } of heroes) {
|
||||
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 && heroes.findIndex(hero => hero.actorId == subHid) != -1) return resResult(STATUS.HERO_SUB_DUPLICATE);
|
||||
|
||||
let heroScore = pvpDefense.heroScores.find(cur => cur.hid == actorId);
|
||||
if(heroScore) {
|
||||
@@ -486,6 +489,7 @@ export class PvpHandler {
|
||||
hids.push(actorId);
|
||||
}
|
||||
}
|
||||
|
||||
let dbHeroes = await HeroModel.findByHidRange(hids, roleId, '_id hid ce', true);
|
||||
for(let hero of dbHeroes) {
|
||||
heroIdMap.set(hero.hid, hero._id);
|
||||
|
||||
Reference in New Issue
Block a user