//::///////////////////////////////////////////////
//:: Outsider Shape - Azer - Fire stream
//:: x2_s2_gwburn
//:: Copyright (c) 2003Bioware Corp.
//:://////////////////////////////////////////////
/*

  Azer shoot fire ability. The fire they breathe
  is natural, so there is no SR check against it

*/
//:://////////////////////////////////////////////
//:: Created By: Georg Zoeller
//:: Created On: July, 07, 2003
//:://////////////////////////////////////////////

#include "x2_inc_shifter"
void main()
{
    //--------------------------------------------------------------------------
    // Enforce artifical use limit on that ability
    //--------------------------------------------------------------------------
    /*    if (ShifterDecrementGWildShapeSpellUsesLeft() <1 )
    {
        FloatingTextStrRefOnCreature(83576, OBJECT_SELF);
        return;
    }
    */

    //--------------------------------------------------------------------------
    // Create VFX
    //--------------------------------------------------------------------------
    object oTarget = GetSpellTargetObject();
    int     nTouch = TouchAttackRanged(oTarget);
    effect eRay      = EffectBeam(444,OBJECT_SELF,BODY_NODE_CHEST,(nTouch == 0));
    effect eDur      = EffectVisualEffect(498);


    float fDelay = GetDistanceBetween(oTarget, OBJECT_SELF)/14;

    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eRay,oTarget,1.7f);
    SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));


    if (nTouch > 0)
    {
        int nDamage = d4( GetLevelByClass(CLASS_TYPE_SHIFTER,OBJECT_SELF)/3 ) + GetAbilityModifier(ABILITY_WISDOM,OBJECT_SELF);
        if (nTouch ==2)
        {
            nDamage += d4( GetLevelByClass(CLASS_TYPE_SHIFTER,OBJECT_SELF)/3 ) + GetAbilityModifier(ABILITY_WISDOM,OBJECT_SELF);
        }
        int nDC = ShifterGetSaveDC(OBJECT_SELF,SHIFTER_DC_NORMAL);
        nDamage = GetReflexAdjustedDamage(nDamage,oTarget,nDC,SAVING_THROW_TYPE_FIRE,OBJECT_SELF);
        effect eDamage = EffectDamage(nDamage,DAMAGE_TYPE_FIRE);
        effect eHit = EffectVisualEffect(VFX_IMP_FLAME_S);

        eHit = EffectLinkEffects(eDamage,eHit);
        DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eDur,oTarget,3.0f));
        DelayCommand(fDelay+0.3f,ApplyEffectToObject(DURATION_TYPE_INSTANT,eHit,oTarget,3.0f));
    }


}