///:://///////////////////////////////////////////// //:: [Fear] //:: [NW_S0_Fear.nss] //:: Copyright (c) 2000 Bioware Corp. //::////////////////////////////////////////////// //:: Causes an area of fear that reduces Will Saves //:: and applies the frightened effect. //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: April 23, 2001 //::////////////////////////////////////////////// //:: VFX Pass By: Preston W, On: June 20, 2001 //:: Update Pass By: Preston W, On: July 30, 2001 #include "X0_I0_SPELLS" #include "x2_inc_spellhook" void main() { /* Spellcast Hook Code Added 2003-06-20 by Georg If you want to make changes to all spells, check x2_inc_spellhook.nss to find out more */ if (!X2PreSpellCastCode()) { // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell return; } // End of Spell Cast Hook //Declare major variables int nCasterLevel = GetCasterLevel(OBJECT_SELF); int nMetaMagic = GetMetaMagicFeat(); float fDuration = RoundsToSeconds(nCasterLevel); int nDamage; effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S); effect eFear = EffectFrightened(); effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR); effect eImpact = EffectVisualEffect(VFX_FNF_LOS_NORMAL_20); effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); float fDelay; //Link the fear and mind effects effect eLink = EffectLinkEffects(eFear, eMind); eLink = EffectLinkEffects(eLink, eDur); object oTarget; //Check for metamagic extend if (nMetaMagic == METAMAGIC_EXTEND) { fDuration = fDuration * 2.0; //Duration is +100% } //Apply Impact ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetSpellTargetLocation()); //Get first target in the spell cone oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetSpellTargetLocation(), TRUE); while(GetIsObjectValid(oTarget)) { if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) { fDelay = GetRandomDelay(); //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FEAR)); //Make SR Check if(!MyResistSpell(OBJECT_SELF, oTarget, fDelay)) { //Make a will save if(!MySavingThrow(SAVING_THROW_WILL, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FEAR, OBJECT_SELF, fDelay)) { //Apply the linked effects and the VFX impact DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration)); } } } //Get next target in the spell cone oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetSpellTargetLocation(), TRUE); } }