pvp:刷新
This commit is contained in:
@@ -130,6 +130,23 @@ export async function matchPlayerByRank(seasonNum: number, chosenOpps: string[],
|
|||||||
oppRank++;
|
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 {
|
} else {
|
||||||
if (pos == 1 || pos == 2) { // 刷新我前一名
|
if (pos == 1 || pos == 2) { // 刷新我前一名
|
||||||
oppRank = myRank - 1;
|
oppRank = myRank - 1;
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ export default class LadderMatch extends BaseModel {
|
|||||||
public static async findByRoleIdAndInclude(roleId: string) {
|
public static async findByRoleIdAndInclude(roleId: string) {
|
||||||
const result: LadderMatchType = await LadderMatchModel.findOne({ roleId })
|
const result: LadderMatchType = await LadderMatchModel.findOne({ roleId })
|
||||||
.populate('role', 'roleId roleName head frame spine heads frames spines title lv updatedAt')
|
.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();
|
.lean();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -78,7 +78,7 @@ export default class LadderMatch extends BaseModel {
|
|||||||
public static async updateByRoleIdAndInclude(roleId: string, params: LadderUpdateInter) {
|
public static async updateByRoleIdAndInclude(roleId: string, params: LadderUpdateInter) {
|
||||||
const defense: LadderMatchType = await LadderMatchModel.findOneAndUpdate({ roleId }, { $set: params}, { new: true })
|
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('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();
|
.lean();
|
||||||
return defense;
|
return defense;
|
||||||
}
|
}
|
||||||
@@ -98,7 +98,7 @@ export default class LadderMatch extends BaseModel {
|
|||||||
public static async lock(serverId: number, roleId: string, rank: number) {
|
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 })
|
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('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();
|
.lean();
|
||||||
return defense;
|
return defense;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ export default class PvpHistoryOpp extends BaseModel {
|
|||||||
pLv: number; // 对手等级
|
pLv: number; // 对手等级
|
||||||
@prop({ required: true, default: 1 })
|
@prop({ required: true, default: 1 })
|
||||||
lv: number; // 对手角色等级
|
lv: number; // 对手角色等级
|
||||||
|
@prop({ required: true, default: 0 })
|
||||||
|
job: number; // 对手职业
|
||||||
@prop({ required: true, default: 1 })
|
@prop({ required: true, default: 1 })
|
||||||
title: number; // 对手等级
|
title: number; // 对手等级
|
||||||
@prop({ required: true, default: 0 })
|
@prop({ required: true, default: 0 })
|
||||||
|
|||||||
@@ -337,6 +337,7 @@ export class LadderOppDetailHeroReturn {
|
|||||||
star: number = 0; // 星级
|
star: number = 0; // 星级
|
||||||
colorStar: number = 0; // 彩星
|
colorStar: number = 0; // 彩星
|
||||||
quality: number = 0; // 品质
|
quality: number = 0; // 品质
|
||||||
|
job: number = 0; // 职业
|
||||||
skill: string = ''; // 技能
|
skill: string = ''; // 技能
|
||||||
seid: string = ''; // 技能
|
seid: string = ''; // 技能
|
||||||
spine: string = ''; // 动画
|
spine: string = ''; // 动画
|
||||||
@@ -353,6 +354,8 @@ export class LadderOppDetailHeroReturn {
|
|||||||
this.skill = warJson.skill;
|
this.skill = warJson.skill;
|
||||||
this.seid = warJson.seid;
|
this.seid = warJson.seid;
|
||||||
this.spine = warJson.spine;
|
this.spine = warJson.spine;
|
||||||
|
let dicHero = gameData.hero.get(warJson.actorId);
|
||||||
|
if(dicHero) this.job = dicHero.jobid;
|
||||||
|
|
||||||
if(defensHero) {
|
if(defensHero) {
|
||||||
this.outIndex = defensHero.order;
|
this.outIndex = defensHero.order;
|
||||||
@@ -367,6 +370,7 @@ export class LadderOppDetailHeroReturn {
|
|||||||
this.colorStar = hero.colorStar;
|
this.colorStar = hero.colorStar;
|
||||||
let skin = hero.skins.find(cur => cur.enable);
|
let skin = hero.skins.find(cur => cur.enable);
|
||||||
if(skin) this.talent = skin.talent;
|
if(skin) this.talent = skin.talent;
|
||||||
|
this.job = hero.job;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,16 @@
|
|||||||
import { prop, mongoose, Ref } from '@typegoose/typegoose';
|
import { prop, mongoose, Ref } from '@typegoose/typegoose';
|
||||||
import { DicWarJson } from '../pubUtils/dictionary/DicWarJson';
|
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 { nowSeconds } from '../pubUtils/timeUtil';
|
||||||
import { DicHero } from '../pubUtils/dictionary/DicHero';
|
import { DicHero } from '../pubUtils/dictionary/DicHero';
|
||||||
|
|
||||||
|
|
||||||
|
class Talent {
|
||||||
|
@prop({ required: true })
|
||||||
|
id: number; // 天赋表id
|
||||||
|
@prop({ required: true })
|
||||||
|
level: number; // 激活等级
|
||||||
|
}
|
||||||
// 从玩家数据中覆盖warjson的部分字段
|
// 从玩家数据中覆盖warjson的部分字段
|
||||||
export class PvpHeroInfo {
|
export class PvpHeroInfo {
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
@@ -17,6 +24,8 @@ export class PvpHeroInfo {
|
|||||||
@prop({ required: false })
|
@prop({ required: false })
|
||||||
star?: number = 0; // 角色星级
|
star?: number = 0; // 角色星级
|
||||||
@prop({ required: false })
|
@prop({ required: false })
|
||||||
|
job?: number = 0; // 角色职业
|
||||||
|
@prop({ required: false })
|
||||||
lv?: number = 0; // 角色等级
|
lv?: number = 0; // 角色等级
|
||||||
@prop({ required: false })
|
@prop({ required: false })
|
||||||
skill?: string = "0"; // 技能
|
skill?: string = "0"; // 技能
|
||||||
@@ -28,7 +37,7 @@ export class PvpHeroInfo {
|
|||||||
colorStar?: number = 0; // 觉醒
|
colorStar?: number = 0; // 觉醒
|
||||||
@prop({ required: false })
|
@prop({ required: false })
|
||||||
quality?: number = 0; // 品质
|
quality?: number = 0; // 品质
|
||||||
@prop({ required: false })
|
@prop({ required: false, type: Talent, _id: false })
|
||||||
talent?: Talent[] = []; // 品质
|
talent?: Talent[] = []; // 品质
|
||||||
|
|
||||||
@prop({ required: true, _id: false })
|
@prop({ required: true, _id: false })
|
||||||
@@ -40,6 +49,7 @@ export class PvpHeroInfo {
|
|||||||
this.actorName = hero.hName;
|
this.actorName = hero.hName;
|
||||||
this.star = hero.star;
|
this.star = hero.star;
|
||||||
this.lv = hero.lv;
|
this.lv = hero.lv;
|
||||||
|
this.job = hero.job;
|
||||||
this.colorStar = hero.colorStar;
|
this.colorStar = hero.colorStar;
|
||||||
this.quality = hero.quality;
|
this.quality = hero.quality;
|
||||||
let skin = hero.skins?.find(cur => cur.enable);
|
let skin = hero.skins?.find(cur => cur.enable);
|
||||||
@@ -51,12 +61,14 @@ export class PvpHeroInfo {
|
|||||||
this.skinId = dicHero.heroId;
|
this.skinId = dicHero.heroId;
|
||||||
this.actorName = dicHero.name;
|
this.actorName = dicHero.name;
|
||||||
this.quality = dicHero.quality;
|
this.quality = dicHero.quality;
|
||||||
|
this.job = dicHero.jobid;
|
||||||
if(dicHero.quality == 4) {
|
if(dicHero.quality == 4) {
|
||||||
this.star = 6;
|
this.star = 6;
|
||||||
this.colorStar = dicHero.initialStars;
|
this.colorStar = dicHero.initialStars;
|
||||||
} else {
|
} else {
|
||||||
this.star = dicHero.initialStars;
|
this.star = dicHero.initialStars;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.lv = lv;
|
this.lv = lv;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,8 +145,10 @@ export class PvpEnemies extends Enemies {
|
|||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
lv: number;
|
lv: number;
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
score: number;
|
job: number;
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
|
score: number;
|
||||||
|
@prop({ required: true, type: () => Talent, _id: false })
|
||||||
talent: Talent[];
|
talent: Talent[];
|
||||||
|
|
||||||
// score: 这个武将的军功
|
// score: 这个武将的军功
|
||||||
@@ -146,6 +160,7 @@ export class PvpEnemies extends Enemies {
|
|||||||
this.lv = heroInfo.lv;
|
this.lv = heroInfo.lv;
|
||||||
this.score = score;
|
this.score = score;
|
||||||
this.talent = heroInfo.talent;
|
this.talent = heroInfo.talent;
|
||||||
|
this.job = heroInfo.job;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user