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.
87 lines
3.3 KiB
Plaintext
87 lines
3.3 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Name Hellfire
|
|
//:: FileName sp_hellfire.nss
|
|
//:://////////////////////////////////////////////
|
|
/**@file Hellfire
|
|
Evocation [Evil]
|
|
Level: Diabolic 4
|
|
Components: V, S
|
|
Casting Time: 1 action
|
|
Range: Close (25 ft. + 5 ft./2 levels)
|
|
Area: 5-ft.-radius spread
|
|
Duration: Instantaneous
|
|
Saving Throw: None
|
|
Spell Resistance: Yes
|
|
|
|
The caster creates a small explosion of brimstone
|
|
and fire that deals 3d6 points of special diabolic
|
|
fire damage. The diabolic flames are not subject
|
|
to being reduced by protection from elements
|
|
(fire), fire shield (chill shield), or similar
|
|
magic.
|
|
|
|
Author: Tenjac
|
|
Created: 05/03/06
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_inc_spells"
|
|
|
|
|
|
void main()
|
|
{
|
|
object oPC = OBJECT_SELF;
|
|
location lLoc = PRCGetSpellTargetLocation();
|
|
effect eVis = EffectVisualEffect(806);
|
|
effect eExplode = EffectVisualEffect(VFX_FNF_HELLFIRE);
|
|
effect eDam;
|
|
int nCasterLvl = PRCGetCasterLevel(oPC);
|
|
int nDamage;
|
|
int nMetaMagic = PRCGetMetaMagicFeat();
|
|
float fDelay;
|
|
|
|
//Spellhook
|
|
if(!X2PreSpellCastCode()) return;
|
|
PRCSetSchool(SPELL_SCHOOL_EVOCATION);
|
|
|
|
//Apply the fireball explosion at the location captured above.
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lLoc);
|
|
|
|
//get initial oTarget
|
|
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
|
|
|
|
//damage loop
|
|
while(GetIsObjectValid(oTarget))
|
|
{
|
|
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
|
|
{
|
|
if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr()))
|
|
{
|
|
//Roll damage for each target
|
|
nDamage = d6(3);
|
|
|
|
//Resolve metamagic
|
|
if (nMetaMagic & METAMAGIC_MAXIMIZE)
|
|
{
|
|
nDamage = 18;
|
|
}
|
|
if (nMetaMagic & METAMAGIC_EMPOWER)
|
|
{
|
|
nDamage = nDamage + nDamage / 2;
|
|
}
|
|
nDamage += SpellDamagePerDice(oPC, 3);
|
|
//Set the damage effect
|
|
eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_DIVINE);
|
|
|
|
// Apply effects to the currently selected target.
|
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
|
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
|
}
|
|
}
|
|
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
|
|
}
|
|
|
|
//SPEvilShift(oPC);
|
|
PRCSetSchool();
|
|
} |