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