src/
#if defined(macintosh)
#include<types.h>
#else
#include <sys/types.h>
#endif
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"

// Anti-Paladin Class by Xrakisis


void do_raise( CHAR_DATA *ch, char *argument )
{
  char buf [MAX_STRING_LENGTH];
  OBJ_DATA *corpse;
  CHAR_DATA *victim;
  char arg[MSL];
  AFFECT_DATA af;

  one_argument (argument, arg);


  if (IS_NPC(ch)) return;

  if (!IS_CLASS(ch, CLASS_ANTIPALADIN))
  {  
    send_to_char("#0This is an Antipaladin Ability.#n\n\r",ch);
    return;
  }
  if (!IS_SET(ch->pcdata->powers[15], APOWER_RAISE))
  {
    send_to_char("#0You need to Delve Raise Dead first#n\n\r",ch);
    return;
  }
      if (ch->pcdata->powers[RAISETIMER] > 0)
      {
        send_to_char("#0You may not raise the dead quite so soon.#n\n\r",ch);
        return;
      }

  if ((corpse = get_obj_room (ch, arg)) == NULL)
    {
      stc ("That corpse isnt here.\n\r", ch);
      return;
    }
  if (corpse->item_type != ITEM_CORPSE_NPC)
    {
      stc ("Only on mobile corpses.\n\r", ch);
      return;
    }

    victim=create_mobile( get_mob_index( MOB_VNUM_NIGHTMARE ));
    free_string(victim->short_descr);
    free_string(victim->name);
    free_string(victim->long_descr);
    victim->name = str_dup( corpse->name);
    victim->short_descr = str_dup(corpse->short_descr);
    victim->long_descr = str_dup(corpse->description);
    victim->level = ch->spl[RED_MAGIC];
    victim->hit = 200 * ch->spl[RED_MAGIC]; 
    victim->max_hit = 200 * ch->spl[RED_MAGIC];
    victim->hitroll =  ch->spl[RED_MAGIC]; 
    victim->damroll =  ch->spl[RED_MAGIC];  
    char_to_room( victim, ch->in_room );
    add_follower( victim, ch );
    af.type      = skill_lookup ("charm person");
    af.duration  = 666;
    af.location  = APPLY_NONE;
    af.modifier  = 0;
    af.bitvector = AFF_CHARM;
    affect_to_char( victim, &af );
    SET_BIT(victim->act,ACT_NOEXP);
    SET_BIT(victim->act,PLR_HOLYLIGHT);
    do_group(ch,victim->name);
    if (corpse != NULL)
    extract_obj (corpse);
    ch->pcdata->powers[RAISETIMER] += 20;
    return;

}

void do_morph( CHAR_DATA *ch, char *argument )
{
  char buf [MAX_STRING_LENGTH];

  if (IS_NPC(ch)) return;

  if (!IS_CLASS(ch, CLASS_ANTIPALADIN))
  {  
    send_to_char("#0This is an Antipaladin Ability.#n\n\r",ch);
    return;
  }
  if (!IS_SET(ch->pcdata->powers[15], APOWER_MORPH))
  {
    send_to_char("#0You need to Delve morph first#n\n\r",ch);
    return;
  }

  if (IS_SET(ch->newbits, NEW_CUBEFORM))
  {
    REMOVE_BIT(ch->newbits, NEW_CUBEFORM);
    REMOVE_BIT(ch->affected_by, AFF_POLYMORPH);
    act( "$n turns into a human.",ch,NULL,NULL,TO_ROOM);
    send_to_char("You turn into your normal form.\n\r",ch);
    ch->damroll -=400;
    ch->hitroll -=400;
    free_string(ch->morph);
    ch->morph=str_dup("");
    return;
  }
  if (ch->move < 2000 || ch->mana < 2000)
  {
    send_to_char("#0You need 2000 mana and 2000 move to make yourself a true Anti-Paladin.#n\n\r",ch);
    return;
  }
  else
  {
    act( "$n transforms into an Anti-Paladin.",ch,NULL,NULL,TO_ROOM);
    send_to_char("#0Takhisis bestows power upon you.#n\n\r",ch);
    SET_BIT(ch->newbits, NEW_CUBEFORM);
    SET_BIT(ch->affected_by, AFF_POLYMORPH);
    sprintf(buf,"%s the #GAn#gti#0-#7Pal#gad#Gin#n",ch->name);
    free_string(ch->morph);
    ch->morph = str_dup(buf);
    ch->move -= 2000;
    ch->mana -= 2000;
    ch->damroll +=400;
    ch->hitroll +=400;
    return;
  }
  return;
}


void do_unholyritual (CHAR_DATA *ch, char *argument)
{
  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_ANTIPALADIN))
  {
    send_to_char("Huh.\n\r",ch);
    return;
  }
  if (ch->alignment != -1000) ch->alignment = -1000;
  if (ch->pcdata->powers[DARKARTS] > 20)
  {
    send_to_char("#0Youve mastered the Dark Arts#n.\n\r",ch);
    return;
  }
  if (ch->practice < ch->pcdata->powers[DARKARTS]*50 + 50)
  {
    send_to_char("#0You need more primal#n\n\r",ch);
    return;
  }
  else  
  {
    ch->practice -= ch->pcdata->powers[DARKARTS]*50 + 50;
    send_to_char("#0You Pray to Takhisis and she bestows power upon you.#n\n\r",ch);
    ch->pcdata->powers[DARKARTS] += 1;
    return;
  }
  return;
}

void do_summonmount( CHAR_DATA *ch, char *argument )
{
  char arg1[MAX_STRING_LENGTH];
  CHAR_DATA *victim;
  AFFECT_DATA af;

  argument=one_argument(argument,arg1);

  if (IS_NPC(ch)) return;

  if (!IS_CLASS(ch, CLASS_ANTIPALADIN))
  {
    send_to_char("Huh?\n\r",ch);
    return;
  }
    if (IS_SET(ch->pcdata->powers[MOUNT_SUMMON], HAS_SUMMONED_NIGHTMARE))
    {
      send_to_char("#0You cannot summon any more Nightmares.#n\n\r",ch);
      return;
    }
    act( "A look of concentration passes over $n's face.", ch, NULL,NULL, TO_ROOM );
    stc( "You create a Nightmare.\n\r",ch);
    victim=create_mobile( get_mob_index( MOB_VNUM_NIGHTMARE ));
    free_string(victim->short_descr);
    free_string(victim->name);
    free_string(victim->long_descr);
    victim->name=str_dup("nightmare");
    victim->short_descr=str_dup("#RA Demonic Nightmare#n");
    victim->long_descr=str_dup("#Ra Demonic Nightmare here.#n\n\r");
    victim->level = ch->spl[RED_MAGIC] / 2;
    victim->hit = 100 * ch->spl[RED_MAGIC]; 
    victim->max_hit = 100 * ch->spl[RED_MAGIC];
    victim->hitroll =  ch->spl[RED_MAGIC]; 
    victim->damroll =  ch->spl[RED_MAGIC];  
    char_to_room( victim, ch->in_room );
    add_follower( victim, ch );
    af.type      = skill_lookup ("charm person");
    af.duration  = 666;
    af.location  = APPLY_NONE;
    af.modifier  = 0;
    af.bitvector = AFF_CHARM;
    affect_to_char( victim, &af );
    SET_BIT(victim->act,ACT_NOEXP);
    SET_BIT(victim->act,PLR_HOLYLIGHT);
    do_group(ch,victim->name);
    SET_BIT(ch->pcdata->powers[MOUNT_SUMMON], HAS_SUMMONED_NIGHTMARE);
    return;
  }

void do_layonhands( CHAR_DATA *ch, char *argument )
{
  CHAR_DATA *victim;
  char buf[MAX_STRING_LENGTH];
  int dam;

  if (IS_NPC(ch)) return;
 
  if (!IS_CLASS(ch,CLASS_ANTIPALADIN) || !IS_SET(ch->pcdata->powers[15], APOWER_LAYONHANDS))
  {
    send_to_char("#0This is an Anti-Paladin Ability#n\n\r",ch);
    return;
  }
  if ( ( victim = ch->fighting ) == NULL )
  {
    send_to_char( "You aren't fighting anyone.\n\r", ch );
    return;
  }
  WAIT_STATE( ch, 12 );

  if (!IS_NPC(victim)) dam = number_range(4000,6000);
  else dam = number_range(4500,7000);
  dam += (ch->pPotentia * 2);

  sprintf(buf,"#0You lay your hands on $N #R[#0%d#R]#n\n\r",dam);
  act(buf,ch,NULL,victim,TO_CHAR);
  sprintf(buf,"$n's #0lays their hands on you!#n [%d]\n\r",dam);
  act(buf,ch,NULL,victim,TO_VICT);
  sprintf(buf,"$n's #0lays their hands on $N [%d]\n\r",dam);
  act(buf,ch,NULL,victim,TO_NOTVICT); 
  hurt_person(ch,victim, dam);
  ch->hit += dam;
  if (ch->hit > ch->max_hit) ch->hit = ch->max_hit;
  if (ch->pPotentia > 50) ch->pPotentia -= 50;
  return;
}


void do_delve( CHAR_DATA *ch, char *argument )
{
    CHAR_DATA *victim;
    char      arg1 [MAX_INPUT_LENGTH];
    char      arg2 [MAX_INPUT_LENGTH];
    int       inpart = 0;
    int       cost = 0;

    smash_tilde(argument);
    argument = one_argument( argument, arg1 );
    argument = one_argument( argument, arg2 );

    if (IS_NPC(ch)) return;

    if (!IS_CLASS(ch, CLASS_ANTIPALADIN))
    {
	    send_to_char("Huh?\n\r",ch);
	    return;
    }

    if ( arg1[0] == '\0' || arg2[0] == '\0' )
	{
	
		send_to_char( "Syntax: Delve <person> <power>\n\r", ch );
		send_to_char("#0Layonhands #0(#r5000#0)#n,  #0Charisma #0(#r7500#0)#n,  #0Might #0(#r2500#0)#n\n\r",ch);
		send_to_char("#0DetectLiving #0(#r5000#0)#n,  #0Morph #0(#r5000#0)#n,  #0BattleRage #0(#r1000#0)#n\n\r", ch );
		send_to_char("#0Entangle #0(#r10000#0)#n,  #0Flamestrike #0(#r5000#0)#n,  #0DirtKick #0(#r25000#0)#n\n\r", ch );
		send_to_char("#0Malice #0(#r20000#0)#n,  #0Sandman #0(#r25000#0)#n,  #0Grapple#0(#r5000#0)#n\n\r",ch );
		send_to_char("#0Toughness (#r10000#0)#n, #0Camouflage#0 (#r10000#0)#n #0Takhisisaura#0 (#r50000#0)#n\n\r",ch );
		send_to_char("#0Speed (#r25000#0)#n, #0RaiseDead (#r10000#0)#n\n\r",ch);
		return;
	}
// Anti-paladin class By Xrakisis
// Battlerage = WW Rage Like Ability - xrak
// DirtKick = Blind Ability and some damage
// Entangle = Web and some damage
// Grapple = some damage and destance/stun

    if ( ( victim = get_char_world( ch, arg1 ) ) == NULL )
    {
	send_to_char( "Nobody by that name.\n\r", ch );
	return;
    }

    if ( IS_NPC(victim) )
    {
	send_to_char( "Not on NPC's.\n\r", ch );
	return;
    }

        if (!IS_CLASS(victim, CLASS_ANTIPALADIN)) {
                send_to_char("Only on Anti-Paladins.\n\r", ch );
                return;}

    if (!str_cmp(arg2,"layonhands")) 
	{inpart = APOWER_LAYONHANDS; cost = 2500;}
    else if (!str_cmp(arg2,"charisma"))
	{inpart = APOWER_CHARISMA; cost= 7500;}
    else if (!str_cmp(arg2,"might"))
	{inpart = APOWER_MIGHT; cost= 5000;}
    else if (!str_cmp(arg2,"detectliving"))
	{inpart = APOWER_DETECTLIVING; cost = 25000;}
    else if (!str_cmp(arg2,"morph"))
	{inpart = APOWER_MORPH; cost = 5000;}
    else if (!str_cmp(arg2,"battlerage"))
	{inpart = APOWER_BATTLERAGE; cost = 25000;}
    else if (!str_cmp(arg2,"entangle"))
	{inpart = APOWER_ENTANGLE; cost = 20000;}
    else if (!str_cmp(arg2,"flamestrike"))
	{inpart = APOWER_FLAMESTRIKE; cost = 5000;}
    else if (!str_cmp(arg2,"dirtkick"))
	{inpart = APOWER_DIRTKICK; cost = 1000;}
    else if (!str_cmp(arg2,"malice"))
	{inpart = APOWER_MALICE; cost = 10000;}
    else if (!str_cmp(arg2,"sandman")) 
	{inpart = APOWER_SLEEP; cost = 5000;}
    else if (!str_cmp(arg2,"grapple"))
	{inpart = APOWER_GRAPPLE; cost = 2500;}
    else if (!str_cmp(arg2,"toughness"))
	{inpart = APOWER_TOUGHNESS; cost = 10000;}
    else if (!str_cmp(arg2,"camouflage"))
        {inpart = APOWER_CAMOUFLAGE; cost = 10000;}
    else if (!str_cmp(arg2,"takhisisaura"))
	{inpart = APOWER_TAKAURA; cost = 50000;}
    else if (!str_cmp(arg2,"speed"))
	{inpart = APOWER_SPEED; cost = 25000;}
    else if (!str_cmp(arg2, "raisedead"))
	{inpart = APOWER_RAISE; cost = 10000;}
    else
	{
	
		send_to_char( "Syntax: Delve <person> <power>\n\r", ch );
		send_to_char("#0Layonhands #0(#r5000#0)#n,  #0Charisma #0(#r7500#0)#n,  #0Might #0(#r2500#0)#n.\n\r",ch);
		send_to_char("#0DetectLiving #0(#r5000#0)#n,  #0Morph #0(#r5000#0)#n,  #0BattleRage #0(#r1000#0)#n.\n\r", ch );
		send_to_char("#0Entangle #0(#r10000#0)#n,  #0Flamestrike #0(#r5000#0)#n,  #0DirtKick #0(#r25000#0)#n.\n\r", ch );
		send_to_char("#0Malice #0(#r20000#0)#n,  #0Sandman #0(#r25000#0)#n,  #0Grapple#0(#r5000#0)#n.\n\r",ch );
                send_to_char("#0Toughness (#r10000#0)#n, #0Camouflage#0 (#r10000#0)#n #0Takhisisaura#0 (#r50000#0)#n\n\r",ch );
                send_to_char("#0Speed (#r25000#0)#n, #0RaiseDead (#r10000#0)#n\n\r",ch);
                return;
	}
    if (!(ch==victim)) cost *=5;

    if (IS_SET(victim->pcdata->powers[15], inpart))
    {
	send_to_char("They have already got that power.\n\r",ch);
	return;
    }

    if( !IS_CLASS(victim, CLASS_ANTIPALADIN) )
    {
	stc( "You can not grant powers to Non Drows.\n\r",ch);
	return;
    }

    if (ch->pcdata->stats[DEMON_CURRENT] < cost) 
    {
	send_to_char("You have insufficient power to grant that gift.\n\r",ch);
	return;
    }
    SET_BIT(victim->pcdata->powers[15], inpart);
    ch->pcdata->stats[DEMON_CURRENT] -= cost;
    if (victim != ch) send_to_char("Power has been given to you from an AntiPaladin of Takhisis\n\r",victim);
    send_to_char("Ok.\n\r",ch);
    if (victim != ch) save_char_obj(ch);
    save_char_obj(victim);
    return; 
}


void do_detectliving( CHAR_DATA *ch, char *argument )
{
    if ( IS_NPC(ch) )
	return;

  if (!IS_CLASS(ch,CLASS_ANTIPALADIN) || !IS_SET(ch->pcdata->powers[15], APOWER_DETECTLIVING))
  {
    send_to_char("#0This is an Anti-Paladin Ability#n\n\r",ch);
    return;
  }

    if ( IS_SET(ch->act, PLR_HOLYLIGHT) )
    {
	REMOVE_BIT(ch->act, PLR_HOLYLIGHT);
	send_to_char( "#0You no longer detect living.#n\n\r", ch );
    }
    else
    {
	SET_BIT(ch->act, PLR_HOLYLIGHT);
	send_to_char( "#0You now detect the living#n.\n\r", ch );
    }

    return;
}


void do_flamestrike( CHAR_DATA *ch, char *argument )
{
  CHAR_DATA *victim;
  char buf[MAX_STRING_LENGTH];
  int dam;

  if (IS_NPC(ch)) return;
 
  if (!IS_SET(ch->pcdata->powers[15], APOWER_FLAMESTRIKE) || !IS_CLASS(ch,CLASS_ANTIPALADIN))
  {
    send_to_char("#0This is an Anti-Paladin Ability#n\n\r",ch);
    return;
  }
  if ( ( victim = ch->fighting ) == NULL )
  {
    send_to_char( "You aren't fighting anyone.\n\r", ch );
    return;
  }
  WAIT_STATE( ch, 12 );

  if (!IS_NPC(victim)) dam = number_range(3000,6000);
  else dam = number_range(12000,14000);
  dam += (ch->pPotentia * 2);

  sprintf(buf,"#0You #RFLAMESTRIKE $N #R[#0%d#R]#n\n\r",dam);
  act(buf,ch,NULL,victim,TO_CHAR);
  sprintf(buf,"$n's #RFLAMESTRIKES #0you!#n [%d]\n\r",dam);
  act(buf,ch,NULL,victim,TO_VICT);
  sprintf(buf,"$n's #RFLAMESTRIKES#0 $N #n[%d]\n\r",dam);
  act(buf,ch,NULL,victim,TO_NOTVICT); 
  hurt_person(ch,victim, dam);

  if (ch->pPotentia > 50) ch->pPotentia -= 50;
  return;
}


void do_shadowtravel(CHAR_DATA *ch, char *argument)
{

  char arg[MAX_INPUT_LENGTH];
  CHAR_DATA *victim;
  ROOM_INDEX_DATA *location;

  one_argument (argument, arg);


  if (IS_NPC(ch)) return;
  if (!IS_CLASS(ch, CLASS_ANTIPALADIN))
  {
    send_to_char("#0This is an antipaladin only skill#n\n\r", ch );
    return;
  }

  if ((victim = get_char_world(ch, arg)) == NULL)
  {
    send_to_char("You are unable to find them.\n\r", ch );
    return;
  }


  if (IS_SET(victim->in_room->room_flags, ROOM_ASTRAL))
  {
    send_to_char( "You cannot enter the Astral sphere.\n\r",ch);
    return;
  }


    if (IS_IMMUNE(victim, IMM_TRAVEL) && victim->fight_timer < 1 )
  {
    send_to_char("You cannot travel to them, they are immune.\n\r",ch);
    return;
  }


  if (ch->move < 250)
  {
    send_to_char("Your to tired to shadowtravel.\n\r", ch );
    return;
  }


  location = victim->in_room;


  act("You concentrate on the journey ahead.", ch, NULL, NULL, TO_CHAR);


  act("$n steps into a shadow and disappears.", ch, NULL, NULL, TO_ROOM);

  ch->move -= 250;


  char_from_room(ch); 
  char_to_room(ch, location);


  do_look(ch, "");


  act("You materialize.", ch, NULL, NULL, TO_CHAR);
  act("$n steps out of a shadow.", ch, NULL, NULL, TO_ROOM);


  return;
}  


void do_grapple( CHAR_DATA *ch, char *argument )
{
  CHAR_DATA *victim;
  char buf[MAX_STRING_LENGTH];
  int dam;
  int chance;

  if (IS_NPC(ch)) return;
 
  if (!IS_CLASS(ch,CLASS_ANTIPALADIN) || !IS_SET(ch->pcdata->powers[15], APOWER_GRAPPLE))
  {
    send_to_char("#0This is an Anti-Paladin Ability#n\n\r",ch);
    return;
  }
  if ( ( victim = ch->fighting ) == NULL )
  {
    send_to_char( "You aren't fighting anyone.\n\r", ch );
    return;
  }
  WAIT_STATE( ch, 12 );

  chance = number_range (1,3);

  if (chance == 1 )
{
    WAIT_STATE(ch, 4);
    do_say(ch,"#RHAHA DESTANCE!!!!#n");
    do_stance(victim, "");
}
  else if (chance == 2 )
{
    WAIT_STATE(victim, 12);
    do_say(ch,"#RHAHA STUN!!!!#n");
}

  if (!IS_NPC(victim)) dam = number_range(2000,4000);
  else dam = number_range(10000,14000);

  sprintf(buf,"#0You #0Grapple With $N #R[#0%d#R]#n\n\r",dam);
  act(buf,ch,NULL,victim,TO_CHAR);
  sprintf(buf,"$n's #0Grapples with You#n [%d]\n\r",dam);
  act(buf,ch,NULL,victim,TO_VICT);
  sprintf(buf,"$n's #0Grapples with #n$N #n[%d]\n\r",dam);
  act(buf,ch,NULL,victim,TO_NOTVICT); 
  hurt_person(ch,victim, dam);
  return;
}



void do_dirtkick( CHAR_DATA *ch, char *argument )
{
  CHAR_DATA *victim;
  char buf[MAX_STRING_LENGTH];
  int dam;
  AFFECT_DATA af;

  if (IS_NPC(ch)) return;
 
  if (!IS_CLASS(ch,CLASS_ANTIPALADIN) || !IS_SET(ch->pcdata->powers[15], APOWER_DIRTKICK))
  {
    send_to_char("#0This is an Anti-Paladin Ability#n\n\r",ch);
    return;
  }
  if ( ( victim = ch->fighting ) == NULL )
  {
    send_to_char( "You aren't fighting anyone.\n\r", ch );
    return;
  }

      if (is_safe(ch, victim)) return;
      act("#0$n Kicks Dirt in $N's Eyes#n",ch,NULL,victim,TO_NOTVICT);
      act("#0You kick dirt in $N's Eyes#n'.",ch,NULL,victim,TO_CHAR);
      act("#0$n Kicks Dirt in your Eyes!#n'.",ch,NULL,victim,TO_VICT);
      if (IS_SET(victim->act,PLR_HOLYLIGHT)) REMOVE_BIT(victim->act,PLR_HOLYLIGHT);
      if (IS_SET(victim->affected_by, AFF_DETECT_HIDDEN))
        REMOVE_BIT(victim->affected_by, AFF_DETECT_HIDDEN);
      if (IS_SET(victim->affected_by, AFF_DETECT_INVIS))
        REMOVE_BIT(victim->affected_by, AFF_DETECT_INVIS);
      af.type      = skill_lookup("blindness");
      af.location  = APPLY_HITROLL;
      af.modifier  = -4;
      af.duration  = 60;
      af.bitvector = AFF_BLIND;
      affect_to_char( victim, &af );
      WAIT_STATE(ch,12);
      return;
  }


void do_apsleep( CHAR_DATA *ch, char *argument )
{
    CHAR_DATA *victim;
    char      arg1 [MAX_INPUT_LENGTH];
    argument = one_argument( argument, arg1 );
        
    if (IS_NPC(ch)) return;
	
  if (!IS_CLASS(ch,CLASS_ANTIPALADIN) || !IS_SET(ch->pcdata->powers[15], APOWER_SLEEP))
  {
    send_to_char("#0This is an Anti-Paladin Ability#n\n\r",ch);
    return;
  }

  if (ch->in_room != NULL)
  {
    if ( IS_SET(ch->in_room->room_flags,ROOM_SAFE) )
    {
      send_to_char( "You cannot use this power in a safe room.\n\r", ch );
      return;
    }
  }

	
    if ( arg1[0] == '\0' )
    {
	send_to_char( "Put who to sleep?\n\r", ch );
	return;
    }

    if ( ( victim = get_char_room( ch, NULL,  arg1 ) ) == NULL )
    {
	send_to_char( "They aren't here.\n\r", ch );
	return;
    }

    if ( ch == victim )
    {
	send_to_char( "Not on yourself!\n\r", ch );
	return;
    }
	
    if ( ch->position == POS_FIGHTING )
    {
	send_to_char( "Not while fighting!\n\r", ch );
	return;
    }
    
	if (ch->move < 500)
	{
	send_to_char("You don't have enough movement points.\n\r", ch);
	return;
	}     
	  
    if ( victim->in_room == ch->in_room )
	{
	act("You invoke the power of Takhisis and put $N to sleep.",ch,NULL,victim,TO_CHAR);
	act("$n invokes the power of Takhisis and you drift into dreamland.",ch,NULL,victim,TO_VICT);
	victim->position = POS_SLEEPING;
	ch->move -= 500;
	WAIT_STATE(ch, 1);
	return;
	}
	
	return;
}


void do_battlerage( CHAR_DATA *ch, char *argument )
{
    CHAR_DATA *victim;
    char      arg1 [MAX_INPUT_LENGTH];
    argument = one_argument( argument, arg1 );
        
   CHAR_DATA *vch;
    CHAR_DATA *vch_next;
    if (IS_NPC(ch)) return;
	
  if (!IS_CLASS(ch,CLASS_ANTIPALADIN) || !IS_SET(ch->pcdata->powers[15], APOWER_BATTLERAGE))
  {
    send_to_char("#0This is an Anti-Paladin Ability#n\n\r",ch);
    return;
  }

      if (ch->pcdata->powers[APTICK] > 0)
      {
        send_to_char("#0You may not battlerage yet.#n\n\r",ch);
        return;
      }



    for ( vch = char_list; vch != NULL; vch = vch_next )
    {
	vch_next	= vch->next;
	if ( vch->in_room == NULL )
	    continue;
	if ( ch == vch )
	{
	    act("You brandish your blades and scream a war cry", ch, NULL, NULL, TO_CHAR);
	    continue;
	}
	if ( !IS_NPC(vch) && vch->pcdata->chobj != NULL )
	    continue;
	if (!IS_NPC(vch))
	{
	    if (vch->in_room == ch->in_room)
		act("$n Charges and $s screams a War Cry!", ch, NULL, vch, TO_VICT);
	    else if (vch->in_room->area == ch->in_room->area)
		send_to_char("You hear a WarCry close by!\n\r", vch);
	    else
	    if (!CAN_PK(vch)) continue;
	}
	if ( vch->in_room == ch->in_room && can_see( ch, vch) )
	{
	    multi_hit( ch, vch, TYPE_UNDEFINED );
	    if (vch == NULL || vch->position <= POS_STUNNED) continue;
	    multi_hit( ch, vch, TYPE_UNDEFINED );
	}
    }
      ch->pcdata->powers[APTICK] = 3;
      return;
}