Files
wsmud/world/task/wd_task.js
2026-05-26 16:41:20 +08:00

141 lines
3.5 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(USERTASK);
this.id = "wudao";
const TAGS = ['wht', 'hic', 'hiy', 'hiz', 'hio', 'ord'];
this.query_title = function (me) {
let wd_lv = me.query_temp("wd_level", 0);
let lv = Math.floor(wd_lv / 20);
let tag = TAGS[lv];
return `<${tag}>武道塔挑战:${wd_lv}层</${tag}>`;
}
this.query_desc = function (me) {
let lv = me.query_temp("wd_level", 0);
if (!(lv > 0)) return;
let tm = me.query_temp("wd_tm", 0);
let wd = 0;
let mem = "";
let max = 7;
if (tm > 0) {
wd = Math.floor((Date.now() - tm * 100000) / 3600000 / 24);
if (wd <= 0) {
wd = 0;
let time = tm * 100000 + 3600000 * 24 - Date.now();
if (time > 0) {
mem = ",下次领取" + this.format_time_span(time);
}
} else if (wd < max) {
let time = tm * 100000 + 3600000 * 24 * (wd + 1) - Date.now();
if (time > 0) {
mem = ",下次领取" + this.format_time_span(time);
}
} else {
mem = ",已到上限";
wd = Math.min(wd, 7);
}
}
return `你的武道塔挑战记录是${lv}层,守门人将按照你的最高挑战记录发放奖励,当前可领取${wd}/7。<br><mem>每天获得一份奖励,挑战更高层获得更多奖励${mem}</mem>`;
}
this.format_time_span = function (time) {
if (time > 3600000)
return Math.floor(time / 3600000) + "小时后";
if (time > 60000)
return Math.floor(time / 60000) + "分钟后";
return Math.floor(time / 1000) + "秒后";
}
this.query_count = function (me) {
let tm = me.query_temp("wd_tm", 0);
if (!tm) return 0;
tm = Math.floor((Date.now() - tm * 100000) / 3600000 / 24);
return Math.min(tm, 7);
}
//0 不显示 1进行中2.可领取 3.已完成
this.query_state = function (me) {
let lv = me.query_temp("wd_level", 0);
if (!(lv > 0)) return 0;
let sm = this.query_count(me);
return sm > 0 ? 2 : 1;
}
const EXPS = [1000, 2000, 3000, 4000, 5000, 6000, 7000];
this.on_finish = function (me) {
let wd_count = this.query_count(me);
if (!(wd_count > 0)) return false;
let wd_lv = me.query_temp("wd_level", 0);
if (!(wd_lv > 0)) return false;
this.set_curtm(me, wd_count);
for (let i = 0; i < wd_count; i++) {
this.reward(me, wd_lv);
}
me.send('<hic>你领取了' + wd_count + '天的武道塔的奖励。</hic>');
return true;
}
this.set_curtm = function (me, count) {
let tm = me.query_temp("wd_tm", 0);
tm = Math.max((Date.now() - 3600000 * 24 * 7) / 100000, tm);
tm += Math.floor((count * 36 * 24));
me.set_temp("wd_tm", tm);
}
const REWARDS = [
["drug/max_mp#0", "drug/skill2#1"],
["drug/max_mp#1", "drug/skill2#2"],
["drug/max_mp#2", "drug/skill2#3"],
["drug/max_mp#3", "drug/skill2#4"],
["drug/max_mp#4", "drug/skill2#5"],
];
this.reward = function (me, lv) {
let items = [];
let exp = 10000;
if (lv <= 29) {
exp += lv * 10000;
} else {
exp += 29 * 10000;
exp += (lv - 29) * 1000;
}
me.add_exp(exp, exp);
if (lv >= 10) {
let wd_count = Math.floor(lv / 10);
items.push({
obj: "book/wd",
count: wd_count
});
me.add_temp('wds', wd_count);
}
items = OBJ.create_by_odds(items);
for (var i = 0; i < items.length; i++) {
var item = me.add_obj(items[i]);
if (item) {
me.send("你获得了" + items[i].unit_name() + "。");
}
}
}