/* -*- LPC -*- */
/*
* $Locker: $
* $Id: banish.c,v 1.7 2003/04/15 20:27:22 ceres Exp $
* $Log: banish.c,v $
* Revision 1.7 2003/04/15 20:27:22 ceres
* Removed dependence on login object
*
* Revision 1.6 2001/12/23 14:47:47 taffyd
* Extended to add Liaison deputies as valid people who can banish names.
*
* Revision 1.5 2001/06/01 21:15:47 ceres
* Added senior banish limit?
*
* Revision 1.4 2000/09/07 02:32:17 presto
* Clear player cache for name before checking if the player exists.
*
* Revision 1.3 1998/09/21 04:47:18 ceres
* Got it right this time
*
* Revision 1.1 1998/01/06 05:10:49 ceres
* Initial revision
*
*/
#include <player_handler.h>
#define LIAISON "/d/liaison/master"
inherit "/cmds/base";
/*
* Banish code removed from the patricians office by Pinkfish.
*/
int cmd(string str)
{
string str1, temp1, ban;
if (this_player() != this_player(1)) {
return 0;
}
if (this_player()->GetForced()) {
return 0;
}
if(!master()->query_senior(geteuid(previous_object())) &&
!LIAISON->query_deputy(geteuid(previous_object()))) {
return notify_fail( "Only Liaison domain "
"deputies, Senior Creators and above can banish player names.\n" );
}
notify_fail("Syntax : banish <name> <reason>\n");
if (!str)
return 0;
if (sscanf(str, "%s %s", str, str1) != 2)
return 0;
str = lower_case(str);
if (sscanf(str,"%s.",temp1))
return 0;
if (sscanf(str, "%s/", temp1))
return 0;
if (file_size("/banish/"+str[0..0]+"/"+str+".o") >= 0)
{
notify_fail("That name is already banished.\n");
return 0;
}
PLAYER_HANDLER->remove_cache_entry(str);
if (PLAYER_HANDLER->test_user(str))
return notify_fail("That is a player. You must rm or mv the player "
"file first.\n");
ban = "Banished by : "+(string)this_player()->query_name()+"\n";
ban += ctime(time())+"\n";
ban += "Banish Reason : " + str1 + "\n";
unguarded((: write_file, "/banish/"+str[0..0]+"/"+str+".o", ban :));
write(str + " banished.\n");
return 1;
} /* cmd() */
string *query_patterns() {
return ({ "", (: cmd(0) :), "<string>", (: cmd($4[0]) :) });
} /* query_patterns() */