#include <move_failures.h>
inherit COMMAND_BASE;
// #define NO_DECAY 1
mixed cmd(string str) {
object *items, *moved = ({ }), *left = ({ });
int i;
//printf("str = %O\n", str);
if (!stringp(str) || (str == ""))
return notify_fail("Syntax: gather <plant>\n");
items = "/handlers/gathering"->gather_item(str, TP);
//printf("items = %O\n", items);
if (!sizeof(items))
return notify_fail("You couldn't find any " + str + ".\n");
for (i = 0; i < sizeof(items); i++) {
if (items[i]->move(TP) == MOVE_OK) {
moved += ({ items[i] });
} else if (items[i]->move(environment(TP)) == MOVE_OK) {
left += ({ items[i] });
} else {
items[i]->move("/room/rubbish");
}
}
if (sizeof(moved)) {
#ifdef NO_DECAY
moved->set_decay_speed(0);
#endif
write("You gather " + query_multiple_short(moved) + ".\n");
say(TP->short() + " gathers some things.\n");
event( environment( this_player() ), "gather",
this_player(), str, moved );
}
if (sizeof(left))
write("You found but couldn't get " + query_multiple_short(left) +
".\n");
return 1;
}