
#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "merc.h"


void do_shield( CHAR_DATA *ch, char *argument )
{
  char arg [MAX_INPUT_LENGTH];

  argument = one_argument( argument, arg );

  if (IS_NPC(ch)) return;


  if (!IS_SPHERE(ch, SPHERE_ABJURER))
  {
    send_to_char("#0Shield is an Abjurer ability.#n\n\r",ch);
    return;
  }

  if (!IS_IMMUNE(ch,IMM_SHIELDED) )
  {
    send_to_char("You shield your aura from those around you.\n\r",ch);
    SET_BIT(ch->immune, IMM_SHIELDED);
    return;
  }
  send_to_char("You stop shielding your aura.\n\r",ch);
  REMOVE_BIT(ch->immune, IMM_SHIELDED);
  return;
}

void do_holyaura(CHAR_DATA * ch, char *argument)
{
        CHAR_DATA *victim;
        char      arg[MAX_INPUT_LENGTH];
        int       sn, level;
        int       mcost;

        argument = one_argument(argument, arg);
        mcost = number_range(2000, 3000);

  if (!IS_SPHERE(ch, SPHERE_ABJURER))
  {
    send_to_char("#0Holy Aura is an Abjurer ability.#n\n\r",ch);
    return;
  }

        if (ch->mana < mcost)
        {
                send_to_char("You don't have enough mana for that!\n\r", ch);
                return;
        }

        if ((sn = skill_lookup("holy aura")) < 0)
                return;

        if (arg[0] == '\0')
        {
                send_to_char("Cast Holy Aura on whom?\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_affected(victim, skill_lookup("holy aura")))
        {
                stc("They're already affected by holy aura!\n\r", ch);
                return;
        }

        stc("You cast Holy Aura on them!\n\r", ch);
        act("$n starts glowing bright #wwhite#n.", ch, NULL, NULL, TO_ROOM);
        level = 50;
        (*skill_table[sn].spell_fun) (sn, level, victim, victim);
        WAIT_STATE(ch, 12);
        ch->mana -= mcost;
        return;
}


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


  if (!IS_SPHERE(ch, SPHERE_ABJURER))
  {
    send_to_char("#0Dimension Dodge is an Abjurer ability.#n\n\r",ch);
    return;
  }
 
  if (IS_SET(ch->pcdata->powers[WRAITH_POWERS], WRAITH_DIMEDODGE))
  {
    REMOVE_BIT(ch->pcdata->powers[WRAITH_POWERS], WRAITH_DIMEDODGE);
    act( "$n loses his superior dodging",ch,NULL,NULL,TO_ROOM);
    send_to_char("Your dodging goes back to normal.\n\r",ch);
    return;
  }
    
   SET_BIT(ch->pcdata->powers[WRAITH_POWERS], WRAITH_DIMEDODGE);
    act( "$n gains superior dodging..",ch,NULL,NULL,TO_ROOM);
    send_to_char("You now can jump dimensions to dodge attacks.\n\r",ch);
    return;
}

