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.
58 lines
2.1 KiB
Plaintext
58 lines
2.1 KiB
Plaintext
/*
|
|
13/02/19 by Stratovarius
|
|
|
|
Black Fire. OnHB
|
|
|
|
Apprentice, Dark Terrain
|
|
Level/School: 2nd/Evocation [Cold]
|
|
Range: Close (25 ft. + 5 ft./2 levels)
|
|
Area: Wall of Black Flame
|
|
Duration: 1 round/level
|
|
Saving Throw: Reflex negates
|
|
Spell Resistance: Yes
|
|
|
|
You open a conduit to the Plane of Shadow, drawing its elements into the world and igniting a black fire on the ground.
|
|
|
|
You create a shadowy curtain of black flame that covers the affected squares. The fire deals 1d6 points of cold damage per two caster levels, Reflex negates.
|
|
*/
|
|
|
|
#include "shd_inc_shdfunc"
|
|
|
|
void main()
|
|
{
|
|
if (!GetIsObjectValid(GetAreaOfEffectCreator()))
|
|
{
|
|
DestroyObject(OBJECT_SELF);
|
|
return;
|
|
}
|
|
|
|
//Declare major variables
|
|
object oShadow = GetAreaOfEffectCreator();
|
|
struct mystery myst = GetLocalMystery(oShadow, MYST_HOLD_MYST+"1");
|
|
int nDice = myst.nShadowcasterLevel/2;
|
|
|
|
//Capture the first target object in the shape.
|
|
object oTarget = GetFirstInPersistentObject(OBJECT_SELF, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
|
|
while(GetIsObjectValid(oTarget))
|
|
{
|
|
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oShadow))
|
|
{
|
|
//Make SR check, and appropriate saving throw(s).
|
|
if(!PRCDoResistSpell(oShadow, oTarget, myst.nPen) || myst.bIgnoreSR)
|
|
{
|
|
int nDamage = MetashadowsDamage(myst, 6, nDice);
|
|
|
|
// Yes, it's reflex negates, not half
|
|
if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, myst.nSaveDC, SAVING_THROW_TYPE_COLD))
|
|
{
|
|
// Apply effects to the currently selected target.
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_COLD), oTarget);
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_M_PURPLE), oTarget);
|
|
}
|
|
}
|
|
}
|
|
//Select the next target within the spell shape.
|
|
oTarget = GetNextInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
|
|
}
|
|
}
|