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.
66 lines
2.5 KiB
Plaintext
66 lines
2.5 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Name Frightful Presence
|
|
//:: FileName inv_dra_frtpres.nss
|
|
//::///////////////////////////////////////////////
|
|
/*
|
|
|
|
Lesser Invocation
|
|
3rd Level Spell
|
|
|
|
You can cast this invocation as a swift action. Any
|
|
enemies who are within 30' and fail a Will save are
|
|
shaken for 10 minutes. This is a mind-affecting
|
|
effect.
|
|
|
|
*/
|
|
//::///////////////////////////////////////////////
|
|
|
|
#include "inv_inc_invfunc"
|
|
#include "inv_invokehook"
|
|
|
|
void main()
|
|
{
|
|
if(!PreInvocationCastCode()) return;
|
|
|
|
//Declare major variables
|
|
object oCaster = OBJECT_SELF;
|
|
location lTarget = PRCGetSpellTargetLocation();
|
|
int CasterLvl = GetInvokerLevel(oCaster, GetInvokingClass());
|
|
int nPenetr = CasterLvl + SPGetPenetr();
|
|
int nDamage;
|
|
float fDuration = RoundsToSeconds(CasterLvl);
|
|
float fRange = FeetToMeters(30.0);
|
|
float fDelay;
|
|
|
|
effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S);
|
|
effect eShaken = EffectShaken();
|
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
|
//Link the shaken effects
|
|
effect eLink = EffectLinkEffects(eShaken, eDur);
|
|
|
|
//Get first target in the spell cone
|
|
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRange, lTarget, TRUE, OBJECT_TYPE_CREATURE, GetPosition(oCaster));
|
|
while(GetIsObjectValid(oTarget))
|
|
{
|
|
if(spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF)
|
|
&& MyPRCGetRacialType(oTarget)!= RACIAL_TYPE_DRAGON)
|
|
{
|
|
fDelay = GetDistanceBetween(oCaster, oTarget)/20;
|
|
//Fire cast spell at event for the specified target
|
|
SignalEvent(oTarget, EventSpellCastAt(oCaster, INVOKE_FRIGHTFUL_PRESENCE));
|
|
//Make SR Check
|
|
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay))
|
|
{
|
|
//Make a will save - if failed, shaken for 10 minutes
|
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, GetInvocationSaveDC(oTarget, oCaster), SAVING_THROW_TYPE_FEAR, oCaster, fDelay))
|
|
{
|
|
//Apply the linked effects and the VFX impact
|
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, TurnsToSeconds(10), TRUE, -1, CasterLvl));
|
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
|
}
|
|
}
|
|
}
|
|
//Get next target in the spell cone
|
|
oTarget = MyNextObjectInShape(SHAPE_SPHERE, fRange, lTarget, TRUE, OBJECT_TYPE_CREATURE, GetPosition(oCaster));
|
|
}
|
|
} |