init: add workspace files

This commit is contained in:
2026-05-26 16:41:20 +08:00
commit f4f2393f72
1041 changed files with 67405 additions and 0 deletions

98
world/cmd/action/look.js Normal file
View File

@@ -0,0 +1,98 @@
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 = ['气血', '内力', '攻击', '防御', '命中', '躲闪', '招架'];