pvp:添加购买挑战次数
This commit is contained in:
@@ -55,7 +55,7 @@ export class PvpHandler {
|
||||
if(refChallengeObj.hasChanged) {
|
||||
update = { ...update, ...refChallengeObj }
|
||||
}
|
||||
let refOppObj = refreshRefOppCnt(pvpDefense.refOppCnt, pvpDefense.setAttackCnt, pvpDefense.refDaily);
|
||||
let refOppObj = refreshRefOppCnt(pvpDefense);
|
||||
// 每天首次打开要刷掉对手
|
||||
if(refOppObj.shouldRefOpp) {
|
||||
if(pvpDefense.attack) {
|
||||
@@ -104,7 +104,7 @@ export class PvpHandler {
|
||||
if(!pvpDefense.attack) return resResult(STATUS.PVP_NOT_SET_ATTACK);
|
||||
|
||||
// 刷新次数及消耗
|
||||
let refOppObj = refreshRefOppCnt(pvpDefense.refOppCnt, pvpDefense.setAttackCnt, pvpDefense.refDaily);
|
||||
let refOppObj = refreshRefOppCnt(pvpDefense);
|
||||
if (refOppObj.refOppCnt >= gameData.maxPvpRefreshCnt.max) {
|
||||
return resResult(STATUS.PVP_REFRESH_CNT_REACH_MAX);
|
||||
}
|
||||
@@ -277,6 +277,52 @@ export class PvpHandler {
|
||||
});
|
||||
}
|
||||
|
||||
async buyAttackCnt(msg: { count: number }, session: BackendSession) {
|
||||
let { count } = msg;
|
||||
let roleId = session.get('roleId');
|
||||
let sid = session.get('sid');
|
||||
if(count <= 0 || count == undefined) return resResult(STATUS.WRONG_PARMS);
|
||||
|
||||
let pvpDefense = await PvpDefenseModel.findByRoleId(roleId);
|
||||
if(!pvpDefense) return resResult(STATUS.PVP_NOT_OPEN);
|
||||
|
||||
// 次数
|
||||
let refOppObj = refreshRefOppCnt(pvpDefense);
|
||||
if(refOppObj.buyAttackCnt + count > PVP.PVP_BUY_SET_ATTACK_CNT) {
|
||||
return resResult(STATUS.PVP_BUY_ATTACK_CNT_NOT_ENOUGH);
|
||||
}
|
||||
refOppObj.buyAttackCnt += count;
|
||||
|
||||
let gold = getGoldObject(PVP.PVP_SET_ATTACK_CNT_GOLD * count);
|
||||
let costResult = await handleCost(roleId, sid, [gold]);
|
||||
if(!costResult) return resResult(STATUS.TOWER_GOLD_NOT_ENOUGH);
|
||||
|
||||
let update: pvpUpdateInter = { ...refOppObj };
|
||||
|
||||
// 更新挑战阵容
|
||||
if(refOppObj.shouldRefOpp) {
|
||||
if(pvpDefense.attack) {
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
let { seasonNum } = await PVPConfigModel.findCurPVPConfig();
|
||||
let oppPlayers = await refreshEnemies(role, seasonNum, pvpDefense.attack.score, pvpDefense.attack.pLv||1);
|
||||
update.oppPlayers = oppPlayers;
|
||||
}
|
||||
}
|
||||
// 保存
|
||||
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, update);
|
||||
// 返回
|
||||
let result = new PvpDataReturn();
|
||||
result.setPvpDefense(pvpDefense);
|
||||
let pickParam = ['buyAttackCnt', 'setAttackCnt', 'refOppCnt'];
|
||||
if(refOppObj.shouldRefOpp) {
|
||||
let oppPlayersReturn = await getEnemies(pvpDefense.oppPlayers||[], pvpDefense.winStreakNum);
|
||||
result.setOppPlayers(oppPlayersReturn);
|
||||
pickParam.push('oppPlayers');
|
||||
}
|
||||
|
||||
return resResult(STATUS.SUCCESS, pick(result, pickParam));
|
||||
}
|
||||
|
||||
async saveAttack(msg: { heroes: { actorId: number, order: number }[] }, session: BackendSession) {
|
||||
let { heroes } = msg;
|
||||
let roleId = session.get('roleId');
|
||||
@@ -290,15 +336,10 @@ export class PvpHandler {
|
||||
if(!pvpDefense) return resResult(STATUS.PVP_NOT_OPEN);
|
||||
|
||||
// 次数
|
||||
let refOppObj = refreshRefOppCnt(pvpDefense.refOppCnt, pvpDefense.setAttackCnt, pvpDefense.refDaily);
|
||||
if(refOppObj.setAttackCnt >= PVP.PVP_SET_ATTACK_CNT) {
|
||||
let refOppObj = refreshRefOppCnt(pvpDefense);
|
||||
if(refOppObj.setAttackCnt >= PVP.PVP_BUY_SET_ATTACK_CNT + refOppObj.buyAttackCnt) {
|
||||
return resResult(STATUS.PVP_SET_ATTACK_CNT_NOT_ENOUGH);
|
||||
}
|
||||
if(refOppObj.setAttackCnt >= PVP.PVP_SET_ATTACK_FREE_CNT) {
|
||||
let gold = getGoldObject(PVP.PVP_SET_ATTACK_CNT_GOLD);
|
||||
let result = await handleCost(roleId, sid, [gold]);
|
||||
if(!result) return resResult(STATUS.TOWER_GOLD_NOT_ENOUGH);
|
||||
}
|
||||
refOppObj.setAttackCnt ++;
|
||||
let { seasonNum, seasonEndTime } = await PVPConfigModel.findCurPVPConfig();
|
||||
let refChallengeObj = refChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime);
|
||||
|
||||
Reference in New Issue
Block a user