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

116 lines
4.2 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
this.inherits(COMMAND);
this.command = "fangqi";
this.allow_fight = false;
this.regex = /^(\w+)(?:\s+(\w+))?$/;
this.enter = function (me, skillid, sid) {
if (!me.skills) return me.notify("你还不会任何技能。");
var skill = me.skills[skillid];
if (!skill) return me.notify("你还不会这个技能。");
var skill_base = SKILL.get(skillid);
if (!skill_base) return me.notify("没有这个技能。");
if (skill_base.grade < 1 || skill_base.type === SKILL_TYPES.KNOWLEDGE) {
return me.notify("基础和知识技能不能遗忘。");
}
if (!sid) {
if (skill.ref) {
return me.notify("你需要先取消融合才可以遗忘技能。");
}
if (skill.addin && skill.addin.length > 0) {
return me.notify("你需要先取消进阶才可以遗忘技能。");
}
}
let up_count = 0;
if (skill_base.source_skill) {
up_count += (skill_base.grade === 4 ? 50 : 100);
}
var level = skill.level;
var exp = (100 + level) * (level - 100) / 2 * (skill_base.query_grade(me) + 1) * 5;
if (skill_base.type !== SKILL_TYPES.KNOWLEDGE) {
if (!sid) {
let str = "。";
if (up_count > 0) {
str = ",直接遗忘会退还" + up_count + "份<hiz>门派进阶残页</hiz>。";
}
let befroe = me.master ? "dc " + me.id + " " : "";
me.send("是否确认重置" + skill_base.query_color_name(me) + "100级后的潜能全部返还" + str);
return me.send_commands(befroe + 'fangqi ' + skillid + " ok", '直接遗忘',
befroe + 'fangqi ' + skillid + " 100", "重置到100级",
befroe + 'fangqi ' + skillid + " 3000", "重置到3000级");
} else if (sid !== 'ok') {
let reset_level = parseInt(sid);
if (!(reset_level >= 100)) return me.notify('输入等级错误。');
return this.reset_skill(me, skill, skill_base, reset_level);
}
}
exp = parseInt(exp);
if (me.remove_skill(skillid)) {
me.notify('{type:"dialog",dialog:"skills","from":"' + me.id + '",remove:"' + skillid + '"}');
if (level > 100 && skill_base.type !== SKILL_TYPES.KNOWLEDGE) {
me.pot += exp;
me.notify("<hic>你遗忘的技能" + skill_base.query_color_name(me) + "转化为" + exp + "点潜能。</hic>");
} else {
me.notify("<hic>你已遗忘技能" + skill_base.query_color_name(me) + "。</hic>");
exp = 0;
}
if (up_count > 0) {
let obj = me.add_obj('book/up', up_count);
me.send('你获得' + obj.unit_name(up_count) + "。")
}
if (me.master) return;
WORLD.add_recover_obj(me, {
id: skillid,
name: skill_base.color_name,
up_count: up_count,
addin: skill.addin,
level: level,
pot: exp
}, 3);
}
}
this.reset_skill = function (me, skill, skill_base, level) {
if (skill_base.type === SKILL_TYPES.KNOWLEDGE) return me.notify_fail('知识类技能无法重置。');
if (skill.level <= level) return me.notify("你的" + skill_base.query_color_name(me) + "不用重置等级。");
let exp = (100 + skill.level) * (skill.level - 100) / 2 * (skill_base.query_grade(me) + 1) * 5;
if (level > 100) {
exp -= (100 + level) * (level - 100) / 2 * (skill_base.query_grade(me) + 1) * 5;
}
me.pot += exp;
let curr_level = me.query_skill(skill_base.id, 0);
me.notify("<hic>你的" + skill_base.query_color_name(me)
+ "重置为" + level + "级,返回" + exp + "点潜能。</hic>");
// console.log(curr_level);
me.add_score(-skill_base.query_score(curr_level, me));
skill_base.release_prop(me, curr_level);
skill.level = level;
skill.exp = 0;
curr_level = me.query_skill(skill_base.id, 0);
// console.log(curr_level);
me.add_score(skill_base.query_score(curr_level, me));
skill_base.attach_prop(me, curr_level);
me.recount();
var str = ['{type:"dialog",dialog:"skills",item:'];
skill_base.item_to_json(str, skill, me);
str.push("}");
me.notify(str.join(""));
return true;
}