Ejemplo n.º 1
0
        private void DuringStaging(IQuestOutcome outcome)
        {
            if (NumberOfEncounterCardsToReveal == 0)
            {
                return;
            }

            for (var i = 1; i <= NumberOfEncounterCardsToReveal; i++)
            {
                if (Game.StagingArea.EncounterDeck.Cards.Count() == 0)
                {
                    Game.StagingArea.EncounterDeck.ShuffleDiscardPileIntoDeck();
                }

                Game.StagingArea.RevealEncounterCard();

                if (Game.StagingArea.RevealedEncounterCard != null)
                {
                    outcome.EncounterCardRevealed(Game.StagingArea.RevealedEncounterCard);
                }

                foreach (var cardInPlay in Game.GetCardsInPlayWithEffect <ICardInPlay, IDuringStaging>())
                {
                    foreach (var effect in cardInPlay.BaseCard.Text.Effects.OfType <IDuringStaging>())
                    {
                        effect.DuringStaging(outcome);
                    }
                }
            }
        }
Ejemplo n.º 2
0
            public void AfterQuestResolution(IQuestOutcome state)
            {
                if (!state.IsQuestSuccessful)
                {
                    return;
                }

                var cardInPlay = state.Game.GetCardInPlay <IAllyInPlay>(CardSource.Id);

                if (cardInPlay == null)
                {
                    return;
                }

                var controller = state.Game.GetController(CardSource.Id);

                if (controller == null)
                {
                    return;
                }

                controller.RemoveCardInPlay(cardInPlay);
                cardInPlay.Card.Owner.Hand.AddCards(new List <IPlayerCard> {
                    cardInPlay.Card
                });
            }
Ejemplo n.º 3
0
 private void AfterQuestResolution(IQuestOutcome outcome)
 {
     foreach (var cardInPlay in Game.GetCardsInPlayWithEffect <ICardInPlay, IAfterQuestResolution>())
     {
         foreach (var effect in cardInPlay.BaseCard.Text.Effects.OfType <IAfterQuestResolution>())
         {
             effect.AfterQuestResolution(outcome);
         }
     }
 }
Ejemplo n.º 4
0
 private void BeforeStaging(IQuestOutcome outcome)
 {
     foreach (var cardInPlay in Game.GetCardsInPlayWithEffect <ICardInPlay, IBeforeStaging>())
     {
         foreach (var effect in cardInPlay.BaseCard.Text.Effects.OfType <IBeforeStaging>())
         {
             effect.BeforeStaging(outcome);
         }
     }
 }
Ejemplo n.º 5
0
        private void DuringQuestResolution(IQuestOutcome outcome)
        {
            var committedCharacters = GetAllCharactersCommittedToQuest();
            var threateningCards    = Game.StagingArea.CardsInStagingArea.OfType <IThreateningInPlay>();
            var totalWillpower      = (uint)committedCharacters.Sum(x => x.Willpower);
            var totalThreat         = (uint)threateningCards.Sum(x => x.Threat);

            outcome.Resolve(totalWillpower, totalThreat);

            foreach (var cardInPlay in Game.GetCardsInPlayWithEffect <ICardInPlay, IDuringQuestResolution>())
            {
                foreach (var effect in cardInPlay.BaseCard.Text.Effects.OfType <IDuringQuestResolution>())
                {
                    effect.DuringQuestResolution(outcome);
                }
            }

            var questResolution       = new QuestResolutionEffect(Game, outcome);
            var questResolutionHandle = questResolution.GetHandle(Game);

            Game.TriggerEffect(questResolutionHandle);
        }
 public QuestResolutionEffect(IGame game, IQuestOutcome outcome)
     : base("Quest Resolution", "Compare the combined willpower of committed characters against the combined threat of all cards in the staging area", game)
 {
     this.outcome = outcome;
 }
 public QuestResolutionEffect(IGame game, IQuestOutcome outcome)
     : base("Quest Resolution", "Compare the combined willpower of committed characters against the combined threat of all cards in the staging area", game)
 {
     this.outcome = outcome;
 }
Ejemplo n.º 8
0
            public void AfterQuestResolution(IQuestOutcome state)
            {
                if (!state.IsQuestSuccessful)
                    return;

                var cardInPlay = state.Game.GetCardInPlay<IAllyInPlay>(CardSource.Id);
                if (cardInPlay == null)
                    return;

                var controller = state.Game.GetController(CardSource.Id);
                if (controller == null)
                    return;

                controller.RemoveCardInPlay(cardInPlay);
                cardInPlay.Card.Owner.Hand.AddCards(new List<IPlayerCard> { cardInPlay.Card });
            }