/* -*- LPC -*- */
/*
* $Locker: $
* $Id: removeg_roup.c,v 1.1 2000/06/17 06:48:19 pinkfish Exp $
*
*/
inherit "cmds/base";
#define TEAM_HANDLER "/obj/handlers/team"
int do_leave(string group, object member);
mixed cmd(string str) {
string group;
object player, *members, member;
notify_fail("Syntax: removegroup <member>\n");
player = find_player(str);
if(!(group = TEAM_HANDLER->query_group(this_player())))
return notify_fail("You are not a member of a group.\n");
if(TEAM_HANDLER->query_owner(group) != player)
return notify_fail("Sorry, you are not the leader of " + group + ".\n");
if(member_array(player, TEAM_HANDLER->query_members(group)) == -1)
return notify_fail("Sorry, " + str + " is not a member of " + group +
".\n");
members = TEAM_HANDLER->query_members( group );
if ( !members) {
TEAM_HANDLER->leave_group(group, this_player());
TEAM_HANDLER->end_group( group );
write( "Somehow your group has no members. "
"Your group has been ended. "
"I hope this is okay.\n" );
return 1;
} else if(!(TEAM_HANDLER->query_owner(group))) {
TEAM_HANDLER->leave_group( group, member );
TEAM_HANDLER->end_group( group );
write( "Somehow your group has no leader. "
"Your group has been ended. "
"I hope this is okay.\n" );
return 1;
}
foreach( member in members ) {
if ( !member )
continue;
tell_object(member, player->short()+" is removed from the "
"group.\n");
}
do_leave(group, player);
return 1;
}
int do_leave(string group, object member) {
object person;
if(!TEAM_HANDLER->leave_group(group, member))
return notify_fail("Ack, something went wrong.\n");
if ( !sizeof( (object *)TEAM_HANDLER->query_members( group ) ) )
return 0;
foreach(person in TEAM_HANDLER->query_members(group)) {
if(person) {
member->remove_protector(person);
person->remove_protector(member);
member->remove_follower(person);
person->remove_follower(member);
}
}
return 1;
}