//:://////////////////////////////////////////////
//:: Change Shape - return to true form
//:: prc_chngshp_true
//:://////////////////////////////////////////////
/** @file
    Undoes any shifting that the character may
    have undergone. Also removes any polymorph
    effects.
    
    Note: Also attempts to clear old shifter style shifting.
    Depending on which one overrides, may need to change the
    order of the if statements.


    @author Shane Hennessy
    @date   Modified - 2006.10.08 - rewritten by Ornedan - modded by Fox
*/
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////

#include "prc_inc_shifting"
#include "pnp_shft_poly"
#include "prc_racial_const"

void main()
{
    object oPC = OBJECT_SELF;
	
	int nRace = GetRacialType(oPC);

    if(GetSpellId() == SPELL_IRDA_CHANGE_SHAPE_TRUE)
         IncrementRemainingFeatUses(oPC, FEAT_IRDA_CHANGE_SHAPE);

    //End treeshape
    if(GetHasSpellEffect(SPELL_TREESHAPE, oPC))
    {
        effect eVis;
        string sTag = "Tree" + GetName(oPC);
        object oTree = GetNearestObjectByTag(sTag, oPC);
        if(GetIsObjectValid(oTree))
            eVis = EffectVisualEffect(VFX_IMP_POLYMORPH);
        DestroyObject(oTree);

        PRCRemoveSpellEffects(SPELL_TREESHAPE, oPC, oPC);
        ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
    }

	// Aranea Alternate Form 
	PRCRemoveSpellEffects(1489, oPC, oPC);
	PRCRemoveSpellEffects(1490, oPC, oPC);
	PRCRemoveSpellEffects(1491, oPC, oPC);

    // Undead Wildshape
    PRCRemoveSpellEffects(2283, oPC, oPC);
    PRCRemoveSpellEffects(2284, oPC, oPC);
    PRCRemoveSpellEffects(2285, oPC, oPC);
    PRCRemoveSpellEffects(2286, oPC, oPC);
    PRCRemoveSpellEffects(2287, oPC, oPC);
    PRCRemoveSpellEffects(2288, oPC, oPC);   

    if(GetLocalInt(oPC, "AraneaHumanoidForm") == TRUE || GetLocalInt(oPC, "AraneaHybridForm") == TRUE || GetPersistantLocalInt(oPC, "nPCShifted") == TRUE || GetLocalInt(oPC, "shifting") == TRUE)
    {
        SetLocalInt(oPC, "AraneaBiteEquip", TRUE);
    }

    //clear old style shifting first
    if(GetLocalInt(oPC, "shifting"))
    {
        effect eFx = EffectVisualEffect(VFX_IMP_MAGICAL_VISION);
        ApplyEffectToObject(DURATION_TYPE_INSTANT,eFx,OBJECT_SELF);
        //re-use unshifter code from shifter instead
        //this will also remove complexities with lich/shifter characters
        SetShiftTrueForm(oPC);
    }
    // Attempt to unshift and if it fails, inform the user with a message so they don't wonder whether something is happening or not
    else if(UnShift(oPC, TRUE) == UNSHIFT_FAIL)
        FloatingTextStrRefOnCreature(16828383, oPC, FALSE); // "Failed to return to true form!"

    if(nRace==RACIAL_TYPE_ARANEA)
    {
        //string sResRef = "prc_ara_bite_";
        //int nSize = PRCGetCreatureSize(oPC);
        //primary weapon
        //sResRef += GetAffixForSize(nSize);
        //DelayCommand(0.5f, AddNaturalPrimaryWeapon(oPC, sResRef, 1, TRUE));
		
	DeleteLocalInt(oPC, "AraneaHumanoidForm");
	DeleteLocalInt(oPC, "AraneaHybridForm");
    }
}