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

95 lines
3.2 KiB
JavaScript

this.inherits(TASK);
this.id = "goods";
this.handler = null;
this.customer = {};
this.startup = function (oldtask) {
if (oldtask) {
this.customer = oldtask.customer;
}
this.handler = this.call_out(this.refresh_goods, UTIL.diff_time(12));//12点刷新一次
}
this.refresh_goods = function () {
this.handler = null;
for (var i = 0; i < WORLD.USERS.length; i++) {
WORLD.USERS[i].send('{type:"msg",ch:"chat",content:"近日新到一批宝石,秘籍,丹药,不知哪位江湖朋友需要。",lv:0,name:"唐楠"}');
}
this.customer = {};
var fam = [FAMILIES.GAIBANG, FAMILIES.WUDANG, FAMILIES.HUASHAN, FAMILIES.XIAOYAO, FAMILIES.EMEI, FAMILIES.SHASHOU, FAMILIES.SHAOLIN, FAMILIES.NONE];
for (var i = 0; i < fam.length; i++) {
fam[i].customer = {};
fam[i].send('{type:"msg",ch:"fam",content:"本门新调拨一批物资,有需要的师弟师妹们请速来兑换。",uid:0,name:"后勤管理员",fam:"' + fam[i].name + '"}');
}
this.startup();
}
this.query_goods = function (me) {
if (this.customer[me.id]) return this.customer[me.id];
var ref_count = me.query_temp("ref_count", 0);
var list = [];
list.push(OBJ.CREATE("st/xuanjing", this.random(100) + 2));
var st = ["st/st_red", "st/st_gre", "st/st_blu", "st/st_yel"];
let max_count = 8;
var counts = [3, 3, 2, 1, 1, 1, 1];
for (var i = 0; i < 2; i++) {
var g = this.random(me.level + 1);
if (g > 4) g = 4;
list.push(OBJ.CREATE(st.random() + "#" + g, this.random(counts[g]) + 1));
}
max_count -= 2;
if (me.random(3) === 1) {
st = ["drug/exp", "drug/pot"];
for (var i = 0; i < 2; i++) {
var g = this.random(1 + me.random(me.level));
if (g > 4) g = 4;
list.push(OBJ.CREATE(st.random() + "#" + g, this.random(ref_count) + 1));
}
max_count -= 2;
}
if (me.random(3) === 1) {
st = ["res/cao", "res/yu"];
for (var i = 0; i < 2; i++) {
var g = this.random((me.level + 1) * 3);
list.push(OBJ.CREATE(st.random() + "#" + g, this.random(counts[g] ?? 1) + 1));
}
max_count -= 2;
}
if (me.random(3) === 1) {
let level = this.random(me.level);
let index = this.random(25);
list.push(OBJ.CREATE("drug/yf#" + ((index * 5) + level), 1));
max_count -= 1;
}
if (me.random(this.ref_count) > 4) {
let level = this.random(me.level);
if (level > 3) level = 3;
let index = this.random(25);
list.push(OBJ.CREATE("drug/yf2#" + ((index * 5) + level), 1));
max_count -= 1;
}
if (max_count > 0) {
max_count = Math.min(3, max_count);
for (let i = 0; i < max_count; i++) {
let level = this.random(me.level) + 1;
if (level > 6) level = 6;
else if (level < 1) level = 1;
let sk = FAMILIES.NONE.query_skill(level);
list.push(OBJ.CREATE("book/bc#" + sk.id, 1 + (level < 5 ? me.random(3) : 0)));
}
}
this.customer[me.id] = list;
return list;
}
this.set_goods = function (me, list) {
this.customer[me.id] = list;
}
this.stop = function () {
if (this.handler) clearTimeout(this.handler);
}