DBTFF/clans/
DBTFF/deity/
DBTFF/houses/
DBTFF/player/a/
DBTFF/space/
/*****************************************/
/*            Fusion Skills               */
/*             By Kalthizar               */
/*                                        */
/* [ ] Hellstorm       [X] Wrath of God   */
/* [ ] Chaotic Eruption[ ] Holy Kamehameha*/
/* [X] Judgement Day   [ ]                */
/* [ ]                 [ ]                */              
/* [ ]                 [ ]                */
/* [ ]                 [ ]                */
/* [ ]                                    */
/******************************************/

#include <sys/types.h>
#include <ctype.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "mud.h"

void do_wog( CHAR_DATA * ch, char *argument )
{
  CHAR_DATA *victim;
  int dam = 0;

  if( IS_NPC( ch ) && is_split( ch ) )
  {
    if( !ch->master )
      return;
    if( !can_use_skill( ch->master, number_percent(  ), gsn_wog  ) )
      return;
  }

  if( IS_NPC( ch ) && IS_AFFECTED( ch, AFF_CHARM ) )
  {
    send_to_char( "You can't concentrate enough for that.\n\r", ch );
    return;
  }

  if( !IS_NPC( ch ) && ch->exp < skill_table[gsn_wog]->skill_level[ch->class] )
  {
    send_to_char( "You can't do that.\n\r", ch );
    return;
  }

  if( ( victim = who_fighting( ch ) ) == NULL )
  {
    send_to_char( "You aren't fighting anyone.\n\r", ch );
    return;
  }

  if( ch->mana < skill_table[gsn_wog]->min_mana )
  {
    send_to_char( "You don't have enough energy.\n\r", ch );
    return;
  }
  if( ch->focus < skill_table[gsn_wog]->focus )
  {
    send_to_char( "You need to focus more.\n\r", ch );
    return;
  }
  else
    ch->focus -= skill_table[gsn_wog]->focus;

  WAIT_STATE( ch, skill_table[gsn_wog]->beats );
  if( can_use_skill( ch, number_percent(  ), gsn_wog ) )
  {
    switch ( number_range( 1, 100 ) )
    {
      case 100:
      case 99:
      case 98:
      case 97:
      case 96:
      case 95:
        if( IS_NPC( victim ) || ( !IS_NPC( victim ) && ( !xIS_SET( ch->act, PLR_SPAR ) || !xIS_SET( ch->act, PLR_SPAR ) ) ) )
        {

          /*
           * Redone so it can't be used to kill players
           * * above 5x their pl. Was going to do 2x like
           * * DDD, but if I did that, it'd remove the challenge
           * * from Coolers. -- Islvin
           */
          if( victim->pl / ch->pl >= 2 )
          {
            dam = get_attmod( ch, victim ) * number_range( 5, 6 );
        act( AT_RED,
             "&RYou bow your head and clasp your hands together in prayer, praying with all your might for the power you need to defeat $N. A blinding, white holy light envelops your entire being as a powerful energy builds up within you.  You throw your arms wide, closing your legs, your whole body glowing like a white, flaming holy cross.  In a flash of pure power, the energy of god himself flows through you, within you, and then out of you as your blast explodes into $N, who seems UNAFFECTED. &W[$t]",
             ch, num_punct( dam ), victim, TO_CHAR );
        act( AT_RED,
             "&R$n bows $s head and clasps $s hands together in prayer, praying with all $s might for the power $e needs to defeat you. A blinding, white holy light envelops $n's entire being as a powerful energy builds up within $n.  $n throws $s arms wide, closing $s legs, $s whole body glowing like a white, flaming holy cross.  In a flash of pure power, the energy of god himself flows through $n, within $n, and then out of $n as $s blast explodes into you, but it is INEFFECTIVE. &W[$t]",
             ch, num_punct( dam ), victim, TO_VICT );
        act( AT_RED,
             "&R$n bows $s head and clasps $s hands together in prayer, praying with all $s might for the power $e needs to defeat $N. A blinding, white holy light envelops $n's entire being as a powerful energy builds up within $n.  $n throws $s arms wide, closing $s legs, $s whole body glowing like a white, flaming holy cross.  In a flash of pure power, the energy of god himself flows through $n, within $n, and then out of $n as $s blast explodes into $N who seems UNAFFECTED. &W[$t]",
             ch, num_punct( dam ), victim, TO_NOTVICT );
            learn_from_success( ch, gsn_wog );
            global_retcode = damage( ch, victim, dam, TYPE_HIT );
            break;
          }

/* Redo damage so it _is_ instant death
 * Melora
 * 	if (victim->max_hit >= victim->hit)
 * 		dam = victim->max_hit * 2;
 * 	else
 * 		dam = victim->hit * 2;
 */
          dam = 999999999;
        act( AT_RED,
             "&RYou bow your head and clasp your hands together in prayer, praying with all your might for the power you need to defeat $N. A blinding, white holy light envelops your entire being as a powerful energy builds up within you.  You throw your arms wide, closing your legs, your whole body glowing like a white, flaming holy cross.  In a flash of pure power, the energy of god himself flows through you, within you, and then out of you as your blast explodes into $N &zOBLITERATING THEM! &W[$t]",
             ch, num_punct( dam ), victim, TO_CHAR );
        act( AT_RED,
             "&R$n bows $s head and clasps $s hands together in prayer, praying with all $s might for the power $e needs to defeat you. A blinding, white holy light envelops $n's entire being as a powerful energy builds up within $n.  $n throws $s arms wide, closing $s legs, $s whole body glowing like a white, flaming holy cross.  In a flash of pure power, the energy of god himself flows through $n, within $n, and then out of $n as $s blast explodes into you &zOBLITERATING YOU! &W[$t]",
             ch, num_punct( dam ), victim, TO_VICT );
        act( AT_RED,
             "&R$n bows $s head and clasps $s hands together in prayer, praying with all $s might for the power $e needs to defeat $N. A blinding, white holy light envelops $n's entire being as a powerful energy builds up within $n.  $n throws $s arms wide, closing $s legs, $s whole body glowing like a white, flaming holy cross.  In a flash of pure power, the energy of god himself flows through $n, within $n, and then out of $n as $s blast explodes into $N &zOBLITERATING THEM! &W[$t]",
             ch, num_punct( dam ), victim, TO_NOTVICT );

          learn_from_success( ch, gsn_wog );
          global_retcode = damage( ch, victim, dam, TYPE_HIT );
          break;
        }
      default:
        dam = get_attmod( ch, victim ) * number_range( 95, 110 );
        if( ch->charge > 0 )
          dam = chargeDamMult( ch, dam );
        act( AT_RED,
             "&RYou bow your head and clasp your hands together in prayer, praying with all your might for the power you need to defeat $N. A blinding, white holy light envelops your entire being as a powerful energy builds up within you.  You throw your arms wide, closing your legs, your whole body glowing like a white, flaming holy cross.  In a flash of pure power, the energy of god himself flows through you, within you, and then out of you as your blast explodes into $N while leaving the surrounding area untouched. &W[$t]",
             ch, num_punct( dam ), victim, TO_CHAR );
        act( AT_RED,
             "&R$n bows $s head and clasps $s hands together in prayer, praying with all $s might for the power $e needs to defeat you. A blinding, white holy light envelops $n's entire being as a powerful energy builds up within $n.  $n throws $s arms wide, closing $s legs, $s whole body glowing like a white, flaming holy cross.  In a flash of pure power, the energy of god himself flows through $n, within $n, and then out of $n as $s blast explodes into you while leaving the surrounding area untouched. &W[$t]",
             ch, num_punct( dam ), victim, TO_VICT );
        act( AT_RED,
             "&R$n bows $s head and clasps $s hands together in prayer, praying with all $s might for the power $e needs to defeat $N. A blinding, white holy light envelops $n's entire being as a powerful energy builds up within $n.  $n throws $s arms wide, closing $s legs, $s whole body glowing like a white, flaming holy cross.  In a flash of pure power, the energy of god himself flows through $n, within $n, and then out of $n as $s blast explodes into $N while leaving the surrounding area untouched. &W[$t]",
             ch, num_punct( dam ), victim, TO_NOTVICT );

        learn_from_success( ch, gsn_wog );
        global_retcode = damage( ch, victim, dam, TYPE_HIT );
        break;
    }
  }
  else
  {
    act( AT_RED, "Your wrath of god missed $N.", ch, NULL, victim, TO_CHAR );
    act( AT_RED, "$n misses you with $s wrath of god.", ch, NULL, victim, TO_VICT );
    act( AT_RED, "$n missed $N with $s wrath of god.", ch, NULL, victim, TO_NOTVICT );
    learn_from_failure( ch, gsn_wog );
    global_retcode = damage( ch, victim, 0, TYPE_HIT );
  }
  ch->mana -= skill_table[gsn_wog]->min_mana;
  return;
}

void do_jday( CHAR_DATA * ch, char *argument )
{
  CHAR_DATA *victim;
  int dam = 0;

  if( IS_NPC( ch ) && is_split( ch ) )
  {
    if( !ch->master )
      return;
    if( !can_use_skill( ch->master, number_percent(  ), gsn_jday  ) )
      return;
  }

  if( IS_NPC( ch ) && IS_AFFECTED( ch, AFF_CHARM ) )
  {
    send_to_char( "You can't concentrate enough for that.\n\r", ch );
    return;
  }

  if( !IS_NPC( ch ) && ch->exp < skill_table[gsn_jday]->skill_level[ch->class] )
  {
    send_to_char( "You can't do that.\n\r", ch );
    return;
  }

  if( ( victim = who_fighting( ch ) ) == NULL )
  {
    send_to_char( "You aren't fighting anyone.\n\r", ch );
    return;
  }

  if( ch->mana < skill_table[gsn_jday]->min_mana )
  {
    send_to_char( "You don't have enough energy.\n\r", ch );
    return;
  }
  if( ch->focus < skill_table[gsn_jday]->focus )
  {
    send_to_char( "You need to focus more.\n\r", ch );
    return;
  }
  else
    ch->focus -= skill_table[gsn_jday]->focus;

  WAIT_STATE( ch, skill_table[gsn_jday]->beats );
  if( can_use_skill( ch, number_percent(  ), gsn_jday ) )
  {
    switch ( number_range( 1, 100 ) )
    {
      case 100:
      case 99:
      case 98:
      case 97:
      case 96:
        if( IS_NPC( victim ) || ( !IS_NPC( victim ) && ( !xIS_SET( ch->act, PLR_SPAR ) || !xIS_SET( ch->act, PLR_SPAR ) ) ) )
        {

          /*
           * Redone so it can't be used to kill players
           * * above 5x their pl. Was going to do 2x like
           * * DDD, but if I did that, it'd remove the challenge
           * * from Coolers. -- Islvin
           */
          if( victim->pl / ch->pl >= 2 )
          {
            dam = get_attmod( ch, victim ) * number_range( 5, 6 );
        act( AT_RED,
             "&rYour eyes turn jet black and the world around you seems to fade out, suddenly a man in armor stands behind $n and looks down upon $N.  &B'Your day has come!'&r he states, suddenly he swings his sword, cleaving $N's body and soul in half, then swings again and again, but $N is somehow UNAFFECTED!!&D &W[$t]",
             ch, num_punct( dam ), victim, TO_CHAR );
        act( AT_RED,
             "&r$n's eyes turn jet black and the world around you seems to fade out, suddenly a man in armor stands behind $n and looks down upon you.  &B'Your day has come!'&r he states, suddenly he swings his sword, cleaving your body and soul in half, then swings again and again, but you are somehow UNAFFECTED!!&D &W[$t]",
             ch, num_punct( dam ), victim, TO_VICT );
        act( AT_RED,
             "&r$n's eyes turn jet black and the world around you seems to fade out, suddenly a man in armor stands behind $n and looks down upon $N.  &B'Your day has come!'&r he states, suddenly he swings his sword, cleaving $N's body and soul in half, then swings again and again, but $N is somehow UNAFFECTED!!&D &W[$t]",
             ch, num_punct( dam ), victim, TO_NOTVICT );
            learn_from_success( ch, gsn_jday );
            global_retcode = damage( ch, victim, dam, TYPE_HIT );
            break;
          }

/* Redo damage so it _is_ instant death
 * Melora
 * 	if (victim->max_hit >= victim->hit)
 * 		dam = victim->max_hit * 2;
 * 	else
 * 		dam = victim->hit * 2;
 */
          dam = 999999999;
        act( AT_RED,
             "&rYour eyes turn jet black and the world around you seems to fade out, suddenly a man in armor stands behind $n and looks down upon $N.  &B'Your day has come!'&r he states, suddenly he swings his sword, cleaving $N's body and soul in half, then swings again and again, leaving nothing behind but free floating atoms.&D &W[$t]",
             ch, num_punct( dam ), victim, TO_CHAR );
        act( AT_RED,
             "&r$n's eyes turn jet black and the world around you seems to fade out, suddenly a man in armor stands behind $n and looks down upon you.  &B'Your day has come!'&r he states, suddenly he swings his sword, cleaving your body and soul in half, then swings again and again, leaving nothing behind but free floating atoms.&D &W[$t]",
             ch, num_punct( dam ), victim, TO_VICT );
        act( AT_RED,
             "&r$n's eyes turn jet black and the world around you seems to fade out, suddenly a man in armor stands behind $n and looks down upon $N.  &B'Your day has come!'&r he states, suddenly he swings his sword, cleaving $N's body and soul in half, then swings again and again, leaving nothing behind but free floating atoms.&D &W[$t]",
             ch, num_punct( dam ), victim, TO_NOTVICT );

          learn_from_success( ch, gsn_jday );
          global_retcode = damage( ch, victim, dam, TYPE_HIT );
          break;
        }
      default:
        dam = get_attmod( ch, victim ) * number_range( 100, 110 );
        if( ch->charge > 0 )
          dam = chargeDamMult( ch, dam );
        act( AT_RED,
             "&rYour eyes turn jet black and the world around you seems to fade out, suddenly a man in armor stands behind you and looks down upon $N.  &B'You have been judged'&r he states and swings his mighty sword, slashing it across $N's body.  Suddenly the world returns to normal but the pain still remains in $N.&D &W[$t]",
             ch, num_punct( dam ), victim, TO_CHAR );
        act( AT_RED,
             "&r$n's eyes turn jet black and the world around you seems to fade out, suddenly a man in armor stands behind $n and looks down upon you. &B'You have been judged'&r he states and swings his mighty sword, slashing it across your body.  Suddenly the world returns to normal but the pain still remains.&D &W[$t]",
             ch, num_punct( dam ), victim, TO_VICT );
        act( AT_RED,
             "&&r$n's eyes turn jet black and the world around you seems to fade out, suddenly a man in armor stands behind $n and looks down upon $N.  &B'You have been judged'&r he states and swings his mighty sword, slashing it across $N's body.  Suddenly the world returns to normal but the pain still remains in $N.&D&W[$t]",
             ch, num_punct( dam ), victim, TO_NOTVICT );

        learn_from_success( ch, gsn_jday );
        global_retcode = damage( ch, victim, dam, TYPE_HIT );
        break;
    }
  }
  else
  {
    act( AT_RED, "Your Judgement Day missed $N.", ch, NULL, victim, TO_CHAR );
    act( AT_RED, "$n misses you with $s judgement day.", ch, NULL, victim, TO_VICT );
    act( AT_RED, "$n missed $N with $s judgement day.", ch, NULL, victim, TO_NOTVICT );
    learn_from_failure( ch, gsn_jday );
    global_retcode = damage( ch, victim, 0, TYPE_HIT );
  }
  ch->mana -= skill_table[gsn_jday]->min_mana;
  return;
}