xy-server/game/object/MagicWeapon.ts

207 lines
6.2 KiB
TypeScript
Raw Normal View History

2025-04-23 09:34:08 +08:00
import SKDataUtil from "../gear/SKDataUtil";
import DB from "../utils/DB";
import GameUtil from "../core/GameUtil";
import {EEquipPos} from "../role/EEnum";
import Player from "./Player";
export default class MagicWeapon {
owner: Player;
// 法宝编号
efId: string;
// 法宝名称
efName: string;
// 法宝五行1 金 2 木 3 水 4 火 5土
efType: number;
// 法宝等级1一阶、2:二阶、3阶
efLevel: number;
// 法宝等级
level: number;
// 法宝经验
efExp: number;
// 法宝属性加成
baseAttr: any;
// 法宝编号
number: number;
// 主动技能
activeSkillid: any;
// 被动技能
passiveSkillid: any;
// 法宝穿戴位置
efIndex: number;
// 装备存放位置1未知2正在使用3背包4仓库
efPos: any;
// 0 为已经删除
efState: any;
// 评分
efScore: any;
// 灵气
nimbus: number;
// 外观
icon: number;
attr1: any;
constructor(info: any, owner: Player) {
this.owner = owner;
this.efId = info.efId;
this.efExp = info.efExp;
this.efName = info.efName;
this.efType = info.efType;
this.efLevel = info.efLevel;
this.level = info.level;
this.number = info.number;
this.activeSkillid = info.activeSkillid;
this.passiveSkillid = info.passiveSkillid;
this.efIndex = info.efIndex;
this.efPos = EEquipPos.BAG;
this.efState = 1;
this.efScore = info.efScore;
this.nimbus = info.nimbus;
this.icon = info.icon;
this.baseAttr = info.baseAttr;
// 属性
this.attr1 = {};
GameUtil.clearAllAttr(this.attr1);
this.setDB(info);
}
setDB(info: any) {
if (info == null) {
return;
}
if (info.baseAttr) {
this.baseAttr = SKDataUtil.jsonBy(info.baseAttr);
}
info.efId && (this.efId = info.efId);
info.efName && (this.efName = info.efName);
info.efType && (this.efType = info.efType);
info.level && (this.level = info.level);
info.efExp && (this.efExp = info.efExp);
info.efLevel && (this.efLevel = info.efLevel);
info.number && (this.number = info.number);
info.activeSkillid && (this.activeSkillid = info.activeSkillid);
info.passiveSkillid && (this.passiveSkillid = info.passiveSkillid);
info.efIndex && (this.efIndex = info.efIndex);
info.efState && (this.efState = info.efState);
info.nimbus && (this.nimbus = info.nimbus);
info.icon && (this.icon = info.icon);
info.efPos && (this.efPos = info.efPos);
info.efScore && (this.efScore = info.efScore);
this.calculateAttribute();
}
getAttr(attrtype: number): number {
return this.attr1[attrtype];
}
// 计算法宝属性
calculateAttribute() {
GameUtil.clearAllAttr(this.attr1);
if (SKDataUtil.isArray(this.baseAttr)) {
for (let item of this.baseAttr) {
for (let key in item) {
let nkey = parseInt(key);
let value = parseInt(item[nkey]);
if (GameUtil.equipTypeNumerical.indexOf(nkey) == -1) {
value = value / 10;
}
break;
}
}
} else {
for (let key in this.baseAttr) {
if (this.baseAttr.hasOwnProperty(key)) {
let nkey = parseInt(key);
let value = parseInt(this.baseAttr[nkey]);
if (GameUtil.equipTypeNumerical.indexOf(nkey) == -1) {
value = value / 10;
}
}
}
}
}
toObj() {
let baseAttr: any;
if (SKDataUtil.isArray(this.baseAttr)) {
baseAttr = this.baseAttr;
} else {
baseAttr = {};
for (let key in this.baseAttr) {
let value = this.attr1[key];
baseAttr[key] = value;
let nkey = parseInt(key);
if (GameUtil.equipTypeNumerical.indexOf(nkey) == -1) {
baseAttr[key] *= 10;
}
}
}
let obj: any = {};
obj.efId = this.efId;
obj.baseAttr = SKDataUtil.toJson(baseAttr, "{}");
obj.efName = this.efName;
obj.efType = this.efType;
obj.level = this.level;
obj.efExp = this.efExp;
obj.efLevel = this.efLevel;
obj.number = this.number;
obj.activeSkillid = this.activeSkillid;
obj.passiveSkillid = this.passiveSkillid;
obj.efIndex = this.efIndex;
obj.efState = this.efState;
obj.nimbus = this.nimbus;
obj.icon = this.icon;
obj.efPos = this.efPos;
obj.efScore = this.efScore;
return obj;
}
getSendInfo(): any {
let result = {
efId: this.efId,
icon: this.icon,
efName: this.efName,
efType: this.efType,
efExp: this.efExp,
level: this.level,
efIndex: this.efIndex,
efLevel: this.efLevel
};
return result;
}
save() {
if (this.efState == 0) {
DB.delEquip(this.efId, this.owner.roleid, (code: number) => {
});
} else {
let savedata: any = {};
savedata.ef_name = this.efName;
savedata.ef_type = this.efType;
savedata.base_attr = SKDataUtil.toJson(this.baseAttr, "{}");
savedata.ef_exp = this.efExp;
savedata.level = this.level;
savedata.ef_level = this.efLevel;
savedata.number = this.number;
savedata.active_skillid = this.activeSkillid;
savedata.passive_skillid = this.passiveSkillid;
savedata.ef_index = this.efIndex;
savedata.ef_state = this.efState;
savedata.nimbus = this.nimbus;
savedata.icon = this.icon;
savedata.ef_pos = this.efPos;
savedata.ef_score = this.efScore;
// DB.saveDhamaInfo(this.efId, this.owner.roleid, savedata, () => {
// });
}
}
}