#if defined(macintosh) #include <types.h> #else #include <sys/types.h> #endif #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "merc.h" /* * globals */ char * all_capitalize args ( (const char * arg ) ); /* * New do_config by Dreimas */ struct plr_config { char * name; int type; int bit; bool is_on; char * on_msg; char * off_msg; }; const struct wiznet_type wiznet_table[] = { { "Logs", WIZ_LOGS, 9, "{g", "LOGS", "[+LOGS ] You see logged strings.\n\r", "[-logs ] You do not see loged strings.\n\r" }, { "Logins", WIZ_LOGINS, 8, "{B", "LOGIN", "[+LOGINS ] Shows details of players connecting to the mud.\n\r", "[-logins ] Not showing details of players connecting.\n\r" }, { "Ticks", WIZ_TICKS, 8, "{D", "TICKS", "[+TICKS ] Informs you of ALL area updates.\n\r", "[-ticks ] You are not informed of area updates.\n\r" }, { "Debug", WIZ_DEBUG, 8, "{m", "BUGS", "[+DEBUG ] Notifies you of any errors.\n\r", "[-debug ] You are not told of errors.\n\r" }, { "Commands", WIZ_COMMANDS, 10, "{b", "CMDS", "[+COMMANDS ] You are notified of use of logged immortal commands.\n\r", "[-commands ] You are not told of the use of logged immortal commands.\n\r" }, { "Create", WIZ_CREATE, 8, "{p", "CREATE", "[+CREATE ] You are notified of use of logged mortal commands.\n\r", "[-create ] You are not told of the use of logged mortal commands.\n\r" }, { "Misc", WIZ_MISC, 8, "{c", "MISC", "[+MISC ] Miscellaneous info is on.\n\r", "[-misc ] Miscellaneous info is off.\n\r" }, { NULL, 0, 0, NULL, NULL } }; #define ACT_CONFIG 0 #define PLR_CONFIG 1 void do_config( CHAR_DATA *ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; int x; bool fSet = FALSE; struct plr_config config [] = { { "ansi", ACT_CONFIG, PLR_ANSI, FALSE, "You have ansi colour on.\n\r", "You have ansi colour off.\n\r" }, { "autoexit", ACT_CONFIG, PLR_AUTOEXIT, FALSE, "You automatically see exits.\n\r", "You don't automatically see exits.\n\r" }, { "autoloot", ACT_CONFIG, PLR_AUTOLOOT, FALSE, "You automatically loot corpses.\n\r", "You don't automatically loot corpses.\n\r" }, { "autosac", ACT_CONFIG, PLR_AUTOSAC, FALSE, "You automatically sacrifice corpses.\n\r", "You don't automatically sacrifice corpses.\n\r" }, { "autocrack", ACT_CONFIG, PLR_AUTOCRACK, FALSE, "You automatically crack heads.\n\r", "You don't automatically crack heads.\n\r" }, { "autohead", PLR_CONFIG, PLR_AUTOHEAD, FALSE, "You automatically sacrifice heads.\n\r", "You don't automatically sacrifice heads.\n\r" }, { "automap", PLR_CONFIG, PLR_AUTOMAPPER, FALSE, "Automapper is currently working.\n\r", "Automapper is currently off.\n\r" }, { "extrasc", PLR_CONFIG, PLR_AUTOLEVEL, FALSE, "More information will be displayed in score.\n\r", "Normal information will be displayed in score.\n\r" }, { "blank", ACT_CONFIG,PLR_BLANK, FALSE, "You have a blank line before your prompt.\n\r", "You have no blank line before your prompt.\n\r" }, { "brief", ACT_CONFIG, PLR_BRIEF, FALSE, "You see brief descriptions.\n\r", "You see long descriptions.\n\r" }, { "batself", PLR_CONFIG, PLR_BATTLESELF, FALSE, "Your attacks are being shown in condensed format.\n\r", "You will see normal fights.\n\r" }, { "batother", PLR_CONFIG, PLR_BATTLEOTHER, FALSE, "Others attacks are being shown in condensed format.\n\r", "Others attacks are being shown normal style.\n\r" }, { "talkfast", PLR_CONFIG, PLR_SPEAKSLOW, FALSE, "You are now talking without say or '.\n\r", "You must talk with say or '.\n\r" }, { "prompt", ACT_CONFIG, PLR_PROMPT, FALSE, "You have a prompt.\n\r", "You dont have a prompt.\n\r" }, { "telnetga", ACT_CONFIG, PLR_TELNET_GA, FALSE, "You recieve a telnet GA sequence.\n\r", "You don't recieve a telnet GA sequence.\n\r" }, { "combine", ACT_CONFIG, PLR_COMBINE, FALSE, "You see combined messages on look.\n\r", "You dont see combined messages on look.\n\r" }, { "", PLR_CONFIG, 0, FALSE, "", "" } }; #undef ACT_TYPE #undef PLR_TYPE if ( IS_NPC(ch) ) return; one_argument( argument, arg ); /* * Loop through and check off the ones that need to be checked. * Also does some error checking along the way -- Dreimas */ for( x = 0; *config[x].name; x++ ) { switch( config[x].type ) { default: bugf( "Invalid type in do_config.(%d)", config[x].type ); return; case ACT_CONFIG: config[x].is_on = IS_SET(ch->act,config[x].bit); break; case PLR_CONFIG: config[x].is_on = xIS_SET(PC(ch,plr_flags),config[x].bit); break; } } if ( arg[0] == '\0' ) { const char * on_color = "{n"; const char * off_color = "{D"; send_to_char( "[ Keyword ] Option\n\r", ch ); for( x = 0; *config[x].name; x++ ) { ch_printf( ch, "[ %s%8.8s {x] %s", config[x].is_on ? on_color : off_color, config[x].is_on ? all_capitalize(config[x].name) : config[x].name, config[x].is_on ? config[x].on_msg : config[x].off_msg ); } if ( IS_SET( ch->act, PLR_SILENCE ) ) stc("{RYou are silenced.{x\n\r", ch ); if ( IS_SET( ch->act, PLR_NO_EMOTE ) ) stc( "{RYou can't 'emote'.{x\n\r", ch ); if ( IS_SET( ch->act, PLR_NO_TELL ) ) stc( "{RYou can't use 'tell'.\n\r", ch ); ch_printf( ch, "Your page length is set to 40 lines.\n\r", ch); return; } if( arg[0] == '+' ) fSet = TRUE; else if( arg[0] == '-' ) fSet = FALSE; else { send_to_char( "Config -option or +option?\n\r", ch ); send_to_char( "See 'help config' for more information.\n\r", ch ); return; } for( x = 0; *config[x].name; x++ ) { if( !str_cmp( arg+1, config[x].name ) ) { switch( config[x].type ) { default: ch_printf( ch, "{RInvalid configuration type for %s. Please inform Immortals.\n\r", config[x].name ); return; case ACT_CONFIG: if( fSet ) SET_BIT( ch->act, config[x].bit ); else REMOVE_BIT( ch->act, config[x].bit ); break; case PLR_CONFIG: if( fSet ) xSET_BIT( PC(ch,plr_flags), config[x].bit ); else xREMOVE_BIT( PC(ch,plr_flags), config[x].bit ); break; } send_to_char( "Ok.\n\r", ch ); return; } } return; } void do_autoexit( CHAR_DATA *ch, char *argument ) { if ( IS_NPC(ch) ) return; if ( IS_SET(ch->act, PLR_AUTOEXIT)) do_config(ch,"-autoexit"); else do_config(ch,"+autoexit"); return; } void do_autoloot( CHAR_DATA *ch, char *argument ) { if ( IS_NPC(ch) ) return; if (IS_SET(ch->act, PLR_AUTOLOOT)) do_config(ch,"-autoloot"); else do_config(ch,"+autoloot"); return; } void do_autosac( CHAR_DATA *ch, char *argument ) { if ( IS_NPC(ch) ) return; if (IS_SET(ch->act, PLR_AUTOSAC)) do_config(ch,"-autosac"); else do_config(ch,"+autosac"); return; } void do_autohead( CHAR_DATA *ch, char *argument ) { if ( IS_NPC(ch) ) return; if (PLR_FLAGS(ch,PLR_AUTOHEAD)) do_config(ch,"-autohead"); else do_config(ch,"+autohead"); return; } void do_autocrack( CHAR_DATA *ch, char *argument ) { if ( IS_NPC(ch) ) return; if (IS_SET(ch->act, PLR_AUTOCRACK)) do_config(ch,"-autocrack"); else do_config(ch,"+autocrack"); return; } void do_blank( CHAR_DATA *ch, char *argument ) { if ( IS_NPC(ch) ) return; if (IS_SET(ch->act, PLR_BLANK)) do_config(ch,"-blank"); else do_config(ch,"+blank"); return; } void do_ansi( CHAR_DATA *ch, char *argument ) { if( IS_NPC(ch) ) return; if( IS_SET(ch->act, PLR_ANSI ) ) do_config( ch, "-ansi" ); else do_config( ch, "+ansi" ); return; } void do_brief( CHAR_DATA *ch, char *argument ) { if ( IS_NPC(ch) ) return; if (IS_SET(ch->act, PLR_BRIEF)) do_config(ch,"-brief"); else do_config(ch,"+brief"); return; } /* Do_prompt from Morgenes from Aldara Mud */ void do_prompt( CHAR_DATA *ch, char *argument ) { char buf [ MAX_STRING_LENGTH ]; buf[0] = '\0'; if ( IS_NPC(ch) ) return; if ( argument[0] == '\0' ) { do_help( ch, "prompt" ); return; } if( !str_cmp( argument, "on" ) ) { if (IS_EXTRA(ch, EXTRA_PROMPT)) send_to_char("But you already have customised prompt on!\n\r",ch); else { send_to_char("Ok.\n\r",ch); SET_BIT(ch->extra, EXTRA_PROMPT); } return; } else if( !str_cmp( argument, "off" ) ) { if (!IS_EXTRA(ch, EXTRA_PROMPT)) send_to_char("But you already have customised prompt off!\n\r",ch); else { send_to_char("Ok.\n\r",ch); REMOVE_BIT(ch->extra, EXTRA_PROMPT); } return; } else if( !str_cmp( argument, "clear" ) ) { free_string(ch->prompt); ch->prompt = str_dup( "" ); return; } else { if ( strlen( argument ) > 50 ) argument[50] = '\0'; smash_tilde( argument ); strcat( buf, argument ); } free_string( ch->prompt ); ch->prompt = str_dup( buf ); send_to_char( "Ok.\n\r", ch ); return; } /* Do_prompt from Morgenes from Aldara Mud */ void do_cprompt( CHAR_DATA *ch, char *argument ) { char buf [ MAX_STRING_LENGTH ]; buf[0] = '\0'; if ( IS_NPC(ch) ) return; if ( argument[0] == '\0' ) { do_help( ch, "cprompt" ); return; } if( !str_cmp( argument, "clear" ) ) { free_string(ch->cprompt); ch->cprompt = str_dup( "" ); return; } else { if ( strlen( argument ) > 50 ) argument[50] = '\0'; smash_tilde( argument ); strcat( buf, argument ); } free_string( ch->cprompt ); ch->cprompt = str_dup( buf ); send_to_char( "Ok.\n\r", ch ); return; } /* * Stock channels code in LoW 4 */ void do_channels( CHAR_DATA *ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; one_argument( argument, arg ); if (IS_NPC(ch)) return; if ( arg[0] == '\0' ) { if ( !IS_NPC(ch) && IS_SET(ch->act, PLR_SILENCE) ) { send_to_char( "You are silenced.\n\r", ch ); return; } send_to_char( "Channels:", ch ); /* send_to_char( !IS_SET(ch->deaf, CHANNEL_AUCTION) ? " +AUCTION" : " -auction", ch ); */ send_to_char( !IS_SET(ch->deaf, CHANNEL_CHAT) ? " +CHAT" : " -chat", ch ); send_to_char( !IS_SET(ch->deaf, CHANNEL_BITCH) ? " +BITCH" : " -bitch", ch ); send_to_char( !IS_SET(ch->deaf, CHANNEL_GSOCIAL) ? " +GSOCIAL" : " -gsocial", ch ); send_to_char( !IS_SET(ch->deaf, CHANNEL_HINT) ? " +HINT" : " -hint", ch ); send_to_char( !IS_SET(ch->deaf, CHANNEL_QTALK) ? " +QTALK" : " -qtalk", ch ); send_to_char( !IS_SET(ch->deaf, CHANNEL_NEWBIE) ? " +NEWBIE" : " -newbie", ch ); #if 0 send_to_char( !IS_SET(ch->deaf, CHANNEL_HACKER) ? " +HACKER" : " -hacker", ch ); #endif if ( IS_IMMORTAL(ch) ) { send_to_char( !IS_SET(ch->deaf, CHANNEL_IMMTALK) ? " +IMMTALK" : " -immtalk", ch ); } send_to_char( !IS_SET(ch->deaf, CHANNEL_MUSIC) ? " +MUSIC" : " -music", ch ); send_to_char( !IS_SET(ch->deaf, CHANNEL_QUESTION) ? " +QUESTION" : " -question", ch ); send_to_char( !IS_SET(ch->deaf, CHANNEL_SHOUT) ? " +SHOUT" : " -shout", ch ); send_to_char( !IS_SET(ch->deaf, CHANNEL_HOWL) ? " +HOWL" : " -howl", ch ); if (IS_IMMORTAL(ch)) { send_to_char( !IS_SET(ch->deaf, CHANNEL_LOG) ? " +LOG" : " -log", ch ); } if (IS_CLASS( ch, CLASS_MAGE) || IS_IMMORTAL(ch)) { send_to_char( !IS_SET(ch->deaf, CHANNEL_MAGETALK) ? " +MAGE" : " -mage", ch ); } if (IS_CLASS( ch, CLASS_MONK) || IS_IMMORTAL(ch)) { send_to_char( !IS_SET(ch->deaf, CHANNEL_MONK) ? " +MONK" : " -monk", ch ); } if (IS_CLASS(ch, CLASS_ANGEL) || IS_IMMORTAL(ch)) { send_to_char( !IS_SET(ch->deaf, CHANNEL_ANGTALK) ? " +ANGTALK" : " -ANGTALK", ch ); } if (IS_CLASS(ch, CLASS_DEMON) || IS_IMMORTAL(ch)) { send_to_char( !IS_SET(ch->deaf, CHANNEL_PRAY) ? " +PRAY" : " -pray", ch ); } if (IS_CLASS( ch, CLASS_NINJA) || IS_IMMORTAL(ch)) { send_to_char( !IS_SET(ch->deaf, CHANNEL_MIKT) ? " +MIKT" : " -mikt", ch ); } if (IS_CLASS( ch, CLASS_PALADIN) || IS_IMMORTAL(ch)) { send_to_char( !IS_SET(ch->deaf, CHANNEL_PALADIN) ? " +PALADIN" : " -paladin", ch ); } send_to_char( !IS_SET(ch->deaf, CHANNEL_INFO) ? " +INFO" : " -info", ch ); if (IS_CLASS(ch, CLASS_VAMPIRE) || IS_IMMORTAL(ch)) { send_to_char( !IS_SET(ch->deaf, CHANNEL_VAMPTALK) ? " +VAMP" : " -vamp", ch ); } if (IS_CLASS(ch, CLASS_HIGHLANDER) || IS_IMMORTAL(ch)) { send_to_char( !IS_SET(ch->deaf, CHANNEL_HIGHTALK) ? " +HIGH" : " -high", ch ); } if (IS_CLASS(ch, CLASS_DROW) || IS_IMMORTAL(ch)) { send_to_char(!IS_SET(ch->deaf, CHANNEL_SIGN) ? " +SIGN" : " -sign", ch ); } if (IS_CLASS(ch, CLASS_PRIEST) || IS_IMMORTAL(ch)) { send_to_char(!IS_SET(ch->deaf, CHANNEL_PTALK) ? " +PTALK" : " -ptalk", ch ); } send_to_char( !IS_SET(ch->deaf, CHANNEL_TELL) ? " +TELL" : " -tell", ch ); send_to_char( ".\n\r", ch ); } else { bool fClear; int bit; if ( arg[0] == '+' ) fClear = TRUE; else if ( arg[0] == '-' ) fClear = FALSE; else { send_to_char( "Channels -channel or +channel?\n\r", ch ); return; } /* if ( !str_cmp( arg+1, "auction" ) ) bit = CHANNEL_AUCTION;*/ if ( !str_cmp( arg+1, "chat" ) ) bit = CHANNEL_CHAT; #if 0 else if ( !str_cmp( arg+1, "hacker" ) ) bit = CHANNEL_HACKER; #endif else if ( !str_cmp( arg+1, "immtalk" ) ) bit = CHANNEL_IMMTALK; else if ( !str_cmp( arg+1, "high" ) ) bit = CHANNEL_HIGHTALK; else if ( !str_cmp( arg+1, "gsocial" ) ) bit = CHANNEL_GSOCIAL; else if ( !str_cmp( arg+1, "sign" ) ) bit = CHANNEL_SIGN; else if ( !str_cmp( arg+1, "hint" ) ) bit = CHANNEL_HINT; else if ( !str_cmp( arg+1, "qtalk" ) ) bit = CHANNEL_QTALK; else if ( !str_cmp( arg+1, "newbie" ) ) bit = CHANNEL_NEWBIE; else if ( !str_cmp( arg+1, "music" ) ) bit = CHANNEL_MUSIC; else if ( !str_cmp( arg+1, "question" ) ) bit = CHANNEL_QUESTION; else if ( !str_cmp( arg+1, "shout" ) ) bit = CHANNEL_SHOUT; else if ( !str_cmp( arg+1, "yell" ) ) bit = CHANNEL_YELL; else if ( !str_cmp( arg+1, "mikt" ) ) bit = CHANNEL_MIKT; else if ( !str_cmp( arg+1, "paladin" ) ) bit = CHANNEL_PALADIN; else if ( !str_cmp( arg+1, "howl" ) ) bit = CHANNEL_HOWL; else if (IS_IMMORTAL(ch) && !str_cmp( arg+1, "log") ) bit = CHANNEL_LOG; else if ( !str_cmp( arg+1, "monk" ) ) bit = CHANNEL_MONK; else if ( !str_cmp( arg+1, "mage" ) ) bit = CHANNEL_MAGETALK; else if ((IS_SET(ch->special, SPC_CHAMPION) || (IS_IMMORTAL(ch))) && !str_cmp( arg+1, "pray") ) bit = CHANNEL_PRAY; else if ( !str_cmp( arg+1, "info" ) ) bit = CHANNEL_INFO; else if ( !str_cmp( arg+1, "vamp" ) ) bit = CHANNEL_VAMPTALK; else if ( !str_cmp( arg+1, "ptalk" ) ) bit = CHANNEL_PTALK; else if ( !str_cmp( arg+1, "tell" ) ) bit = CHANNEL_TELL; else if ( !str_cmp( arg+1, "bitch" ) ) bit = CHANNEL_BITCH; else { send_to_char( "Set or clear which channel?\n\r", ch ); return; } if ( fClear ) REMOVE_BIT (ch->deaf, bit); else SET_BIT (ch->deaf, bit); send_to_char( "Ok.\n\r", ch ); } return; } void do_wiznet( CHAR_DATA *ch, char *argument ) { char arg [MAX_INPUT_LENGTH]; int a; if( IS_NPC( ch ) ) return; smash_tilde( argument ); argument = one_argument( argument, arg ); if ( arg[0] == '\0' || arg[0] == '?' ) { char buf [ MAX_STRING_LENGTH ]; send_to_char( "{YWiznet Channel Details:{x\n\r\n\r", ch ); for ( a = 0; wiznet_table[a].min_level != 0; a++ ) { if ( wiznet_table[a].min_level > get_trust( ch ) ) buf[0] = '\0'; if( IS_SET( PC(ch,wiznet), wiznet_table[a].channel)) send_to_char( wiznet_table[a].on_name,ch); else send_to_char( wiznet_table[a].off_name,ch); } send_to_char( "\n\r{YWiznet <name> toggles the monitor channels.{n\n\r", ch ); return; } else { char buf [ MSL ]; int bit = -1; bool fSet; if( arg[0] == '+' ) fSet = TRUE; else if( arg[0] == '-' ) fSet = FALSE; else { send_to_char( "Wiznet: config -option or +option?\n\r", ch ); return; } if( !str_cmp( arg+1, "ALL" ) ) bit = WIZ_LOGS | WIZ_LOGINS | WIZ_COMMANDS | WIZ_MISC | WIZ_CREATE | WIZ_DEBUG; else for ( a = 0; wiznet_table[a].min_level != 0; a++ ) { if ( !str_prefix( arg+1, wiznet_table[a].name ) ) { bit = wiznet_table[a].channel; break; } } if( bit < 1 ) { do_wiznet( ch, "" ); return; } if( fSet ) { SET_BIT( PC(ch,wiznet), bit ); sprintf( buf, "{Y%s is now ON.\n\r", arg+1 ); buf[3] = UPPER( buf[3] ); send_to_char( buf, ch ); } else { REMOVE_BIT( PC(ch,wiznet), bit ); sprintf( buf, "{Y%s is now OFF.\n\r", arg+1 ); buf[3] = UPPER( buf[3] ); send_to_char( buf, ch ); } } return; } void do_godless( CHAR_DATA *ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; one_argument( argument, arg ); if (IS_NPC(ch)) return; if ( arg[0] == '\0') { send_to_char( "Do you wish to switch it ON or OFF?\n\r", ch ); return; } if ( ( (ch->level > 3) || (ch->level < 2) || (ch->trust > 3) ) && !IS_SET(ch->act, PLR_GODLESS)) { send_to_char( "Sorry, you must be level 3.\n\r", ch ); return; } if (!IS_SET(ch->act, PLR_GODLESS) && !str_cmp(arg,"off")) { send_to_char("But you already obey the gods!\n\r", ch); return; } else if (!IS_SET(ch->act, PLR_GODLESS) && !str_cmp(arg,"on")) { SET_BIT(ch->act, PLR_GODLESS); send_to_char("You no longer obey the gods.\n\r", ch); sprintf(buf,"%s has rejected the gods.",ch->name); do_info(ch,buf); } else if (IS_SET(ch->act, PLR_GODLESS) && !str_cmp(arg,"on")) { send_to_char("But you have already rejected the gods!\n\r", ch); return; } else send_to_char( "Do you wish to switch it ON or OFF?\n\r", ch ); return; } void do_summon( CHAR_DATA *ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; one_argument( argument, arg ); if (IS_NPC(ch)) return; if ( arg[0] == '\0') { send_to_char( "Do you wish to switch summon ON or OFF?\n\r", ch ); return; } if (IS_IMMUNE(ch, IMM_SUMMON) && !str_cmp(arg,"off")) { REMOVE_BIT(ch->immune, IMM_SUMMON); send_to_char("You can no longer be the target of summon and portal.\n\r", ch); } else if (!IS_IMMUNE(ch, IMM_SUMMON) && !str_cmp(arg,"off")) { send_to_char("But it is already off!\n\r", ch); return; } else if (!IS_IMMUNE(ch, IMM_SUMMON) && !str_cmp(arg,"on")) { SET_BIT(ch->immune, IMM_SUMMON); send_to_char("You can now be the target of summon and portal.\n\r", ch); } else if (IS_IMMUNE(ch, IMM_SUMMON) && !str_cmp(arg,"on")) { send_to_char("But it is already on!\n\r", ch); return; } else send_to_char( "Do you wish to switch it ON or OFF?\n\r", ch ); return; } void do_transport( CHAR_DATA *ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; one_argument( argument, arg ); if (IS_NPC(ch)) return; if ( arg[0] == '\0') { send_to_char( "Do you wish to switch transport ON or OFF?\n\r", ch ); return; } if (IS_IMMUNE(ch, IMM_TRANSPORT) && !str_cmp(arg,"off")) { REMOVE_BIT(ch->immune, IMM_TRANSPORT); send_to_char("You can no longer be the target of transport spells.\n\r", ch); } else if (!IS_IMMUNE(ch, IMM_TRANSPORT) && !str_cmp(arg,"off")) { send_to_char("But it is already off!\n\r", ch); return; } else if (!IS_IMMUNE(ch, IMM_TRANSPORT) && !str_cmp(arg,"on")) { SET_BIT(ch->immune, IMM_TRANSPORT); send_to_char("You can now be the target of transport spells.\n\r", ch); } else if (IS_IMMUNE(ch, IMM_TRANSPORT) && !str_cmp(arg,"on")) { send_to_char("But it is already on!\n\r", ch); return; } else send_to_char( "Do you wish to switch it ON or OFF?\n\r", ch ); return; } /* * Syntax: pager * pager [number] */ void do_pager ( CHAR_DATA *ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; int lines; if( IS_NPC(ch) ) return; one_argument( argument, arg ); if ( arg[0] == '\0' ) { if ( PC(ch,pagelen) == 0 ) { PC(ch,pagelen) = 22; send_to_char( "Pager on; defaulted to 22 lines per page.\n\r", ch ); return; } send_to_char( "Pager off.\n\r", ch ); PC(ch,pagelen) = 0; return; } lines = atoi( arg ); if ( lines < 0 || lines > 500 ) { send_to_char( "Invalid page length value.\n\r", ch ); return; } PC(ch,pagelen) = lines; ch_printf(ch, "Pager set to %d lines.\n\r", lines ); return; }