Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
77 lines
2.8 KiB
Plaintext
77 lines
2.8 KiB
Plaintext
/*
|
|
----------------
|
|
Inferno Blast
|
|
|
|
tob_dw_infrnblst.nss
|
|
----------------
|
|
|
|
01/11/07 by Stratovarius
|
|
*/ /** @file
|
|
|
|
Inferno Blast
|
|
|
|
Desert Wind (Strike) [Fire]
|
|
Level: Swordsage 9
|
|
Prerequisite: Five Desert Wind maneuvers
|
|
Initiation Action: 1 Full-round action
|
|
Range: 60ft.
|
|
Area: Burst
|
|
Duration: Instantaneous
|
|
Saving Throw: Reflex half
|
|
|
|
Hot winds swirl around you, and a faint aroma of brimstone sweeps over the area.
|
|
A flickering yellow aura surrounds you and grows in intensity, shedding tremendous
|
|
heat and light. Creatures around you stumble back from the heat. With a howling
|
|
roar, you unleash a hellish blast of fire that melts steel and warps stone.
|
|
|
|
You create a blast of fire that deals 100 damage to all creatures in the area.
|
|
This is a supernatural maneuver.
|
|
*/
|
|
|
|
#include "tob_inc_move"
|
|
#include "tob_movehook"
|
|
////#include "prc_alterations"
|
|
|
|
void main()
|
|
{
|
|
if (!PreManeuverCastCode())
|
|
{
|
|
// If code within the PreManeuverCastCode (i.e. UMD) reports FALSE, do not run this spell
|
|
return;
|
|
}
|
|
|
|
// End of Spell Cast Hook
|
|
|
|
object oInitiator = OBJECT_SELF;
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
struct maneuver move = EvaluateManeuver(oInitiator, oTarget);
|
|
|
|
if(move.bCanManeuver)
|
|
{
|
|
location lTarget = GetLocation(oInitiator);
|
|
int nDC = 19 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
|
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
|
|
//Get the first target in the radius around the caster
|
|
oTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(60.0), PRCGetSpellTargetLocation(), TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
|
|
while(GetIsObjectValid(oTarget))
|
|
{
|
|
if(oTarget != oInitiator)
|
|
{
|
|
SignalEvent(oTarget, EventSpellCastAt(oInitiator, GetSpellId()));
|
|
int nDamage = 100;
|
|
if (GetLocalInt(oInitiator, "DesertFire")) nDamage += d6();
|
|
//Run the damage through the various reflex save and evasion feats
|
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_FIRE);
|
|
if(nDamage > 0)
|
|
{
|
|
effect eFire = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
|
|
// Apply effects to the currently selected target.
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oTarget);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
|
}
|
|
}
|
|
//Get the next target in the specified area around the caster
|
|
oTarget = MyNextObjectInShape(SHAPE_SPHERE, FeetToMeters(60.0), PRCGetSpellTargetLocation(), TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
|
|
}
|
|
}
|
|
} |