this.inherits(USERTASK); this.id = "yamen"; const TAGS = ['wht', 'hig', 'hic', 'hiy', 'hiz', 'hio', 'ord']; this.query_title = function (me) { let tag = TAGS[me.query_temp('ym_level', 0)]; return `<${tag}>衙门兼职`; } const TITLES = ['', '衙役', '捕快', '捕头', '总捕头', '巡检', '神捕']; this.query_desc = function (me) { let lv = me.query_temp("ym_level", 0); if (!(lv > 0)) return; let tm = me.query_temp("ym_tm", 0); let ym = 0; let mem = ""; let max = 60; if (tm > 0) { ym = Math.floor((Date.now() - tm * 100000) / 3600000); if (ym <= 0) { ym = 0; let time = tm * 100000 + 3600000 - Date.now(); if (time > 0) { mem = ",下次领取" + this.format_time_span(time); } } else if (ym < max) { let time = tm * 100000 + 3600000 * (ym + 1) - Date.now(); if (time > 0) { mem = ",下次领取" + this.format_time_span(time); } } else { mem = ",已到上限"; ym = Math.min(ym, 60); } } return `你帮衙门追捕逃犯,目前是${TITLES[lv]}职位,可以领取衙门发放的报酬,当前累计${ym}/60。
每小时获得一份报酬,通过追捕更高级别的逃犯提高收益等级${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_ymcount = function (me) { let sm = me.query_temp("ym_tm", 0); if (!sm) return 0; sm = Math.floor((Date.now() - sm * 100000) / 3600000); return Math.min(sm, 60); } //0 不显示 1,进行中,2.可领取 3.已完成 this.query_state = function (me) { let lv = me.query_temp("ym_level", 0); if (!(lv > 0)) return 0; let sm = this.query_ymcount(me); return sm > 0 ? 2 : 1; } //100000 1350000 17066666 84375000 312500000 714583333 //1 2 7 20 45 120 //100000 700000 2438095 4218750 5208333 600000 const EXPS = [0, 5000, 8000, 12000, 16000, 20000, 25000]; const STONES = [0, 5, 10, 15, 20, 25, 30, 35, 40, 60, 70, 80, 90]; const STONES_PATHS = ["st/st_blu#0", "st/st_gre#0", "st/st_red#0", "st/st_yel#0"]; this.on_finish = function (me) { let ym_count = this.query_ymcount(me); if (!(ym_count > 0)) return false; let ym_lv = me.query_temp("ym_level", 0); if (!(ym_lv > 0)) return false; let exp = EXPS[ym_lv] * ym_count; let pot = exp; if (me.level > 2) { pot = parseInt(me.exp / 1200); if (pot > 150000) { pot = 150000; } pot = pot * ym_count; } me.add_exp(exp, pot); this.set_curtm(me, ym_count); let obj_count = STONES[ym_lv] * ym_count; let obj = me.add_obj("st/xuanjing", obj_count); if (obj) { me.send("你获得了" + obj.unit_name(obj_count) + "。"); } obj_count = ym_count * ym_lv; while (obj_count > 0) { let count = this.random(obj_count); if (count < 1) count = 1; obj = me.add_obj(STONES_PATHS.random(), count); obj_count -= count; me.send("你获得了" + obj.unit_name(count) + "。"); } me.send('你领取了' + ym_count + '份衙门发放的报酬。'); let time = Date.now(); if (time > WORLD.DATA.act_stime) { let stime = time - ym_count * 3600000; if (stime < WORLD.DATA.act_stime) stime = WORLD.DATA.act_stime; if (time > WORLD.DATA.act_etime) time = WORLD.DATA.act_etime; let count = Math.floor((time - stime) / 3600000); count = count * Math.max(me.query_temp('ym_level', 0) - 1, 1); if (count > 0) { let cjjf = me.add_temp('my', count); me.notify('你获得' + count + "枚古币,当前总计" + cjjf + "。"); } } return true; } this.set_curtm = function (me, count) { let tm = me.query_temp("ym_tm", 0); tm = Math.max((Date.now() - 3600000 * 60) / 100000, tm); tm += Math.floor((count * 36)); me.set_temp("ym_tm", tm); }