/**
* 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() */