176 lines
5.0 KiB
JavaScript
176 lines
5.0 KiB
JavaScript
|
|
require("./character.js");
|
|
CHARACTER.prototype.set_objects = function () {
|
|
if (!arguments.length) return;
|
|
if (!this.items) this.items = [];
|
|
for (var i = 0; i < arguments.length; i++) {
|
|
var item = arguments[i];
|
|
var obj = OBJ.CREATE(item[0], item[1]);
|
|
if (!obj) continue;
|
|
if (item[2] && obj.is_equipment) {
|
|
if (!this.equipment) this.equipment = []
|
|
this.equipment[obj.eq_type] = obj;
|
|
} else {
|
|
this.items.push(obj);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
CHARACTER.prototype.unequip = function (obj, notsend, recover_time = 0) {
|
|
if (!obj || !obj.is_equipment || !this.equipment) return;
|
|
if (obj.uneq(this, notsend) == false) {
|
|
return false;
|
|
}
|
|
if (obj != this.equipment[obj.eq_type]) return;
|
|
if (!this.items) this.items = [];
|
|
this.items.push(obj);
|
|
this.equipment[obj.eq_type] = null;
|
|
if (obj.eq_type == EQUIP_TYPE.WEAPON) {
|
|
this.remove_status('weapon', true);
|
|
if (obj.is_shortcut) {
|
|
this.send("{type:'addAction',id:'" + obj.id + "',name:'" + obj.name + "'}");
|
|
}
|
|
}
|
|
|
|
if (obj.eq_type === EQUIP_TYPE.WEAPON)
|
|
this.weapon_changed(false);
|
|
this.recount();
|
|
if (recover_time > 0 && this.is_player) {
|
|
this.set_temp('eq_wea', obj.id, 60000);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
CHARACTER.prototype.equip = function (obj) {
|
|
if (!obj || !obj.is_equipment) return;
|
|
if (!this.equipment) this.equipment = []
|
|
var equiped = this.equipment[obj.eq_type];
|
|
if (equiped == obj) {
|
|
return;
|
|
}
|
|
if (equiped) {
|
|
equiped.uneq(this);
|
|
this.equipment[equiped.eq_type] = null;
|
|
this.items.push(equiped);
|
|
if (equiped.eq_type == EQUIP_TYPE.WEAPON) {
|
|
this.remove_status('weapon', true);
|
|
}
|
|
if (equiped.on_use) {
|
|
equiped.notify_action(this, false);
|
|
}
|
|
if (equiped.is_shortcut) {
|
|
this.send("{type:'addAction',id:'" + equiped.id + "',name:'" + equiped.name + "'}");
|
|
}
|
|
}
|
|
if (obj.eq(this) == false) {
|
|
if (equiped) {
|
|
if (obj.eq_type === EQUIP_TYPE.WEAPON)
|
|
this.weapon_changed(false);
|
|
this.recount();
|
|
}
|
|
return false;
|
|
}
|
|
this.items.remove(obj);
|
|
this.equipment[obj.eq_type] = obj;
|
|
if (obj.eq_type === EQUIP_TYPE.WEAPON)
|
|
this.weapon_changed(true);
|
|
this.recount();
|
|
if (obj.is_shortcut) {
|
|
this.send("{type:'removeAction',id:'" + obj.id + "'}");
|
|
}
|
|
if (obj.eq_type == EQUIP_TYPE.WEAPON) {
|
|
if (this.fight_type) {
|
|
this.release_time = 3000 + Date.now();
|
|
this.send('{type:"dispfm",rtime:3000}');
|
|
}
|
|
if (this.query_temp('jxtm')) {
|
|
this.remove_status('force');
|
|
}
|
|
}
|
|
}
|
|
const WEAPON_TYPES = {
|
|
"sword": true,
|
|
"blade": true,
|
|
"staff": true,
|
|
"club": true,
|
|
"whip": true
|
|
}
|
|
CHARACTER.prototype.weapon_changed = function (iseq) {
|
|
this.attack_skill = this.query_used_skill(this.query_weapon_type());
|
|
this.on_skillchanged && this.on_skillchanged();
|
|
if (!this.auto_skills) return;
|
|
|
|
for (let item of this.auto_skills) {
|
|
if (WEAPON_TYPES[item.type]) {
|
|
item.ban_use = !iseq;
|
|
}
|
|
}
|
|
}
|
|
CHARACTER.prototype.add_obj = function (obj, count) {
|
|
if (!obj) return;
|
|
if (typeof obj == "string") {
|
|
obj = OBJ.clone_to(obj, this, count);
|
|
if (!obj) return;
|
|
} else {
|
|
obj = this.push_item(obj);
|
|
}
|
|
return obj;
|
|
}
|
|
CHARACTER.prototype.remove_obj = function (obj, count) {
|
|
if (typeof obj == "string") {
|
|
obj = this.find_obj(obj);
|
|
}
|
|
if (!obj) return;
|
|
count = count || obj.count || 1;
|
|
this.remove_item(obj, count);
|
|
return obj;
|
|
}
|
|
CHARACTER.prototype.query_weapon = function () {
|
|
if (this.equipment) {
|
|
return this.equipment[EQUIP_TYPE.WEAPON];
|
|
}
|
|
}
|
|
CHARACTER.prototype.query_weapon_type = function () {
|
|
if (this.equipment) {
|
|
var eq = this.equipment[EQUIP_TYPE.WEAPON];
|
|
if (eq) return eq.weapon_type;
|
|
}
|
|
return WEAPON_TYPE.NONE;
|
|
}
|
|
CHARACTER.prototype.weapon_name = function () {
|
|
if (this.equipment && this.equipment[EQUIP_TYPE.WEAPON]) {
|
|
return this.equipment[EQUIP_TYPE.WEAPON].color_name;
|
|
}
|
|
return "";
|
|
}
|
|
CHARACTER.prototype.throwing_name = function () {
|
|
if (this.equipment && this.equipment[EQUIP_TYPE.THROWING]) {
|
|
return this.equipment[EQUIP_TYPE.THROWING].color_name;
|
|
}
|
|
return "";
|
|
}
|
|
CHARACTER.prototype.can_throwing = function () {
|
|
if (this.equipment) {
|
|
var th = this.equipment[EQUIP_TYPE.THROWING];
|
|
if (!th) return false;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
CHARACTER.prototype.get_equipment = function (type) {
|
|
return this.equipment && this.equipment[type];
|
|
}
|
|
CHARACTER.prototype.set_drop = function () {
|
|
this.drop_list = this.drop_list || [];
|
|
for (var i = 0; i < arguments.length; i++) {
|
|
this.drop_list.push(arguments[i]);
|
|
}
|
|
}
|
|
CHARACTER.prototype.query_drop = function () {
|
|
if (!this.drop_list) return;
|
|
return OBJ.create_by_odds(this.drop_list);
|
|
|
|
}
|