/*************************************************************************** * 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. * ***************************************************************************/ #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" void do_level( CHAR_DATA *ch, char *argument ) { char arg [MAX_INPUT_LENGTH]; char skill [20]; char stance [10]; one_argument( argument, arg ); if (IS_NPC(ch)) return; send_to_char(" -= Weapon Levels =-\n\r", ch); sprintf(skill, "Slice : %-10d", ch->wpn[1]); send_to_char( skill, ch ); sprintf(skill, "Stab : %-10d", ch->wpn[2]); send_to_char( skill, ch ); sprintf(skill, "Slash : %-10d", ch->wpn[3]); send_to_char( skill, ch ); sprintf(skill, "Whip : %-10d\n\r", ch->wpn[4]); send_to_char( skill, ch ); sprintf(skill, "Claw : %-10d", ch->wpn[5]); send_to_char( skill, ch ); sprintf(skill, "Blast : %-10d", ch->wpn[6]); send_to_char( skill, ch ); sprintf(skill, "Pound : %-10d", ch->wpn[7]); send_to_char( skill, ch ); sprintf(skill, "Crush : %-10d\n\r", ch->wpn[8]); send_to_char( skill, ch ); sprintf(skill, "Grep : %-10d", ch->wpn[9]); send_to_char( skill, ch ); sprintf(skill, "Bite : %-10d", ch->wpn[10]); send_to_char( skill, ch ); sprintf(skill, "Pierce : %-10d", ch->wpn[11]); send_to_char( skill, ch ); sprintf(skill, "Suck : %-10d\n\r", ch->wpn[12]); send_to_char( skill, ch ); sprintf(skill, "Unarmed : %-10d\n\r\n", ch->wpn[0]); send_to_char( skill, ch ); send_to_char(" -= Stance Levels =-\n\r", ch); sprintf(skill, "Viper : %-10d", ch->stance[1]); send_to_char( skill, ch ); sprintf(skill, "Crane : %-10d", ch->stance[2]); send_to_char( skill, ch ); sprintf(skill, "Crab : %-10d", ch->stance[3]); send_to_char( skill, ch ); sprintf(skill, "Mongoose : %-10d\n\r", ch->stance[4]); send_to_char( skill, ch ); sprintf(skill, "Bull : %-10d", ch->stance[5]); send_to_char( skill, ch ); sprintf(skill, "Mantis : %-10d", ch->stance[6]); send_to_char( skill, ch ); sprintf(skill, "Dragon : %-10d", ch->stance[7]); send_to_char( skill, ch ); sprintf(skill, "Tiger : %-10d\n\r", ch->stance[8]); send_to_char( skill, ch ); sprintf(skill, "Monkey : %-10d", ch->stance[9]); send_to_char( skill, ch ); sprintf(skill, "Swallow : %-10d\n\r\n", ch->stance[10]); send_to_char( skill, ch ); send_to_char(" -= Spell Levels =-\n\r", ch); sprintf(skill, "Purple : %-10d", ch->spl[0]); send_to_char( skill, ch ); sprintf(skill, "Blue : %-10d", ch->spl[2]); send_to_char( skill, ch ); sprintf(skill, "Red : %-10d\n\r", ch->spl[1]); send_to_char( skill, ch ); sprintf(skill, "Green : %-10d", ch->spl[3]); send_to_char( skill, ch ); sprintf(skill, "Yellow : %-10d\n\r\n", ch->spl[4]); send_to_char( skill, ch ); send_to_char(" -= Misc. Things =-\n\r", ch); sprintf(skill, "Recall Room : %d ", ch->home); send_to_char( skill, ch ); sprintf(skill, "Trust : %d\n\r", ch->trust); send_to_char( skill, ch ); if ( ch->stance[11] == 1 ) sprintf(stance, " Viper\n\r" ); else if ( ch->stance[11] == 2 ) sprintf(stance, " Crane\n\r" ); else if ( ch->stance[11] == 3 ) sprintf(stance, " Crab\n\r" ); else if ( ch->stance[11] == 4 ) sprintf(stance, " Mongoose\n\r" ); else if ( ch->stance[11] == 5 ) sprintf(stance, " Bull\n\r" ); else if ( ch->stance[11] == 6 ) sprintf(stance, " Mantis\n\r" ); else if ( ch->stance[11] == 7 ) sprintf(stance, " Dragon\n\r" ); else if ( ch->stance[11] == 8 ) sprintf(stance, " Tiger\n\r" ); else if ( ch->stance[11] == 9 ) sprintf(stance, " Monkey\n\r" ); else if ( ch->stance[11] == 10 ) sprintf(stance, " Swallow\n\r" ); else if ( ch->stance[11] == -1 || ch->stance[11] == 15 ) sprintf(stance, " None\n\r" ); sprintf(skill, "Autostance: %s", stance); send_to_char( skill, ch ); send_to_char("\n -= Class Things =-\n\r", ch); if ( IS_CLASS(ch, CLASS_DEMON) ) send_to_char("You are an Angel!\n\r", ch); if ( IS_CLASS(ch, CLASS_MAGE) ) send_to_char("You are a mage!\n\r", ch); if ( IS_CLASS(ch, CLASS_WEREWOLF) ) send_to_char("You are a werewolf!\n\r", ch); if ( IS_CLASS(ch, CLASS_NINJA) ) send_to_char("You are a ninja!\n\r", ch); if ( IS_CLASS(ch, CLASS_VAMPIRE) ) send_to_char("You are a vampire!\n\r", ch); if ( IS_CLASS(ch, CLASS_HIGHLANDER) ) send_to_char("You are a highlander!\n\r", ch); if ( IS_CLASS(ch, CLASS_DROW) ) send_to_char("You are a drow!\n\r", ch); if (IS_CLASS(ch, CLASS_VAMPIRE) ) { sprintf(skill, "Generation : %d ", ch->pcdata->stats[UNI_GEN]); send_to_char( skill, ch ); if (ch->pcdata->rank == AGE_METHUSELAH) send_to_char("You are a Methuselah!\n\r",ch); else if (ch->pcdata->rank == AGE_ELDER) send_to_char("You are an Elder!\n\r",ch); else if (ch->pcdata->rank == AGE_ANCILLA) send_to_char("You are an Ancilla!\n\r",ch); else if (ch->pcdata->rank == AGE_NEONATE) send_to_char("You are a Neonate!\n\r", ch); else send_to_char("You are a Childe!\n\r", ch); if ( IS_SET(ch->special, SPC_PRINCE) ) send_to_char("You are a prince!\n\r", ch); } if (IS_CLASS(ch, CLASS_NINJA) ) { sprintf(skill, "Generation : %d\n\r", ch->pcdata->stats[UNI_GEN]); send_to_char( skill, ch ); if ( IS_SET(ch->special, SPC_PRINCE) ) send_to_char("You can discipline people!\n\r", ch); } if (IS_CLASS(ch, CLASS_WEREWOLF) ) { sprintf(skill, "Generation : %d\n\r", ch->pcdata->stats[UNI_GEN]); send_to_char( skill, ch ); if ( IS_SET(ch->special, SPC_SIRE) && ch->pcdata->stats[UNI_GEN] > 2 ) send_to_char("You are able to spread the gift!\n\r", ch); if ( IS_SET(ch->special, SPC_PRINCE) && ch->pcdata->stats[UNI_GEN] > 2 ) send_to_char("You are your a shaman!\n\r", ch); if ( ch->pcdata->stats[UNI_FORM0] == 1 ) send_to_char("You are in Homid form.\n\r", ch); else if ( ch->pcdata->stats[UNI_FORM0] == 2 ) send_to_char("You are in Raginos form.\n\r", ch); else if ( ch->pcdata->stats[UNI_FORM0] == 3 ) send_to_char("You are in Crinos form.\n\r", ch); else if ( ch->pcdata->stats[UNI_FORM0] == 4 ) send_to_char("You are in Hispo form.\n\r", ch); else if ( ch->pcdata->stats[UNI_FORM0] == 5 ) send_to_char("You are in Lupus form.\n\r", ch); } send_to_char("\n\r* You can type spells, stances, or weapons to see your spell, stance, or weapon levels in words.\n\r", ch); return; } void do_class( CHAR_DATA *ch, char *argument ) { CHAR_DATA *victim; char arg1 [MAX_INPUT_LENGTH]; char arg2 [MAX_INPUT_LENGTH]; argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); if ( IS_NPC(ch) ) return; if ( arg1[0] == '\0' || arg2[0] == '\0' ) { send_to_char( "Syntax: class <char> <class>.\n\r", ch ); send_to_char(" Classes:\n\r", ch ); send_to_char("None, ", ch); send_to_char("Angel, ", ch); send_to_char("Arch-Angel , ", ch); send_to_char("Purple Mage, Blue Mage, Yellow Mage, Green Mage, Red Mage, ", ch); send_to_char("Werewolf, ", ch); send_to_char("Ninja, ", ch); send_to_char("Monk, ", ch); send_to_char("Vampire, ", ch); send_to_char("Highlander, ", ch); send_to_char("Drow, ", ch); return; } if ( ( victim = get_char_room( ch, arg1 ) ) == NULL ) { send_to_char( "That player is not here.\n\r", ch); return; } if ( !str_cmp( arg2, "none" ) ) { /* Used to make sure the person has enough "stuff" to change */ victim->pcdata->condition[COND_THIRST] = 10000; victim->move = 10000; victim->mana = 10000; victim->pcdata->powers[WPOWER_BEAR] = 4; victim->pcdata->powers[WPOWER_LYNX] = 4; victim->pcdata->powers[WPOWER_BOAR] = 4; victim->pcdata->powers[WPOWER_OWL] = 4; victim->pcdata->powers[WPOWER_SPIDER] = 4; victim->pcdata->powers[WPOWER_WOLF] = 4; victim->pcdata->powers[WPOWER_HAWK] = 4; victim->pcdata->powers[WPOWER_MANTIS] = 4; if ( IS_CLASS(victim, CLASS_WEREWOLF) || IS_CLASS(victim, CLASS_VAMPIRE) ) do_unwerewolf(victim,""); if ( IS_CLASS(victim, CLASS_WEREWOLF) ) do_shift(victim,"homid"); if (IS_VAMPAFF(victim,VAM_DISGUISED) ) do_mask(victim,"self"); victim->pcdata->stats[UNI_FORM0] = 0; /* All classes in general */ if (IS_VAMPAFF(victim,VAM_FANGS) ) { send_to_char("Your fangs slide back into your gums.\n\r",victim); act("$N's fangs slide back into $s gums.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_FANGS); } if (IS_CLASS(victim, CLASS_VAMPIRE) && IS_VAMPAFF(victim,VAM_CLAWS) ) { send_to_char("Your claws slide back under your nails.\n\r",victim); act("$N's claws slide back under $s nails.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CLAWS); } else if (IS_CLASS(victim, CLASS_NINJA) && IS_VAMPAFF(victim,VAM_CLAWS) ) { send_to_char("You shove your iron claws up your sleeves\n\r",victim); act("$N shoves $S iron claws up $e sleeves.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CLAWS); } else if (IS_CLASS(victim, CLASS_WEREWOLF) && IS_VAMPAFF(victim,VAM_CLAWS) ) { send_to_char("Your talons slide back into your fingers.\n\r",victim); act("$N's talons slide back into $s fingers.",ch,NULL,victim,TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CLAWS); } if (IS_VAMPAFF(victim,VAM_NIGHTSIGHT) ) { send_to_char("The red glow in your eyes fades.\n\r",victim); act("The red glow in $N's eyes fades.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_NIGHTSIGHT); } if (IS_AFFECTED(victim,AFF_SHADOWSIGHT) ) { send_to_char("You can no longer see between planes.\n\r",victim); REMOVE_BIT(victim->affected_by, AFF_SHADOWSIGHT); } if (IS_IMMUNE(victim,IMM_SHIELDED) ) { send_to_char("You stop shielding your aura.\n\r",victim); REMOVE_BIT(victim->immune, IMM_SHIELDED); } if (IS_VAMPAFF(victim,VAM_DISGUISED) ) { free_string( victim->morph ); victim->morph = str_dup( victim->name ); send_to_char("You transform into yourself.\n\r", victim); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_DISGUISED); } if (IS_AFFECTED(victim,AFF_SHADOWPLANE) ) { send_to_char("You fade back into the real world.\n\r",victim); act("The shadows flicker and $N fades into existance.",ch,NULL,victim,TO_ROOM); REMOVE_BIT(victim->affected_by,AFF_SHADOWPLANE); do_look(ch,"auto"); } if (IS_SET(victim->act, PLR_WIZINVIS) ) { REMOVE_BIT(victim->act, PLR_WIZINVIS); send_to_char( "You slowly fade into existence.\n\r", victim ); } if (IS_SET(victim->act, PLR_HOLYLIGHT) ) { REMOVE_BIT(victim->act, PLR_HOLYLIGHT); REMOVE_BIT(victim->act, PLR_DROWSIGHT); send_to_char( "Your senses return to normal.\n\r", victim ); } /* Angel Stuff */ if (IS_DEMAFF(victim,DEM_HORNS) && IS_CLASS(victim, CLASS_DEMON) ) { send_to_char("Your halo dissapears.\n\r",victim); act("$N's halo dissapears.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->powers[DPOWER_CURRENT], DEM_HORNS); } if (IS_DEMAFF(victim,DEM_HOOVES) && IS_CLASS(victim, CLASS_DEMON) ) { send_to_char("The light around your feet vanishes.\n\r",victim); act("The light around $N's feet vanishes .", ch, NULL,victim,TO_ROOM); REMOVE_BIT(victim->pcdata->powers[DPOWER_CURRENT], DEM_HOOVES); } if (IS_DEMAFF(victim,DEM_WINGS) && IS_CLASS(victim, CLASS_DEMON) ) { if (IS_DEMAFF(victim,DEM_UNFOLDED) && IS_CLASS(victim, CLASS_DEMON) ) { send_to_char("Your wings fold up behind your back.\n\r",victim); act("$N's wings fold up behind $s back.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->powers[DPOWER_CURRENT], DEM_UNFOLDED); } send_to_char("Your wings slide into your back.\n\r",victim); act("$N's wings slide into $s back.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->powers[DPOWER_CURRENT], DEM_WINGS); } if ( IS_EXTRA(victim, EXTRA_OSWITCH) ) { do_humanform(victim,""); } REMOVE_BIT(victim->special, SPC_CHAMPION ); REMOVE_BIT(victim->special, SPC_INCONNU ); REMOVE_BIT(victim->special, SPC_ANARCH ); REMOVE_BIT(victim->special, SPC_SIRE); REMOVE_BIT(victim->special, SPC_PRINCE); REMOVE_BIT(victim->special, SPC_DEMON_LORD); REMOVE_BIT(victim->special, SPC_DROW_WAR ); REMOVE_BIT(victim->special, SPC_DROW_MAG ); REMOVE_BIT(victim->special, SPC_DROW_CLE ); REMOVE_BIT(victim->affected_by, AFF_POLYMORPH); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CHANGED); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_MIST); REMOVE_BIT(victim->affected_by, AFF_ETHEREAL); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_FLYING); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_SONIC); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_BAT); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_WOLF); victim->pcdata->powers[DPOWER_FLAGS] = 0; victim->pcdata->stats[DEMON_TOTAL] = 0; victim->pcdata->stats[DEMON_CURRENT] = 0; victim->pcdata->powers[WPOWER_BEAR] = 0; victim->pcdata->powers[WPOWER_LYNX] = 0; victim->pcdata->powers[WPOWER_BOAR] = 0; victim->pcdata->powers[WPOWER_OWL] = 0; victim->pcdata->powers[WPOWER_SPIDER] = 0; victim->pcdata->powers[WPOWER_WOLF] = 0; victim->pcdata->powers[WPOWER_HAWK] = 0; victim->pcdata->powers[WPOWER_MANTIS] = 0; victim->pcdata->powers[NPOWER_SORA] = 0; victim->pcdata->powers[NPOWER_CHIKYU] = 0; victim->pcdata->powers[NPOWER_NINGENNO] = 0; victim->pcdata->powers[1] = 0; victim->pcdata->condition[COND_THIRST] = 0; victim->move = victim->max_move; victim->mana = victim->max_mana; victim->hit = victim->max_hit; victim->pcdata->rank = 0; victim->pcdata->stats[UNI_RAGE] = 0; free_string(victim->lord); victim->lord = str_dup( "" ); free_string(victim->clan); victim->clan = str_dup( "" ); victim->pcdata->stats[UNI_GEN] = 0; victim->pcdata->stats[UNI_AFF] = 0; victim->pcdata->stats[UNI_CURRENT] = -1; victim->beast = 15; victim->class = 0; victim->trust = 0; victim->level = 2; send_to_char("You are classless now!\n\r", victim); } else if ( !str_cmp( arg2, "angel" ) ) { victim->class = 1; victim->level = 3; SET_BIT( victim->special, SPC_CHAMPION ); victim->lord=str_dup(ch->name); send_to_char("You are now an angel!\n\r", victim); } else if ( !str_cmp( arg2, "arch-angel" ) ) { victim->class = 1; victim->level = 3; SET_BIT( victim->special, SPC_DEMON_LORD ); victim->lord=str_dup(victim->name); send_to_char("You are now an Arch-Angel!\n\r", victim); } else if ( !str_cmp( arg2, "pmage" ) ) { victim->class = 2; if ( victim->trust > 6 ) { victim->trust = victim->trust; } else { victim->trust = 6; } victim->level = 6; victim->pcdata->powers[MPOWER_RUNE0] = 0; send_to_char("You are now a purple mage!\n\r", victim); } else if ( !str_cmp( arg2, "rmage" ) ) { victim->class = 2; if ( victim->trust > 6 ) { victim->trust=victim->trust; } else { victim->trust = 6; } victim->level = 6; victim->pcdata->powers[MPOWER_RUNE0] = 1; send_to_char("You are now a red mage!\n\r", victim); } else if ( !str_cmp( arg2, "ymage" ) ) { victim->class = 2; if ( victim->trust > 6 ) { victim->trust=victim->trust; } else { victim->trust = 6; } victim->level = 6; victim->pcdata->powers[MPOWER_RUNE0] = 4; send_to_char("You are now a yellow mage!\n\r", victim); } else if ( !str_cmp( arg2, "bmage" ) ) { victim->class = 2; if ( victim->trust > 6 ) { victim->trust=victim->trust; } else { victim->trust = 6; } victim->level = 6; victim->pcdata->powers[MPOWER_RUNE0] = 2; send_to_char("You are now a blue mage!\n\r", victim); } else if ( !str_cmp( arg2, "gmage" ) ) { victim->class = 2; if ( victim->trust > 6 ) { victim->trust=victim->trust; } else { victim->trust = 6; } victim->level = 6; victim->pcdata->powers[MPOWER_RUNE0] = 3; send_to_char("You are now a green mage!\n\r", victim); } else if ( !str_cmp( arg2, "werewolf" ) ) { victim->class = 4; victim->level = 3; send_to_char("You are now a werewolf!\n\r", victim); } else if ( !str_cmp( arg2, "vampire" ) ) { victim->class = 8; victim->level = 3; do_generation(ch,"5"); send_to_char("You are now a vampire!\n\r", victim); } else if ( !str_cmp( arg2, "highlander" ) ) { victim->class = 16; victim->level = 3; send_to_char("You are now a highlander!\n\r", victim); } else if ( !str_cmp( arg2, "ninja" ) ) { victim->class = 64; if ( victim->trust > 6 ) { victim->trust=victim->trust; } else { victim->trust = 6; } victim->level = 6; send_to_char("You are now a ninja!\n\r", victim); } else if ( !str_cmp( arg2, "monk" ) ) { victim->class = 128; if ( victim->trust > 6 ) { victim->trust=victim->trust; } else { victim->trust = 6; } victim->level = 6; send_to_char("You are now a monk!\n\r", victim); } else if ( !str_cmp( arg2, "drow" ) ) { victim->class = 32; send_to_char("You are now a drow!\n\r", victim); } else { send_to_char( "Syntax: class <char> <class>.\n\r", ch ); send_to_char(" Classes:\n\r", ch ); send_to_char("None, ", ch); send_to_char("Angel, ", ch); send_to_char("Arch-Angel , ", ch); send_to_char("Purple Mage, Blue Mage, Yellow Mage, Green Mage, Red Mage, ", ch); send_to_char("Werewolf, ", ch); send_to_char("Vampire, ", ch); send_to_char("Ninja, ", ch); send_to_char("Monk, ", ch); send_to_char("Highlander, ", ch); send_to_char("Drow, ", ch); return; } send_to_char("Class Set.\n\r",ch); return; } void do_generation( CHAR_DATA *ch, char *argument ) { CHAR_DATA *victim; int gen; char arg1 [MAX_INPUT_LENGTH]; char arg2 [MAX_INPUT_LENGTH]; argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); if ( IS_NPC(ch) ) return; if ( ch->trust < 10 ) { send_to_char( "Huh?\n\r", ch ); return; } if ( arg1[0] == '\0' || arg2[0] == '\0' ) { send_to_char( "Syntax: generation <char> <generation>.\n\r", ch ); send_to_char("Generation 1 is a Master <Class> and 2 is clan leader.\n\r", ch); return; } if ( ( victim = get_char_room( ch, arg1 ) ) == NULL ) { send_to_char( "That player is not here.\n\r", ch); return; } gen = is_number( arg2 ) ? atoi( arg2 ) : -1; send_to_char("Generation Set.\n\r",ch); victim->pcdata->stats[UNI_GEN] = gen; return; } void do_outcast( CHAR_DATA *ch, char *argument ) { CHAR_DATA *victim; char arg[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; one_argument( argument, arg ); if ( ch->pcdata->stats[UNI_GEN] != 2 && !IS_SET(ch->special, SPC_DEMON_LORD) && ch->level != 6 ) { send_to_char("You are not a clan leader!\n\r", ch); return; } if ( arg[0] == '\0' ) { send_to_char( "Outcast who?\n\r", ch ); return; } if ( ( victim = get_char_world( ch, arg ) ) == NULL ) { send_to_char( "They aren't here.\n\r", ch ); return; } if ( victim == ch ) { send_to_char("You cannot outcast youself!\n\r", ch); return; } if ( IS_NPC(victim) ) { send_to_char( "Not on NPC's.\n\r", ch ); return; } if ( IS_CLASS(ch,CLASS_DEMON) && IS_SET(ch->special, SPC_DEMON_LORD) && IS_CLASS(victim, CLASS_DEMON) ) { sprintf(buf,"%s has been outcasted from Heaven", victim->name); do_info(victim,buf); if (IS_VAMPAFF(victim,VAM_FANGS) ) { send_to_char("Your fangs slide back into your gums.\n\r",victim); act("$N's fangs slide back into $s gums.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_FANGS); } if (IS_VAMPAFF(victim,VAM_CLAWS) ) { send_to_char("Your claws slide back under your nails.\n\r",victim); act("$N's claws slide back under $s nails.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CLAWS); } if (IS_VAMPAFF(victim,VAM_NIGHTSIGHT) ) { send_to_char("The red glow in your eyes fades.\n\r",victim); act("The red glow in $N's eyes fades.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_NIGHTSIGHT); } if (IS_IMMUNE(victim,IMM_SHIELDED) ) { send_to_char("You stop shielding your aura.\n\r",victim); REMOVE_BIT(victim->immune, IMM_SHIELDED); } if (IS_SET(victim->act, PLR_HOLYLIGHT) ) { REMOVE_BIT(victim->act, PLR_HOLYLIGHT); send_to_char( "Your senses return to normal.\n\r", victim ); } if (IS_DEMAFF(victim,DEM_HORNS) ) { send_to_char("Your halo dissapears.\n\r",victim); act("$N's halo dissapears.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->powers[DPOWER_CURRENT], DEM_HORNS); } if (IS_DEMAFF(victim,DEM_HOOVES) ) { send_to_char("The light around your feet vanishes.\n\r",victim); act("The light around $N's feet vanishes.", ch, NULL,victim,TO_ROOM); REMOVE_BIT(victim->pcdata->powers[DPOWER_CURRENT], DEM_HOOVES); } if (IS_DEMAFF(victim,DEM_WINGS) ) { if (IS_DEMAFF(victim,DEM_UNFOLDED) ) { send_to_char("Your wings fold up behind your back.\n\r",victim); act("$N's wings fold up behind $s back.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->powers[DPOWER_CURRENT], DEM_UNFOLDED); } send_to_char("Your wings slide into your back.\n\r",victim); act("$N's wings slide into $s back.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->powers[DPOWER_CURRENT], DEM_WINGS); } if ( IS_EXTRA(victim, EXTRA_OSWITCH) ) { do_humanform(victim,""); } victim->pcdata->powers[DPOWER_FLAGS] = 0; victim->pcdata->stats[DEMON_TOTAL] = 0; victim->pcdata->stats[DEMON_CURRENT] = 0; free_string(victim->lord); victim->lord = str_dup( "" ); free_string(victim->clan); victim->clan = str_dup( "" ); REMOVE_BIT(victim->special, SPC_CHAMPION ); REMOVE_BIT(victim->special, SPC_SIRE); REMOVE_BIT(victim->special, SPC_PRINCE); REMOVE_BIT(victim->special, SPC_DEMON_LORD); victim->pcdata->stats[UNI_RAGE] = 0; victim->class = 0; send_to_char("You have been outcasted from Heaven!\n\r", victim); } else if ( ( IS_CLASS(ch, CLASS_MAGE) && ch->level == LEVEL_ARCHMAGE ) && ch->pcdata->powers[MPOWER_RUNE0] == victim->pcdata->powers[MPOWER_RUNE0] && victim->level < LEVEL_ARCHMAGE ) { sprintf(buf,"%s has been outcasted from the Mages Guild.", victim->name); do_info(victim,buf); victim->trust = 0; victim->class = 0; victim->level = 3; send_to_char("You have been outcasted from the Mages Guild!\n\r", victim); } else if ( IS_CLASS(ch,CLASS_VAMPIRE) && !str_cmp(victim->clan,ch->clan) && IS_CLASS(victim, CLASS_VAMPIRE) ) { sprintf(buf,"%s has been outcasted from %s.", victim->name, victim->clan); do_info(victim,buf); victim->pcdata->condition[COND_THIRST] = 10000; if ( IS_CLASS(victim, CLASS_VAMPIRE) ) do_unwerewolf(victim,""); if ( IS_VAMPAFF(victim,VAM_DISGUISED) ) do_mask(victim,"self"); if ( IS_POLYAFF(victim,POLY_SERPENT) ) do_serpent(victim,""); if (IS_VAMPAFF(victim,VAM_FANGS) ) { send_to_char("Your fangs slide back into your gums.\n\r",victim); act("$N's fangs slide back into $s gums.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_FANGS); } if (IS_CLASS(victim, CLASS_VAMPIRE) && IS_VAMPAFF(victim,VAM_CLAWS) ) { send_to_char("Your claws slide back under your nails.\n\r",victim); act("$N's claws slide back under $s nails.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CLAWS); } if (IS_VAMPAFF(victim,VAM_NIGHTSIGHT) ) { send_to_char("The red glow in your eyes fades.\n\r",victim); act("The red glow in $N's eyes fades.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_NIGHTSIGHT); } if (IS_AFFECTED(victim,AFF_SHADOWSIGHT) ) { send_to_char("You can no longer see between planes.\n\r",victim); REMOVE_BIT(victim->affected_by, AFF_SHADOWSIGHT); } if (IS_IMMUNE(victim,IMM_SHIELDED) ) { send_to_char("You stop shielding your aura.\n\r",victim); REMOVE_BIT(victim->immune, IMM_SHIELDED); } if (IS_VAMPAFF(victim,VAM_DISGUISED) ) { free_string( victim->morph ); victim->morph = str_dup( victim->name ); send_to_char("You transform into yourself.\n\r", victim); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_DISGUISED); } if (IS_AFFECTED(victim,AFF_SHADOWPLANE) ) { send_to_char("You fade back into the real world.\n\r",victim); act("The shadows flicker and $N fades into existance.",ch,NULL,victim,TO_ROOM); REMOVE_BIT(victim->affected_by,AFF_SHADOWPLANE); do_look(victim,"auto"); } if (IS_SET(victim->act, PLR_HOLYLIGHT) ) { REMOVE_BIT(victim->act, PLR_HOLYLIGHT); send_to_char( "Your senses return to normal.\n\r", victim ); } REMOVE_BIT(victim->special, SPC_INCONNU ); REMOVE_BIT(victim->special, SPC_ANARCH ); REMOVE_BIT(victim->special, SPC_SIRE); REMOVE_BIT(victim->special, SPC_PRINCE); REMOVE_BIT(victim->affected_by, AFF_POLYMORPH); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CHANGED); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_MIST); REMOVE_BIT(victim->affected_by, AFF_ETHEREAL); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_FLYING); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_SONIC); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_BAT); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_WOLF); victim->pcdata->stats[UNI_RAGE] = 0; free_string(victim->lord); victim->lord = str_dup( "" ); free_string(victim->clan); victim->clan = str_dup( "" ); victim->pcdata->stats[UNI_GEN] = 0; victim->pcdata->stats[UNI_AFF] = 0; victim->pcdata->stats[UNI_CURRENT] = -1; victim->pcdata->rank = 0; victim->class = 0; victim->beast = 15; victim->pcdata->condition[COND_THIRST] = 0; send_to_char("You have been outcasted!\n\r", victim); } else if ( IS_CLASS(ch, CLASS_WEREWOLF) && ch->pcdata->stats[UNI_GEN] == 2 && !str_cmp(victim->clan,ch->clan) && IS_CLASS(victim, CLASS_WEREWOLF) ) { sprintf(buf,"%s has been outcasted from %s.", victim->name, victim->clan); do_info(victim,buf); victim->pcdata->powers[WPOWER_BEAR] = 4; victim->pcdata->powers[WPOWER_LYNX] = 4; victim->pcdata->powers[WPOWER_BOAR] = 4; victim->pcdata->powers[WPOWER_OWL] = 4; victim->pcdata->powers[WPOWER_SPIDER] = 4; victim->pcdata->powers[WPOWER_WOLF] = 4; victim->pcdata->powers[WPOWER_HAWK] = 4; victim->pcdata->powers[WPOWER_MANTIS] = 4; do_unwerewolf(victim,""); do_shift(victim,"homid"); if (IS_VAMPAFF(victim,VAM_FANGS) ) { send_to_char("Your talons slide back into your fingers.\n\r",victim); act("$N's talons slide back into $s fingers.",ch,NULL,victim,TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CLAWS); } if (IS_VAMPAFF(victim,VAM_NIGHTSIGHT) ) { send_to_char("The red glow in your eyes fades.\n\r",victim); act("The red glow in $N's eyes fades.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_NIGHTSIGHT); } if (IS_AFFECTED(victim,AFF_SHADOWSIGHT) ) { send_to_char("You can no longer see between planes.\n\r",victim); REMOVE_BIT(victim->affected_by, AFF_SHADOWSIGHT); } if (IS_IMMUNE(victim,IMM_SHIELDED) ) { send_to_char("You stop shielding your aura.\n\r",victim); REMOVE_BIT(victim->immune, IMM_SHIELDED); } if (IS_AFFECTED(victim,AFF_SHADOWPLANE) ) { send_to_char("You fade back into the real world.\n\r",victim); act("The shadows flicker and $N fades into existance.",ch,NULL,victim,TO_ROOM); REMOVE_BIT(victim->affected_by,AFF_SHADOWPLANE); do_look(victim,"auto"); } if (IS_SET(victim->act, PLR_WIZINVIS) ) { REMOVE_BIT(victim->act, PLR_WIZINVIS); send_to_char( "You slowly fade into existence.\n\r", victim ); } if (IS_SET(victim->act, PLR_HOLYLIGHT) ) { REMOVE_BIT(victim->act, PLR_HOLYLIGHT); send_to_char( "Your senses return to normal.\n\r", victim ); } REMOVE_BIT(victim->special, SPC_INCONNU ); REMOVE_BIT(victim->special, SPC_ANARCH ); REMOVE_BIT(victim->special, SPC_SIRE); REMOVE_BIT(victim->special, SPC_PRINCE); REMOVE_BIT(victim->affected_by, AFF_POLYMORPH); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CHANGED); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_MIST); REMOVE_BIT(victim->affected_by, AFF_ETHEREAL); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_FLYING); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_SONIC); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_BAT); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_WOLF); victim->pcdata->powers[WPOWER_BEAR] = 0; victim->pcdata->powers[WPOWER_LYNX] = 0; victim->pcdata->powers[WPOWER_BOAR] = 0; victim->pcdata->powers[WPOWER_OWL] = 0; victim->pcdata->powers[WPOWER_SPIDER] = 0; victim->pcdata->powers[WPOWER_WOLF] = 0; victim->pcdata->powers[WPOWER_HAWK] = 0; victim->pcdata->powers[WPOWER_MANTIS] = 0; victim->pcdata->stats[UNI_RAGE] = 0; free_string(victim->lord); victim->lord = str_dup( "" ); free_string(victim->clan); victim->clan = str_dup( "" ); victim->pcdata->stats[UNI_GEN] = 0; victim->pcdata->stats[UNI_AFF] = 0; victim->pcdata->stats[UNI_CURRENT] = -1; victim->pcdata->rank = 0; victim->class = 0; send_to_char("You have been outcasted!\n\r", victim); } else if ( IS_CLASS(ch, CLASS_NINJA) && ch->pcdata->stats[UNI_GEN] == 2 && !str_cmp(victim->clan,ch->clan) && IS_CLASS(victim, CLASS_NINJA) ) { sprintf(buf,"%s has been outcasted from %s.", victim->name, victim->clan); do_info(victim,buf); if ( IS_VAMPAFF(victim,VAM_CLAWS) ) { send_to_char("You shove your iron claws up your sleeves\n\r",victim); act("$N shoves $S iron claws up $e sleeves.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CLAWS); } if (IS_SET(victim->act, PLR_WIZINVIS) ) { REMOVE_BIT(victim->act, PLR_WIZINVIS); send_to_char( "You appear from the shadows.\n\r", victim ); } if (IS_SET(victim->act, PLR_HOLYLIGHT) ) { REMOVE_BIT(victim->act, PLR_HOLYLIGHT); send_to_char( "Your senses return to normal.\n\r", victim ); } REMOVE_BIT(victim->special, SPC_SIRE); REMOVE_BIT(victim->special, SPC_PRINCE); REMOVE_BIT(victim->affected_by, AFF_POLYMORPH); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CHANGED); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_MIST); REMOVE_BIT(victim->affected_by, AFF_ETHEREAL); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_FLYING); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_SONIC); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_BAT); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_WOLF); victim->pcdata->powers[NPOWER_SORA] = 0; victim->pcdata->powers[NPOWER_CHIKYU] = 0; victim->pcdata->powers[NPOWER_NINGENNO] = 0; victim->pcdata->stats[UNI_RAGE] = 0; free_string(victim->lord); victim->lord = str_dup( "" ); free_string(victim->clan); victim->clan = str_dup( "" ); victim->pcdata->stats[UNI_GEN] = 0; victim->pcdata->stats[UNI_AFF] = 0; victim->pcdata->stats[UNI_CURRENT] = -1; victim->pcdata->rank = 0; victim->class = 0; victim->trust = 0; victim->level = 3; send_to_char("You have been outcasted!\n\r", victim); } else if ( IS_CLASS(ch, CLASS_DROW) && ch->pcdata->stats[UNI_GEN] == 2 && !str_cmp(victim->clan,ch->clan) && IS_CLASS(victim, CLASS_DROW) ) { sprintf(buf,"%s has been outcasted from %s.", victim->name, victim->clan); do_info(victim,buf); if (IS_IMMUNE(victim,IMM_SHIELDED) ) { send_to_char("You stop shielding your aura.\n\r",victim); REMOVE_BIT(victim->immune, IMM_SHIELDED); } if (IS_SET(victim->act, PLR_HOLYLIGHT) || IS_SET(victim->act, PLR_DROWSIGHT) ) { REMOVE_BIT(victim->act, PLR_HOLYLIGHT); REMOVE_BIT(victim->act, PLR_DROWSIGHT); send_to_char( "Your senses return to normal.\n\r", victim ); } if (IS_AFFECTED(victim, AFF_DARKNESS)) { REMOVE_BIT(victim->affected_by, AFF_DARKNESS); send_to_char("The darkness around you fades away.\n\r",ch); return; } victim->pcdata->powers[1] = 0; free_string(victim->lord); victim->lord = str_dup( "" ); free_string(victim->clan); victim->clan = str_dup( "" ); REMOVE_BIT(victim->special, SPC_SIRE); REMOVE_BIT(victim->special, SPC_PRINCE); REMOVE_BIT(victim->special, SPC_ANARCH); REMOVE_BIT(victim->special, SPC_DROW_WAR ); REMOVE_BIT(victim->special, SPC_DROW_MAG ); REMOVE_BIT(victim->special, SPC_DROW_CLE ); victim->pcdata->stats[UNI_RAGE] = 0; victim->class = 0; send_to_char("You have been outcasted!\n\r", victim); } else send_to_char("They are not of your clan!\n\r", ch); return; } void do_autostance( CHAR_DATA *ch, char *argument ) { char arg [MAX_INPUT_LENGTH]; int selection; one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!str_cmp(arg,"none") ) { selection = STANCE_NONE; send_to_char("You're autostance has been removed.\n\r",ch); REMOVE_BIT(ch->extra, EXTRA_STANCE); } else if (!str_cmp(arg,"viper") ) { selection = STANCE_VIPER; send_to_char("Viper stance set.\n\r",ch); } else if (!str_cmp(arg,"crane") ) { selection = STANCE_CRANE; send_to_char("Crane stance set.\n\r",ch); } else if (!str_cmp(arg,"crab") ) { selection = STANCE_CRAB; send_to_char("Crab stance set.\n\r",ch); } else if (!str_cmp(arg,"mongoose")) { selection = STANCE_MONGOOSE; send_to_char("Mongoose stance set.\n\r",ch); } else if (!str_cmp(arg,"bull") ) { selection = STANCE_BULL; send_to_char("Bull stance set.\n\r",ch); } else { if (!str_cmp(arg,"mantis") && ch->stance[STANCE_CRANE] >= 200 && ch->stance[STANCE_VIPER] >= 200) { selection = STANCE_MANTIS; send_to_char("Mantis stance set.\n\r",ch); } else if (!str_cmp(arg,"dragon") && ch->stance[STANCE_BULL] >= 200 && ch->stance[STANCE_CRAB] >= 200) { selection = STANCE_DRAGON; send_to_char("Dragon stance set.\n\r",ch); } else if (!str_cmp(arg,"tiger") && ch->stance[STANCE_BULL] >= 200 && ch->stance[STANCE_VIPER] >= 200) { selection = STANCE_TIGER; send_to_char("Tiger stance set.\n\r",ch); } else if (!str_cmp(arg,"monkey") && ch->stance[STANCE_CRANE] >= 200 && ch->stance[STANCE_MONGOOSE] >= 200) { selection = STANCE_MONKEY; send_to_char("Monkey stance set.\n\r",ch); } else if (!str_cmp(arg,"swallow") && ch->stance[STANCE_CRAB] >= 200 && ch->stance[STANCE_MONGOOSE] >= 200) { selection = STANCE_SWALLOW; send_to_char("Swallow stance set.\n\r",ch); } else { send_to_char("Syntax is: autostance <style>.\n\r",ch); send_to_char("Autotance being one of: None, Viper, Crane, Crab, Mongoose, Bull.\n\r",ch); send_to_char(" Mantis, Dragon, Tiger, Monkey, Swallow.\n\r",ch); return; } } ch->stance[11] = selection; SET_BIT(ch->extra, EXTRA_STANCE); return; } void do_stances( CHAR_DATA *ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; one_argument( argument, arg ); send_to_char("Stance: Skill\n\r", ch); if ( arg[0] == '\0' ) { show_stance(ch,1); show_stance(ch,2); show_stance(ch,3); show_stance(ch,4); show_stance(ch,5); show_stance(ch,6); show_stance(ch,7); show_stance(ch,8); show_stance(ch,9); show_stance(ch,10); } else if (!str_cmp(arg,"viper")) show_stance(ch,1); else if (!str_cmp(arg,"crane")) show_stance(ch,2); else if (!str_cmp(arg,"crab")) show_stance(ch,3); else if (!str_cmp(arg,"mongoose")) show_stance(ch,4); else if (!str_cmp(arg,"bull")) show_stance(ch,5); else if (!str_cmp(arg,"mantis")) show_stance(ch,6); else if (!str_cmp(arg,"dragon")) show_stance(ch,7); else if (!str_cmp(arg,"tiger")) show_stance(ch,8); else if (!str_cmp(arg,"monkey")) show_stance(ch,9); else if (!str_cmp(arg,"swallow")) show_stance(ch,10); else send_to_char("You know of no such stance.\n\r",ch); return; } void show_stance( CHAR_DATA *ch, int stance ) { char buf[MAX_INPUT_LENGTH]; char bufskill[MAX_INPUT_LENGTH]; if (IS_NPC(ch)) return; if (ch->stance[stance] <= 1 ) sprintf(bufskill,"Apprentice"); else if (ch->stance[stance] <= 26 ) sprintf(bufskill,"Trainee"); else if (ch->stance[stance] <= 51 ) sprintf(bufskill,"Student"); else if (ch->stance[stance] <= 76 ) sprintf(bufskill,"Fairly experienced"); else if (ch->stance[stance] <= 101) sprintf(bufskill,"Well trained"); else if (ch->stance[stance] <= 126) sprintf(bufskill,"Highly skilled"); else if (ch->stance[stance] <= 151) sprintf(bufskill,"Expert"); else if (ch->stance[stance] <= 176) sprintf(bufskill,"Master"); else if (ch->stance[stance] <= 200) sprintf(bufskill,"Grand master"); else if (ch->stance[stance] >= 201) sprintf(bufskill,"Legendary master"); else return; if (stance == 1) sprintf(buf,"Viper: %s\n\r",bufskill); else if (stance == 2) sprintf(buf,"Crane: %s\n\r",bufskill); else if (stance == 3) sprintf(buf,"Crab: %s\n\r",bufskill); else if (stance == 4) sprintf(buf,"Bull: %s\n\r",bufskill); else if (stance == 5) sprintf(buf,"Mongoose: %s\n\r",bufskill); else if (stance == 6) sprintf(buf,"Mantis: %s\n\r",bufskill); else if (stance == 7) sprintf(buf,"Dragon: %s\n\r",bufskill); else if (stance == 8) sprintf(buf,"Tiger: %s\n\r",bufskill); else if (stance == 9) sprintf(buf,"Monkey: %s\n\r",bufskill); else if (stance == 10) sprintf(buf,"Swallow: %s\n\r",bufskill); else return; send_to_char(buf,ch); return; } void do_weapons( CHAR_DATA *ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; one_argument( argument, arg ); send_to_char("Weapon: Skill\n\r", ch); if ( arg[0] == '\0' ) { show_weapons(ch,0); show_weapons(ch,1); show_weapons(ch,2); show_weapons(ch,3); show_weapons(ch,4); show_weapons(ch,5); show_weapons(ch,6); show_weapons(ch,7); show_weapons(ch,8); show_weapons(ch,9); show_weapons(ch,10); show_weapons(ch,11); show_weapons(ch,12); } else if (!str_cmp(arg,"unarm") || !str_cmp(arg,"unarmed")) show_weapons(ch,0); else if (!str_cmp(arg,"slice")) show_weapons(ch,1); else if (!str_cmp(arg,"stab")) show_weapons(ch,2); else if (!str_cmp(arg,"slash")) show_weapons(ch,3); else if (!str_cmp(arg,"whip")) show_weapons(ch,4); else if (!str_cmp(arg,"claw")) show_weapons(ch,5); else if (!str_cmp(arg,"blast")) show_weapons(ch,6); else if (!str_cmp(arg,"pound")) show_weapons(ch,7); else if (!str_cmp(arg,"crush")) show_weapons(ch,8); else if (!str_cmp(arg,"grep")) show_weapons(ch,9); else if (!str_cmp(arg,"bite")) show_weapons(ch,10); else if (!str_cmp(arg,"pierce")) show_weapons(ch,11); else if (!str_cmp(arg,"suck")) show_weapons(ch,12); else send_to_char("You know of no such weapon.\n\r",ch); return; } void show_weapons( CHAR_DATA *ch, int weapon ) { char buf[MAX_INPUT_LENGTH]; char bufskill[MAX_INPUT_LENGTH]; if (IS_NPC(ch)) return; if (ch->wpn[weapon] <= 1 ) sprintf(bufskill,"Slightly skilled"); else if (ch->wpn[weapon] <= 26 ) sprintf(bufskill,"Reasonable"); else if (ch->wpn[weapon] <= 51 ) sprintf(bufskill,"Fairly competent"); else if (ch->wpn[weapon] <= 76 ) sprintf(bufskill,"Highly skilled"); else if (ch->wpn[weapon] <= 101 ) sprintf(bufskill,"Very dangerous"); else if (ch->wpn[weapon] <= 126 ) sprintf(bufskill,"Extremely deadly"); else if (ch->wpn[weapon] <= 151 ) sprintf(bufskill,"An expert"); else if (ch->wpn[weapon] <= 176 ) sprintf(bufskill,"A master"); else if (ch->wpn[weapon] <= 200 ) sprintf(bufskill,"A grand master"); else if (ch->wpn[weapon] >= 201 ) sprintf(bufskill,"Supremely skilled"); else return; if (weapon == 0) sprintf(buf,"Unarmed: %s\n\r",bufskill); else if (weapon == 1) sprintf(buf,"Slice: %s\n\r",bufskill); else if (weapon == 2) sprintf(buf,"Stab: %s\n\r",bufskill); else if (weapon == 3) sprintf(buf,"Slash: %s\n\r",bufskill); else if (weapon == 4) sprintf(buf,"Whip: %s\n\r",bufskill); else if (weapon == 5) sprintf(buf,"Claw: %s\n\r",bufskill); else if (weapon == 6) sprintf(buf,"Blast: %s\n\r",bufskill); else if (weapon == 7) sprintf(buf,"Pound: %s\n\r",bufskill); else if (weapon == 8) sprintf(buf,"Crush: %s\n\r",bufskill); else if (weapon == 9) sprintf(buf,"Grep: %s\n\r",bufskill); else if (weapon == 10) sprintf(buf,"Bite: %s\n\r",bufskill); else if (weapon == 11) sprintf(buf,"Pierce: %s\n\r",bufskill); else if (weapon == 12) sprintf(buf,"Suck: %s\n\r",bufskill); else return; send_to_char(buf,ch); return; } /* * Donate Command */ void do_donate(CHAR_DATA *ch, char *argument) { char Object_Name[MAX_INPUT_LENGTH]; ROOM_INDEX_DATA *xRoom; OBJ_DATA *xObject; int DONATION_ROOM; argument = one_argument(argument, Object_Name); if ( Object_Name == '\0' ) { send_to_char("Donate WHAT Object?",ch); return; } if ( ( xObject= get_obj_carry(ch,Object_Name)) == NULL) { send_to_char("You can't donate that item! You have not got it!",ch); return; } if ( ( xObject->pIndexData->vnum >= 3700 && xObject->pIndexData->vnum <= 3704 ) || xObject->pIndexData->vnum == 3716) { send_to_char("We don't want puny newbie equipment!\n\r", ch); return; } if ( xObject->pIndexData->vnum == 30000 ) { send_to_char("We don't take soul blades!\n\r", ch); return; } if (xObject->questowner != NULL && strlen(xObject->questowner) > 1) { send_to_char("We don't take claimed equipment, it might be stolen!\n\r", ch); return; } /* Actually, some KaVir things are good - Loki if ( xObject->pIndexData->vnum >= 30000 && xObject->pIndexData->vnum <= 30040 ) { send_to_char("We don't want any KaVir stuff!\n\r", ch); return; } */ switch(xObject->item_type) { case ITEM_WEAPON : DONATION_ROOM=DONATION_ROOM_WEAPON; break; case ITEM_ARMOR : DONATION_ROOM=DONATION_ROOM_ARMOR; break; default : DONATION_ROOM=DONATION_ROOM_REST; break; } if ( ( xRoom = get_room_index(DONATION_ROOM)) == NULL) { bug("Donate Room Does Not Exist : %d",DONATION_ROOM); return; } act("$p vanishes from your hands in a pink mist.",ch,xObject,NULL,TO_CHAR); send_to_char("You are rewarded 50 gold for you donation.\n\r", ch); ch->gold += 50; act("$p vanishes from $n's hands in a pink mist.",ch,xObject,NULL,TO_ROOM); obj_from_char(xObject); obj_to_room(xObject,xRoom); act("$p appears in a pink mist in the room.",ch,xObject,NULL,TO_ROOM); return; } void do_version( CHAR_DATA *ch, char *argument) { char buf[MAX_INPUT_LENGTH]; sprintf(buf, "\n\r**********************************\n\rRealms of Elkor :- %d.%d\n\r**********************************\n\r",VERSION_NUMBER,VERSION_NUMBER2); send_to_char(buf,ch); return; } void mage_regen( CHAR_DATA *ch ) { int min = 5; int max = 10; if (IS_NPC(ch)) return; min += 10; min += 20; max += 20; max += 30; ch->mana = UMIN(ch->mana + number_range(min,max), ch->max_mana); if ( ch->mana >= ch->max_mana ) send_to_char("Your spell casting abilities are at full potential.\n\r",ch); return; } void do_clans( CHAR_DATA *ch, char *argument ) { do_help( ch, "clans" ); return; } void do_affects( CHAR_DATA *ch, char *argument ) { if ( IS_NPC(ch) ) return; send_to_char("You are affected by:\n\r", ch); if ( IS_AFFECTED(ch, AFF_INVISIBLE) ) send_to_char("Invisibility\n\r", ch); if ( IS_AFFECTED(ch, AFF_HIDE) ) send_to_char("Hidden\n\r", ch ); if ( IS_AFFECTED(ch, AFF_CHARM) ) send_to_char("Charmed\n\r", ch); if ( IS_AFFECTED(ch, AFF_PASS_DOOR) ) send_to_char("Pass Door\n\r", ch ); if ( IS_AFFECTED(ch, AFF_ETHEREAL) ) send_to_char("Ethereal\n\r", ch); if ( IS_AFFECTED(ch, AFF_FAERIE_FIRE) ) send_to_char("Fairie Fire\n\r", ch); if ( IS_AFFECTED(ch, AFF_SANCTUARY) ) send_to_char("Sanctuary\n\r", ch); if ( IS_AFFECTED(ch, AFF_STEELSHIELD) ) send_to_char("Steel Shield\n\r", ch); if ( IS_ITEMAFF(ch, ITEMA_SHOCKSHIELD) ) send_to_char("Electrical Shield\n\r", ch); if ( IS_ITEMAFF(ch, ITEMA_FIRESHIELD) ) send_to_char("Fire Shield\n\r", ch); if ( IS_ITEMAFF(ch, ITEMA_ICESHIELD) ) send_to_char("Ice Shield\n\r", ch); if ( IS_ITEMAFF(ch, ITEMA_ACIDSHIELD) ) send_to_char("Acid Shield\n\r", ch); if ( IS_ITEMAFF(ch, ITEMA_CHAOSSHIELD) ) send_to_char("Chaos Shield\n\r", ch); if ( IS_ITEMAFF(ch, ITEMA_REFLECT) ) send_to_char("Reflecting Shield\n\r", ch); send_to_char("\n\r", ch); return; }