void main( string arg ) { object ob; object *inv; int i; object *objs; if( arg == "" ) { write( "Get what?\n" ); return; } if( arg == "all" ) { inv = this_environment()->query_inventory(); for( i=0; i < sizeof( inv ); i++ ) { if( inv[i]->is_gettable() ) { if( inv[i]->move( this_player() ) ) { this_player()->targetted_action( "$N $vpick up $o.", 0, inv[i] ); } else { this_player()->targetted_action( "$N $vtry to pick up $o, but $vfail.", 0, inv[i] ); } } else { if( !inv[i]->is_player() ) { this_player()->targetted_action( "$N $vare unable to get $o.", 0, inv[i] ); } } } return; } ob = this_environment()->find_object( arg ); if( ob == 0 ) { /* Hmm. Not a real object. Maybe it's a fake one. */ /* Check the players inventory */ objs = this_player()->query_inventory(); for( i = 0; i < sizeof( objs ); i++ ) { if( objs[i]->query_items() != 0 ) { if( member_array( arg, objs[i]->query_items() ) != -1 ) { /* Found a fake object */ write(" You are unable to get the "+arg+".\n"); return; } } } /* Check if it's in the room */ if( member_array( arg, this_environment()->query_items() ) != -1 ) { /* Found a fake object */ this_player()->targetted_action( "$N $vare unable to get the "+arg+".", 0, ob ); return; } /* Check the rooms inventory */ objs = this_environment()->query_inventory(); for( i = 0; i < sizeof( objs ); i++ ) { if( objs[i]->query_items() != 0 ) { if( member_array( arg, objs[i]->query_items() ) != -1 ) { /* Found a fake object */ write(" You are unable to get the "+arg+".\n"); return; } } } /* There is nothing at all like that here to try to get */ write( "You can't seem to find the " + arg + ".\n" ); return; } else { /* try to get a real item */ if( ob->is_gettable() ) { if( ob->move( this_player() ) ) { this_player()->targetted_action( "$N $vpick up $o.", 0, ob ); } else { this_player()->targetted_action( "$N $vtry to pick up $o, but $vfail.", 0, ob ); } } else { this_player()->targetted_action( "$N $vare unable to get $o.", 0, ob ); } } }