82 lines
2.8 KiB
JavaScript
82 lines
2.8 KiB
JavaScript
this.inherits(COMMAND);
|
|
this.command = "receive";
|
|
this.allow_busy = true;
|
|
this.allow_state = true;
|
|
this.allow_die = true;
|
|
this.allow_faint = true;
|
|
this.regex = /^(\w+)\s(\d+)$/;
|
|
const MESSAGE = WORLD.MESSAGE;
|
|
this.enter = function (me, from, index) {
|
|
//if (from === 'all') return this.receive_all(me);
|
|
|
|
if (index !== undefined)
|
|
this.receive_single(me, from, index);
|
|
else if (from)
|
|
this.receive_from(me, from);
|
|
else
|
|
this.receive_all(me);
|
|
}
|
|
this.receive_single = function (me, from, index) {
|
|
let msg = MESSAGE.getMessageByIndex(me, from, index);
|
|
if (!msg) return me.send("没有这个消息。");
|
|
if (msg.rec) return me.send("你已经领取了。");
|
|
|
|
if (!msg.attach) return me.send("这个消息没有附件。");
|
|
// if (me.is_full()) return me.send("你身上东西太多了。");
|
|
this.receive_item(me, msg, from, index);
|
|
}
|
|
this.receive_item = function (me, msg, from, index) {
|
|
msg.rec = true;
|
|
for (var i = 0; i < msg.attach.length; i++) {
|
|
var count = msg.attach[i].count || 1;
|
|
var obj = OBJ.CREATE(msg.attach[i].obj, count);
|
|
if (!obj) continue;
|
|
if (obj.on_receive) {
|
|
obj.on_receive(me);
|
|
} else {
|
|
obj = me.add_obj(obj);
|
|
me.notify("你领取了" + obj.unit_name(count) + "。");
|
|
if (obj.grade > 5) {
|
|
COMMAND.DO("rumor", "听说有人得到了一" + obj.unit + obj.name + "。");
|
|
}
|
|
}
|
|
}
|
|
me.send('{dialog:"message",type:"dialog",receive:"' + from + '",index:' + index + '}');
|
|
}
|
|
|
|
this.receive_from = function (me, from) {
|
|
let stores = MESSAGE.stores.get(me.id);
|
|
if (!stores) return;
|
|
if (me.is_full()) return me.send("你身上东西太多了。");
|
|
let store = stores.get(from);
|
|
if (!store) return me.send("没有这个消息类型。");
|
|
let list = store.items;
|
|
let count = 0;
|
|
for (let i = 0; i < list.length; i++) {
|
|
let item = list[i];
|
|
if (!item.attach || item.rec) continue;
|
|
this.receive_item(me, item, from, i);
|
|
count++;
|
|
}
|
|
if (count > 0)
|
|
return me.send('领取完毕,共收取' + count + '条消息的附件。');
|
|
return me.send('没有可领取的消息。');
|
|
}
|
|
this.receive_all = function (me) {
|
|
let store = MESSAGE.stores.get(me.id);
|
|
if (!store) return;
|
|
if (me.is_full()) return me.send("你身上东西太多了。");
|
|
let count = 0;
|
|
store.forEach((x, y) => {
|
|
let list = x.items;
|
|
for (let i = 0; i < list.length; i++) {
|
|
let item = list[i];
|
|
if (!item.attach || item.rec) continue;
|
|
this.receive_item(me, item, y, i);
|
|
count++;
|
|
}
|
|
});
|
|
if (count > 0)
|
|
return me.send('领取完毕,共收取' + count + '条消息的附件。');
|
|
return me.send('没有可领取的消息。');
|
|
} |