pvp:修改等级和军功对应关系
This commit is contained in:
@@ -354,14 +354,14 @@ export class PvpHandler {
|
|||||||
let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
|
let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
|
||||||
let refChallengeObj = refChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime);
|
let refChallengeObj = refChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime);
|
||||||
// 更新挑战阵容
|
// 更新挑战阵容
|
||||||
let score = 0;
|
let scores: number[] = [];
|
||||||
for(let { actorId } of heroes) {
|
for(let { actorId } of heroes) {
|
||||||
let heroScore = pvpDefense.heroScores.find(cur => cur.hid == actorId);
|
let heroScore = pvpDefense.heroScores.find(cur => cur.hid == actorId);
|
||||||
if(heroScore) {
|
if(heroScore) {
|
||||||
score += heroScore.score;
|
scores.push(heroScore.score);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let attack = new Attack(heroes, score);
|
let attack = new Attack(heroes, scores);
|
||||||
let lineupCe = await generPvpLineupCe(roleId, pvpDefense.lineupCe, attack.heroes, []);
|
let lineupCe = await generPvpLineupCe(roleId, pvpDefense.lineupCe, attack.heroes, []);
|
||||||
// 刷对手
|
// 刷对手
|
||||||
let role = <RoleType>pvpDefense.role;
|
let role = <RoleType>pvpDefense.role;
|
||||||
@@ -391,11 +391,11 @@ export class PvpHandler {
|
|||||||
let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
|
let seasonEndTime: number = this.app.get('pvpSeasonEndTime');
|
||||||
let refChallengeObj = refChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime);
|
let refChallengeObj = refChallengeCnt(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime);
|
||||||
// 更新防守阵容
|
// 更新防守阵容
|
||||||
let score = 0, heroIdMap = new Map<number, string>(), hids: number[] = [];
|
let scores: number[] = [], heroIdMap = new Map<number, string>(), hids: number[] = [];
|
||||||
for(let { actorId } of heroes) {
|
for(let { actorId } of heroes) {
|
||||||
let heroScore = pvpDefense.heroScores.find(cur => cur.hid == actorId);
|
let heroScore = pvpDefense.heroScores.find(cur => cur.hid == actorId);
|
||||||
if(heroScore) {
|
if(heroScore) {
|
||||||
score += heroScore.score;
|
scores.push(heroScore.score);
|
||||||
}
|
}
|
||||||
// 记录hero的objectId,用于存defense.heroes.hero
|
// 记录hero的objectId,用于存defense.heroes.hero
|
||||||
if(pvpDefense.defense && pvpDefense.defense.heroes) {
|
if(pvpDefense.defense && pvpDefense.defense.heroes) {
|
||||||
@@ -417,7 +417,7 @@ export class PvpHandler {
|
|||||||
let defenseHeroes = heroes.map(cur => {
|
let defenseHeroes = heroes.map(cur => {
|
||||||
return new DefenseHero(cur, heroIdMap.get(cur.actorId));
|
return new DefenseHero(cur, heroIdMap.get(cur.actorId));
|
||||||
});
|
});
|
||||||
let defense = new Defense(defenseHeroes, score, warId, buff);
|
let defense = new Defense(defenseHeroes, scores, warId, buff);
|
||||||
let lineupCe = await generPvpLineupCe(roleId, pvpDefense.lineupCe, defense.heroes, dbHeroes);
|
let lineupCe = await generPvpLineupCe(roleId, pvpDefense.lineupCe, defense.heroes, dbHeroes);
|
||||||
|
|
||||||
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, { ...refChallengeObj, defense, lineupCe });
|
pvpDefense = await PvpDefenseModel.updateInfoAndInclude(roleId, { ...refChallengeObj, defense, lineupCe });
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import { PVP_HERO_POS, REDIS_KEY, PVP_CONST, COUNTER, TASK_TYPE, MAIL_TYPE, TA_E
|
|||||||
import { dicPvpOpponent, DicPvpOpponent } from "../pubUtils/dictionary/DicPvpOpponent";
|
import { dicPvpOpponent, DicPvpOpponent } from "../pubUtils/dictionary/DicPvpOpponent";
|
||||||
import { getRandSingleIndex, genCode, shouldRefresh, getChineseName, makeRobotId, robotIdComBack, getRandSingleEelm } from '../pubUtils/util';
|
import { getRandSingleIndex, genCode, shouldRefresh, getChineseName, makeRobotId, robotIdComBack, getRandSingleEelm } from '../pubUtils/util';
|
||||||
import { pvpEndParamInter, RewardInter } from '../pubUtils/interface';
|
import { pvpEndParamInter, RewardInter } from '../pubUtils/interface';
|
||||||
import { gameData, getPLvByScore, getPvpHeroRewardsByScore, getPvpRankRewardsByRank, getPvpDifficultByScore } from "../pubUtils/data";
|
import { gameData, getPLvByScore, getPvpHeroRewardsByScore, getPvpRankRewardsByRank, getPvpDifficultByScore, getPlvAndScore } from "../pubUtils/data";
|
||||||
import { PVP } from '../pubUtils/dicParam';
|
import { PVP } from '../pubUtils/dicParam';
|
||||||
import { PVPConfigModel, PVPConfigType } from '../db/SystemConfig'
|
import { PVPConfigModel, PVPConfigType } from '../db/SystemConfig'
|
||||||
import { nowSeconds, getTimeFun } from '../pubUtils/timeUtil';
|
import { nowSeconds, getTimeFun } from '../pubUtils/timeUtil';
|
||||||
@@ -414,7 +414,6 @@ export async function generMyRecInfo(pvpDefense: PvpDefenseType, role: RoleType,
|
|||||||
|
|
||||||
const dicOpp = gameData.pvpOpponent.get(pos);
|
const dicOpp = gameData.pvpOpponent.get(pos);
|
||||||
const plusScore = getPlusScore(winStreakNum);
|
const plusScore = getPlusScore(winStreakNum);
|
||||||
let pLv = getLvByScore(heroScores);
|
|
||||||
|
|
||||||
let myHeroRecords: HeroesRecord[] = []; // 存入rec里面的数据
|
let myHeroRecords: HeroesRecord[] = []; // 存入rec里面的数据
|
||||||
let showHeroScores = new Array<{ hid: number, addScore: number, plusScore: number, score: number }>();
|
let showHeroScores = new Array<{ hid: number, addScore: number, plusScore: number, score: number }>();
|
||||||
@@ -449,7 +448,7 @@ export async function generMyRecInfo(pvpDefense: PvpDefenseType, role: RoleType,
|
|||||||
}
|
}
|
||||||
|
|
||||||
let attackInfo = new PvpRecordPlayerInfo();
|
let attackInfo = new PvpRecordPlayerInfo();
|
||||||
attackInfo.setByRole(role, myHeroRecords, isSuccess, isSuccess ? addSumScore : 0, pLv)
|
attackInfo.setByRole(role, myHeroRecords, isSuccess, isSuccess ? addSumScore : 0, attack.pLv);
|
||||||
|
|
||||||
let newAttack = <Attack>calLineupScore(attack, heroScores);
|
let newAttack = <Attack>calLineupScore(attack, heroScores);
|
||||||
let newDefense = <Defense>calLineupScore(defense, heroScores);
|
let newDefense = <Defense>calLineupScore(defense, heroScores);
|
||||||
@@ -463,14 +462,14 @@ export async function generMyRecInfo(pvpDefense: PvpDefenseType, role: RoleType,
|
|||||||
|
|
||||||
function calLineupScore(lineup: Attack|Defense, heroScores: HeroScore[]) {
|
function calLineupScore(lineup: Attack|Defense, heroScores: HeroScore[]) {
|
||||||
if(!lineup) return lineup;
|
if(!lineup) return lineup;
|
||||||
let score = 0;
|
let scores: number[] = [];
|
||||||
for(let { actorId } of lineup.heroes) {
|
for(let { actorId } of lineup.heroes) {
|
||||||
let hs = heroScores.find(cur => cur.hid == actorId);
|
let hs = heroScores.find(cur => cur.hid == actorId);
|
||||||
if(hs) {
|
if(hs) {
|
||||||
score += hs.score;
|
scores.push(hs.score);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let pLv = getPLvByScore(score);
|
let { pLv, score } = getPlvAndScore(scores);
|
||||||
return {...lineup, score, pLv}
|
return {...lineup, score, pLv}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import Hero from '../../db/Hero';
|
|||||||
import { PvpDefenseType } from '../../db/PvpDefense';
|
import { PvpDefenseType } from '../../db/PvpDefense';
|
||||||
import PvpHistoryOpp from '../../db/PvpHistoryOpp';
|
import PvpHistoryOpp from '../../db/PvpHistoryOpp';
|
||||||
import { PvpSeasonResultType } from '../../db/PvpSeasonResult';
|
import { PvpSeasonResultType } from '../../db/PvpSeasonResult';
|
||||||
import { getPLvByScore } from '../../pubUtils/data';
|
import { getPlvAndScore } from '../../pubUtils/data';
|
||||||
import { RewardInter } from '../../pubUtils/interface';
|
import { RewardInter } from '../../pubUtils/interface';
|
||||||
|
|
||||||
|
|
||||||
@@ -43,10 +43,12 @@ export class Defense {
|
|||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
pLv: number; // 防守阵容的等级
|
pLv: number; // 防守阵容的等级
|
||||||
|
|
||||||
constructor(heroes: DefenseHero[], score: number, warId: number, buff: number) {
|
constructor(heroes: DefenseHero[], scores: number[], warId: number, buff: number) {
|
||||||
this.heroes = heroes;
|
this.heroes = heroes;
|
||||||
|
this.score = scores.reduce((pre, cur) => pre + cur, 0);
|
||||||
|
let {pLv, score} = getPlvAndScore(scores);
|
||||||
|
this.pLv = pLv,
|
||||||
this.score = score;
|
this.score = score;
|
||||||
this.pLv = getPLvByScore(score);
|
|
||||||
this.warId = warId;
|
this.warId = warId;
|
||||||
this.buff = buff;
|
this.buff = buff;
|
||||||
}
|
}
|
||||||
@@ -69,10 +71,12 @@ export class Attack {
|
|||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
pLv: number; // 防守阵容的等级
|
pLv: number; // 防守阵容的等级
|
||||||
|
|
||||||
constructor(heroes: AttackHero[], score: number) {
|
constructor(heroes: AttackHero[], scores: number[]) {
|
||||||
this.heroes = heroes;
|
this.heroes = heroes;
|
||||||
|
this.score = scores.reduce((pre, cur) => pre + cur, 0);
|
||||||
|
let {pLv, score} = getPlvAndScore(scores);
|
||||||
|
this.pLv = pLv;
|
||||||
this.score = score;
|
this.score = score;
|
||||||
this.pLv = getPLvByScore(score);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -461,6 +461,13 @@ export function getPLvByScore(score: number) {
|
|||||||
return lv;
|
return lv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getPlvAndScore(scores: number[] = []) {
|
||||||
|
if(scores.length <= 0) scores = [0];
|
||||||
|
let maxScore = Math.max(...scores); // 等级:军功最高者的军功*6
|
||||||
|
let score = scores.reduce((pre, cur) => pre + cur, 0);
|
||||||
|
return { score, pLv: getPLvByScore(maxScore)};
|
||||||
|
}
|
||||||
|
|
||||||
export function getPvpHeroRewardsByScore(score: number) {
|
export function getPvpHeroRewardsByScore(score: number) {
|
||||||
for (let item of gameData.pvpHeroRewards) {
|
for (let item of gameData.pvpHeroRewards) {
|
||||||
if ((item.max >= score || item.max == -1) && score >= item.min) {
|
if ((item.max >= score || item.max == -1) && score >= item.min) {
|
||||||
|
|||||||
Reference in New Issue
Block a user