示例#1
0
        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>());
            }
        }
示例#2
0
        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.");
            }
        }