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 + "份门派进阶残页。";
}
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("你遗忘的技能" + skill_base.query_color_name(me) + "转化为" + exp + "点潜能。");
} else {
me.notify("你已遗忘技能" + skill_base.query_color_name(me) + "。");
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("你的" + skill_base.query_color_name(me)
+ "重置为" + level + "级,返回" + exp + "点潜能。");
// 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;
}