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