init: add workspace files
This commit is contained in:
175
os/char/chara_equip.js
Normal file
175
os/char/chara_equip.js
Normal file
@@ -0,0 +1,175 @@
|
||||
|
||||
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);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user