/*
   ----------------
   Fog from the Void, Exit

   true_utr_fogvodc
   ----------------

    1/9/06 by Stratovarius
*/ /** @file

    Fog from the Void

    Level: Perfected Map 1
    Range: 100 feet
    Area: 20' Radius 
    Duration: 1 Minute
    Spell Resistance: No
    Save: None
    Metautterances: Extend

    At your words, moisture in the air and ground condenses into a thick mist.
    You create a thick, roiling cloud of fog like the fog cloud spell.
    If you add 10 to the DC of your Truespeak check, you can create a solid fog, as the spell.
*/

#include "true_inc_trufunc"
#include "true_utterhook"
//#include "prc_alterations"

void main()
{
    //Declare major variables
    //Get the object that is exiting the AOE
    object oTarget = GetExitingObject();
    int bValid = FALSE;
    effect eAOE;
    if(GetHasSpellEffect(UTTER_FOG_VOID_SOLID, oTarget) 
	|| GetHasSpellEffect(UTTER_FOG_VOID_CLOUD, oTarget)
	|| GetHasSpellEffect(SPELL_FOG_CLOUD, oTarget)
	|| GetHasSpellEffect(SPIRETOP_FOG_CLOUD_BREATH, oTarget))
    {
        //Search through the valid effects on the target.
        eAOE = GetFirstEffect(oTarget);
        while (GetIsEffectValid(eAOE) && bValid == FALSE)
        {
            if (GetEffectCreator(eAOE) == GetAreaOfEffectCreator())
            {
                    //If the effect was created by either half of Fog from the Void
                    if(GetEffectSpellId(eAOE) == UTTER_FOG_VOID_SOLID 
					|| GetEffectSpellId(eAOE) == UTTER_FOG_VOID_CLOUD 
					|| GetEffectSpellId(eAOE) == SPELL_FOG_CLOUD 
					|| GetEffectSpellId(eAOE) == SPIRETOP_FOG_CLOUD_BREATH)
                    {
                        RemoveEffect(oTarget, eAOE);
                        bValid = TRUE;
                    }
            }
            //Get next effect on the target
            eAOE = GetNextEffect(oTarget);
        }
    }
}

