ACR_CreatureBehavior.CreatureObject.TryRemoveStatusAfflictions C# (CSharp) Method

TryRemoveStatusAfflictions() public method

This will look for status afflictions that need healing.
public TryRemoveStatusAfflictions ( CreatureObject HealTarget ) : bool
HealTarget CreatureObject The target to be healed
return bool
        public bool TryRemoveStatusAfflictions(CreatureObject HealTarget)
        {
            if (HealTarget.Confused || HealTarget.Insane || HealTarget.Frightened || HealTarget.Paralyzed || HealTarget.AbilityDamaged || HealTarget.Diseased ||
                HealTarget.Blinded || HealTarget.Deaf || HealTarget.Poisoned)
            {
                if (Script.GetHasSpell(CLRScriptBase.SPELL_HEAL, ObjectId) == CLRScriptBase.TRUE)
                {
                    Script.ActionUseTalentOnObject(Script.TalentSpell(CLRScriptBase.SPELL_HEAL), HealTarget.ObjectId);
                    return true;
                }
                else
                {
                    if (HealTarget.AbilityDamaged)
                    {
                        if (Script.GetHasSpell(CLRScriptBase.SPELL_LESSER_RESTORATION, ObjectId) == CLRScriptBase.TRUE &&
                            Script.GetHasSpell(CLRScriptBase.SPELL_RESTORATION, ObjectId) == CLRScriptBase.FALSE &&
                            Script.GetHasSpell(CLRScriptBase.SPELL_GREATER_RESTORATION, ObjectId) == CLRScriptBase.FALSE)
                        {
                            Script.ActionUseTalentOnObject(Script.TalentSpell(CLRScriptBase.SPELL_LESSER_RESTORATION), HealTarget.ObjectId);
                            return true;
                        }
                    }
                    if (HealTarget.Diseased)
                    {
                        if (Script.GetHasSpell(CLRScriptBase.SPELL_LESSER_RESTORATION, ObjectId) == CLRScriptBase.TRUE)
                        {
                            Script.ActionUseTalentOnObject(Script.TalentSpell(CLRScriptBase.SPELL_REMOVE_DISEASE), HealTarget.ObjectId);
                            return true;
                        }
                    }
                    if (HealTarget.Blinded || HealTarget.Deaf)
                    {
                        if (Script.GetHasSpell(CLRScriptBase.SPELL_REMOVE_BLINDNESS_AND_DEAFNESS, ObjectId) == CLRScriptBase.TRUE)
                        {
                            Script.ActionUseTalentOnObject(Script.TalentSpell(CLRScriptBase.SPELL_REMOVE_BLINDNESS_AND_DEAFNESS), HealTarget.ObjectId);
                            return true;
                        }
                    }
                    if (HealTarget.Poisoned)
                    {
                        if (Script.GetHasSpell(CLRScriptBase.SPELL_NEUTRALIZE_POISON, ObjectId) == CLRScriptBase.TRUE)
                        {
                            Script.ActionUseTalentOnObject(Script.TalentSpell(CLRScriptBase.SPELL_NEUTRALIZE_POISON), HealTarget.ObjectId);
                            return true;
                        }
                    }
                }
            }
            if (HealTarget.Petrified)
            {
                if (Script.GetHasSpell(CLRScriptBase.SPELL_STONE_TO_FLESH, ObjectId) == CLRScriptBase.TRUE)
                {
                    Script.ActionUseTalentOnObject(Script.TalentSpell(CLRScriptBase.SPELL_STONE_TO_FLESH), HealTarget.ObjectId);
                    return true;
                }
            }
            if ((HealTarget.AbilityDrained || HealTarget.LevelDrain) ||
                (HealTarget.AbilityDamaged && Script.GetHasSpell(CLRScriptBase.SPELL_LESSER_RESTORATION, ObjectId) == CLRScriptBase.FALSE))
            {
                if (Script.GetHasSpell(CLRScriptBase.SPELL_RESTORATION, ObjectId) == CLRScriptBase.TRUE)
                {
                    Script.ActionUseTalentOnObject(Script.TalentSpell(CLRScriptBase.SPELL_RESTORATION), HealTarget.ObjectId);
                    return true;
                }
                else if (Script.GetHasSpell(CLRScriptBase.SPELL_GREATER_RESTORATION, ObjectId) == CLRScriptBase.FALSE)
                {
                    Script.ActionUseTalentOnObject(Script.TalentSpell(CLRScriptBase.SPELL_GREATER_RESTORATION), HealTarget.ObjectId);
                    return true;
                }
            }
            if (HealTarget.Cursed)
            {
                if (Script.GetHasSpell(CLRScriptBase.SPELL_REMOVE_CURSE, ObjectId) == CLRScriptBase.FALSE)
                {
                    Script.ActionUseTalentOnObject(Script.TalentSpell(CLRScriptBase.SPELL_REMOVE_CURSE), HealTarget.ObjectId);
                    return true;
                }
            }
            if (HealTarget.Wounded)
            {
                int nMissingHitPoints = HealTarget.MaxHitPoints - HealTarget.CurrentHitPoints;
                if (nMissingHitPoints == 0) nMissingHitPoints = 1;
                if (TryToHeal(HealTarget, nMissingHitPoints))
                    return true;
            }
            return false;
        }