/** * Fetch command to retrieve objects from the broken room for players. * @author Taffyd * @started 29/01/0 2:43AM */ #include <move_failures.h> #include <playerinfo.h> #define BROKEN_ROOM "/room/broken" inherit COMMAND_BASE; int cmd( mixed *indirect_obs ) { object *broken_items, *failed, *success; object player; if ( sizeof( indirect_obs ) != 2 ) { return 0; } if ( sizeof( indirect_obs[ 1 ] ) > 1 ) { add_failed_mess( "You cannot $V an object for more than one " "player at once.\n" ); return 0; } player = indirect_obs[ 1 ][ 0 ]; broken_items = indirect_obs[ 0 ]; failed = filter( broken_items, (: $1->move( $(player), "$N appear$s in your inventory." ) != MOVE_OK :) ); success = broken_items - failed; if ( sizeof( failed ) ) { tell_object( this_player(), "Warning-- could not move " + query_multiple_short( failed ) + " to " + player->the_short() + ".\n" ); } if ( sizeof( success ) ) { PLAYERINFO_HANDLER->add_entry( this_player(), player->query_name(), "replace", "Fetched " + implode( success->short(), "," ) + " from /room/broken."); add_succeeded_mess( "$N $V $I for " + player->the_short() + " from " "the broken room.\n", success ); return 1; } add_failed_mess( "No objects could be retrieved for $I.\n", ({ player }) ); return -1; } /* cmd() */ mixed *query_patterns() { return ({ "<indirect:object:" + BROKEN_ROOM + "> [for] <indirect:player>", (: cmd($1) :) }); } /* query_patterns() */