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
@@ -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) {
}
}
+21 -14
View File
@@ -3,17 +3,24 @@ import { index, getModelForClass, prop, DocumentType, modelOptions } from '@type
class RandSe { class RandSe {
@prop({ required: true }) @prop({ required: true })
seType: number; // 属性类型 id: number; // 随机属性位置id
@prop({ required: true }) @prop({ required: true })
value: number; // 属性数值 seid: number; // 随机属性池id
@prop({ required: true })
rand: number; // 随机属性内需要随机的值
@prop({ required: true })
locked: boolean; // 洗炼是否锁定
} }
class Holes { class Holes {
@prop({ required: true }) @prop({ required: true })
id: number; // 宝石 id,待定,也可能是 type + lv id: number; // 孔的id
@prop({ required: true }) @prop({ required: true })
lv: number; // 宝石等级 isOpen: boolean; // 是否开孔
@prop({ required: true })
jewel: number; // 装备的宝石id
} }
@index({ roleId: 1, hid: 1, id: 1 }) @index({ roleId: 1, hid: 1, id: 1 })
@index({ seqId: 1 }) @index({ seqId: 1 })
@modelOptions({schemaOptions: {id: false}}) @modelOptions({schemaOptions: {id: false}})
@@ -23,14 +30,12 @@ export default class Equip extends BaseModel {
@prop({ required: true }) @prop({ required: true })
roleName: string; // 角色名称 roleName: string; // 角色名称
@prop({ required: true })
seqId: number; // 装备表自增 id
@prop({ required: true }) @prop({ required: true })
id: number; // 装备 id id: number; // 装备 id
@prop({ required: true }) @prop({ required: true })
type: number; // 装备类型
@prop({ required: true })
name: string; // 装备名称 name: string; // 装备名称
@prop({ required: true })
seqId: number; // 装备表自增 id
@prop({ required: false }) @prop({ required: false })
hid: number; // 装备此装备的武将 id hid: number; // 装备此装备的武将 id
@prop({ required: false, default: 1 }) @prop({ required: false, default: 1 })
@@ -38,15 +43,17 @@ export default class Equip extends BaseModel {
@prop({ required: true, default: 1 }) @prop({ required: true, default: 1 })
quality: number; // 品质 quality: number; // 品质
@prop({ required: true, default: 0 })
type: number; // 装备类型
@prop({ required: true, default: 1 }) @prop({ required: true, default: 1 })
lv: number; // 强化等级 wearLv: number; // 穿戴等级
@prop({ required: false, type: RandSe, default: [] }) @prop({ required: true, default: 0 })
randSe: RandSe[]; // 强化随机属性 suitId: number; // 套装id
@prop({ required: true, default: 0 }) @prop({ required: true, default: 0 })
randRange: number; // 物攻策攻数值浮动上下限变化率,浮点数 randRange: number; // 固定属性随机值
@prop({ required: true, default: 0 }) @prop({ required: false, type: RandSe, default: [] })
initHoleCnt: number; // 初始珠宝孔位个数 randSe: RandSe[]; // 强化随机属性
@prop({ required: true, type: Holes, default: [] }) @prop({ required: true, type: Holes, default: [] })
holes: Holes[]; holes: Holes[];
+16 -3
View File
@@ -22,6 +22,19 @@ class Skin {
enable: boolean; 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 { interface heroUpdate {
exp?: number; exp?: number;
lv?: number; lv?: number;
@@ -95,8 +108,8 @@ export default class Hero extends BaseModel {
@prop({ required: true, type: Skin, default: [] }) @prop({ required: true, type: Skin, default: [] })
skins: Skin[]; // 皮肤 skins: Skin[]; // 皮肤
@prop({ ref: Equip, type: mongoose.Schema.Types.ObjectId }) @prop({ required: true, type: EPlace, default:[] })
equips: Ref<Equip>[]; // 武将装备引用数组 ePlact: EPlace[]; // 武将装备引用数组
public static async findByRole(roleId: string, lean = true) { public static async findByRole(roleId: string, lean = true) {
const heros: HeroType[] = await HeroModel.find({ roleId }).populate('equips').lean(lean); 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 seqId = await CounterModel.getNewCounter(COUNTER.HID)||-1;
const update = Object.assign(doc.toJSON(), heroInfo, {seqId}); const update = Object.assign(doc.toJSON(), heroInfo, {seqId});
delete update._id; 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; return hero;
} }