#include "prc_alterations"

void main()
{
    object oPC = OBJECT_SELF;
    if (!GetLocalInt(oPC, "PierceShadows")) return;
    
    if (!GetHasFeat(FEAT_TURN_UNDEAD,oPC))  return;
    DecrementRemainingFeatUses(oPC,FEAT_TURN_UNDEAD);
    
    location lTarget = GetLocation(oPC);
    int nClass = GetLevelByClass(CLASS_TYPE_SHADOWBANE_INQUISITOR);
    float fRad = FeetToMeters(20.0 + 5.0 * nClass);

    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_LOS_HOLY_30), lTarget);
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DEATH_WARD), lTarget);

    effect eVis = EffectVisualEffect(VFX_IMP_DEATH);
    int nDamage;

    object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, fRad, lTarget, TRUE, OBJECT_TYPE_CREATURE );
    //Cycle through the targets within the spell shape until an invalid object is captured.
    while (GetIsObjectValid(oTarget))
    {
        if (oTarget != oPC)
        {
            effect eDeath = EffectDamage(d6(4), DAMAGE_TYPE_DIVINE, DAMAGE_POWER_ENERGY);
            effect eLink = EffectLinkEffects(eDeath, eVis);
            DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_INSTANT,eLink,oTarget));
        }
        //Select the next target within the spell shape.
        oTarget = GetNextObjectInShape(SHAPE_SPHERE, fRad, lTarget, TRUE, OBJECT_TYPE_CREATURE );
    }
}