public string Attack(string[] args)
    {
        var attackerName = args[0];
        var receiverName = args[1];

        var attackerCharacter = party.FirstOrDefault(c => c.Name == attackerName);

        ExceptionTracker.DoesCharacterExist(attackerCharacter, attackerName);

        var receiverCharacter = party.FirstOrDefault(c => c.Name == receiverName);

        ExceptionTracker.DoesCharacterExist(receiverCharacter, receiverName);

        ExceptionTracker.AttackableCharacter(attackerCharacter);

        ((Warrior)attackerCharacter).Attack(receiverCharacter);

        var output = $"{attackerName} attacks {receiverName} for {attackerCharacter.AbilityPoints} hit points!" +
                     $" {receiverName} has {receiverCharacter.Health}/{receiverCharacter.BaseHealth} HP " +
                     $"and {receiverCharacter.Armor}/{receiverCharacter.BaseArmor} AP left!";

        if (!receiverCharacter.IsAlive)
        {
            output += $"\n{receiverCharacter.Name} is dead!";
        }

        return(output);
    }