/*************************************************************************** * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * * * Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * * * In order to use any part of this Merc Diku Mud, you must comply with * * both the original Diku license in 'license.doc' as well the Merc * * license in 'license.txt'. In particular, you may not remove either of * * these copyright notices. * * * * Much time and thought has gone into this software and you are * * benefitting. We hope that you share your changes too. What goes * * around, comes around. * ***************************************************************************/ /*************************************************************************** * ROM 2.4 is copyright 1993-1995 Russ Taylor * * ROM has been brought to you by the ROM consortium * * Russ Taylor (rtaylor@pacinfo.com) * * Gabrielle Taylor (gtaylor@pacinfo.com) * * Brian Moore (rom@rom.efn.org) * * By using this code, you have agreed to follow the terms of the * * ROM license, in the file Rom24/doc/rom.license * ***************************************************************************/ /*************************************************************************** * ROT 1.4 is copyright 1996-1997 by Russ Walsh * * By using this code, you have agreed to follow the terms of the * * ROT license, in the file doc/rot.license * ***************************************************************************/ #if defined(macintosh) #include <types.h> #include <time.h> #else #include <sys/types.h> #include <sys/time.h> #endif #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include "merc.h" #include "recycle.h" WIZ_DATA *wiz_list; char * const wiz_titles [] = { " Owner ", " Co-Owners ", " Implementors ", " High Judges ", " Judges ", " Enforcers ", " Architects ", " QuestMasters ", }; /* * Local functions. */ void change_wizlist args( (CHAR_DATA *ch, bool add, int level, char *argument)); int col_str_len(char *txt); void save_wizlist(void) { WIZ_DATA *pwiz; FILE *fp; bool found = FALSE; fclose( fpReserve ); if ( ( fp = fopen( WIZ_FILE, "w" ) ) == NULL ) { perror( WIZ_FILE ); } for (pwiz = wiz_list; pwiz != NULL; pwiz = pwiz->next) { found = TRUE; fprintf(fp,"%s %d\n",pwiz->name,pwiz->level); } fclose(fp); fpReserve = fopen( NULL_FILE, "r" ); if (!found) unlink(WIZ_FILE); } void load_wizlist(void) { FILE *fp; WIZ_DATA *wiz_last; if ( ( fp = fopen( WIZ_FILE, "r" ) ) == NULL ) { return; } wiz_last = NULL; for ( ; ; ) { WIZ_DATA *pwiz; if ( feof(fp) ) { fclose( fp ); return; } pwiz = new_wiz(); pwiz->name = str_dup(fread_word(fp)); pwiz->level = fread_number(fp); fread_to_eol(fp); if (wiz_list == NULL) wiz_list = pwiz; else wiz_last->next = pwiz; wiz_last = pwiz; } } void do_arelevel(CHAR_DATA *ch, char *argument) { WIZ_DATA *pwiz; for (pwiz = wiz_list;pwiz != NULL;pwiz = pwiz->next) { if (!str_cmp(ch->name, pwiz->name)) { ch->level = pwiz->level; ch->trust = pwiz->level; send_to_char("Done!\n\r", ch); return; } } send_to_char("Huh?\n\r", ch); return; } void do_wizlist(CHAR_DATA *ch, char *argument) { char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char arg3[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; BUFFER *buffer; int level; WIZ_DATA *pwiz; int lngth; int amt; bool found; argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); argument = one_argument( argument, arg3 ); if ((arg1[0] != '\0') && (ch->level == 14)) { if ( !str_prefix( arg1, "add" ) ) { if ( !is_number( arg2 ) || ( arg3[0] == '\0' ) ) { send_to_char( "Syntax: wizlist add <level> <name>\n\r", ch ); return; } level = atoi(arg2); change_wizlist( ch, TRUE, level, arg3 ); return; } if ( !str_prefix( arg1, "delete" ) ) { if ( arg2[0] == '\0' ) { send_to_char( "Syntax: wizlist delete <name>\n\r", ch ); return; } change_wizlist( ch, FALSE, 0, arg2 ); return; } send_to_char( "Syntax:\n\r", ch ); send_to_char( " wizlist delete <name>\n\r", ch ); send_to_char( " wizlist add <level> <name>\n\r", ch ); return; } if (wiz_list == NULL) { send_to_char("No immortals listed at this time.\n\r",ch); return; } buffer = new_buf(); sprintf(buf,"#R ,. , , .,_\n\r"); add_buf(buffer,buf); sprintf(buf,"#R ,-` _ \\ _,-` \\ _,...,_ / `-._ / _ `-.\n\r"); add_buf(buffer,buf); sprintf(buf,"#R ,-`_,-` \\ ,' _,-\\ :-`_,,.,,_`-: /-._ `, / `-._`-.\n\r"); add_buf(buffer,buf); sprintf(buf,"#R ,-`_,' ,` ,' ,` ,':., ,.:`, `, `. `. `._`-.\n\r"); add_buf(buffer,buf); sprintf(buf,"#R ,` ,' / ,`.'-./ ,``-.,_`_,.-``, \\.-'.`. \\ `. `.\n\r"); add_buf(buffer,buf); sprintf(buf,"#R ,` `````````` / '-.,/ ` \\,.-' \\ `````````` `.\n\r"); add_buf(buffer,buf); sprintf(buf,"#R ```````````````` ````````````````#n\n\r"); add_buf(buffer,buf); sprintf(buf,"#w The Immortals of #oL#yegend #Co#cf #eC#whrystancia#n\n\r"); add_buf(buffer,buf); cent_to_char("#wCreated by Tijer\n\r\n\r", ch); sprintf(buf,"#0 %80s#0 \n\r", " "); add_buf(buffer,buf); for (level = 14; level >=7; level--) { found = FALSE; amt = 0; for (pwiz = wiz_list;pwiz != NULL;pwiz = pwiz->next) { if (pwiz->level == level) { amt++; found = TRUE; } } if (!found) { if (level == 7) { sprintf(buf,"#0 %80s \n\r", " "); add_buf(buffer,buf); } continue; } sprintf(buf,"#0 #y%40s #w%28s#0 #0\n\r", wiz_titles[14-level], " "); add_buf(buffer,buf); sprintf(buf,"#0 #e%26s-----------------#w%26s#0 #0\n\r", " ", " "); add_buf(buffer,buf); lngth = 0; for (pwiz = wiz_list;pwiz != NULL;pwiz = pwiz->next) { if (pwiz->level == level) { if (lngth == 0) { if (amt > 2) { sprintf(buf, "#0 #w%12s%-17s #w", " ", pwiz->name); add_buf(buffer, buf); lngth = 1; } else if (amt > 1) { sprintf(buf, "#0 #w%21s%-17s #w", " ", pwiz->name); add_buf(buffer, buf); lngth = 1; } else { sprintf(buf, "#0 #w%30s%-39s#0 \n\r", " ", pwiz->name); add_buf(buffer, buf); lngth = 0; } } else if (lngth == 1) { if (amt > 2) { sprintf(buf, "%-17s ", pwiz->name); add_buf(buffer, buf); lngth = 2; } else { sprintf(buf, "%-30s#0 \n\r", pwiz->name); add_buf(buffer, buf); lngth = 0; } } else { sprintf(buf, "%-21s#0 \n\r", pwiz->name); add_buf(buffer, buf); lngth = 0; amt -= 3; } } } sprintf(buf,"#0 %69s#0 \n\r", " "); add_buf(buffer,buf); } sprintf(buf,"#r Legend of Chrystancia: #wCreated by Tijer, Tiopon, Serenity and Malawar.\n\r"); add_buf(buffer,buf); sprintf(buf,"#r God Wars: #wCreated by KaVir\n\r"); add_buf(buffer,buf); sprintf(buf,"#r Webpage: #whttp://www.godwars.net\n\r"); add_buf(buffer,buf); sprintf(buf,"#r Email: #wadmin@godwars.net\n\r"); add_buf(buffer,buf); sprintf(buf,"#w See also 'help retired'\n\r"); add_buf(buffer,buf); sprintf(buf,"#R ................ ................\n\r"); add_buf(buffer,buf); sprintf(buf,"#R `. .......... \\ ,-'`\\ _._ /`'-, / .......... .'\n\r"); add_buf(buffer,buf); sprintf(buf,"#R `. `._ \\ `.',-'\\ `..-'` `'-..` /'-,'.' / _.' .'\n\r"); add_buf(buffer,buf); sprintf(buf,"#R `-. `._ `. `._ `. `.;'```';.` .` _.' .' _.' .-'\n\r"); add_buf(buffer,buf); sprintf(buf,"#R `-. `-._/ `._ `-/ :-._``'``_.-: \\-' _.` \\_.-' .-'\n\r"); add_buf(buffer,buf); sprintf(buf,"#R `-._ / `-, / `''` \\ ,-' \\ _.-'\n\r"); add_buf(buffer,buf); sprintf(buf,"#R `' ` ' '`#n\n\r"); add_buf(buffer,buf); send_to_char( buf_string(buffer), ch ); free_buf(buffer); return; } void update_wizlist(CHAR_DATA *ch, int level) { WIZ_DATA *prev; WIZ_DATA *curr; if (IS_NPC(ch)) { return; } prev = NULL; for ( curr = wiz_list; curr != NULL; prev = curr, curr = curr->next ) { if ( !str_cmp( ch->name, curr->name ) ) { if ( prev == NULL ) wiz_list = wiz_list->next; else prev->next = curr->next; free_wiz(curr); save_wizlist(); } } if (level <= 6) { return; } curr = new_wiz(); curr->name = str_dup(ch->name); curr->level = level; curr->next = wiz_list; wiz_list = curr; save_wizlist(); return; } void change_wizlist(CHAR_DATA *ch, bool add, int level, char *argument) { char arg[MAX_INPUT_LENGTH]; WIZ_DATA *prev; WIZ_DATA *curr; one_argument( argument, arg ); if (arg[0] == '\0') { send_to_char( "Syntax:\n\r", ch ); if ( !add ) send_to_char( " wizlist delete <name>\n\r", ch ); else send_to_char( " wizlist add <level> <name>\n\r", ch ); return; } if ( add ) { if ( ( level <= 6 ) || ( level > 14 ) ) { send_to_char( "Syntax:\n\r", ch ); send_to_char( " wizlist add <level> <name>\n\r", ch ); return; } } if ( !add ) { prev = NULL; for ( curr = wiz_list; curr != NULL; prev = curr, curr = curr->next ) { if ( !str_cmp( capitalize( arg ), curr->name ) ) { if ( prev == NULL ) wiz_list = wiz_list->next; else prev->next = curr->next; free_wiz(curr); save_wizlist(); } } } else { curr = new_wiz(); curr->name = str_dup( capitalize( arg ) ); curr->level = level; curr->next = wiz_list; wiz_list = curr; save_wizlist(); } return; }