/*************************************************************************** * This code was written by Morglum AKA Dave Spink * * E-mail Morglum@another.co.uk * * ALL following code is Copyright 2000 Morglum * ***************************************************************************/ #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 <unistd.h> #include "merc.h" void do_discset( CHAR_DATA *ch, char *argument ) { CHAR_DATA *victim; char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char arg3[MAX_INPUT_LENGTH]; sh_int disc = 0; sh_int value = 0; argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); argument = one_argument( argument, arg3 ); if ( IS_NPC( ch ) ) { send_to_char("Huh?\n\r",ch); return; } if ( arg1[0] == '\0' || arg2[0] == '\0' || arg3[0] == '\0' ) { send_to_char( "Syntax : setdisc [victim] [disc/all] [level]\n\r\n\r", ch ); send_to_char( " Disc being one of:\n\r", ch ); send_to_char( " animalism auspex celerity chimerstry\n\r", ch ); send_to_char( " daimoinon dominate fortitude melpominee\n\r", ch ); send_to_char( " necromancy obeah obfuscate obtenebration\n\r", ch ); send_to_char( " potence presence protean quietus serpentis\n\r", ch ); send_to_char( " thanatosis thaumaturgy vicissitude\n\r", ch ); return; } if ( ( victim = get_char_world( ch, arg1 ) ) == NULL ) { send_to_char( "They aren't here.\n\r", ch ); return; } if ( IS_NPC(victim ) ) { send_to_char( "Not on NPC's.\n\r", ch ); return; } if ( !IS_VAMPIRE( victim ) ) { send_to_char( "Only on Vampires or Vampire Hybirds.\n\r", ch ); return; } if ( !str_cmp( arg2, "all" ) ) { value = is_number( arg3 ) ? atoi( arg3 ) : -1; if ( value < 0 || value > 5 ) { send_to_char( "Range is 0 - 5.\n\r", ch ); return; } if ( value == 0 ) value = -1; for ( disc = 0 ; disc <= DISC_MAX ; disc++ ) victim->pcdata->powers[disc] = value; send_to_char("Done.\n\r", ch ); return; } else if ( !str_cmp( arg2, "animalism" ) ) disc = DISC_ANIMALISM; else if ( !str_cmp( arg2, "auspex" ) ) disc = DISC_AUSPEX; else if ( !str_cmp( arg2, "celerity" ) ) disc = DISC_CELERITY; else if ( !str_cmp( arg2, "chimerstry" ) ) disc = DISC_CHIMERSTRY; else if ( !str_cmp( arg2, "daimoinon" ) ) disc = DISC_DAIMOINON; else if ( !str_cmp( arg2, "dominate" ) ) disc = DISC_DOMINATE; else if ( !str_cmp( arg2, "fortitude" ) ) disc = DISC_FORTITUDE; else if ( !str_cmp( arg2, "melpominee" ) ) disc = DISC_MELPOMINEE; else if ( !str_cmp( arg2, "necromancy" ) ) disc = DISC_NECROMANCY; else if ( !str_cmp( arg2, "obeah" ) ) disc = DISC_OBEAH; else if ( !str_cmp( arg2, "obfuscate" ) ) disc = DISC_OBFUSCATE; else if ( !str_cmp( arg2, "obtenebration" ) ) disc = DISC_OBTENEBRATION; else if ( !str_cmp( arg2, "potence" ) ) disc = DISC_POTENCE; else if ( !str_cmp( arg2, "presence" ) ) disc = DISC_PRESENCE; else if ( !str_cmp( arg2, "protean" ) ) disc = DISC_PROTEAN; else if ( !str_cmp( arg2, "quietus" ) ) disc = DISC_QUIETUS; else if ( !str_cmp( arg2, "serpentis" ) ) disc = DISC_SERPENTIS; else if ( !str_cmp( arg2, "thanatosis" ) ) disc = DISC_THANATOSIS; else if ( !str_cmp( arg2, "thaumaturgy" ) ) disc = DISC_THAUMATURGY; else if ( !str_cmp( arg2, "vicissitude" ) ) disc = DISC_VICISSITUDE; else { do_discset( ch, "" ); return; } value = is_number( arg3 ) ? atoi( arg3 ) : -1; if ( value < 0 || value > 5 ) { send_to_char( "Range is 0 - 5.\n\r", ch ); return; } if ( value == 0 ) value = -1; victim->pcdata->powers[disc] = value; send_to_char("Done.\n\r", ch ); return; } void do_giftset( CHAR_DATA *ch, char *argument ) { CHAR_DATA *victim; char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char arg3[MAX_INPUT_LENGTH]; sh_int gift = 0; sh_int type = 0; sh_int value = 0; argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); argument = one_argument( argument, arg3 ); if ( IS_NPC( ch ) ) { send_to_char("Huh?\n\r",ch); return; } if ( arg1[0] == '\0' || arg2[0] == '\0' || arg3[0] == '\0' ) { send_to_char( "Syntax: giftset [victim] [gift/all] [value]\n\r\n\r", ch ); send_to_char( "Gift being one of:\n\r", ch ); send_to_char( " homid lupus metis\n\r", ch ); send_to_char( " ragaba theurg philod gallia ahroun\n\r",ch ); send_to_char( " blafur bognaw chgaia fianna getfen\n\r", ch ); send_to_char( " glwalk redtal shlord silstr silvfa\n\r", ch ); send_to_char( " starga uktena wendig\n\r", ch ); return; } if ( ( victim = get_char_world( ch, arg1 ) ) == NULL ) { send_to_char( "They aren't here.\n\r", ch ); return; } if ( IS_NPC( victim ) ) { send_to_char( "Not on NPC's.\n\r", ch ); return; } if ( !IS_WEREWOLF( victim ) ) { send_to_char( "Only on Werewolves or Werewolf Hybirds.\n\r", ch); return; } if ( !str_cmp( arg2, "all" ) ) { value = is_number( arg3 ) ? atoi( arg3 ) : -1; if ( value < 0 || value > 5 ) { send_to_char( "Value range is 0 - 5.\n\r", ch ); return; } if ( value == 0 ) value = -1; for ( gift = 0 ; gift <= BREED_MAX ; gift++ ) victim->pcdata->breed[gift] = value; for ( gift = 0 ; gift <= AUSPICE_MAX ; gift++ ) victim->pcdata->auspice[gift] = value; for ( gift = 0 ; gift <= TRIBE_MAX ; gift++ ) victim->pcdata->tribes[gift] = value; send_to_char( "Done.\n\r", ch ); return; } else if ( !str_cmp( arg2, "lupus" ) ) { gift = BREED_LUPUS; type = 1; } else if ( !str_cmp( arg2, "metis" ) ) { gift = BREED_METIS; type = 1; } else if ( !str_cmp( arg2, "homid" ) ) { gift = BREED_HOMID; type = 1; } else if ( !str_cmp( arg2, "ragaba" ) ) { gift = AUSPICE_RAGABASH; type = 2; } else if ( !str_cmp( arg2, "theurg" ) ) { gift = AUSPICE_THEURGE; type = 2; } else if ( !str_cmp( arg2, "philod" ) ) { gift = AUSPICE_PHILODOX; type = 2; } else if ( !str_cmp( arg2, "gallia" ) ) { gift = AUSPICE_GALLIARD; type = 2; } else if ( !str_cmp( arg2, "ahroun" ) ) { gift = AUSPICE_AHROUN; type = 2; } else if ( !str_cmp( arg2, "blafur" ) ) { gift = TRIBE_BLACK_FURIES; type = 3; } else if ( !str_cmp( arg2, "bognaw" ) ) { gift = TRIBE_BONE_GNAWERS; type = 3; } else if ( !str_cmp( arg2, "chgaia" ) ) { gift = TRIBE_CHILDREN_OF_GAIA; type = 3; } else if ( !str_cmp( arg2, "fianna" ) ) { gift = TRIBE_FIANNA; type = 3; } else if ( !str_cmp( arg2, "getfen" ) ) { gift = TRIBE_GET_OF_FENRIS; type = 3; } else if ( !str_cmp( arg2, "glwalk" ) ) { gift = TRIBE_GLASS_WALKERS; type = 3; } else if ( !str_cmp( arg2, "redtal" ) ) { gift = TRIBE_RED_TALONS; type = 3; } else if ( !str_cmp( arg2, "shlord" ) ) { gift = TRIBE_SHADOW_LORDS; type = 3; } else if ( !str_cmp( arg2, "silstr" ) ) { gift = TRIBE_SILENT_STRIDERS; type = 3; } else if ( !str_cmp( arg2, "silvfa" ) ) { gift = TRIBE_SILVER_FANGS; type = 3; } else if ( !str_cmp( arg2, "starga" ) ) { gift = TRIBE_STARGAZERS; type = 3; } else if ( !str_cmp( arg2, "uktena" ) ) { gift = TRIBE_UKTENA; type = 3;} else if ( !str_cmp( arg2, "wendig" ) ) { gift = TRIBE_WENDIGOS; type = 3; } else { do_giftset( ch, "" ); return; } value = is_number( arg3 ) ? atoi( arg3 ) : -1; if ( value < 0 || value > 5 ) { send_to_char( "Value range is 0 - 5.\n\r", ch ); return; } if ( value == 0 ) value = -1; if ( type == 1 ) victim->pcdata->breed[gift] = value; else if ( type == 2 ) victim->pcdata->auspice[gift] = value; else victim->pcdata->tribes[gift] = value; send_to_char( "Done.\n\r", ch ); return; } void do_cset( CHAR_DATA *ch, char *argument ) { CHAR_DATA *victim; char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char string[MAX_STRING_LENGTH]; int value; if ( IS_NPC( ch ) ) return; argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); strcpy(string, argument ); if ( arg1[0] == '\0' || arg2[0] == '\0' ) { send_to_char( "Syntax: cset [victim] [option] [value]\n\r", ch ); send_to_char( "\n\r Option can be one of:\n\r", ch ); send_to_char( " gen clan lord dlord champion prince\n\r", ch ); send_to_char( " sire rogue addrunes remrunes\n\r", ch ); return; } value = is_number( string ) ? atoi( string ) : -1; if ( ( victim = get_char_world( ch, arg1 ) ) == NULL ) { send_to_char( "They are not here.\n\r", ch ); return; } if ( IS_NPC( victim ) ) { send_to_char( "Not on NPC's.\n\r", ch ); return; } if ( !str_cmp( arg2, "addrunes") ) { if ( !IS_MAGE( victim ) ) { send_to_char("Only on Mages or Mage Hybrids.\n\r",ch); return; } victim->pcdata->runes[1] = 2047; victim->pcdata->runes[2] = 1023; victim->pcdata->runes[3] = 15; send_to_char("Done.\n\r", ch); return; } if ( !str_cmp( arg2, "remrunes") ) { victim->pcdata->runes[1] = 0; victim->pcdata->runes[2] = 0; victim->pcdata->runes[3] = 0; send_to_char("Done.\n\r", ch); return; } if ( !str_cmp( arg2, "dlord") ) { if ( !IS_DEMON( victim ) ) { send_to_char("Only on Demons.\n\r",ch); return; } if IS_SET(victim->act, PLR_DEMON) REMOVE_BIT(victim->act, PLR_DEMON); else SET_BIT(victim->act, PLR_DEMON); send_to_char("Done.\n\r",ch); return; } if ( !str_cmp( arg2, "rogue") ) { if ( !IS_DEMON( victim ) ) { send_to_char("Only on Demons.\n\r",ch); return; } if ( IS_MORE( victim, MORE_OUTCAST ) ) REMOVE_BIT(victim->more, MORE_OUTCAST); else SET_BIT(victim->more, MORE_OUTCAST); REMOVE_BIT( victim->extra, EXTRA_SIRE ); REMOVE_BIT( victim->extra, EXTRA_PRINCE ); free_string(victim->lord); victim->lord=str_dup(""); send_to_char("Done.\n\r",ch); return; } if ( !str_cmp( arg2, "champion") ) { if (!IS_DEMON(victim) ) { send_to_char("Only on Demons.\n\r",ch); return; } if IS_SET(victim->act, PLR_CHAMPION) REMOVE_BIT(victim->act, PLR_CHAMPION); else SET_BIT(victim->act, PLR_CHAMPION); send_to_char("Done.\n\r",ch); return; } if ( !str_cmp( arg2, "prince") ) { if ( IS_MAGE(victim) ) { send_to_char("Not on Mages.\n\r",ch); return; } if (IS_EXTRA(victim,EXTRA_PRINCE)) { REMOVE_BIT(victim->extra,EXTRA_PRINCE); send_to_char("Done.\n\r",ch); return; } SET_BIT(victim->extra,EXTRA_PRINCE); send_to_char("Done.\n\r",ch); return; } if ( !str_cmp( arg2, "sire") ) { if (IS_EXTRA(victim,EXTRA_SIRE)) { REMOVE_BIT(victim->extra,EXTRA_SIRE); send_to_char("Done.\n\r",ch); return; } SET_BIT(victim->extra,EXTRA_SIRE); send_to_char("Done.\n\r",ch); return; } if ( !str_cmp( arg2, "gen" ) ) { if ( !IS_WEREWOLF( victim ) && !IS_VAMPIRE( victim ) && !IS_NEPHANDI( victim ) ) { send_to_char( "On werewolves and vampires only.\n\r", ch ); return; } if (victim->class == CLASS_WEREWOLF ) { if ( value < 2 || value > 4 ) { send_to_char( "Werewolf gen must be between 2 and 4.\n\r", ch ); return; } } else if ( victim->class == CLASS_VAMPIRE ) { if ( value < 2 || value > 7 ) { send_to_char( "Vampire gen must be between 2 and 7.\n\r", ch ); return; } } else if (( victim->class == CLASS_NEPHANDI ) || ( victim->class == CLASS_SKINDANCER ) || ( victim->class == CLASS_BAALI ) || ( victim->class == CLASS_LICH ) || ( victim->class == CLASS_BLACK_SPIRAL_DANCER ) || ( victim->class == CLASS_ABOMINATION ) ) { if ( value < 3 || value > 4 ) { send_to_char( "Hybrid gen can only be 3 or 4.\n\r", ch ); return; } } else { send_to_char( "Can't set thier gen.\n\r", ch ); return; } victim->vampgen = value; if ( IS_VAMPIRE( victim ) ) update_gen( victim ); send_to_char("Generation updated.\n\r", ch ); send_to_char( "Don't forget to set up the lord.\n\r", ch ); return; } else if ( !str_cmp( arg2, "clan" ) ) { if ( victim->class != CLASS_VAMPIRE && victim->class != CLASS_WEREWOLF ) { send_to_char( "Thay have no need for a clan.\n\r", ch ); return; } smash_tilde( string ); if ( strlen( string ) < 0 || strlen( string ) > 30 ) { send_to_char( "Clan name must be between 0 and 30 characters.\n\r", ch ); send_to_char( "Leave a blank to clear clan.\n\r",ch); return; } free_string( victim->clan ); victim->clan = str_dup( string ); send_to_char( "Clan name set.\n\r", ch ); return; } else if ( !str_cmp( arg2, "lord" ) ) { smash_tilde( string ); if ( strlen( string ) < 0) { send_to_char( "Must contain at least one valid character name.\n\r", ch ); send_to_char( "Leave a Blank to clear lord.\n\r",ch); return; } free_string( victim->lord ); victim->lord = str_dup( string); send_to_char( "Lord set.\n\r", ch ); return; } else { do_cset( ch, "" ); return; } return; } void do_dset(CHAR_DATA *ch, char *argument) { char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char arg3[MAX_INPUT_LENGTH]; char arg4[MAX_INPUT_LENGTH]; OBJ_DATA *obj; int value = 0; int disc = 0; if ( IS_NPC( ch ) ) { send_to_char( "Not while switched.\n\r", ch ); return; } argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); argument = one_argument( argument, arg3 ); argument = one_argument( argument, arg4 ); if ( arg1[0] == '\0' || arg2[0] == '\0' || arg3[0] == '\0' || arg4[0] == '\0' ) { send_to_char( "Syntax : dset <obj> <disc> <+/-> <level>\n\r", ch ); send_to_char( "\n\r", ch ); send_to_char( "Discipline being one of:\n\r", ch ); send_to_char( " animalism auspex celerity chimerstry\n\r", ch ); send_to_char( " daimoinon dominate fortitude melpominee\n\r", ch ); send_to_char( " necromancy obeah obfuscate obtenebration\n\r", ch ); send_to_char( " potence presence protean quietus\n\r", ch ); send_to_char( " serpentis thanatosis thaumaturgy\n\r", ch ); send_to_char( " vicissitude\n\r",ch ); send_to_char( "\n\r", ch ); send_to_char( " - : Sets to that level\n\r", ch ); send_to_char( " + : Adds to thier current level\n\r", ch ); return; } if ( ( obj = get_obj_carry( ch, arg1 ) ) == NULL ) { send_to_char( "You do not have that item.\n\r", ch ); return; } value = atoi( arg4 ); if ( value < 1 || value > 10 ) { send_to_char( "Discipline range is 1 to 10.\n\r", ch ); return; } if ( !str_cmp( arg2, "animalism" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_ANIMALISM; else if ( !str_cmp( arg2, "animalism" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_ANIMALISM; else if ( !str_cmp( arg2, "auspex" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_AUSPEX; else if ( !str_cmp( arg2, "auspex" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_AUSPEX; else if ( !str_cmp( arg2, "celerity" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_CELERITY; else if ( !str_cmp( arg2, "celerity" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_CELERITY; else if ( !str_cmp( arg2, "chimerstry" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_CHIMERSTRY; else if ( !str_cmp( arg2, "chimerstry" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_CHIMERSTRY; else if ( !str_cmp( arg2, "daimoinon" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_DAIMOINON; else if ( !str_cmp( arg2, "daimoinon" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_DAIMOINON; else if ( !str_cmp( arg2, "dominate" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_DOMINATE; else if ( !str_cmp( arg2, "dominate" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_DOMINATE; else if ( !str_cmp( arg2, "fortitude" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_FORTITUDE; else if ( !str_cmp( arg2, "fortitude" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_FORTITUDE; else if ( !str_cmp( arg2, "melpominee" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_MELPOMINEE; else if ( !str_cmp( arg2, "melpominee" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_MELPOMINEE; else if ( !str_cmp( arg2, "necromancy" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_NECROMANCY; else if ( !str_cmp( arg2, "necromancy" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_NECROMANCY; else if ( !str_cmp( arg2, "obeah" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_OBEAH; else if ( !str_cmp( arg2, "obeah" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_OBEAH; else if ( !str_cmp( arg2, "obfuscate" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_OBFUSCATE; else if ( !str_cmp( arg2, "obfuscate" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_OBFUSCATE; else if ( !str_cmp( arg2, "obtenebration" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_OBTENEBRATION; else if ( !str_cmp( arg2, "obtenebration" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_OBTENEBRATION; else if ( !str_cmp( arg2, "potence" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_POTENCE; else if ( !str_cmp( arg2, "potence" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_POTENCE; else if ( !str_cmp( arg2, "presence" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_PRESENCE; else if ( !str_cmp( arg2, "presence" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_PRESENCE; else if ( !str_cmp( arg2, "protean" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_PROTEAN; else if ( !str_cmp( arg2, "protean" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_PROTEAN; else if ( !str_cmp( arg2, "quietus" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_QUIETUS; else if ( !str_cmp( arg2, "quietus" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_QUIETUS; else if ( !str_cmp( arg2, "serpentis" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_SERPENTIS; else if ( !str_cmp( arg2, "serpentis" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_SERPENTIS; else if ( !str_cmp( arg2, "thanatosis" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_THANATOSIS; else if ( !str_cmp( arg2, "thanatosis" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_THANATOSIS; else if ( !str_cmp( arg2, "thaumaturgy" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_THAUMATURGY; else if ( !str_cmp( arg2, "thaumaturgy" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_THAUMATURGY; else if ( !str_cmp( arg2, "vicissitude" ) && !str_cmp( arg3, "+" ) ) disc = APPLY_VICISSITUDE; else if ( !str_cmp( arg2, "vicissitude" ) && !str_cmp( arg3, "-" ) ) disc = APPLY_SET_VICISSITUDE; else { do_dset( ch, "" ); return; } oset_affect( ch, obj, value, disc, FALSE ); return; } void do_cshow(CHAR_DATA *ch, char *argument) { char buf[MAX_STRING_LENGTH]; DESCRIPTOR_DATA *d; if (IS_NPC(ch)) return; sprintf(buf, "[ Name][Level][Trust][Class][Gen][ Hit][ Mana][ Move][ HR][ DR][ AC][Quest ][Sta ]\n\r"); send_to_char(buf,ch); for (d = descriptor_list; d != NULL; d = d->next) { CHAR_DATA *wch; if (d->connected != CON_PLAYING) continue; wch = (d->original != NULL) ? d->original : d->character; sprintf(buf,"[%12s][%5d][%5d][%5d][%3d][%5d][%5d][%5d][%4d][%4d][%5d][%5d][%4d]\n\r", wch->name, wch->level, wch->trust, wch->class, wch->vampgen, wch->max_hit, wch->max_mana, wch->max_move, char_hitroll(wch), char_damroll(wch), char_ac(wch), wch->pcdata->quest, wch->race); send_to_char(buf,ch); } return; } void do_recolour(CHAR_DATA *ch, char *argument) { CHAR_DATA *victim; char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; int col; argument=one_argument(argument,arg1); argument=one_argument(argument,arg2); if (arg1[0] == '\0' || arg2[0] == '\0') { send_to_char("Syntax: recolour <char> <new colour>\n\r",ch); return; } if ((victim=get_char_world(ch,arg1)) == NULL) { send_to_char("They're not here.\n\r",ch); return; } if (!IS_MAGE(victim)) { send_to_char("Only on mages.\n\r", ch); return; } if (IS_NEPHANDI(victim) || IS_LICH(victim) || IS_SKINDANCER(victim)) { send_to_char("They may only be red!\n\r",ch); return; } if (!str_cmp(arg2,"air")) col = 0; else if (!str_cmp(arg2,"fire")) col = 1; else if (!str_cmp(arg2,"water")) col = 2; else if (!str_cmp(arg2,"earth")) col = 3; else if (!str_cmp(arg2,"spirit")) col = 4; else { send_to_char("Mages types being:\n\r air, fire, water, earth, spirit.\n\r",ch); return; } victim->pcdata->runes[0] = col; sprintf(buf,"%s declared %s mage by the gods!",victim->name,capitalize(arg2)); return; } void do_waitplayer(CHAR_DATA *ch, char *argument) { CHAR_DATA *victim; DESCRIPTOR_DATA *d; char arg1[MAX_STRING_LENGTH]; char arg2[MAX_STRING_LENGTH]; sh_int value; argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); if ( IS_NPC( ch ) ) return; if ( arg1[0] == '\0' || arg2 == '\0' ) { send_to_char( "Syntax: waitplayer [victim] [seconds]\n\r", ch ); return; } if ( !str_cmp( arg1, "all" ) ) { if ( !is_number( arg2 ) ) { send_to_char( "Number of seconds must be a numeric.\n\r", ch ); return; } value = atoi( arg2 ); if ( value < 1 || value > 30 ) { send_to_char( "Range must be 1 to 30 seconds.\n\r", ch ); return; } for ( d = descriptor_list ; d != NULL ; d = d->next ) { if ( d->connected < CON_PLAYING ) continue; if ( d->connected > CON_PLAYING ) continue; if ( ( victim = d->character ) == NULL ) continue; if ( victim == ch ) continue; if ( IS_NPC( victim ) ) continue; if ( get_trust( ch ) <= get_trust( victim ) ) continue; if ( !can_see( ch, victim ) ) continue; if ( IS_SET( ch->act, PLR_GODLESS ) && get_trust( ch ) < NO_GODLESS ) continue; WAIT_STATE( victim, value * 4 ); } return; } if ( ( victim = get_char_world( ch, arg1 ) ) == NULL ) { send_to_char( "They are not here.\n\r", ch ); return; } if ( IS_NPC( victim ) ) { send_to_char( "Not on NPC's.\n\r", ch ); return; } if ( !IS_NPC( victim ) && IS_SET( victim->act, PLR_GODLESS ) && get_trust( ch ) < NO_GODLESS ) { send_to_char( "You failed.\n\r", ch ); return; } if ( get_trust( victim ) >= get_trust( ch ) ) { send_to_char( "You failed.\n\r", ch ); return; } if ( !is_number( arg2 ) ) { send_to_char( "Number of seconds must be numeric.\n\r", ch ); return; } value = atoi( arg2 ); if ( value < 1 || value > 30 ) { send_to_char( "Value range is 1 to 30 seconds.\n\r", ch ); return; } WAIT_STATE( victim, value * 4 ); send_to_char( "Ok.\n\r", ch ); return; } void do_pshow(CHAR_DATA *ch, char *argument) { char buf[MAX_STRING_LENGTH]; char arg[MAX_STRING_LENGTH]; DESCRIPTOR_DATA *d; if (IS_NPC(ch)) return; sprintf(buf, "[Name ][Class ][Gen][ Hit ][Mana ][Move ][HR ][DR ][AC ][Exp ]\n\r"); send_to_char(buf, ch); for (d = descriptor_list; d != NULL; d = d->next) { CHAR_DATA *wch; if (d->connected != CON_PLAYING) continue; wch = (d->original != NULL) ? d->original : d->character; if ( wch->class == CLASS_VAMPIRE ) strcpy( arg, "Vampire" ); else if ( wch->class == CLASS_WEREWOLF ) strcpy( arg, "Werewolf" ); else if ( wch->class == CLASS_ABOMINATION ) strcpy( arg, "Abomination" ); else if ( wch->class == CLASS_MAGE ) strcpy( arg, "Mage" ); else if ( wch->class == CLASS_LICH ) strcpy( arg, "Lich" ); else if ( wch->class == CLASS_SKINDANCER ) strcpy( arg, "Skindancer" ); else if ( wch->class == CLASS_DEMON ) strcpy( arg, "Demon" ); else if ( wch->class == CLASS_ANGEL ) strcpy( arg, "Angel" ); else if ( wch->class == CLASS_BAALI ) strcpy( arg, "Baali" ); else if ( wch->class == CLASS_BLACK_SPIRAL_DANCER ) strcpy( arg, "B.S.D." ); else if ( wch->class == CLASS_NEPHANDI ) strcpy( arg, "Nephandi" ); else if ( wch->class == CLASS_GHOUL ) strcpy( arg, "Ghoul" ); else strcpy( arg, "None" ); sprintf(buf,"[%-12s][%-13s][%3d][%5d][%5d][%5d][%4d][%4d][%5d][%10d]\n\r", wch->name, arg, wch->vampgen, wch->max_hit, wch->max_mana, wch->max_move, char_hitroll(wch), char_damroll(wch), char_ac(wch), wch->exp ); send_to_char(buf,ch); } return; } void do_undeny( CHAR_DATA *ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; char *oldname; CHAR_DATA *victim; DESCRIPTOR_DATA *d; ROOM_INDEX_DATA *in_room; sprintf(buf,"%s: Undeny %s",ch->name,argument); if (ch->level < NO_WATCH) do_watching(ch,buf); one_argument( argument, arg ); if ( arg[0] == '\0' ) { send_to_char( "Undeny whom?", ch ); return; } if ((victim = get_char_world(ch, arg)) != NULL) { send_to_char("They are already online.\n\r", ch ); return; } if (!char_exists(FALSE,arg)) { send_to_char( "They aren't here.\n\r", ch ); return; } oldname = str_dup(ch->name); d = ch->desc; do_autosave(ch,""); in_room = ch->in_room; extract_char(ch, TRUE); d->character = NULL; load_char_obj(d, arg); ch = d->character; ch->next = char_list; char_list = ch; char_to_room(ch,in_room); if ( ch->pcdata->denydate > 0 ) { ch->pcdata->denydate = 0; send_to_char( "DENY removed.\n\r", ch ); } else { send_to_char("They are not DENIED.\n\r", ch ); } d = ch->desc; do_autosave(ch,""); in_room = ch->in_room; extract_char(ch,TRUE); d->character = NULL; load_char_obj(d, oldname); ch = d->character; ch->next = char_list; char_list = ch; char_to_room(ch,in_room); return; } void ftalk_who( CHAR_DATA *ch ) { CHAR_DATA *vch; send_to_char("People currently on ftalk:\n\r",ch); for ( vch = char_list ; vch != NULL ; vch = vch->next ) { if ( IS_NPC(vch)) continue; if ( !can_see( ch, vch ) ) continue; if (!IS_MORE(vch,MORE_FTALK)) continue; { send_to_char(vch->name, ch); send_to_char("\n\r", ch); } } return; } void status_who( CHAR_DATA *ch ) { CHAR_DATA *vch; char buf[MAX_STRING_LENGTH]; sh_int c_s = 0; c_s = ch->race - 1; if ( c_s < 0 ) c_s = 0; sprintf( buf, " [ ## ] [ %-12s ] [ %-6s ]\n\r", "Name", "Bounty" ); send_to_char( buf, ch); for ( vch = char_list ; vch != NULL ; vch = vch->next ) { if ( IS_NPC( vch ) ) continue; if ( !can_see( ch, vch ) ) continue; if ( ch->race > 0 && vch->race < 1 ) sprintf( buf, " [%3d] [ %-12s ] [ %-6d ]\n\r", vch->race, vch->name, vch->pcdata->bounty); else if ( ch->race <= vch->race && ch != vch && !IS_IMMORTAL( vch ) ) sprintf( buf, " * [%3d] [ %-12s ] [ %-6d ]\n\r", vch->race, vch->name, vch->pcdata->bounty); else if ( c_s < vch->race && ch != vch && !IS_IMMORTAL( vch ) ) sprintf( buf, " * [%3d] [ %-12s ] [ %-6d ]\n\r", vch->race, vch->name, vch->pcdata->bounty); else sprintf( buf, " [%3d] [ %-12s ] [ %-6d ]\n\r", vch->race, vch->name, vch->pcdata->bounty); send_to_char( buf, ch ); } return; } void do_bounty(CHAR_DATA *ch, char *argument) { CHAR_DATA *victim; char arg1 [MAX_INPUT_LENGTH]; char arg2 [MAX_INPUT_LENGTH]; char buf [MAX_STRING_LENGTH]; argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); if (arg1[0] =='\0' || arg2[0] == '\0') { send_to_char("Place what bounty on who's head?\n\rSyntax: Bounty <victim> <amount>\n\r", ch ); return; } if ( ( victim = get_char_world( ch, arg1 ) ) == NULL) { send_to_char( "They are currently not logged in!", ch ); return; } if (ch == victim) { send_to_char( "You cannot place bounties on yourself!\n\r", ch); return; } if (IS_NPC(victim)) { send_to_char( "You cannot put a bounty on NPCs!\n\r", ch); return; } if (!IS_HERO(victim)) { send_to_char( "You cannot place bounties on mortals!\n\r", ch); return; } if (IS_IMMORTAL(victim)) { send_to_char( "You cannot place bounties on gods!\n\r", ch); return; } if ( is_number( arg2 ) ) { int amount; amount = atoi(arg2); if (amount == 0) amount = 1; if (amount < 50) { send_to_char( "You have to put at least 50 questpoints as the bounty.\n\r", ch); return; } if (ch->pcdata->quest < amount) { send_to_char( "You don't have that many questpoints!\n\r", ch); return; } ch->pcdata->quest -= amount; victim->pcdata->bounty += amount; sprintf( buf, "You have placed a %d qp bounty on %s.\n\r", amount, victim->name); send_to_char(buf,ch); sprintf(buf, "%s is now worth a %d qp bounty.", victim->name,victim->pcdata->bounty ); do_info(ch,buf); return; } send_to_char("The amount has to be a number\n\rSyntax: Bounty <victim> <value>.\n\r", ch); return; } void do_paradox( CHAR_DATA *ch, char *argument) { char arg[MAX_INPUT_LENGTH]; CHAR_DATA *victim; DESCRIPTOR_DATA *d; argument = one_argument(argument, arg); if (arg[0] == '\0') { send_to_char("Paradox whom?\n\r", ch ); return; } if ( get_trust(ch) >= MAX_LEVEL - 2 && !str_cmp(arg,"all")) { for (d = descriptor_list; d != NULL; d = d->next) { victim = d->character; if (victim == NULL || IS_NPC(victim)) continue; { paradox(victim); } } } if ( ( victim = get_char_world( ch, arg ) ) == NULL ) { send_to_char( "They aren't here.\n\r", ch ); return; } paradox(victim); send_to_char("Done!\n\r", ch ); }