private void CharacterAnalyzer(CombatData combat, List<LogEntry> log) { var allSources = log.DistinctSources(); var allTargets = log.DistinctTargets(); var allCharacters = allSources.Union(allTargets).Distinct(); foreach (var character in allCharacters) { var metrics = new CharacterData(); combat.Characters.Add(character, metrics); CombatAnalyzer(metrics.AsSource, log.WithSource(character)); CombatAnalyzer(metrics.AsTarget, log.WithTarget(character)); } }