//////////////////////////////////////////////////////////
// Flash Pellet
// sp_flashpllt.nss
/////////////////////////////////////////////////////////
/*
Flash Pellet: This tiny brittle object is often disguised
as a button or other decoration. You can throw a flash
pellet as a ranged attack with a range increment of 5
feet. When thrown against a hard surface, it bursts with
a bright flash of light. All creatures within a 5-foot-radius
burst must succeed on a DC 15 Fortitude save or be
blinded for 1 round and dazzled for 1 round after that.*/

#include "prc_inc_spells"

void main()
{
        location lLoc = PRCGetSpellTargetLocation();
        effect eVis = EffectVisualEffect(VFX_IMP_SUPER_HEROISM);
        effect eImp = EffectVisualEffect(VFX_IMP_BLIND_DEAF_M );
        effect eBlind = EffectBlindness();
        
        // -1 attack, search, and spot
        effect eDazzle = EffectDazzle();
        
        //Explosion vis
        ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, lLoc);
        
        object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(5.0), lLoc, TRUE, OBJECT_TYPE_CREATURE);
        
        while(GetIsObjectValid(oTarget))
        {                
                if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, 15, SAVING_THROW_TYPE_NONE))
                {
                        ApplyEffectToObject(DURATION_TYPE_INSTANT, eImp, oTarget);
                        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBlind, oTarget, RoundsToSeconds(1));
                        DelayCommand(RoundsToSeconds(1), ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDazzle, oTarget, RoundsToSeconds(1)));
                }
                oTarget = MyNextObjectInShape(SHAPE_SPHERE, FeetToMeters(5.0), lLoc, TRUE, OBJECT_TYPE_CREATURE);
        }
}