265 lines
7.9 KiB
TypeScript
265 lines
7.9 KiB
TypeScript
import { prop } from '@typegoose/typegoose';
|
|
import { DicWarJson } from '../pubUtils/dictionary/DicWarJson';
|
|
import { HeroType } from './Hero';
|
|
|
|
export class CeAttrData {
|
|
@prop({ required: true })
|
|
base: number = 0;
|
|
@prop({ required: true })
|
|
ratioUp: number = 0;
|
|
@prop({ required: true })
|
|
fixUp: number = 0;
|
|
@prop({ required: true })
|
|
equipUp: number = 0;
|
|
}
|
|
|
|
export class CeAttr {
|
|
@prop({ required: false, _id: false })
|
|
hp?: CeAttrData = new CeAttrData();
|
|
@prop({ required: false, _id: false })
|
|
atk?: CeAttrData = new CeAttrData();
|
|
@prop({ required: false, _id: false })
|
|
matk?: CeAttrData = new CeAttrData();
|
|
@prop({ required: false, _id: false })
|
|
def?: CeAttrData = new CeAttrData();
|
|
@prop({ required: false, _id: false })
|
|
mdef?: CeAttrData = new CeAttrData();
|
|
@prop({ required: false, _id: false })
|
|
agi?: CeAttrData = new CeAttrData();
|
|
@prop({ required: false, _id: false })
|
|
luk?: CeAttrData = new CeAttrData();
|
|
@prop({ required: false, _id: false })
|
|
hit?: CeAttrData = new CeAttrData();
|
|
@prop({ required: false, _id: false })
|
|
cri?: CeAttrData = new CeAttrData();
|
|
@prop({ required: false, _id: false })
|
|
flee?: CeAttrData = new CeAttrData();
|
|
@prop({ required: false, _id: false })
|
|
antCri?: CeAttrData = new CeAttrData();
|
|
@prop({ required: false, _id: false })
|
|
damageIncrease?: CeAttrData = new CeAttrData();
|
|
@prop({ required: false, _id: false })
|
|
damageDecrease?: CeAttrData = new CeAttrData();
|
|
@prop({ required: false, _id: false })
|
|
defIngnore?: CeAttrData = new CeAttrData();
|
|
@prop({ required: false, _id: false })
|
|
bloodSuck?: CeAttrData = new CeAttrData();
|
|
}
|
|
|
|
|
|
export class CeAttrDataRole {
|
|
@prop({ required: true })
|
|
ratioUp: number = 0;
|
|
@prop({ required: true })
|
|
fixUp: number = 0;
|
|
}
|
|
|
|
export class CeAttrRole {
|
|
@prop({ required: false, _id: false })
|
|
hp?: CeAttrDataRole = new CeAttrDataRole();
|
|
@prop({ required: false, _id: false })
|
|
atk?: CeAttrDataRole = new CeAttrDataRole();
|
|
@prop({ required: false, _id: false })
|
|
matk?: CeAttrDataRole = new CeAttrDataRole();
|
|
@prop({ required: false, _id: false })
|
|
def?: CeAttrDataRole = new CeAttrDataRole();
|
|
@prop({ required: false, _id: false })
|
|
mdef?: CeAttrDataRole = new CeAttrDataRole();
|
|
@prop({ required: false, _id: false })
|
|
agi?: CeAttrDataRole = new CeAttrDataRole();
|
|
@prop({ required: false, _id: false })
|
|
luk?: CeAttrDataRole = new CeAttrDataRole();
|
|
@prop({ required: false, _id: false })
|
|
hit?: CeAttrDataRole = new CeAttrDataRole();
|
|
@prop({ required: false, _id: false })
|
|
cri?: CeAttrDataRole = new CeAttrDataRole();
|
|
@prop({ required: false, _id: false })
|
|
flee?: CeAttrDataRole = new CeAttrDataRole();
|
|
@prop({ required: false, _id: false })
|
|
antCri?: CeAttrDataRole = new CeAttrDataRole();
|
|
@prop({ required: false, _id: false })
|
|
damageIncrease?: CeAttrDataRole = new CeAttrDataRole();
|
|
@prop({ required: false, _id: false })
|
|
damageDecrease?: CeAttrDataRole = new CeAttrDataRole();
|
|
@prop({ required: false, _id: false })
|
|
defIngnore?: CeAttrDataRole = new CeAttrDataRole();
|
|
@prop({ required: false, _id: false })
|
|
bloodSuck?: CeAttrDataRole = new CeAttrDataRole();
|
|
}
|
|
|
|
|
|
|
|
export class CeAttrNumber {
|
|
@prop({ required: false })
|
|
hp?: number = 0;
|
|
@prop({ required: false })
|
|
atk?: number = 0;
|
|
@prop({ required: false })
|
|
matk?: number = 0;
|
|
@prop({ required: false })
|
|
def?: number = 0;
|
|
@prop({ required: false })
|
|
mdef?: number = 0;
|
|
@prop({ required: false })
|
|
agi?: number = 0;
|
|
@prop({ required: false })
|
|
luk?: number = 0;
|
|
@prop({ required: false })
|
|
hit?: number = 0;
|
|
@prop({ required: false })
|
|
cri?: number = 0;
|
|
@prop({ required: false })
|
|
flee?: number = 0;
|
|
@prop({ required: false })
|
|
antCri?: number = 0;
|
|
@prop({ required: false })
|
|
damageIncrease?: number = 0;
|
|
@prop({ required: false })
|
|
damageDecrease?: number = 0;
|
|
@prop({ required: false })
|
|
defIngnore?: number = 0;
|
|
@prop({ required: false })
|
|
bloodSuck?: number = 0;
|
|
}
|
|
|
|
// 从玩家数据中覆盖warjson的部分字段
|
|
export class PvpHeroInfo {
|
|
@prop({ required: true })
|
|
actorId?: number = 0; // 敌人id
|
|
@prop({ required: false })
|
|
actorName?: string = ""; // 敌人名
|
|
@prop({ required: false })
|
|
outIndex?: number = 0; // 程序将信息存入数组顺序
|
|
@prop({ required: false })
|
|
star?: number = 0; // 角色星级
|
|
@prop({ required: false })
|
|
lv?: number = 0; // 角色等级
|
|
@prop({ required: false })
|
|
skill?: string = "0"; // 技能
|
|
@prop({ required: false })
|
|
seid?: string = "&"; // 技能
|
|
@prop({ required: false })
|
|
spine?: string = "0"; // S动画
|
|
@prop({ required: false })
|
|
colorStar?: number = 0; // 觉醒
|
|
@prop({ required: false })
|
|
quality?: number = 0; // 品质
|
|
|
|
@prop({ required: true, _id: false })
|
|
attribute?: CeAttrNumber; // 属性
|
|
|
|
setHeroInfo(hero: HeroType) {
|
|
this.actorId = hero.hid;
|
|
this.actorName = hero.hName;
|
|
this.star = hero.star;
|
|
this.lv = hero.lv;
|
|
this.colorStar = hero.colorStar;
|
|
this.quality = hero.quality;
|
|
}
|
|
|
|
setRobotInfo(warjson: DicWarJson, lv: number, initialStar: number, quality: number) {
|
|
this.actorId = warjson.actorId;
|
|
this.actorName = warjson.actorName;
|
|
this.star = initialStar;
|
|
this.lv = lv;
|
|
this.quality = quality;
|
|
}
|
|
|
|
setAttribute(attribute: CeAttrNumber) {
|
|
this.attribute = attribute;
|
|
}
|
|
|
|
setOutIndex(order: number) {
|
|
this.outIndex = order;
|
|
}
|
|
}
|
|
|
|
// 远征敌军
|
|
export class Enemies extends PvpHeroInfo {
|
|
@prop({ required: true })
|
|
actorId: number; // 敌人id
|
|
@prop({ required: false })
|
|
actorName: string; // 敌人名
|
|
@prop({ required: false })
|
|
dataId: number; // 战场中唯一指向武将的代码
|
|
@prop({ required: false })
|
|
relation: number; // 角色属于我方还是地方
|
|
@prop({ required: false })
|
|
x: number; // 战场x坐标
|
|
@prop({ required: false })
|
|
y: number; // 战场y坐标
|
|
@prop({ required: false })
|
|
direction: number; // 朝向
|
|
@prop({ required: false })
|
|
var: number; // 变量
|
|
@prop({ required: false })
|
|
hide: number; // 是否隐藏
|
|
@prop({ required: false })
|
|
initial_ai: number; // AI类型
|
|
|
|
// warjson 出兵表
|
|
// heroInfo 覆盖掉出兵表的相应参数
|
|
constructor(warjson: DicWarJson, heroInfo: PvpHeroInfo) {
|
|
super();
|
|
this.actorId = heroInfo.actorId != undefined? heroInfo.actorId: warjson.actorId;
|
|
this.actorName = heroInfo.actorName != undefined? heroInfo.actorName: warjson.actorName;
|
|
this.dataId = warjson.dataId;
|
|
this.relation = warjson.relation;
|
|
this.outIndex = heroInfo.outIndex != undefined? heroInfo.outIndex: warjson.outIndex;
|
|
this.x = warjson.x;
|
|
this.y = warjson.y;
|
|
this.direction = warjson.direction;
|
|
this.var = warjson.var;
|
|
this.lv = heroInfo.lv != undefined? heroInfo.lv: warjson.lv;
|
|
this.hide = warjson.hide;
|
|
this.initial_ai = warjson.initial_ai;
|
|
this.attribute = heroInfo.attribute;
|
|
this.skill = heroInfo.skill != undefined? heroInfo.skill: warjson.skill;
|
|
this.seid = heroInfo.seid != undefined? heroInfo.seid: warjson.seid;
|
|
this.star = heroInfo.star != undefined? heroInfo.star: warjson.star;
|
|
this.spine = heroInfo.spine!= undefined? heroInfo.spine: warjson.spine;
|
|
}
|
|
|
|
}
|
|
|
|
export class PvpEnemies extends Enemies {
|
|
@prop({ required: true })
|
|
star: number;
|
|
@prop({ required: true })
|
|
colorStar: number;
|
|
@prop({ required: true })
|
|
quality: number;
|
|
@prop({ required: true })
|
|
lv: number;
|
|
@prop({ required: true })
|
|
score: number;
|
|
|
|
// score: 这个武将的军功
|
|
constructor(warjson: DicWarJson, heroInfo: PvpHeroInfo, score: number) {
|
|
super(warjson, heroInfo);
|
|
this.star = heroInfo.star;
|
|
this.colorStar = heroInfo.colorStar;
|
|
this.quality = heroInfo.quality;
|
|
this.lv = heroInfo.lv;
|
|
this.score = score;
|
|
}
|
|
}
|
|
|
|
// 未显示在阵容中的其他武将
|
|
export class PvpOtherHeroes extends PvpHeroInfo {
|
|
@prop({ required: true })
|
|
score: number;
|
|
|
|
// score: 这个武将的军功
|
|
constructor(score: number) {
|
|
super();
|
|
this.score = score;
|
|
}
|
|
}
|
|
|
|
export class ItemReward {
|
|
@prop({ required: true })
|
|
id: number;
|
|
@prop({ required: true })
|
|
count: number;
|
|
} |