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

76 lines
2.3 KiB
JavaScript

this.inherits(COMMAND);
this.command = "cha,skills";
this.allow_busy = true;
this.allow_state = true;
this.allow_die = true;
this.allow_faint = true;
this.enter = function (me, arg) {
var target = me;
var isfollower = false;
if (arg) {
if (arg == "none") return me.notify('{"type":"dialog","dialog":"skills","limit":' + me.skill_limit() + "}");
target = me.find_obj(arg, me.environment);
if (!target && me.user_level > 1) {
target = WORLD.getUser(arg);
}
if (!target) {
return me.notify("这里没有这个人。");
}
if (target.master == me.id) {
isfollower = true;
} else {
if (target.on_checkskill) {
if (target.on_checkskill(me) == false) return;
} else {
if (me.user_level < 4 && !target.is(me.query_temp("master")))
return me.notify("你只能查看自己师父的技能。");
}
}
}
this.render_skill(me, target, isfollower);
}
this.render_skill = function (me, target, isfollower) {
var skills = target.skills;
var str = ['{"type":"dialog","dialog":"'];
str.push(me === target ? 'skills' : 'master');
str.push('","items":[');
if (skills) {
var skill_count = 0;
for (var skid in skills) {
var skill_base = SKILL.get(skid);
if (!skill_base) continue;
if (skill_count > 0) str.push(",");
skill_base.item_to_json(str, skills[skid], target);
skill_count++;
}
}
str.push('],title:"');
str.push(target == me ? "你" : target.name);
str.push(skill_count > 0 ? "共学会" + skill_count + "项技能" : "没有学会任何技能");
str.push('"');
str.push(',limit:');
if (isfollower)
str.push(target.skill_limit());
else
str.push(me.skill_limit());
str.push(',pot:');
str.push(me.pot);
if (target !== me) {
str.push(isfollower ? ",follower:\"" : ',master:\"');
str.push(target.id);
str.push("\"");
if (isfollower) {
str.push(',target:\"');
str.push(target.name);
str.push("\"");
}
} else {
str.push(',sk_group:', WORLD.COMMANDS.skgroup.cur_eqs(me));
}
str.push("}");
me.send(str.join(""));
}