void main()
{
        //effect eVisual = EffectVisualEffect(VFX_IMP_RESTORATION);
//        FloatingTextStringOnCreature("healplayer",OBJECT_SELF,TRUE);

        effect eBad = GetFirstEffect(OBJECT_SELF);
        if (GetIsDead(OBJECT_SELF))
        {
            ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),OBJECT_SELF);
        }


        //Search for negative effects
        while(GetIsEffectValid(eBad))
        {
            RemoveEffect(OBJECT_SELF, eBad);
            eBad = GetNextEffect(OBJECT_SELF);
        }
        //Fire cast spell at event for the specified target
        SignalEvent(OBJECT_SELF, EventSpellCastAt(OBJECT_SELF, SPELL_RESTORATION, FALSE));
        SignalEvent(OBJECT_SELF, EventSpellCastAt(OBJECT_SELF, SPELL_GREATER_RESTORATION, FALSE));
        SignalEvent(OBJECT_SELF, EventSpellCastAt(OBJECT_SELF, SPELL_REMOVE_CURSE, FALSE));
        //ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, OBJECT_SELF);
        ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(OBJECT_SELF)), OBJECT_SELF);
}