PRC8/nwn/nwnprc/trunk/epicspellscripts/ss_ep_strmmant.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

64 lines
2.5 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Storm Mantle
//:: tm_s0_epstrmmant.nss
//:://////////////////////////////////////////////
/*
Grants all within the casters party within a radius of 10
to receive a Greater Spell Mantle.
*/
//:://////////////////////////////////////////////
//:: Created By: Nron Ksr
//:: Created On: March 9, 2004
//:://////////////////////////////////////////////
#include "prc_alterations"
#include "inc_epicspells"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ABJURATION);
if( !X2PreSpellCastCode() )
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
return;
} // End of Spell Cast Hook
if (GetCanCastSpell(OBJECT_SELF, SPELL_EPIC_STORM_M))
{
//Declare major variables
object oTarget = GetFirstObjectInShape( SHAPE_SPHERE,
RADIUS_SIZE_HUGE, PRCGetSpellTargetLocation() );
effect eVis = EffectVisualEffect( VFX_DUR_SPELLTURNING );
effect eDur = EffectVisualEffect( VFX_DUR_CESSATE_POSITIVE );
int nDuration = GetTotalCastingLevel( OBJECT_SELF ); // Bone - changed
effect eImpact = EffectVisualEffect( VFX_FNF_LOS_NORMAL_20 );
ApplyEffectAtLocation( DURATION_TYPE_INSTANT, eImpact, PRCGetSpellTargetLocation() );
while( GetIsObjectValid(oTarget) )
{
if( spellsIsTarget(oTarget, SPELL_TARGET_ALLALLIES, OBJECT_SELF) )
{
//Link Effects are inside the IF to cause a d12 roll on each mantle
int nAbsorb = d12() + 10;
effect eAbsob = EffectSpellLevelAbsorption( 9, nAbsorb );
effect eLink = EffectLinkEffects( eVis, eAbsob );
eLink = EffectLinkEffects( eLink, eDur );
//Fire cast spell at event for the specified target
SignalEvent( oTarget, EventSpellCastAt(OBJECT_SELF,
SPELL_GREATER_SPELL_MANTLE, FALSE) );
PRCRemoveEffectsFromSpell( oTarget, GetSpellId() );
//Apply the VFX impact and effects
SPApplyEffectToObject( DURATION_TYPE_TEMPORARY, eLink,
oTarget, RoundsToSeconds(nDuration), TRUE, -1, GetTotalCastingLevel(OBJECT_SELF) );
}
oTarget = GetNextObjectInShape( SHAPE_SPHERE,
RADIUS_SIZE_HUGE, PRCGetSpellTargetLocation() );
}
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
}