feat(巅峰演武): 军功修改、匹配修改、新增挑战次数购买接口

This commit is contained in:
zhangxk
2023-10-12 21:20:26 +08:00
parent 778a31db7f
commit 00059fa2c2
9 changed files with 221 additions and 39 deletions

View File

@@ -769,6 +769,17 @@ export function checkRouteParam(route: string, msg: any) {
if (!checkNaturalNumbers(msg.id)) return false;
break;
}
case "battle.pvpHandler.buyChallengeCnt":
{
if (!checkNaturalNumbers(msg.count)) return false;
break;
}
case "battle.pvpHandler.sweep":
{
if (!checkNaturalNumbers(msg.warId)) return false;
if (!checkNaturalStrings(msg.oppRoleId)) return false;
break;
}
case "battle.ladderHandler.getOppLineup":
{
if (!checkNaturalStrings(msg.roleId)) return false;

View File

@@ -2,14 +2,14 @@
import { PvpDefenseModel, PvpDefenseType, pvpUpdateInter } from '../db/PvpDefense';
import { Defense, Attack, LineupCe, OppPlayer, HeroScore, HeroReward, OppPlayerReturn, AttackHero, DefenseHero } from '../domain/battleField/pvp';
import { RoleType } from '../db/Role';
import { REDIS_KEY, TASK_TYPE, MAIL_TYPE, TA_EVENT, ITID, getHeadItid, getFrameItid, getSpineItid, PVP_SEASON_STATUS } from '../consts';
import { REDIS_KEY, TASK_TYPE, MAIL_TYPE, TA_EVENT, ITID, getHeadItid, getFrameItid, getSpineItid, PVP_SEASON_STATUS, SHOP_REFRESH_TYPE } from '../consts';
import { dicPvpOpponent, DicPvpOpponent } from "../pubUtils/dictionary/DicPvpOpponent";
import { getRandSingleIndex, genCode, shouldRefresh, getChineseName, makeRobotId, robotIdComBack, getRandSingleEelm } from '../pubUtils/util';
import { pvpEndParamInter, RewardInter } from '../pubUtils/interface';
import { gameData, getPLvByScore, getPvpHeroRewardsByScore, getPvpRankRewardsByRank, getPvpDifficultByScore, getPlvAndScore, getPvpBoxsBySeasonNum, getPvpRankMaxRewardsBySeasonNum, randomGoodsByItid } from "../pubUtils/data";
import { EXTERIOR, PVP } from '../pubUtils/dicParam';
import { PVPConfigModel } from '../db/PvpConfig'
import { nowSeconds, getTimeFun } from '../pubUtils/timeUtil';
import { nowSeconds, getTimeFun, getZeroPointD } from '../pubUtils/timeUtil';
import { HeroesRecord, PvpRecordPlayerInfo } from '../db/PvpRecord';
import { HeroModel, HeroType } from '../db/Hero';
import { AttributeCal } from '../domain/roleField/attribute';
@@ -539,36 +539,36 @@ export async function generPVPOppRecInfo(isSuccess: boolean, curOpp: OppPlayer,
}
let addSumScore = 0;
let pvpDefense = curOpp.isRobot? null: await PvpDefenseModel.findByRoleId(robotIdComBack(curOpp.roleId));
if(pvpDefense && !isSuccess) {
if(pvpDefense && pvpDefense.defense) {
let { attack, defense, heroScores, score, defenseScoreCnt, refDefenseScore } = pvpDefense;
if(shouldRefresh(refDefenseScore, new Date())) {
defenseScoreCnt = 0; refDefenseScore = new Date();
}
if(defenseScoreCnt < PVP.PVP_DEFENSE_SUCCESS_REWARD_MAX_CNT) {
for(let { actorId } of defense.heroes) {
let hs = heroScores.find(cur => cur.hid == actorId);
const dicOpp = gameData.pvpOpponent.get(curOpp.pos);
let addScore = PVP.PVP_DEFENSE_SUCCESS_REWARD - dicOpp.score;
if(hs) {
hs.score += addScore;
} else {
heroScores.push({ hid: actorId, score: addScore })
}
addSumScore += addScore;
}
// if(pvpDefense && !isSuccess) {
// if(pvpDefense && pvpDefense.defense) {
// let { attack, defense, heroScores, score, defenseScoreCnt, refDefenseScore } = pvpDefense;
// if(shouldRefresh(refDefenseScore, new Date())) {
// defenseScoreCnt = 0; refDefenseScore = new Date();
// }
// if(defenseScoreCnt < PVP.PVP_DEFENSE_SUCCESS_REWARD_MAX_CNT) {
// for(let { actorId } of defense.heroes) {
// let hs = heroScores.find(cur => cur.hid == actorId);
// const dicOpp = gameData.pvpOpponent.get(curOpp.pos);
// let addScore = PVP.PVP_DEFENSE_SUCCESS_REWARD - dicOpp.score;
// if(hs) {
// hs.score += addScore;
// } else {
// heroScores.push({ hid: actorId, score: addScore })
// }
// addSumScore += addScore;
// }
let newAttack = <Attack>calLineupScore(attack, heroScores);
let newDefense = <Defense>calLineupScore(defense, heroScores);
// let newAttack = <Attack>calLineupScore(attack, heroScores);
// let newDefense = <Defense>calLineupScore(defense, heroScores);
await PvpDefenseModel.updateInfo(pvpDefense.roleId, { attack: newAttack, defense: newDefense, heroScores, score: score + addSumScore, defenseScoreCnt: defenseScoreCnt + 1, refDefenseScore });
// await PvpDefenseModel.updateInfo(pvpDefense.roleId, { attack: newAttack, defense: newDefense, heroScores, score: score + addSumScore, defenseScoreCnt: defenseScoreCnt + 1, refDefenseScore });
} else {
await PvpDefenseModel.updateInfo(pvpDefense.roleId, { defenseScoreCnt: defenseScoreCnt + 1, refDefenseScore });
}
}
}
// } else {
// await PvpDefenseModel.updateInfo(pvpDefense.roleId, { defenseScoreCnt: defenseScoreCnt + 1, refDefenseScore });
// }
// }
// }
let defenseInfo = new PvpRecordPlayerInfo();
defenseInfo.setByHistoryOpp(oppRole, oppHeroRecords, !isSuccess, isSuccess ? 0 : addSumScore, pvpDefense?.serverId||serverId)
@@ -697,8 +697,8 @@ export async function savePvpSeasonResult(pvpDefense: PvpDefenseType, seasonNum:
}
newScore += pvpHeroReward.heroscore;
} else {
newHeroScores.push(heroScore);
newScore += heroScore.score;
newHeroScores.push({...heroScore, score:0});
// newScore += heroScore.score;
}
}
@@ -793,4 +793,12 @@ export function checkPvpSeasonIsSummit() {
export function checkPvpSeasonIsWaiting() {
let status = getPvpSeasonStatus();
return status == PVP_SEASON_STATUS.WAITING;
}
export function refreshBuyChallengeCnt(buyChallengeTime:number = 0){
let refTime = getZeroPointD(SHOP_REFRESH_TYPE.DAILY);
if(refTime.getTime() > buyChallengeTime){
return true
}
return false;
}