/**************************************************************************/
// wizlist.cpp - wizlist related commands
/***************************************************************************
* The Dawn of Time v1.69r (c)1997-2004 Michael Garratt *
* >> A number of people have contributed to the Dawn codebase, with the *
* majority of code written by Michael Garratt - www.dawnoftime.org *
* >> To use this source code, you must fully comply with the dawn license *
* in licenses.txt... In particular, you may not remove this copyright *
* notice. *
**************************************************************************/
#include "include.h"
#include "laston.h"
extern laston_data *laston_list;
void do_help(char_data *ch, char *);
/**************************************************************************/
char * const wiz_titles [] =
{
"`S Founder ",
" `SOwners ",
" `mDept Heads ",
" `BSr Admin ",
" `BJr Admin ",
" `rImmortals ",
" `rImmortals ",
" `rImmortals ",
" `rImmortals ",
" `rImmortals "
};
/**************************************************************************/
// Balo & Kal, Feb 02
void display_dynwizlist_to_char(char_data *ch)
{
laston_data *node;
char buf[MSL];
char buf2[MSL];
char divider[MSL];
BUFFER *buffer;
int level;
int i;
int amt;
bool found;
bool donethis;
int wlevel = 0;
// setup for formatting the dynamic wizlist
buffer = new_buf();
sprintf(divider,"`y `W%33c-=-`y%33c\r\n",' ',' ');
// add our header to the top
/*add_buf(buffer,
" `r /| |\\ \r\n"
" / | ___.--'''--.___ | \\\r\n"
" ...--=.._ / ''`Y___`r'\\_ _/'`Y___`r'' \\ _..=--... \r\n"
" ' .-=_)/==._ _ \\ .(' `?`#o`r'-.\\ /.-'`^o`r '). / _ _.==\\(_=-. ''-._ \r\n"
" _/.- / / \\/\\_ '---'_-=V=-_'---' _/\\/ \\ \\ -.\\_ - \r\n"
" /_/ ./ \\/\\_-_''v-/'o') ('o'\\-v''_-_/\\/ \\. \\_\\ ' \r\n"
" // | _-=___==/(__ __)\\==___=-_ | \\\\\\ \r\n"
" )) \\ _/ _ \\ X___---===---___X / _ \\_ / (( ))\\ \r\n"
" \\ \\_ | /_\\/_\\ (( `Y\\| `` `` ' ' |/`r )) /_\\/_\\ | _/ / \\ \r\n"
" \\ \\ \\ '' / _ /\\\\ `YV`R /'V')`Y V`r //\\ _ \\ '' / / / \\ \r\n"
" \\_ \\ | \\/ \\\\ \\\\^ `R \\ )/ `r ^//|// \\/ | / _/ \\ \r\n"
" \\ \\ \\ '/\\\\^ `R )/`r ^// |`` / / / \r\n"
" \\ \\_ | '| (\\\\^ `RV `r ^// |`` | _/ / \r\n"
" \\ \\\\ '/(''\\``-___-'/) /`` // / \r\n"
" \\_ \\\\ /| '|('''-\\_ _/) |`` |\\ _/ \r\n"
" \\_/''''-. '/('''---==='') |`` .-'''''\\_ \r\n"
" _/ _ \\ '|('''-----''') /`` / _ \\_ \r\n"
" // / /\\\\') \\ '|('''-----''') |`` / ('//\\ \\ \\X \r\n"
"`y /---------------------------------------------------------------------\\ \r\n");*/
sprintf(buf2,"`b---`B======`c[ `WGODS OF OLYMPUS `c]`B======`b--- ");
sprintf(buf,"`y %69s \r\n", " ");
add_buf(buffer,buf);
i= (69 - c_str_len(buf2))/2;
add_buf(buffer,FORMATF("`y %*c%s%*c`y\r\n", i,' ', buf2, i,' '));
sprintf(buf,"`y %69s \r\n", " ");
add_buf(buffer,buf);
donethis = false;
for (level = ABSOLUTE_MAX_LEVEL; level > LEVEL_IMMORTAL; level--){
found = false;
amt = 0;
for (node = laston_list; node; node=node->next){
wlevel = node->level[node->index];
if(wlevel == level
&& !node->deleted_date
&& node->wiznet_type==LASTONWIZLISTTYPE_ACTIVE
)
{
amt++;
found = true;
}
}
if (!found){
if (level == LEVEL_IMMORTAL)
{
sprintf(buf,"\n\r`y %69s\r\n", " ");
add_buf(buffer,buf);
}
continue;
}
if (!IS_NULLSTR(wiz_titles[ABSOLUTE_MAX_LEVEL-level])){
if (level == ABSOLUTE_MAX_LEVEL && ABSOLUTE_MAX_LEVEL!=MAX_LEVEL){
sprintf(buf,"\n\r`y `R%37s `B[%d]`y%28s\r\n",
wiz_titles[0], level, " ");
add_buf(buffer,buf);
}
if (level >= MAX_LEVEL){
sprintf(buf,"\n\r`y `R%37s `B[%d]`y%28s\r\n",
wiz_titles[1], level, " ");
add_buf(buffer,buf);
}
if ( level == CREATOR ){
sprintf(buf,"\n\r`y `R%36s `B [%d]`y%28s\r\n",
wiz_titles[2], level, " ");
add_buf(buffer,buf);
}
if ( level == SUPREME ){
sprintf(buf,"\n\r`y `R%36s `B [%d]`y%28s\r\n",
wiz_titles[3], level, " ");
add_buf(buffer,buf);
}
if (level == DEITY ){
sprintf(buf,"\n\r`y `R%36s `B [%d] `y%28s\r\n",
wiz_titles[4], level, " ");
add_buf(buffer,buf);
}
if (( level < DEITY ) && ( donethis == false ))
{
sprintf(buf,"\n\r`y `R%34s `B [%s]`y%26s \r\n",
wiz_titles[5], "93-96", " ");
add_buf(buffer,buf);
add_buf(buffer,divider);
donethis = true;
}
if ( ! donethis ){
add_buf(buffer,divider);
}
}
int lngth = 0;
for (node= laston_list; node; node=node->next){
if((node->level[node->index] == level )
&& ! node->deleted_date
&& node->wiznet_type==LASTONWIZLISTTYPE_ACTIVE
)
{
if (lngth == 0){
if (amt > 2){
sprintf(buf, "`y `%s%12s%-17s ",
level >= DEMI ? "c" : "c", " ",
node->name );
add_buf(buffer, buf);
lngth = 1;
}else if (amt > 1){
sprintf(buf, "`y `%s%21s%-17s ",
level >= DEMI ? "c" : "c", " ",
node->name);
add_buf(buffer, buf);
lngth = 1;
}else{
sprintf(buf, "`y `%s%30s%-39s`y\r\n",
level >= DEMI ? "c" : "c", " ",
node->name);
add_buf(buffer, buf);
lngth = 0;
}
}else if (lngth == 1){
if (amt > 2){
sprintf(buf, "%-17s ",
node->name);
add_buf(buffer, buf);
lngth = 2;
}else{
sprintf(buf, "%-30s`y\r\n",
node->name);
add_buf(buffer, buf);
lngth = 0;
}
}else{
sprintf(buf, "%-21s`y\r\n",
node->name);
add_buf(buffer, buf);
lngth = 0;
//amt = 0;
amt -= 3;
}
}
}
}
add_buf(buffer, FORMATF("`y %69c\r\n", ' '));
add_buf(buffer, FORMATF(" %69c\r\n", ' '));
/*add_buf(buffer, " \\__________________________________"
"___________________________________/`x\r\n");*/
ch->sendpage( buf_string(buffer));
free_buf(buffer);
return;
}
/**************************************************************************/
void do_wizlist(char_data *ch, char *)
{
int amount=0;
if(ch->lines){
amount=25;
}
ch->lines += amount;
if(GAMESETTING3(GAMESET3_USE_DYNAMIC_WIZLIST)){
display_dynwizlist_to_char(ch);
}else{
if(!codehelp(ch,"wizlist", 0)){
display_dynwizlist_to_char(ch);
if(IS_ADMIN(ch)){
ch->println("`S[admin only note: help entry code_wizlist unfound, using dynamic wizlist, to]`x");
ch->println("`S[ remove this message, turn on the dynamic wizlist in the ]`x");
ch->println("`S[ game settings flags3, or setup the code_wizlist help entry]`x");
}
};
}
ch->lines -= amount;
}
/**************************************************************************/
void do_wizlistedit( char_data *ch, char *argument )
{
laston_data *node;
int count=0;
if(IS_NULLSTR(argument)){
ch->titlebar("Wizlist Edit - Current Settings");
ch->println(" Name. [`Mlevel, `Btrust, `Rsecurity`x]- wizlist flags");
for (node= laston_list; node; node=node->next)
{
if((node->level[node->index]<LEVEL_IMMORTAL
&& node->trust<LEVEL_IMMORTAL)
|| node->deleted_date){
continue;
}
ch->printf(" `%c%-13s `S[`M%3d`S,`%c%3d`S,`R%d`S]`G- `Y%-13s`x",
node->wiznet_type?'W':'x',
node->name,
node->level[node->index],
node->level[node->index]<node->trust?'C':'B',
node->trust,
node->security,
flag_string(laston_wizlist_types, node->wiznet_type));
if(++count%2==0){
ch->print_blank_lines(1);
}
}
if(count%2==1){
ch->print_blank_lines(1);
}
ch->printlnf(" %d immortal record%s displayed.\r\n", count, count==1?"":"s");
ch->titlebar("WizlistEdit Syntax");
ch->println(" Syntax: wizlistedit <name> <wizlist_type>");
ch->print(" Wizlist types include:");
for(count=0; !IS_NULLSTR(laston_wizlist_types[count].name); count++){
ch->printf(" %s ", laston_wizlist_types[count].name);
}
ch->print_blank_lines(1);
ch->titlebar("");
return;
}
{ // modify the wizlist settings on a player
char name[MIL];
// split and check the parameters
argument=one_argument(argument, name);
int wizlist_type=flag_lookup(argument,laston_wizlist_types);
if ( wizlist_type== NO_FLAG)
{
do_wizlistedit(ch,"");
ch->printlnf("'%s' is not a valid wizlist type.",argument);
return;
}
// find the player
for (node= laston_list; node; node=node->next)
{
// immortals only
if (node->level[node->index]<LEVEL_IMMORTAL
&& node->trust<LEVEL_IMMORTAL)
continue;
if(!str_cmp(name,node->name)){
node->wiznet_type=wizlist_type;
ch->printlnf("Wizlist type set to %s for %s.",
flag_string( laston_wizlist_types, node->wiznet_type),
node->name);
return;
}
}
ch->printlnf("Couldn't find any immortal character called '%s'", name);
ch->println(" Syntax: wizlistedit <name> <wizlist_type>");
ch->print(" Wizlist types include:");
for(count=0; !IS_NULLSTR(laston_wizlist_types[count].name); count++){
ch->printf(" %s ", laston_wizlist_types[count].name);
}
ch->print_blank_lines(1);
}
}
/**************************************************************************/
/**************************************************************************/