inherit COMMAND_BASE; /** @ignore yes */ mixed cmd( object *indirect_obs, string direction ) { string owner, *words, word; object owner_ob; if ( TP->query_property( "dead" ) ) return notify_fail( "You're dead. You can't drag anything.\n" ); if ( objectp( (object)TP->query_dragging() ) ) return notify_fail( "You're already dragging something.\n" ); if ( sizeof( indirect_obs ) > 1 ) return notify_fail( "You can only drag one thing at a time.\n" ); if ( living( indirect_obs[ 0 ] ) ) { /* For the moment, any living thing not passed out cannot be dragged. */ if ( !indirect_obs[ 0 ]->query_property( PASSED_OUT ) || pk_check( indirect_obs[ 0 ], TP ) ) return notify_fail( (string)indirect_obs[ 0 ]->the_short() + " doesn't want to be dragged away, thank you very much.\n" ); } else if(base_name(indirect_obs[0]) == "/obj/corpse") { owner = indirect_obs[ 0 ]->query_owner(); words = explode( lower_case( owner ), " " ); words = filter(words, (: "/secure/login"->test_user($1) :)); foreach (word in words) { owner_ob = find_player(lower_case(word)); if(owner_ob && userp(owner_ob) && pk_check( owner_ob, TP ) && member_array( TP->query_name(), indirect_obs[0]->query_permitted() ) == -1 ) return notify_fail( "For some reason, you can't get hold of "+ (string)indirect_obs[ 0 ]->the_short() +".\n" ); } } if ( ( environment( indirect_obs[ 0 ] ) != environment( TP ) ) || indirect_obs[ 0 ]->get() ) return notify_fail( "For some reason, you can't get hold of "+ (string)indirect_obs[ 0 ]->the_short() +".\n" ); write( "You get hold of "+ (string)indirect_obs[ 0 ]->the_short() +".\n" ); say( (string)TP->one_short() +" gets hold of "+ (string)indirect_obs[ 0 ]->a_short() +".\n" ); if ( (int)indirect_obs[ 0 ]->query_complete_weight() + (int)TP->query_loc_weight() > 2 * (int)TP->query_max_weight() ) { write( "You struggle and strain, but you can't budge "+ (string)indirect_obs[ 0 ]->query_pronoun() +".\n" ); say( (string)TP->one_short() +" struggles and strains, but "+ (string)TP->query_pronoun() +" can't budge "+ (string)indirect_obs[ 0 ]->query_pronoun() +".\n" ); } else { TP->set_dragging( indirect_obs[ 0 ] ); if ( !TP->exit_command( direction ) ) write( "You can't drag "+ (string)indirect_obs[ 0 ]->the_short() + " that way.\n" ); TP->reset_dragging(); } write( "You let go of "+ (string)indirect_obs[ 0 ]->the_short() +".\n" ); say( (string)TP->the_short() +" releases "+ (string)TP->query_possessive() +" hold of "+ (string)indirect_obs[ 0 ]->the_short() +".\n" ); return 1; } /* cmd() */ /** @ignore yes */ mixed query_patterns() { return ({ "<indirect:object:here> to <string'direction'>", (: cmd( $1, implode($4[1..], " ") ) :), "<indirect:object:here> <word'direction'>", (: cmd( $1, $4[1] ) :), }); } /* query_patterns() */