添加升星等的战力计算,计算方式修改为返回余量
This commit is contained in:
@@ -4,7 +4,10 @@
|
||||
* 属性 id
|
||||
*/
|
||||
|
||||
export enum ABI_TYPE {
|
||||
|
||||
import { JOB_TYPE } from "./consts";
|
||||
|
||||
export enum ABI_TYPE{
|
||||
/**生命 */
|
||||
ABI_HP = 1,
|
||||
/**物攻 */
|
||||
@@ -90,3 +93,11 @@ export const CE_RATIO = {
|
||||
"bloodSuck": 0,
|
||||
};
|
||||
|
||||
export const ABI_TYPE_TO_STAGE = new Map<number, number | ((jobType: number) => number)>([
|
||||
[ABI_STAGE.HP, ABI_TYPE.ABI_HP],
|
||||
[ABI_STAGE.ATK, (jobType:number) => { return jobType == JOB_TYPE.PHYSIC?ABI_TYPE.ABI_ATK: ABI_TYPE.ABI_MATK}],
|
||||
[ABI_STAGE.DEF, ABI_TYPE.ABI_DEF],
|
||||
[ABI_STAGE.MDEF, ABI_TYPE.ABI_MDEF],
|
||||
[ABI_STAGE.AGI, ABI_TYPE.ABI_AGI],
|
||||
[ABI_STAGE.LUK, ABI_TYPE.ABI_LUK]
|
||||
]);
|
||||
|
||||
@@ -339,4 +339,9 @@ export const HERO_GROW_MAX = {
|
||||
STAR: 6,
|
||||
COLORSTAR: 6,
|
||||
QUALITY: 3
|
||||
}
|
||||
|
||||
export const JOB_TYPE = {
|
||||
PHYSIC: 1,
|
||||
MAGIC: 2
|
||||
}
|
||||
@@ -24,7 +24,7 @@ export default class BaseModel extends TimeStamps {
|
||||
updatedAt: Date
|
||||
}
|
||||
|
||||
class CeAttrData {
|
||||
export class CeAttrData {
|
||||
@prop({ required: true })
|
||||
base?: number;
|
||||
@prop({ required: true })
|
||||
|
||||
@@ -10,9 +10,7 @@ import { COUNTER } from '../consts/consts';
|
||||
|
||||
class Connect {
|
||||
@prop({ required: true })
|
||||
shipId: number;
|
||||
@prop({ required: true })
|
||||
level: number;
|
||||
id: number;
|
||||
}
|
||||
|
||||
class Skin {
|
||||
@@ -65,9 +63,9 @@ export default class Hero extends BaseModel {
|
||||
@prop({ required: true, default: 0 })
|
||||
ce: number; // 武将战力
|
||||
@prop({ required: true, default: 0 })
|
||||
historyCe: number; // 武将历史最高战力存储的是实际10000倍数据
|
||||
@prop({required: true, default: {} })
|
||||
ceAttr: CeAttr; // 影响战力的属性存储的是实际10000倍数据
|
||||
historyCe: number; // 武将历史最高战力
|
||||
@prop({required: true })
|
||||
ceAttr: CeAttr; // 影响战力的属性
|
||||
|
||||
@prop({ required: true, default: 1 })
|
||||
star: number; // 星级
|
||||
@@ -97,7 +95,7 @@ export default class Hero extends BaseModel {
|
||||
|
||||
@prop({ ref: Equip, type: mongoose.Schema.Types.ObjectId })
|
||||
equips: Ref<Equip>[]; // 武将装备引用数组
|
||||
|
||||
|
||||
public static async findByRole(roleId: string, lean = true) {
|
||||
const heros = await HeroModel.find({ roleId }).populate('equips').lean(lean);
|
||||
return heros || [];
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import fs = require('fs');
|
||||
import path = require('path');
|
||||
import { ABI_TYPE } from '../consts/abilityConst';
|
||||
import { ABI_TYPE, ABI_STAGE } from '../consts/abilityConst';
|
||||
import { decodeIdCntArrayStr, getRandEelm } from './util';
|
||||
import { IT_TYPE } from '../consts/consts';
|
||||
|
||||
@@ -30,6 +30,26 @@ const blueprtCompose = new Map<number, any>();
|
||||
const fiendShips = new Map<string, any>();
|
||||
const fashions = new Map<number, any>();
|
||||
const fiendShipHidAandIds = new Map<number, {actorId: number, level:number}>();
|
||||
|
||||
|
||||
interface dicStar {
|
||||
id: number;
|
||||
quality: number;
|
||||
star: number;
|
||||
advanceUpFragmentNum: number;
|
||||
ceAttr: Map<number, number>
|
||||
}
|
||||
const heroStarList = new Map<string, dicStar>();
|
||||
interface dicWake {
|
||||
id: number;
|
||||
quality: number;
|
||||
star: number;
|
||||
fragmentNum: number;
|
||||
consume: string;
|
||||
ceAttr: Map<number, number>
|
||||
}
|
||||
const heroWakeList = new Map<string, dicWake>();
|
||||
|
||||
function parseWarData() {
|
||||
let result = null;
|
||||
for (let filename of wars) {
|
||||
@@ -297,6 +317,43 @@ function initData (folder: string) {
|
||||
});
|
||||
}
|
||||
|
||||
function parseHeroStar() {
|
||||
const file = 'dic_zyz_hero_star';
|
||||
const data = gamedata['jsons'][file] || [];
|
||||
data.forEach(elem => {
|
||||
if (elem.id) {
|
||||
let ceAttr = new Map<number, number>();
|
||||
ceAttr.set(ABI_STAGE.HP, elem.hp_up);
|
||||
ceAttr.set(ABI_STAGE.ATK, elem.atk_up);
|
||||
ceAttr.set(ABI_STAGE.DEF, elem.def_up);
|
||||
ceAttr.set(ABI_STAGE.MDEF, elem.mdef_up);
|
||||
ceAttr.set(ABI_STAGE.AGI, elem.agi_up);
|
||||
ceAttr.set(ABI_STAGE.LUK, elem.luk_up);
|
||||
|
||||
heroStarList.set(`${elem.quality}_${elem.star}`,{ceAttr, ...elem});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function parseHeroWake() {
|
||||
const file = 'dic_zyz_hero_wake';
|
||||
const data = gamedata['jsons'][file] || [];
|
||||
data.forEach(elem => {
|
||||
if (elem.id) {
|
||||
let ceAttr = new Map<number, number>();
|
||||
ceAttr.set(ABI_STAGE.HP, elem.hp_up);
|
||||
ceAttr.set(ABI_STAGE.ATK, elem.atk_up);
|
||||
ceAttr.set(ABI_STAGE.DEF, elem.def_up);
|
||||
ceAttr.set(ABI_STAGE.MDEF, elem.mdef_up);
|
||||
ceAttr.set(ABI_STAGE.AGI, elem.agi_up);
|
||||
ceAttr.set(ABI_STAGE.LUK, elem.luk_up);
|
||||
|
||||
heroWakeList.set(`${elem.quality}_${elem.star}`,{ceAttr, ...elem});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function parseData() {
|
||||
parseWarData();
|
||||
parseTowerData();
|
||||
@@ -316,6 +373,8 @@ function parseData() {
|
||||
parseFashions();
|
||||
parseFiendShips();
|
||||
parseFiendShipLevels();
|
||||
parseHeroStar();
|
||||
parseHeroWake();
|
||||
}
|
||||
|
||||
initData('jsons'); // 加载一般json
|
||||
@@ -498,4 +557,12 @@ export function getFriendShipLevels() {
|
||||
|
||||
export function getJobByGradeAndClass(jobClass: number, grade: number) {
|
||||
return jobClassAndgrades.get(jobClass +'_' + grade);
|
||||
}
|
||||
|
||||
export function getHeroStar(quality: number, star: number) {
|
||||
return heroStarList.get(`${quality}_${star}`);
|
||||
}
|
||||
|
||||
export function getHeroWake(quality: number, star: number) {
|
||||
return heroWakeList.get(`${quality}_${star}`);
|
||||
}
|
||||
Reference in New Issue
Block a user