Files
wsmud/world/cmd/obj/checkobj.js
2026-05-26 16:41:20 +08:00

65 lines
2.0 KiB
JavaScript

this.inherits(COMMAND);
this.command = "checkobj";
this.allow_busy = true;
this.allow_state = true;
this.allow_die = true;
this.regex = /^(\w+?)\s+from\s+(\w+)$/;
this.enter = function (player, objid, type) {
var obj = null;
if (type == "item") {
obj = player.find_obj(objid);
} else if (type == "eq") {//装备和物品只能检查自己的
if (player.equipment) {
for (var i = 0; i < player.equipment.length; i++) {
if (player.equipment[i]&&player.equipment[i].id == objid) {
obj = player.equipment[i];
break;
}
}
}
} else if (type == "store") {
obj = player.find_obj_byid(player.stores, objid);
} else if (type == "sj") {
obj = player.find_obj_byid(player.books, objid);
} else {
var target = player.find_obj(type, player.environment);
if (!target) return player.notify("你要从谁那里看?");
if (target.on_checkobj) {
obj = target.on_checkobj(player, objid);
} else if (target.sell_list) {
var selllist = target.sell_list;
if (target.on_sell) {
selllist = target.on_sell(player);
}
if (!selllist) {
return player.notify(target.name + "不出售这个东西。");
}
obj = player.find_obj_byid(selllist, objid);
}
}
if (!obj) {
return player.notify("你要看什么?");
}
player.notify(query_obj_desc(player,obj, type));
}
function query_obj_desc(player,obj, type) {
var json = {};
json.type = "dialog";
json.dialog = "pack";
json.from = type;
json.id = obj.id;
json.desc = obj.get_desc(player);
if (obj.actions) {
json.commands = [];
for (var key in obj.actions) {
if (obj.actions[key].name)
json.commands.push({ cmd: key, name: obj.actions[key].name });
}
}
return JSON.stringify(json);
}