名将擂台:奖励及扫荡

This commit is contained in:
luying
2022-07-19 17:14:11 +08:00
parent df8032cb06
commit c66001ed8e
7 changed files with 97 additions and 31 deletions
@@ -5,7 +5,7 @@ import { gameData } from '../../../pubUtils/data';
import { STATUS } from '../../../consts/statusCode';
import { resResult } from '../../../pubUtils/util';
import { LadderMatchModel, LadderUpdateInter } from '../../../db/LadderMatch';
import { battleEndWhenChange, checkRank, generateInitRecInfo, getBuyCntCost, getLadderData, getLadderOppStatus, refreshLadderDaily, refreshLadderEnemies } from '../../../services/ladderService';
import { battleEndWhenChange, checkRank, generateInitRecInfo, getBuyCntCost, getLadderData, getLadderOppStatus, ladderBattleEndReward, refreshLadderDaily, refreshLadderEnemies } from '../../../services/ladderService';
import { LadderDataReturn, LadderDefense, LadderDefenseHero, LadderOppDetailReturn, LadderOppLineupReturn, LadderOppPlayerHeroInfo, LadderOppPlayerReturn } from '../../../domain/battleField/ladder';
import { LadderMatchRecModel } from '../../../db/LadderMatchRec';
import { HeroModel } from '../../../db/Hero';
@@ -15,6 +15,7 @@ import { ITEM_CHANGE_REASON, LADDER_OPP_STATUS, LADDER_STATUS, REDIS_KEY } from
import { getHeroesAttributes } from '../../../services/playerCeService';
import { checkBattleHeroesByHid } from '../../../services/normalBattleService';
import { Rank } from '../../../services/rankService';
import { WarReward } from '../../../services/warRewardService';
export default function (app: Application) {
new HandlerService(app, {});
@@ -176,12 +177,14 @@ export class LadderHandler {
// 7. 挑战结算
async battleEnd(msg: { battleCode: string, isSuccess: boolean }, session: BackendSession) {
let roleId = session.get('roleId');
let serverId = session.get('serverId');
let roleName = session.get('roleName');
let sid = session.get('sid');
let { battleCode, isSuccess } = msg;
let rec = await LadderMatchRecModel.findByBattleCode(battleCode);
if(!rec || rec.roleId1 != roleId) return resResult(STATUS.LADDER_REC_NOT_FOUND);
if(rec.status != LADDER_STATUS.BATTLE) return resResult(STATUS.LADDER_REC_STATUS_ERR);
let rank = rec.defenseInfo.oldRank;
let ladderData = await LadderMatchModel.findByRoleId(roleId);
if(!ladderData) return resResult(STATUS.LADDER_NOT_OPEN);
@@ -202,24 +205,48 @@ export class LadderHandler {
rec = await LadderMatchRecModel.battleEnd(battleCode, isSuccess);
}
ladderData = await LadderMatchModel.updateByRoleId(roleId, { historyRank: atkLadderMatch.rank < ladderData.historyRank? atkLadderMatch.rank: ladderData.historyRank, locked: 0 });
let isBreak = ladderData.historyRank > atkLadderMatch.rank;
ladderData = await LadderMatchModel.updateByRoleId(roleId, { historyRank: isBreak? atkLadderMatch.rank: ladderData.historyRank, locked: 0 });
result.setLadderData(ladderData, rec);
// 获取奖励
let { battleGoods, breakGoods } = await ladderBattleEndReward(roleId, roleName, sid, rank, isSuccess, isBreak, 1);
return resResult(STATUS.SUCCESS, result)
return resResult(STATUS.SUCCESS, {...pick(result, ['rank', 'historyRank', 'challengeCnt','status', 'time', 'oppPlayers']), battleGoods, breakGoods});
}
// 8. 战5次(扫荡)
async battleSweep(msg: { roleId: string, rank: number, count: number }, session: BackendSession) {
let roleId = session.get('roleId');
let roleName = session.get('roleName');
let sid = session.get('sid');
let { roleId: targetRoleId, rank, count } = msg;
// 检查是否可以扫荡对手
// 扣挑战次数
// 获取奖励
let ladderData = await LadderMatchModel.findByRoleId(roleId);
if(!ladderData) return resResult(STATUS.LADDER_NOT_OPEN);
return resResult(STATUS.SUCCESS)
if(ladderData.rank >= rank) return resResult(STATUS.LADDER_RANK_ERR);
// 刷新次数
let refOppObj = refreshLadderDaily(ladderData);
let update: LadderUpdateInter = {};
if(refOppObj.shouldRefOpp) {
update = { ...refOppObj };
}
if(refOppObj.challengeCnt + count > LADDER.LADDER_CHALLENGE_FREE_TIMES + refOppObj.buyCnt) {
return resResult(STATUS.LADDER_CHALLENGE_CNT_MAX);
}
update.challengeCnt = refOppObj.challengeCnt + count;
ladderData = await LadderMatchModel.updateByRoleIdAndInclude(roleId, update);
// 获取奖励
let { battleGoods } = await ladderBattleEndReward(roleId, roleName, sid, rank, true, false, count);
return resResult(STATUS.SUCCESS, {
challengeCnt: ladderData.challengeCnt,
battleGoods
});
}
// 9. 设置防守阵容