64 lines
1.9 KiB
JavaScript
64 lines
1.9 KiB
JavaScript
this.inherits(COMMAND);
|
|
this.command = "events";
|
|
this.allow_busy = true;
|
|
this.allow_state = true;
|
|
this.allow_die = true;
|
|
this.allow_faint = true;
|
|
this.regex = /^(\w+)(?:\s+(\w+))$/;
|
|
this.enter = function (me, type, paras) {
|
|
let events = WORLD.USER_EVENTS;
|
|
if (type) {
|
|
for (let i = 0; i < events.length; i++) {
|
|
let evt = events[i];
|
|
if (evt.id === type) {
|
|
if (this.check_command(evt, me)) {
|
|
if (evt.on_command?.(me, paras)) {
|
|
me.send('{type:"dialog",dialog:"events",close:true}');
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
return me.send('什么?');
|
|
} else {
|
|
let str = ['{type:"dialog",dialog:"events",items:['];
|
|
let now = Date.now();
|
|
for (let i = 0; i < events.length; i++) {
|
|
let evt = events[i];
|
|
if (evt.check && !evt.check(me))
|
|
continue;
|
|
if (evt.time > 0 && evt.time < now) {
|
|
continue;
|
|
}
|
|
if (str.length > 1) str.push(',');
|
|
str.push(`["${evt.id}","${evt.name}","${evt.query_desc(me)}",${evt.query_grade(me)},${evt.time},"${evt.command ?? ""}"]`);
|
|
}
|
|
|
|
str.push(']}');
|
|
|
|
me.send(str.join(""));
|
|
}
|
|
|
|
}
|
|
|
|
this.check_command = function (event, me) {
|
|
|
|
if (me.hp <= 0 && !event.allow_die) {
|
|
return me.notify_fail("你现在是灵魂状态,不能那么做。");
|
|
}
|
|
if (!event.allow_faint && me.is_faint) {
|
|
|
|
me.send("你正在昏迷中!");
|
|
return false;
|
|
}
|
|
if (!event.allow_state && me.state) {
|
|
return me.notify_fail("你正在" + me.state.title + ",没时间这么做。");
|
|
}
|
|
if (!event.allow_fight && me.fight_type > 0) {
|
|
return me.notify_fail("你正在战斗,待会再说。");
|
|
}
|
|
if (!event.allow_busy && me.is_busy) {
|
|
return me.notify_fail("你现在正忙。");
|
|
}
|
|
return true;
|
|
} |