#include <group_handler.h>
inherit GROUP_SUBCOMMAND_INHERITABLE;
int do_assist( object member, string group );
int do_unassist( object member, string group );
int do_assist_list(string group);
void create() {
::create();
add_group_sub_command( "assist", "<indirect:living'member'>",
(: do_assist( $1[ 0 ], $6 ) :) );
add_group_sub_command( "unassist", "<indirect:distant-living'member'>",
(: do_unassist( $1[ 0 ], $6 ) :) );
add_group_sub_command( "assist", "list",
(: do_assist_list( $6 ) :) );
set_membership_required( "assist", 0, 1 );
} /* create() */
int do_assist_list( string group ) {
object *assisting;
assisting = this_player()->query_assisting();
if( sizeof( assisting ) )
{
tell_object( this_player(), "You are currently "
"assisting " + query_multiple_short( assisting ) +
".\n" );
return 1;
}
add_failed_mess("You are not assisting anyone.\n");
return 0;
} /* do_assist_list() */
int do_assist( object member, string group ) {
object *assisting;
assisting = this_player()->query_assisting();
if( member == this_player() ) {
return notify_fail( "Don't be stupid.\n" );
}
if( !GROUP->is_member( group, member ) ) {
add_failed_mess( member->the_short() + " is not a "
"member of your group.\n" );
return 0;
}
if( member->query_assisters() &&
member_array( this_player(), member->query_assisters() ) != -1 ) {
add_failed_mess( "You are already assisting " + member->the_short() +
".\n" );
return 0;
}
if( sizeof( assisting ) >= MAX_PEOPLE_YOU_CAN_ASSIST ) {
add_failed_mess( "You can not assist any more people.\n" );
return 0;
}
add_succeeded_mess( "$N begin$s keeping a close eye on $I.\n",
({ member }) );
member->add_assister( this_player() );
return 1;
} /* do_assist() */
int do_unassist( object member, string group ) {
if( member == this_player() ) {
return notify_fail( "Don't be stupid.\n" );
}
if( member->query_assisters() &&
member_array( this_player(), member->query_assisters() ) != -1 ) {
member->remove_assister( this_player() );
add_succeeded_mess( ({ "You stop assisting " + member->the_short() +
".\n", "" }) );
return 1;
}
add_failed_mess("You are not assisting $I.\n", ({ member }));
return 0;
} /* do_unassist() */
string query_help_string_for( string sub ) {
return "With this command you can guard a group member. If the "
"person you're guarding gets attacked, you will automatically "
"join the fight after a delay. The length of the delay depends "
"on how many people you're guarding at the moment. Use "
"\"list\" to see who you are currently assisting. To stop "
"assisting someone, use \"group assist <someone>\" again "
"on that person.\n";
} /* query_help_string_for() */