init: add workspace files
This commit is contained in:
82
world/cmd/obj/receive.js
Normal file
82
world/cmd/obj/receive.js
Normal file
@@ -0,0 +1,82 @@
|
||||
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('没有可领取的消息。');
|
||||
}
|
||||
Reference in New Issue
Block a user