namespace Barotrauma.Abilities
{
    class CharacterAbilityApplyStatusEffectsToLastOrderedCharacter : CharacterAbilityApplyStatusEffects
    {
        public CharacterAbilityApplyStatusEffectsToLastOrderedCharacter(CharacterAbilityGroup characterAbilityGroup, ContentXElement abilityElement) : base(characterAbilityGroup, abilityElement)
        {
        }

        protected override void ApplyEffect()
        {
            if (IsViableTarget(Character.LastOrderedCharacter))
            {
                ApplyEffectSpecific(Character.LastOrderedCharacter);
            }
            if (Character.HasAbilityFlag(AbilityFlags.AllowSecondOrderedTarget) && IsViableTarget(Character.SecondLastOrderedCharacter))
            {
                ApplyEffectSpecific(Character.SecondLastOrderedCharacter);
            }
        }

        private bool IsViableTarget(Character targetCharacter)
        {
            if (targetCharacter == null || targetCharacter.Removed) { return false; }
            if (targetCharacter == Character) { return false; }
            return true;
        }
    }
}
