活动:月卡权限

This commit is contained in:
luying
2022-03-09 19:47:20 +08:00
parent dafc77954b
commit f440ef2ebe
22 changed files with 295 additions and 220 deletions
+13 -8
View File
@@ -26,6 +26,7 @@ import { checkTask } from '../services/taskService';
import { sendMailByContent } from './mailService';
import { RoleRankInfo } from '../domain/rank';
import { reportTAEvent } from './sdkService';
import { getVipPvpChallengeMaxCnt } from './activity/monthlyTicketService';
/**
* 返回对手三人信息
@@ -296,9 +297,10 @@ export function getLvByScore(heroScores: HeroScore[]) {
return getPLvByScore(score);
}
export function refChallengeCnt(challengeCnt: number, challengeRefTime: number, seasonEndTime: number) {
export async function refChallengeCnt(challengeCnt: number, challengeRefTime: number, seasonEndTime: number, roleId: string, vipStartTime?: number) {
let hasChanged = false;
if (challengeCnt >= PVP.PVP_CHALLENGE_COUNTS) {
let initCount = await getVipPvpChallengeMaxCnt(roleId, vipStartTime)
if (challengeCnt >= initCount) {
return { hasChanged, challengeCnt, challengeRefTime: nowSeconds() };
}
let period = PVP.PVP_CHALLENGE_NORMALTIMES * 60;
@@ -312,20 +314,22 @@ export function refChallengeCnt(challengeCnt: number, challengeRefTime: number,
challengeRefTime = challengeRefTime + period * num;
hasChanged = true;
}
challengeCnt = challengeCnt > PVP.PVP_CHALLENGE_COUNTS ? PVP.PVP_CHALLENGE_COUNTS : challengeCnt;
challengeCnt = challengeCnt > initCount ? initCount : challengeCnt;
return { hasChanged, challengeCnt, challengeRefTime };
}
export function comsumeChallengeCnt(challengeCnt: number, challengeRefTime: number, seasonEndTime: number) {
export async function comsumeChallengeCnt(challengeCnt: number, challengeRefTime: number, seasonEndTime: number, roleId: string) {
let initCount = await getVipPvpChallengeMaxCnt(roleId)
challengeCnt--;
if (challengeCnt >= PVP.PVP_CHALLENGE_COUNTS) {
if (challengeCnt >= initCount) {
return { challengeCnt, challengeRefTime };
}
if (challengeCnt == PVP.PVP_CHALLENGE_COUNTS - 1) {
if (challengeCnt == initCount - 1) {
challengeRefTime = nowSeconds();
return { challengeCnt, challengeRefTime };
}
return refChallengeCnt(challengeCnt, challengeRefTime, seasonEndTime);
return refChallengeCnt(challengeCnt, challengeRefTime, seasonEndTime, roleId);
}
export async function sendLastSeasonRewardIfNotSent(pvpDefense: PvpDefenseType) {
@@ -569,13 +573,14 @@ export async function sendPVPRewardToUser(pvpDefense: PvpDefenseType, seasonNum:
async function resetPvpScores(pvpDefense: PvpDefenseType, seasonNum: number, pvpSeasonResult: PvpSeasonResultType) {
let { roleId, attack, defense } = pvpDefense;
let { newHeroScores, newScore } = pvpSeasonResult;
let initCount = await getVipPvpChallengeMaxCnt(roleId)
let newAttack = <Attack>calLineupScore(attack, newHeroScores);
let newDefense = <Defense>calLineupScore(defense, newHeroScores);
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, {
heroScores: newHeroScores, score: newScore, attack: newAttack, defense: newDefense,
seasonNum, challengeCnt: PVP.PVP_CHALLENGE_COUNTS, challengeRefTime: 0, winStreakNum: 0, isFirstEntry: true
seasonNum, challengeCnt: initCount, challengeRefTime: 0, winStreakNum: 0, isFirstEntry: true
});
return pvpDefense;
}