/* -*- LPC -*- */
/*
* $Locker: $
* $Id: joing_roup.c,v 1.1 1998/01/06 05:29:43 ceres Exp $
* $Log: joing_roup.c,v $
* Revision 1.1 1998/01/06 05:29:43 ceres
* Initial revision
*
*/
/* command, trial out by Turrican for a commands daemon. */
inherit "cmds/base";
#define TEAM_HANDLER "/obj/handlers/team"
mixed cmd(string str) {
object owner, person;
int policy;
if(!str)
return notify_fail("Syntax: joingroup <group name>\n");
if(TEAM_HANDLER->query_group(this_player()))
return notify_fail("You are already a member of a group.\n");
if(!TEAM_HANDLER->test_group(str))
return notify_fail("Sorry, there is no group by that name.\n");
owner = TEAM_HANDLER->query_owner(str);
if(!owner || environment(owner) != environment(this_player()))
return notify_fail("Sorry, the owner of "+str+" is not here.\n");
if(TEAM_HANDLER->query_full(str))
return notify_fail("Sorry, that group is full, you cannot join.\n");
if(TEAM_HANDLER->query_locked(str))
return notify_fail("Sorry, that group is locked, you cannot join.\n");
policy = TEAM_HANDLER->query_policy(str);
if(!TEAM_HANDLER->join_group(str, this_player()))
return notify_fail("Ack, something went wrong.\n");
foreach(person in TEAM_HANDLER->query_members(str)) {
if(person && present(person, environment(this_player())) &&
person != this_player()) {
this_player()->add_protector(person);
person->add_protector(this_player());
if(policy == 1) // follow all
this_player()->add_follower(person);
if((policy == 1) || (person == owner)) // only follow leader
person->add_follower(this_player());
}
}
write("You join "+str+" and will now protect and be protected by "
"them.\n");
say(this_player()->short()+" joins "+str+" and will protect and be "
"protected by its members.\n");
write("You are now a member of "+str+"\n");
return 1;
}