/*************************************************************************** * God Wars Mud originally written by KaVir aka Richard Woolcock. * * Changes done to the code done by Sage aka Walter Howard, this mud is * * for the public, however if you run this code it means you agree * * to the license.low, license.gw, and license.merc have fun. :) * ***************************************************************************/ #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 set_fighting args(( CHAR_DATA *ch, CHAR_DATA *victim)); void animalism_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_ANIM] == 0 ) { stc(" Animalism: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_ANIM] >= 1 ) stc(" Animalism: Beckon",ch); if ( ch->pcdata->powers[VAM_ANIM] >= 2 ) stc(" Serenity",ch); if ( ch->pcdata->powers[VAM_ANIM] >= 3 ) stc(" Pigeon",ch); if ( ch->pcdata->powers[VAM_ANIM] >= 4 ) stc(" Share",ch); if ( ch->pcdata->powers[VAM_ANIM] >= 5 ) stc(" Frenzy",ch); stc("\n\r",ch); return; } void obtenebration_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_OBTE] == 0 ) { stc(" Obtenebration: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_OBTE] >= 1 ) stc(" Obtenebration: Shroud",ch); if ( ch->pcdata->powers[VAM_OBTE] >= 2 ) stc(" Shroudnight",ch); if ( ch->pcdata->powers[VAM_OBTE] >= 3 ) stc(" NightSight",ch); if ( ch->pcdata->powers[VAM_OBTE] >= 4 ) stc(" Shadowstep",ch); if ( ch->pcdata->powers[VAM_OBTE] >= 5 ) stc(" Lamprey",ch); stc("\n\r",ch); return; } void thaumaturgy_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_THAU] == 0 ) { stc(" Thaumaturgy: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_THAU] >= 1 ) stc(" Thaumaturgy: Taste",ch); if ( ch->pcdata->powers[VAM_THAU] >= 2 ) stc(" Cauldron",ch); if ( ch->pcdata->powers[VAM_THAU] >= 3 ) stc(" Potency",ch); if ( ch->pcdata->powers[VAM_THAU] >= 4 ) stc(" Theft",ch); if ( ch->pcdata->powers[VAM_THAU] >= 5 ) stc(" Tide",ch); stc("\n\r",ch); return; } void obfuscate_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_OBFU] == 0 ) { stc(" Obfuscate: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_OBFU] >= 1 ) stc(" Obfuscate: Vanish",ch); if ( ch->pcdata->powers[VAM_OBFU] >= 2 ) stc(" Shield",ch); if ( ch->pcdata->powers[VAM_OBFU] >= 3 ) stc(" Mask",ch); if ( ch->pcdata->powers[VAM_OBFU] >= 4 ) stc(" Mortal",ch); if ( ch->pcdata->powers[VAM_OBFU] >= 5 ) stc(" Conceal",ch); stc("\n\r",ch); return; } void serpentis_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_SERP] == 0 ) { stc(" Serpentis: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_SERP] >= 1 ) stc(" Serpentis: Darkheart",ch); if ( ch->pcdata->powers[VAM_SERP] >= 2 ) stc(" SerpentForm",ch); if ( ch->pcdata->powers[VAM_SERP] >= 3 ) stc(" Poison",ch); if ( ch->pcdata->powers[VAM_SERP] >= 4 ) stc(" Breath",ch); if ( ch->pcdata->powers[VAM_SERP] >= 5 ) stc(" Tongue",ch); stc("\n\r",ch); return; } void chimerstry_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_CHIM] == 0 ) { stc(" Chimerstry: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_CHIM] >= 1 ) stc(" Chimerstry: Mirror",ch); if ( ch->pcdata->powers[VAM_CHIM] >= 2 ) stc(" Formillusion",ch); if ( ch->pcdata->powers[VAM_CHIM] >= 3 ) stc(" Clone",ch); if ( ch->pcdata->powers[VAM_CHIM] >= 4 ) stc(" Control",ch); if ( ch->pcdata->powers[VAM_CHIM] >= 5 ) stc(" Objectmask",ch); stc("\n\r",ch); return; } void necromancy_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_NECR] == 0 ) { stc(" Necromancy: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_NECR] >= 1 ) stc(" Necromancy: BloodWater",ch); if ( ch->pcdata->powers[VAM_NECR] >= 2 ) stc(" Preserve",ch); if ( ch->pcdata->powers[VAM_NECR] >= 3 ) stc(" Spiritgate",ch); if ( ch->pcdata->powers[VAM_NECR] >= 4 ) stc(" SpiritGuardian",ch); if ( ch->pcdata->powers[VAM_NECR] >= 5 ) stc(" Zombie",ch); stc("\n\r",ch); return; } void celerity_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_CELE] == 0 ) { stc(" Celerity: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_CELE] >= 1 ) stc(" Celerity: 1",ch); if ( ch->pcdata->powers[VAM_CELE] >= 2 ) stc(" 2",ch); if ( ch->pcdata->powers[VAM_CELE] >= 3 ) stc(" 3",ch); if ( ch->pcdata->powers[VAM_CELE] >= 4 ) stc(" 4",ch); if ( ch->pcdata->powers[VAM_CELE] >= 5 ) stc(" 5",ch); stc("\n\r",ch); return; } void presence_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_PRES] == 0 ) { stc(" Presence: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_PRES] >= 1 ) stc(" Presence: Awe",ch); if ( ch->pcdata->powers[VAM_PRES] >= 2 ) stc(" Mindblast",ch); if ( ch->pcdata->powers[VAM_PRES] >= 3 ) stc(" Entrance",ch); if ( ch->pcdata->powers[VAM_PRES] >= 4 ) stc(" Summoning",ch); if ( ch->pcdata->powers[VAM_PRES] >= 5 ) stc(" Majesty",ch); stc("\n\r",ch); return; } void auspex_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_AUSP] == 0 ) { stc(" Auspex: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_AUSP] >= 1 ) stc(" Auspex: Truesight",ch); if ( ch->pcdata->powers[VAM_AUSP] >= 2 ) stc(" Scry",ch); if ( ch->pcdata->powers[VAM_AUSP] >= 3 ) stc(" Unveil",ch); if ( ch->pcdata->powers[VAM_AUSP] >= 4 ) stc(" Astral Walk",ch); if ( ch->pcdata->powers[VAM_AUSP] >= 5 ) stc(" Readaura",ch); stc("\n\r",ch); return; } void potence_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_POTE] == 0 ) { stc(" Potence: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_POTE] >= 1 ) stc(" Potence: 1",ch); if ( ch->pcdata->powers[VAM_POTE] >= 2 ) stc(" 2",ch); if ( ch->pcdata->powers[VAM_POTE] >= 3 ) stc(" 3",ch); if ( ch->pcdata->powers[VAM_POTE] >= 4 ) stc(" 4",ch); if ( ch->pcdata->powers[VAM_POTE] >= 5 ) stc(" 5",ch); stc("\n\r",ch); return; } void vicissitude_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_VICI] == 0 ) { stc(" Vicissitude: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_VICI] >= 1 ) stc(" Vicissitude: Zuloform",ch); if ( ch->pcdata->powers[VAM_VICI] >= 2 ) stc(" Fleshcraft",ch); if ( ch->pcdata->powers[VAM_VICI] >= 3 ) stc(" Bonemod",ch); if ( ch->pcdata->powers[VAM_VICI] >= 4 ) stc(" DragonForm",ch); if ( ch->pcdata->powers[VAM_VICI] >= 5 ) stc(" Plasma",ch); stc("\n\r",ch); return; } void obeah_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_OBEA] == 0 ) { stc(" Obeah: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_OBEA] >= 1 ) stc(" Obeah: Obeah",ch); if ( ch->pcdata->powers[VAM_OBEA] >= 2 ) stc(" Panacea",ch); if ( ch->pcdata->powers[VAM_OBEA] >= 3 ) stc(" anesthetic",ch); if ( ch->pcdata->powers[VAM_OBEA] >= 4 ) stc(" neutral",ch); if ( ch->pcdata->powers[VAM_OBEA] >= 5 ) stc(" renew",ch); stc("\n\r",ch); return; } void fortitude_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_FORT] == 0 ) { stc(" Fortitude: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_FORT] >= 1 ) stc(" Fortitude: 1",ch); if ( ch->pcdata->powers[VAM_FORT] >= 2 ) stc(" 2",ch); if ( ch->pcdata->powers[VAM_FORT] >= 3 ) stc(" 3",ch); if ( ch->pcdata->powers[VAM_FORT] >= 4 ) stc(" 4",ch); if ( ch->pcdata->powers[VAM_FORT] >= 5 ) stc(" 5",ch); stc("\n\r",ch); return; } void quietus_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_QUIE] == 0 ) { stc(" Quietus: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_QUIE] >= 1 ) stc(" Quietus: Spit",ch); if ( ch->pcdata->powers[VAM_QUIE] >= 2 ) stc(" Infirmity",ch); if ( ch->pcdata->powers[VAM_QUIE] >= 3 ) stc(" Bloodagony",ch); if ( ch->pcdata->powers[VAM_QUIE] >= 4 ) stc(" Assassinate",ch); if ( ch->pcdata->powers[VAM_QUIE] >= 5 ) stc(" silencedeath",ch); stc("\n\r",ch); return; } void dominate_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_DOMI] == 0 ) { stc(" Dominate: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_DOMI] >= 1 ) stc(" Dominate: Command",ch); if ( ch->pcdata->powers[VAM_DOMI] >= 2 ) stc(" Mesmerise",ch); if ( ch->pcdata->powers[VAM_DOMI] >= 3 ) stc(" Possession",ch); if ( ch->pcdata->powers[VAM_DOMI] >= 4 ) stc(" Acid",ch); if ( ch->pcdata->powers[VAM_DOMI] >= 5 ) stc(" Coil",ch); stc("\n\r",ch); return; } void protean_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_PROT] == 0 ) { stc(" Protean: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_PROT] >= 1 ) stc(" Protean: Umbravision",ch); if ( ch->pcdata->powers[VAM_PROT] >= 2 ) stc(" Claws",ch); if ( ch->pcdata->powers[VAM_PROT] >= 3 ) stc(" Change",ch); if ( ch->pcdata->powers[VAM_PROT] >= 4 ) stc(" Earthmeld",ch); if ( ch->pcdata->powers[VAM_PROT] >= 5 ) stc(" Flamehands",ch); stc("\n\r",ch); return; } void daimoinon_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_DAIM] == 0 ) { stc(" Daimoinon: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_DAIM] >= 1 ) stc(" Daimoinon: Guardian",ch); if ( ch->pcdata->powers[VAM_DAIM] >= 2 ) stc(" Blood Wall",ch); if ( ch->pcdata->powers[VAM_DAIM] >= 3 ) stc(" Gate",ch); if ( ch->pcdata->powers[VAM_DAIM] >= 4 ) stc(" Vtwist",ch); if ( ch->pcdata->powers[VAM_DAIM] >= 5 ) stc(" Fear",ch); stc("\n\r",ch); return; } void melpominee_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_MELP] == 0 ) { stc(" Melpominee: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_MELP] >= 1 ) stc(" Melpominee: Scream",ch); if ( ch->pcdata->powers[VAM_MELP] >= 2 ) stc(" Gourge",ch); if ( ch->pcdata->powers[VAM_MELP] >= 3 ) stc(" Love",ch); if ( ch->pcdata->powers[VAM_MELP] >= 4 ) stc(" Reina",ch); if ( ch->pcdata->powers[VAM_MELP] >= 5 ) stc(" Courage",ch); stc("\n\r",ch); return; } void thanatosis_disc( CHAR_DATA *ch ) { if (IS_NPC(ch) ) return; if ( ch->pcdata->powers[VAM_THAN] == 0 ) { stc(" Thanatosis: None.\n\r",ch); return; } if ( ch->pcdata->powers[VAM_THAN] >= 1 ) stc(" Thanatosis: Hagswrinkles",ch); if ( ch->pcdata->powers[VAM_THAN] >= 2 ) stc(" Putrefaction",ch); if ( ch->pcdata->powers[VAM_THAN] >= 3 ) stc(" Ashes",ch); if ( ch->pcdata->powers[VAM_THAN] >= 4 ) stc(" Wither",ch); if ( ch->pcdata->powers[VAM_THAN] >= 5 ) stc(" Drain",ch); stc("\n\r",ch); return; } /*embrace*/ void do_obeah(CHAR_DATA *ch, char *argument) { if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_VAMPIRE) && !IS_CLASS(ch, CLASS_ABOMINATION)) { send_to_char("Huh?\n\r",ch); return; } /* if (get_disc(ch, DISC_OBEAH) == 0) { send_to_char("Huh?\n\r",ch); return; } */ if (ch->pcdata->powers[VAM_OBEA] < 1) { send_to_char("You must obtain at least level 1 in Obeah to use Obeah.\n\r",ch); return; } if (IS_SET(ch->newbits, NEW_OBEAH)) { if (ch->obeah_timer > 0) { send_to_char("You cannot close your eye until it stops glowing!\n\r",ch); return; } send_to_char("You close the eye on your forehead.\n\r",ch); act("$n closes the eye on $s forehead.", ch, NULL, NULL, TO_ROOM); REMOVE_BIT(ch->newbits, NEW_OBEAH); return; } send_to_char("Your third eye opens in your forehead.\n\r",ch); act("A third eye opens in $n's forehead.", ch, NULL, NULL, TO_ROOM); SET_BIT(ch->newbits, NEW_OBEAH); return; } void do_panacea(CHAR_DATA *ch, char *argument) { CHAR_DATA *victim; char arg [MAX_INPUT_LENGTH]; char buf [MAX_STRING_LENGTH]; argument = one_argument(argument, arg); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_VAMPIRE) && !IS_CLASS(ch, CLASS_ABOMINATION)) { send_to_char("Huh?\n\r", ch); return; } if (ch->pcdata->powers[VAM_OBEA] < 2) { send_to_char("You must obtain at least level 2 in Obeah to use Panacea.\n\r",ch); return; } if (ch->obeah_timer > 0) { if (ch->obeah_timer > 1) sprintf(buf,"You cannot call upon your Obeah powers for another %d seconds.\n\r",ch->obeah_timer); else sprintf(buf,"You cannot call upon your Obeah powers for another 1 second.\n\r"); send_to_char(buf,ch); return; } if (arg[0] == '\0') { send_to_char("Who do you want to heal with Panacea?\n\r", ch); return; } if ((victim = get_char_room(ch, arg)) == NULL) { send_to_char("They are not here.\n\r", ch); return; } if (!IS_SET(ch->newbits, NEW_OBEAH)) do_obeah(ch,""); if (victim->loc_hp[6] > 0) { int sn = skill_lookup("clot"); act("$n's third eye begins to glow with an intense white light.", ch, NULL, NULL, TO_ROOM); send_to_char("Your third eye begins to glow with an intense white light.\n\r", ch); ch->obeah_timer = 5; (*skill_table[sn].spell_fun) (sn,ch->level,ch,victim); } if ((victim->loc_hp[0] + victim->loc_hp[1] + victim->loc_hp[2] + victim->loc_hp[3] + victim->loc_hp[4] + victim->loc_hp[5]) != 0) { act("$n's third eye begins to glow with an intense white light.", ch, NULL, NULL, TO_ROOM); send_to_char("Your third eye begins to glow with an intense white light.\n\r", ch); ch->obeah_timer = 10; reg_mend(victim); } else if (victim->hit < victim->max_hit) { victim->hit += 3000; if (victim->hit > victim->max_hit) { victim->hit = victim->max_hit; } victim->agg -= victim->agg / 3.5; if (victim->agg < 0) victim->agg = 0; act("$n's third eye begins to glow with an intense white light.", ch, NULL, NULL, TO_ROOM); send_to_char("Your third eye begins to glow with an intense white light.\n\r", ch); ch->obeah_timer = 30; update_pos(victim); if (victim->hit >= victim->max_hit) { victim->hit = victim->max_hit; send_to_char("You have been completely healed!\n\r",victim); act("$n's wounds have been completely healed!",victim,NULL,NULL,TO_ROOM); } else { send_to_char("Your wounds begin to heal!\n\r",victim); act("$n's wounds begin to heal!",victim,NULL,NULL,TO_ROOM); } } else { send_to_char("They don't require any healing.\n\r",ch); return; } } void do_anesthetic(CHAR_DATA *ch, char *argument) { CHAR_DATA *victim; char arg [MAX_INPUT_LENGTH]; char buf [MAX_STRING_LENGTH]; argument = one_argument(argument, arg); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_VAMPIRE) && !IS_CLASS(ch, CLASS_ABOMINATION)) { send_to_char("Huh?\n\r", ch); return; } if (ch->pcdata->powers[VAM_OBEA] < 3) { send_to_char("You must obtain at least level 3 in Obeah to use Anesthetic.\n\r",ch); return; } if (ch->obeah_timer > 0) { if (ch->obeah_timer > 1) sprintf(buf,"You cannot call upon your Obeah powers for another %d seconds.\n\r",ch->obeah_timer); else sprintf(buf,"You cannot call upon your Obeah powers for another 1 second.\n\r"); send_to_char(buf,ch); return; } if (arg[0] == '\0') { send_to_char("Who do you want to use Anesthetic Touch on?\n\r", ch); return; } if ((victim = get_char_room(ch, arg)) == NULL) { send_to_char("They are not here.\n\r", ch); return; } if (!IS_SET(ch->newbits, NEW_OBEAH)) do_obeah(ch,""); act("$n's third eye begins to glow with an intense white light.", ch, NULL, NULL, TO_ROOM); send_to_char("Your third eye begins to glow with an intense white light.\n\r", ch); ch->obeah_timer = 30; if (IS_SET(victim->newbits, NEW_CALM)) { send_to_char("You remove their immunity to pain.\n\r",ch); send_to_char("You no longer feel so oblivious to pain.\n\r",victim); REMOVE_BIT(victim->newbits, NEW_NOPAIN); send_to_char("You make them immune to pain.\n\r",ch); send_to_char("You feel completely oblivious to pain.\n\r",victim); SET_BIT(victim->newbits, NEW_NOPAIN); } return; } void do_neutral(CHAR_DATA *ch, char *argument) { char buf [MAX_INPUT_LENGTH]; CHAR_DATA *rch; if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_VAMPIRE)) { send_to_char("Huh?\n\r", ch); return; } if (ch->pcdata->powers[VAM_OBEA] < 4) { send_to_char("You must obtain at least level 4 in Obeah to create a Neutral Guard\n\r",ch); return; } if (ch->obeah_timer > 0 && !IS_SET(ch->newbits, NEW_NEUTRAL)) { if (ch->obeah_timer > 1) sprintf(buf,"You cannot call upon your Obeah powers for another %d seconds.\n\r",ch->obeah_timer); else sprintf(buf,"You cannot call upon your Obeah powers for another 1 second.\n\r"); send_to_char(buf,ch); return; } if (ch->in_room == NULL) { send_to_char("Nothing happens.\n\r",ch); return; } if (IS_SET(ch->newbits, NEW_REINA)) { send_to_char("Nothing happens.\n\r",ch); return; } if (IS_SET(ch->newbits, NEW_NEUTRAL)) { REMOVE_BIT(ch->newbits, NEW_NEUTRAL); REMOVE_BIT(ch->in_room->room_flags, ROOM_SAFE); act("A look of concentration crosses $n's face.", ch, NULL, NULL, TO_ROOM); send_to_char("The peaceful harmony in the air gradually fades away to nothing.\n\r", ch); act("The peaceful harmony in the air gradually fades away to nothing.",ch,NULL,NULL,TO_ROOM); ch->obeah_timer = 30; return; } if (IS_SET(ch->in_room->room_flags, ROOM_SAFE)) { send_to_char("You are unable to create a Neutral Guard here.\n\r", ch); return; } SET_BIT(ch->in_room->room_flags, ROOM_SAFE); SET_BIT(ch->newbits, NEW_NEUTRAL); act("$n's third eye begins to glow with an intense white light.", ch, NULL, NULL, TO_ROOM); send_to_char("Your third eye begins to glow with an intense white light.\n\r", ch); ch->obeah_timer = 30; send_to_char("The air is filled with peaceful harmony.\n\r", ch); act("The air is filled with peaceful harmony.",ch,NULL,NULL,TO_ROOM); for (rch = ch->in_room->people; rch != NULL; rch = rch->next_in_room) { if (rch->fighting != NULL) stop_fighting(rch, TRUE); } return; } void do_renew(CHAR_DATA *ch, char *argument) { CHAR_DATA *victim; char arg [MAX_INPUT_LENGTH]; char buf [MAX_STRING_LENGTH]; int sn, check, oldcheck; argument = one_argument(argument, arg); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_VAMPIRE)) { send_to_char("Huh?\n\r", ch); return; } if (!IS_NPC(ch) && ch->position == POS_STUNNED) { send_to_char("Not while you are mortally wounded!.\n\r", ch); return; } if (ch->pcdata->powers[VAM_OBEA] < 5) { send_to_char("You require level 5 Obeah to use Renewed Vigor.\n\r",ch); return; } if (ch->position == POS_FIGHTING) { send_to_char("No way! You are still fighting!\n\r",ch); return; } if (ch->obeah_timer> 0) { if (ch->obeah_timer > 1) sprintf(buf,"You cannot call upon your Obeah powers for another %d seconds.\n\r",ch->obeah_timer); else sprintf(buf,"You cannot call upon your Obeah powers for another 1 second.\n\r"); send_to_char(buf,ch); return; } if (arg[0] == '\0') { send_to_char("Who do you want to use Renewed Vigor on?\n\r", ch); return; } if ((victim = get_char_room(ch, arg)) == NULL) { send_to_char("They are not here.\n\r", ch); return; } if (!IS_SET(ch->newbits, NEW_OBEAH)) do_obeah(ch,""); if ((victim->loc_hp[0] + victim->loc_hp[1] + victim->loc_hp[2] + victim->loc_hp[3] + victim->loc_hp[4] + victim->loc_hp[5] + victim->loc_hp[6]) == 0 && victim->hit == victim->max_hit) { send_to_char("They don't require any healing.\n\r",ch); return; } act("$n's third eye begins to glow with an intense white light.", ch, NULL, NULL, TO_ROOM); send_to_char("Your third eye begins to glow with an intense white light.\n\r", ch); ch->obeah_timer = 60; if ((check = victim->loc_hp[6]) > 0) { oldcheck = 0; sn = skill_lookup("clot"); while (oldcheck != (check = victim->loc_hp[6])) { oldcheck = check; (*skill_table[sn].spell_fun) (sn,ch->level,ch,victim); } } if ((check = (victim->loc_hp[0] + victim->loc_hp[1] + victim->loc_hp[2] + victim->loc_hp[3] + victim->loc_hp[4] + victim->loc_hp[5])) > 0) { oldcheck = 0; while (oldcheck != (check = victim->loc_hp[0] + victim->loc_hp[1] + victim->loc_hp[2] + victim->loc_hp[3] + victim->loc_hp[4] + victim->loc_hp[5])) { oldcheck = check; reg_mend(victim); } } if (victim->hit < victim->max_hit) { victim->hit = victim->max_hit; // victim->agg = 0; send_to_char("You have been completely healed!\n\r",victim); act("$n's wounds have been completely healed!",victim,NULL,NULL,TO_ROOM); update_pos(victim); } return; } void do_willpower( CHAR_DATA *ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; char buf[MAX_INPUT_LENGTH]; argument = one_argument( argument, arg ); if ( IS_NPC(ch) ) return; if (arg[0] == '\0') { send_to_char("--------------------------------------------------------------------------------\n\r",ch); send_to_char(" -= Will Power =-\n\r",ch); send_to_char("--------------------------------------------------------------------------------\n\r",ch); if (IS_WILLPOWER(ch, RES_ANIMALISM)) send_to_char("Animalism: You automatically try to resist Beast Within and Song of Serenity.\n\r",ch); else send_to_char("Animalism: You don't try to resist Beast Within and Song of Serenity.\n\r",ch); if (IS_WILLPOWER(ch, RES_AUSPEX)) send_to_char("Auspex: You automatically try to resist Unveil the Shrouded Mind.\n\r",ch); else send_to_char("Auspex: You don't try to resist Unveil the Shrouded Mind.\n\r",ch); if (IS_WILLPOWER(ch, RES_DOMINATE)) send_to_char("Dominate: You automatically try to resist Dominate attempts.\n\r",ch); else send_to_char("Dominate: You don't try to resist Dominate attempts.\n\r",ch); if (IS_WILLPOWER(ch, RES_PRESENCE)) send_to_char("Presence: You automatically try to resist Dread Gaze and Entrancement.\n\r",ch); else send_to_char("Presence: You don't try to resist Dread Gaze and Entrancement.\n\r",ch); if (IS_WILLPOWER(ch, RES_TOGGLE)) send_to_char("Toggle: You automatically keep burning willpower to resist attempts.\n\r",ch); else send_to_char("Toggle: You will only burn willpower to resist each first attempt.\n\r",ch); send_to_char("--------------------------------------------------------------------------------\n\r",ch); send_to_char("You may change any of the above by typing: willpower <value>\n\r",ch); send_to_char("--------------------------------------------------------------------------------\n\r",ch); send_to_char("Remaining resistance in seconds:\n\r", ch ); sprintf( buf,"Animalism: %d. Auspex: %d. Presence: %d. Dominate: %d.\n\r", ch->pcdata->resist[WILL_ANIMALISM], ch->pcdata->resist[WILL_AUSPEX], ch->pcdata->resist[WILL_PRESENCE], ch->pcdata->resist[WILL_DOMINATE]); send_to_char( buf, ch ); send_to_char("--------------------------------------------------------------------------------\n\r",ch); return; } if (!str_cmp(arg,"animalism")) { if (IS_WILLPOWER(ch, RES_ANIMALISM)) { send_to_char("You will no longer try to resist Beast Within and Song of Serenity.\n\r",ch); REMOVE_BIT(ch->pcdata->resist[0], RES_ANIMALISM); } else { send_to_char("You will now automatically try to resist Beast Within and Song of Serenity.\n\r",ch); SET_BIT(ch->pcdata->resist[0], RES_ANIMALISM); } } else if (!str_cmp(arg,"auspex")) { if (IS_WILLPOWER(ch, RES_AUSPEX)) { send_to_char("You will no longer try to resist Unveil the Shrouded Mind.\n\r",ch); REMOVE_BIT(ch->pcdata->resist[0], RES_AUSPEX); } else { send_to_char("You will now automatically try to resist Unveil the Shrouded Mind.\n\r",ch); SET_BIT(ch->pcdata->resist[0], RES_AUSPEX); } } else if (!str_cmp(arg,"dominate")) { if (IS_WILLPOWER(ch, RES_DOMINATE)) { send_to_char("You will no longer try to resist Domination attempts.\n\r",ch); REMOVE_BIT(ch->pcdata->resist[0], RES_DOMINATE); } else { send_to_char("You will now automatically try to resist Domination attempts.\n\r",ch); SET_BIT(ch->pcdata->resist[0], RES_DOMINATE); } } else if (!str_cmp(arg,"presence")) { if (IS_WILLPOWER(ch, RES_PRESENCE)) { send_to_char("You will no longer try to resist Dread Gaze and Entrancement.\n\r",ch); REMOVE_BIT(ch->pcdata->resist[0], RES_PRESENCE); } else { send_to_char("You will now automatically try to resist Dread Gaze and Entrancement.\n\r",ch); SET_BIT(ch->pcdata->resist[0], RES_PRESENCE); } } else if (!str_cmp(arg,"toggle")) { if (IS_WILLPOWER(ch, RES_TOGGLE)) { send_to_char("You will now only burn willpower to resist each first attempt.\n\r",ch); REMOVE_BIT(ch->pcdata->resist[0], RES_TOGGLE); } else { send_to_char("You will now automatically keep burning willpower to resist attempts.\n\r",ch); SET_BIT(ch->pcdata->resist[0], RES_TOGGLE); } } else { send_to_char("--------------------------------------------------------------------------------\n\r",ch); send_to_char(" -= Will Power =-\n\r",ch); send_to_char("--------------------------------------------------------------------------------\n\r",ch); if (IS_WILLPOWER(ch, RES_ANIMALISM)) send_to_char("Animalism: You automatically try to resist Beast Within and Song of Serenity.\n\r",ch); else send_to_char("Animalism: You don't try to resist Beast Within and Song of Serenity.\n\r",ch); if (IS_WILLPOWER(ch, RES_AUSPEX)) send_to_char("Auspex: You automatically try to resist Unveil the Shrouded Mind.\n\r",ch); else send_to_char("Auspex: You don't try to resist Unveil the Shrouded Mind.\n\r",ch); if (IS_WILLPOWER(ch, RES_DOMINATE)) send_to_char("Dominate: You automatically try to resist Dominate attempts.\n\r",ch); else send_to_char("Dominate: You don't try to resist Dominate attempts.\n\r",ch); if (IS_WILLPOWER(ch, RES_PRESENCE)) send_to_char("Presence: You automatically try to resist Dread Gaze and Entrancement.\n\r",ch); else send_to_char("Presence: You don't try to resist Dread Gaze and Entrancement.\n\r",ch); if (IS_WILLPOWER(ch, RES_TOGGLE)) send_to_char("Toggle: You automatically keep burning willpower to resist attempts.\n\r",ch); else send_to_char("Toggle: You will only burn willpower to resist each first attempt.\n\r",ch); send_to_char("--------------------------------------------------------------------------------\n\r",ch); send_to_char("You may change any of the above by typing: willpower <value>\n\r",ch); send_to_char("--------------------------------------------------------------------------------\n\r",ch); send_to_char("Remaining resistance in seconds:\n\r", ch ); sprintf( buf,"Animalism: %d. Auspex: %d. Presence: %d. Dominate: %d.\n\r", ch->pcdata->resist[WILL_ANIMALISM], ch->pcdata->resist[WILL_AUSPEX], ch->pcdata->resist[WILL_PRESENCE], ch->pcdata->resist[WILL_DOMINATE]); send_to_char( buf, ch ); send_to_char("--------------------------------------------------------------------------------\n\r",ch); return; } return; } void do_reina( CHAR_DATA *ch, char *argument ) { char buf [MAX_INPUT_LENGTH]; CHAR_DATA *rch; if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_VAMPIRE)) { send_to_char( "Huh?\n\r", ch ); return; } if ( ch->hit <= -10 ) { stc("Not while mortally wounded!\n\r", ch ); return; } if (ch->fight_timer >0) { send_to_char("Not until your fight timer expires.\n\r", ch ); return;} if (ch->pcdata->powers[VAM_MELP] < 4) { send_to_char("You need Melpominee 4 to use the song of Reina.\n\r",ch); return; } if (ch->in_room == NULL) { send_to_char("Nothing happens.\n\r",ch); return; } if (IS_SET(ch->newbits, NEW_NEUTRAL)) { send_to_char("Nothing happens.\n\r",ch); return; } if (IS_SET(ch->newbits, NEW_REINA)) { REMOVE_BIT(ch->newbits, NEW_REINA); REMOVE_BIT(ch->in_room->room_flags, ROOM_SAFE); send_to_char("The peaceful harmony in the air gradually fades away to nothing.\n\r", ch); act("A look of concentration crosses $n's face.", ch, NULL, NULL, TO_ROOM ); act("The peaceful harmony in the air gradually fades away to nothing.",ch,NULL,NULL,TO_ROOM); ch->reina_timer = 60; return; } if (IS_SET(ch->in_room->room_flags, ROOM_SAFE)) { send_to_char("You are unable to sing the Song of Reina here.\n\r", ch); return; } if (ch->reina_timer > 0) { if (ch->reina_timer > 1) sprintf(buf,"Your voice will not recover for another %d seconds.\n\r",ch->reina_timer); else sprintf(buf,"Your voice will not recover for another 1 second.\n\r"); send_to_char(buf,ch); return; } SET_BIT(ch->in_room->room_flags, ROOM_SAFE); SET_BIT(ch->newbits, NEW_REINA); ch->reina_timer = 60; send_to_char("You sing the Song of Reina.\n\r", ch); act("$n sings a beautiful, haunting song.", ch, NULL, NULL, TO_ROOM ); send_to_char("The air is filled with peaceful harmony.\n\r", ch); act("The air is filled with peaceful harmony.",ch,NULL,NULL,TO_ROOM); for ( rch = ch->in_room->people; rch != NULL; rch = rch->next_in_room ) { if ( rch->fighting != NULL ) stop_fighting( rch, TRUE ); } return; } void do_shroudnight( CHAR_DATA *ch, char *argument ) { char buf [MAX_INPUT_LENGTH]; if (IS_NPC(ch)) return; if (!IS_CLASS(ch,CLASS_VAMPIRE) && !IS_CLASS(ch, CLASS_WEREWOLF) && !IS_CLASS(ch, CLASS_ABOMINATION)) { send_to_char("Huh?\n\r",ch); return; } if ((IS_CLASS(ch, CLASS_VAMPIRE) || IS_CLASS(ch, CLASS_ABOMINATION)) && (ch->pcdata->powers[VAM_OBTE] < 2)) { send_to_char("You need level 2 Obtenebration to use shroud of the night.\n\r",ch); return; } if (IS_CLASS(ch, CLASS_WEREWOLF) && ch->gifts[UKTENA] < 1 ) { stc("You must obtain the first gift of the Uktena to use Dark Shroud.\n\r",ch); return; } if (ch->in_room == NULL) { send_to_char("Nothing happens.\n\r",ch); return; } if (IS_SET(ch->newbits, NEW_DARKNESS)) { REMOVE_BIT(ch->newbits, NEW_DARKNESS); REMOVE_BIT(ch->in_room->room_flags, ROOM_TOTAL_DARKNESS); send_to_char("You banish the darkness from the room!\n\r", ch); act("A look of concentration crosses $n's face.", ch, NULL, NULL, TO_ROOM ); act("$n banishes the darkness from the room!",ch,NULL,NULL,TO_ROOM); ch->darkness_timer = 60; return; } if (IS_SET(ch->in_room->room_flags, ROOM_TOTAL_DARKNESS)) { send_to_char("The room is already in darkness.\n\r", ch); return; } if (ch->darkness_timer > 0) { if (ch->darkness_timer > 1) sprintf(buf,"You cannot call upon the Shroud of Night for another %d seconds.\n\r",ch->darkness_timer); else sprintf(buf,"You cannot call upon the Shroud of Night for another 1 second.\n\r"); send_to_char(buf,ch); return; } SET_BIT(ch->in_room->room_flags, ROOM_TOTAL_DARKNESS); SET_BIT(ch->newbits, NEW_DARKNESS); send_to_char("You call forth the Shroud of Night to darken the room!\n\r", ch); act("A look of concentration crosses $n's face.", ch, NULL, NULL, TO_ROOM ); act("The room is filled with darkness!",ch,NULL,NULL,TO_ROOM); ch->darkness_timer = 60; return; }