This commit is contained in:
luying
2020-12-16 20:49:06 +08:00
parent 05955f77bb
commit e77da03476
3 changed files with 79 additions and 17 deletions

View File

@@ -0,0 +1,42 @@
import { Application, BackendSession } from "pinus";
import { resResult } from "../../../pubUtils/util";
import { STATUS } from "../../../consts";
import { addItems } from "../../../services/rewardService";
export default function(app: Application) {
return new EquipHandler(app);
}
export class EquipHandler {
constructor(private app: Application) {
}
// TODO 合成装备
public async composeEquip(msg: { gid: number, originalEquip: number[]}, session: BackendSession) {
// 消耗材料
// 获得装备
// 1. 获得部位
}
// TODO 装备栏强化
public async strengthen(msg: { }, session: BackendSession) {
}
// TODO 装备栏精炼
public async refine(msg: { }, session: BackendSession) {
}
// TODO 装备洗炼锁定
public async lockRandSe(msg: { }, session: BackendSession) {
}
// TODO 装备洗炼
public async reStrengthen(msg: { }, session: BackendSession) {
}
}

View File

@@ -3,17 +3,24 @@ import { index, getModelForClass, prop, DocumentType, modelOptions } from '@type
class RandSe {
@prop({ required: true })
seType: number; // 属性类型
id: number; // 随机属性位置id
@prop({ required: true })
value: number; // 属性数值
seid: number; // 随机属性池id
@prop({ required: true })
rand: number; // 随机属性内需要随机的值
@prop({ required: true })
locked: boolean; // 洗炼是否锁定
}
class Holes {
@prop({ required: true })
id: number; // 宝石 id待定也可能是 type + lv
id: number; // 孔的id
@prop({ required: true })
lv: number; // 宝石等级
isOpen: boolean; // 是否开孔
@prop({ required: true })
jewel: number; // 装备的宝石id
}
@index({ roleId: 1, hid: 1, id: 1 })
@index({ seqId: 1 })
@modelOptions({schemaOptions: {id: false}})
@@ -23,14 +30,12 @@ export default class Equip extends BaseModel {
@prop({ required: true })
roleName: string; // 角色名称
@prop({ required: true })
seqId: number; // 装备表自增 id
@prop({ required: true })
id: number; // 装备 id
@prop({ required: true })
type: number; // 装备类型
@prop({ required: true })
name: string; // 装备名称
@prop({ required: true })
seqId: number; // 装备表自增 id
@prop({ required: false })
hid: number; // 装备此装备的武将 id
@prop({ required: false, default: 1 })
@@ -38,15 +43,17 @@ export default class Equip extends BaseModel {
@prop({ required: true, default: 1 })
quality: number; // 品质
@prop({ required: true, default: 0 })
type: number; // 装备类型
@prop({ required: true, default: 1 })
lv: number; // 强化等级
@prop({ required: false, type: RandSe, default: [] })
randSe: RandSe[]; // 强化随机属性
wearLv: number; // 穿戴等级
@prop({ required: true, default: 0 })
suitId: number; // 套装id
@prop({ required: true, default: 0 })
randRange: number; // 物攻策攻数值浮动上下限变化率,浮点数
@prop({ required: true, default: 0 })
initHoleCnt: number; // 初始珠宝孔位个数
randRange: number; // 固定属性随机值
@prop({ required: false, type: RandSe, default: [] })
randSe: RandSe[]; // 强化随机属性
@prop({ required: true, type: Holes, default: [] })
holes: Holes[];

View File

@@ -22,6 +22,19 @@ class Skin {
enable: boolean;
}
class EPlace {
@prop({ required: true })
id: number;
@prop({ ref: Equip, type: mongoose.Schema.Types.ObjectId })
equip: Ref<Equip>;
@prop({ required: true })
lv: number;
@prop({ required: true })
refineLv: number;
@prop({ required: true })
refineCount: number;
}
interface heroUpdate {
exp?: number;
lv?: number;
@@ -95,8 +108,8 @@ export default class Hero extends BaseModel {
@prop({ required: true, type: Skin, default: [] })
skins: Skin[]; // 皮肤
@prop({ ref: Equip, type: mongoose.Schema.Types.ObjectId })
equips: Ref<Equip>[]; // 武将装备引用数组
@prop({ required: true, type: EPlace, default:[] })
ePlact: EPlace[]; // 武将装备引用数组
public static async findByRole(roleId: string, lean = true) {
const heros: HeroType[] = await HeroModel.find({ roleId }).populate('equips').lean(lean);
@@ -129,7 +142,7 @@ export default class Hero extends BaseModel {
const seqId = await CounterModel.getNewCounter(COUNTER.HID)||-1;
const update = Object.assign(doc.toJSON(), heroInfo, {seqId});
delete update._id;
const hero: HeroType = await HeroModel.findOneAndUpdate({roleId: heroInfo.roleId, hid: heroInfo.hid}, update, {upsert: true, new: true}).select('hid hName lv exp star starStage colorStar colorStarStage quality job jobStage conections favour favourLv skins equips ce ceAttr').lean(lean);
const hero: HeroType = await HeroModel.findOneAndUpdate({roleId: heroInfo.roleId, hid: heroInfo.hid}, update, {upsert: true, new: true}).select('seqId hid hName lv exp star starStage colorStar colorStarStage quality job jobStage conections favour favourLv skins equips ce ceAttr').lean(lean);
return hero;
}