Further file organization
Further file organization
This commit is contained in:
59
nwn/nwnprc/trunk/newspellbook/shd_myst_echospl.nss
Normal file
59
nwn/nwnprc/trunk/newspellbook/shd_myst_echospl.nss
Normal file
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
16/02/19 by Stratovarius
|
||||
|
||||
Echo Spell
|
||||
|
||||
Initiate, Black Magic
|
||||
Level/School: 5th/Universal
|
||||
Range: Close (25 ft. + 5 ft./2 levels)
|
||||
Effect: Repeat a previously cast spell or mystery
|
||||
Duration: See text
|
||||
Saving Throw: See text Spell
|
||||
Resistance: See text
|
||||
Even as you recoil from your enemy<6D>s spell, you reach into the Plane of Shadow and draw forth the spiritual reflection of that spell.
|
||||
With a grin, you manifest it in the physical world and hurl it back at him.
|
||||
|
||||
You can <20>echo<68> a mystery or spell cast by anyone other than yourself, causing it to remanifest under your control. Both the caster
|
||||
and the effect must have been within echo spell<6C>s range, and the entire casting must have occurred in the previous round. You choose
|
||||
the mystery or spell<6C>s target, and make any other choices involved in casting it. You cast the mystery or spell using your mystery
|
||||
user level (use your Cha modifier to determine the mystery or spell<6C>s DC; its duration, saves, and the like are as normal for that
|
||||
spell). You cannot echo a mystery or spell of a higher level than the highest-level mystery you can cast, and you can never echo a
|
||||
mystery or a spell of higher than 4th level.
|
||||
*/
|
||||
|
||||
#include "shd_inc_shdfunc"
|
||||
#include "shd_mysthook"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oShadow = OBJECT_SELF;
|
||||
int nMyst = PRCGetSpellId();
|
||||
|
||||
if(DEBUG) DoDebug("shd_myst_echospl: nMyst "+IntToString(nMyst));
|
||||
|
||||
if (GetLocalInt(oShadow, "EchoedSpell"))
|
||||
{
|
||||
int nSpellId = GetLocalInt(oShadow, "EchoedSpell");
|
||||
int nDC = 10 + StringToInt(Get2DACache("spells", "Innate", nSpellId)) + GetAbilityModifier(ABILITY_CHARISMA, oShadow);
|
||||
|
||||
if(DEBUG) DoDebug("shd_myst_echospl: Echo SpellId "+IntToString(nSpellId)+" at DC "+IntToString(nDC));
|
||||
|
||||
AssignCommand(oShadow, ActionCastSpell(nSpellId, GetShadowcasterLevel(oShadow), 0, nDC));
|
||||
}
|
||||
else
|
||||
{
|
||||
if(DEBUG) DoDebug("shd_myst_echospl: MYST_ECHO_SPELL");
|
||||
if(!ShadPreMystCastCode()) return;
|
||||
|
||||
object oTarget = PRCGetSpellTargetObject();
|
||||
struct mystery myst = EvaluateMystery(oShadow, oTarget, METASHADOW_NONE);
|
||||
|
||||
if(myst.bCanMyst)
|
||||
{
|
||||
if(DEBUG) DoDebug("shd_myst_echospl: MYST_ECHO_SPELL bCanMyst");
|
||||
SetLocalInt(oTarget, "EchoSpell", TRUE);
|
||||
SetLocalObject(oTarget, "EchoSpell", oShadow);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DIMENSIONANCHOR), oTarget);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user