PRC8/nwn/nwnprc/trunk/newspellbook/shd_myst_dskdwn.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
Updated AMS marker feats.  Removed arcane & divine marker feats.  Updated Dread Necromancer for epic progression. Updated weapon baseitem models.  Updated new weapons for crafting & npc equip.
 Updated prefix.  Updated release archive.
2024-02-11 14:01:05 -05:00

59 lines
2.0 KiB
Plaintext

/*
12/02/19 by Stratovarius
Dusk and Dawn
Apprentice, Shutters and Clouds
Level/School: 1st/Evocation
Range: Close (25 ft. + 5 ft./2 levels)
Area: 20-ft.-radius emanation centered on a point in space
Duration: 10 minutes/level (D)
Saving Throw: None
Spell Resistance: No
By drawing shade from the Plane of Shadow, or banishing the shadows back to it, you control the level of illumination in the area.
You make a dark area lighter or a light area darker, blanketing the affected area in shadowy illumination. Creatures with darkvision can see through this area normally.
*/
#include "shd_inc_shdfunc"
#include "shd_mysthook"
void main()
{
if(!ShadPreMystCastCode()) return;
object oShadow = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
struct mystery myst = EvaluateMystery(oShadow, oTarget, METASHADOW_EXTEND);
if(myst.bCanMyst)
{
location lTarget = PRCGetSpellTargetLocation();
myst.fDur = 600.0 * myst.nShadowcasterLevel;
if(myst.bExtend) myst.fDur *= 2;
if (myst.nMystId == MYST_DUSK_AND_DAWN_DAWN)
{
// Create AoE
myst.eLink = EffectAreaOfEffect(VFX_MOB_DAYLIGHT);
if (myst.bIgnoreSR) myst.eLink = SupernaturalEffect(myst.eLink);
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, myst.eLink, lTarget, myst.fDur);
}
else
{
effect eImpact = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_GREASE);
// Do impact VFX
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, lTarget);
// Create AoE
myst.eLink = EffectAreaOfEffect(AOE_PER_DUSK_AND_DAWN);
if (myst.bIgnoreSR) myst.eLink = SupernaturalEffect(myst.eLink);
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, myst.eLink, lTarget, myst.fDur);
myst.nPen = ShadowSRPen(oShadow, myst.nShadowcasterLevel);
myst.nSaveDC = GetShadowcasterDC(oShadow);
SetLocalMystery(oShadow, MYST_HOLD_MYST+"6", myst);
}
}
}