99 lines
3.5 KiB
JavaScript
99 lines
3.5 KiB
JavaScript
this.inherits(COMMAND);
|
||
this.command = "look,l";
|
||
this.allow_busy = true;
|
||
this.allow_state = true;
|
||
this.regex = /^(\w+?)?(?:\sof\s(\w+))?$/;
|
||
//只能看房间里的物品
|
||
this.enter = function (player, objid, from) {
|
||
if (!objid) {
|
||
|
||
//player.notify(parent.items_to_json());
|
||
//return parent.send_exits(player);
|
||
return;
|
||
}
|
||
if (from) {
|
||
let parent = player.find_obj(from, player.environment);
|
||
if (!parent) return player.notify("你要看谁的装备?");
|
||
var eq = parseInt(objid);
|
||
if (!(eq >= 0 && eq < 11)) return player.notify("你要看什么?");
|
||
if (parent.query_setting("hide_equip")) {
|
||
return player.send("看样子" + parent.call3() + "不想让别人看自己的装备。");
|
||
}
|
||
var item = parent.equipment[eq];
|
||
if (!item) return player.notify(parent.name + "没有装备你要看的东西。");
|
||
|
||
player.notify(item.get_desc(parent));
|
||
if (parent != player)
|
||
player.send_room("$N正盯着$n的" + item.color_name + "看,不知道在打什么主意。", parent, true);
|
||
|
||
} else {
|
||
let parent = player.environment;
|
||
if (!parent) return;
|
||
let obj = parent.find_obj(objid);
|
||
if (!obj) {
|
||
return player.notify("你要看什么?");
|
||
}
|
||
if (obj.query_desc) {
|
||
player.notify(obj.query_desc(player));
|
||
if (obj != player)
|
||
player.send_room(look_str.random(), obj, true);
|
||
if (obj.hp > 0) {
|
||
this.obs(player, obj);
|
||
}
|
||
}
|
||
if (player.is_player && !obj.is_player) {
|
||
obj.on_look && obj.on_look(player);
|
||
}
|
||
}
|
||
|
||
//if (from) {
|
||
// parent = parent.find_obj(from);
|
||
// if (!parent) {
|
||
// return player.notify("你要看什么?");
|
||
// }
|
||
//}
|
||
|
||
//this.exec(player,obj);
|
||
}
|
||
var look_str = ["$N正盯着$n看,不知道在打什么主意。", "$N笑眯眯的看着$n,不知道在想些什么。"];
|
||
|
||
this.obs = function (me, target) {
|
||
let obs = me.query_prop('obs');
|
||
if (!obs || target.is_player || !target.attack_skill) return;
|
||
if (me.query_temp('obs')) return;
|
||
let sk_level = target.query_skill(target.attack_skill.id);
|
||
|
||
if (me.random(obs) + obs > sk_level) {
|
||
let index = me.random(PROPS1.length);
|
||
let prop = PROPS1[index];
|
||
let val = target[prop];
|
||
let diff = 1;
|
||
let desc = '该有';
|
||
if (sk_level > obs) {
|
||
|
||
let oper = (sk_level - obs) / obs;
|
||
let diff = Math.random() * oper * (me.random(2) === 1 ? -0.5 : 0.5);
|
||
val = val + Math.floor(val * diff);
|
||
// diff = 10;
|
||
// if (oper > 0.2) diff *= 10;
|
||
// if (oper > 0.4) diff *= 10;
|
||
// if (oper > 0.6) diff *= 10;
|
||
// if (oper > 0.8) diff *= 10;
|
||
// if (diff > val) {
|
||
// diff = Math.pow(10, Math.floor(Math.log10(val)));
|
||
// }
|
||
desc = diff > 0 ? "不上" : "不下";
|
||
}
|
||
val = Math.floor(val / diff) * diff;
|
||
me.send('你以观气术探向' + target.name + ",其" + PROPS2[index] + "之数" + desc + val + "。");
|
||
|
||
|
||
} else {
|
||
me.send('你以观气术探向' + target.name + ",却见其气场凝练如山,毫无所获。");
|
||
}
|
||
me.set_temp('obs', 1, 10000);
|
||
}
|
||
const PROPS1 = ['hp', 'mp', 'gj', 'fy', 'mz', 'ds', 'zj'];
|
||
const PROPS2 = ['气血', '内力', '攻击', '防御', '命中', '躲闪', '招架'];
|
||
|