pvp:刷新

This commit is contained in:
luying
2022-08-22 20:44:24 +08:00
parent 8c01ccbe43
commit 31671d7b91
5 changed files with 44 additions and 6 deletions

View File

@@ -130,6 +130,23 @@ export async function matchPlayerByRank(seasonNum: number, chosenOpps: string[],
oppRank++;
}
}
} else if (myRank == 2) { // 第二名
if (pos == 1) {
oppRank = 1;
while (ridRanks.includes(oppRank)) {
oppRank--;
}
} else if (pos == 2) {
oppRank = 3;
while (ridRanks.includes(oppRank)) {
oppRank++;
}
} else {
oppRank = 4;
while (ridRanks.includes(oppRank)) {
oppRank++;
}
}
} else {
if (pos == 1 || pos == 2) { // 刷新我前一名
oppRank = myRank - 1;

View File

@@ -56,7 +56,7 @@ export default class LadderMatch extends BaseModel {
public static async findByRoleIdAndInclude(roleId: string) {
const result: LadderMatchType = await LadderMatchModel.findOne({ roleId })
.populate('role', 'roleId roleName head frame spine heads frames spines title lv updatedAt')
.populate('defense.heroes.hero', 'hid skinId quality star colorStar lv skins')
.populate('defense.heroes.hero', 'hid skinId quality star colorStar lv skins job')
.lean();
return result;
}
@@ -78,7 +78,7 @@ export default class LadderMatch extends BaseModel {
public static async updateByRoleIdAndInclude(roleId: string, params: LadderUpdateInter) {
const defense: LadderMatchType = await LadderMatchModel.findOneAndUpdate({ roleId }, { $set: params}, { new: true })
.populate('role', 'roleId roleName head frame spine heads frames spines title lv updatedAt')
.populate('defense.heroes.hero', 'hid skinId quality star colorStar lv skins')
.populate('defense.heroes.hero', 'hid skinId quality star colorStar lv skins job')
.lean();
return defense;
}
@@ -98,7 +98,7 @@ export default class LadderMatch extends BaseModel {
public static async lock(serverId: number, roleId: string, rank: number) {
const defense: LadderMatchType = await LadderMatchModel.findOneAndUpdate({ serverId, roleId, rank, locked: 0 }, { $set: { locked: 1 }}, { new: true })
.populate('role', 'roleId roleName head frame spine heads frames spines title lv updatedAt')
.populate('defense.heroes.hero', 'hid skinId quality star colorStar lv skins')
.populate('defense.heroes.hero', 'hid skinId quality star colorStar lv skins job')
.lean();
return defense;
}

View File

@@ -35,6 +35,8 @@ export default class PvpHistoryOpp extends BaseModel {
pLv: number; // 对手等级
@prop({ required: true, default: 1 })
lv: number; // 对手角色等级
@prop({ required: true, default: 0 })
job: number; // 对手职业
@prop({ required: true, default: 1 })
title: number; // 对手等级
@prop({ required: true, default: 0 })

View File

@@ -337,6 +337,7 @@ export class LadderOppDetailHeroReturn {
star: number = 0; // 星级
colorStar: number = 0; // 彩星
quality: number = 0; // 品质
job: number = 0; // 职业
skill: string = ''; // 技能
seid: string = ''; // 技能
spine: string = ''; // 动画
@@ -353,6 +354,8 @@ export class LadderOppDetailHeroReturn {
this.skill = warJson.skill;
this.seid = warJson.seid;
this.spine = warJson.spine;
let dicHero = gameData.hero.get(warJson.actorId);
if(dicHero) this.job = dicHero.jobid;
if(defensHero) {
this.outIndex = defensHero.order;
@@ -367,6 +370,7 @@ export class LadderOppDetailHeroReturn {
this.colorStar = hero.colorStar;
let skin = hero.skins.find(cur => cur.enable);
if(skin) this.talent = skin.talent;
this.job = hero.job;
}
}
}

View File

@@ -1,9 +1,16 @@
import { prop, mongoose, Ref } from '@typegoose/typegoose';
import { DicWarJson } from '../pubUtils/dictionary/DicWarJson';
import Hero, { HeroType, Talent } from '../db/Hero';
import Hero, { HeroType } from '../db/Hero';
import { nowSeconds } from '../pubUtils/timeUtil';
import { DicHero } from '../pubUtils/dictionary/DicHero';
class Talent {
@prop({ required: true })
id: number; // 天赋表id
@prop({ required: true })
level: number; // 激活等级
}
// 从玩家数据中覆盖warjson的部分字段
export class PvpHeroInfo {
@prop({ required: true })
@@ -17,6 +24,8 @@ export class PvpHeroInfo {
@prop({ required: false })
star?: number = 0; // 角色星级
@prop({ required: false })
job?: number = 0; // 角色职业
@prop({ required: false })
lv?: number = 0; // 角色等级
@prop({ required: false })
skill?: string = "0"; // 技能
@@ -28,7 +37,7 @@ export class PvpHeroInfo {
colorStar?: number = 0; // 觉醒
@prop({ required: false })
quality?: number = 0; // 品质
@prop({ required: false })
@prop({ required: false, type: Talent, _id: false })
talent?: Talent[] = []; // 品质
@prop({ required: true, _id: false })
@@ -40,6 +49,7 @@ export class PvpHeroInfo {
this.actorName = hero.hName;
this.star = hero.star;
this.lv = hero.lv;
this.job = hero.job;
this.colorStar = hero.colorStar;
this.quality = hero.quality;
let skin = hero.skins?.find(cur => cur.enable);
@@ -51,12 +61,14 @@ export class PvpHeroInfo {
this.skinId = dicHero.heroId;
this.actorName = dicHero.name;
this.quality = dicHero.quality;
this.job = dicHero.jobid;
if(dicHero.quality == 4) {
this.star = 6;
this.colorStar = dicHero.initialStars;
} else {
this.star = dicHero.initialStars;
}
this.lv = lv;
}
@@ -133,8 +145,10 @@ export class PvpEnemies extends Enemies {
@prop({ required: true })
lv: number;
@prop({ required: true })
score: number;
job: number;
@prop({ required: true })
score: number;
@prop({ required: true, type: () => Talent, _id: false })
talent: Talent[];
// score: 这个武将的军功
@@ -146,6 +160,7 @@ export class PvpEnemies extends Enemies {
this.lv = heroInfo.lv;
this.score = score;
this.talent = heroInfo.talent;
this.job = heroInfo.job;
}
}