cotn25/area/
cotn25/src/
/***************************************************************************
 *  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;
}