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); }