public IEnumerable <Card> SelectedTargets() { TargetEqualityComparer comparer = new TargetEqualityComparer(); IEnumerable <DealDamageJournalEntry> record = (from e in base.Journal.DealDamageEntriesThisTurnSinceCardWasPlayed(base.Card) where e.SourceCard != null && e.SourceCard != e.TargetCard select e); List <Card> damageDealers = (from e in record where e.SourceCard != null && e.SourceCard.IsInPlayAndHasGameText select e.SourceCard).Distinct(comparer).ToList(); if (damageDealers.Count() > 0) { List <Card> belligerentTargets = new List <Card>(); foreach (Card c in damageDealers) { int totalDamageDealt = (from e in record where e.SourceCard != null && TargetEqualityComparer.AreCardsTheSameTarget(e.SourceCard, c) select e.Amount).Sum(); if (totalDamageDealt >= base.H + 2) { belligerentTargets.Add(c); } } return(belligerentTargets); } else { return(new List <Card>()); } }
public string DamageDealtList() { TargetEqualityComparer comparer = new TargetEqualityComparer(); IEnumerable <DealDamageJournalEntry> record = (from e in base.Journal.DealDamageEntriesThisTurnSinceCardWasPlayed(base.Card) where e.SourceCard != null && e.SourceCard != e.TargetCard select e); List <Card> damageDealers = (from e in record where e.SourceCard != null && e.SourceCard.IsInPlayAndHasGameText select e.SourceCard).Distinct(comparer).ToList(); if (damageDealers.Count() > 0) { List <string> totals = new List <string>(); foreach (Card c in damageDealers) { totals.Add(string.Concat(str0: c.Title, str1: " has dealt other targets ", str3: " damage", str2: (from e in record where e.SourceCard != null && TargetEqualityComparer.AreCardsTheSameTarget(c, e.SourceCard) select e.Amount).Sum().ToString())); } return(totals.ToCommaList(useWordAnd: true) + " this turn."); } else { return("No targets have dealt damage to other targets this turn since " + base.Card.Title + " entered play."); } }