public override IEnumerator BeforeFlipCardImmediateResponse(FlipCardAction flip) { CardSource cardSource = flip.CardSource; if (cardSource == null && flip.ActionSource != null) { cardSource = flip.ActionSource.CardSource; } if (cardSource == null) { cardSource = base.GetCardSource(); } if (!flip.CardToFlip.Card.IsFlipped) { IEnumerator coroutine = base.GameController.RemoveTarget(base.Card, cardSource: cardSource); if (base.UseUnityCoroutines) { yield return(base.GameController.StartCoroutine(coroutine)); } else { base.GameController.ExhaustCoroutine(coroutine); } } yield break; }
//private ITrigger heroPlayedTrigger; //private ITrigger heroUsedPowerTrigger; private IEnumerator SelfDestructResponse(FlipCardAction fca) { // "When {Momentum} flips, each player discards 1 card." IEnumerator discardCoroutine = base.GameController.EachPlayerDiscardsCards(1, 1, cardSource: GetCardSource()); if (base.UseUnityCoroutines) { yield return(this.GameController.StartCoroutine(discardCoroutine)); } else { this.GameController.ExhaustCoroutine(discardCoroutine); } // "Then, destroy this card." IEnumerator destroyCoroutine = base.DestroyThisCardResponse(fca); if (base.UseUnityCoroutines) { yield return(this.GameController.StartCoroutine(destroyCoroutine)); } else { this.GameController.ExhaustCoroutine(destroyCoroutine); } yield break; }
//When a {Tiamat} head is destroyed, flip her. public override IEnumerator DestroyAttempted(DestroyCardAction destroyCard) { FlipCardAction action = new FlipCardAction(base.GameController, this, false, false, destroyCard.ActionSource); IEnumerator coroutine = base.DoAction(action); if (base.UseUnityCoroutines) { yield return(base.GameController.StartCoroutine(coroutine)); } else { base.GameController.ExhaustCoroutine(coroutine); } yield break; }
private IEnumerator SelfDestructResponse(FlipCardAction fca) { // "When {Momentum} flips to its "Under Pressure" side, destroy this card and play the top card of the villain deck." IEnumerator destroyCoroutine = base.GameController.DestroyCard(this.DecisionMaker, this.Card, optional: false, postDestroyAction: () => base.PlayTheTopCardOfTheVillainDeckResponse(fca), actionSource: fca, responsibleCard: this.Card, cardSource: GetCardSource()); if (base.UseUnityCoroutines) { yield return(this.GameController.StartCoroutine(destroyCoroutine)); } else { this.GameController.ExhaustCoroutine(destroyCoroutine); } yield break; }
public override IEnumerator BeforeFlipCardImmediateResponse(FlipCardAction flip) { CardSource cardSource = flip.CardSource; if (cardSource == null && flip.ActionSource != null) { cardSource = flip.ActionSource.CardSource; } if (cardSource == null) { cardSource = GetCardSource(); } IEnumerator coroutine = base.GameController.RemoveTarget(base.Card, leavesPlayIfInPlay: true, cardSource); if (base.UseUnityCoroutines) { yield return(base.GameController.StartCoroutine(coroutine)); } else { base.GameController.ExhaustCoroutine(coroutine); } }
//override flip response to remove resetting token pools public override IEnumerator BeforeFlipCardImmediateResponse(FlipCardAction flip) { if (base.CardWithoutReplacements.IsFlipped) { yield break; } IEnumerable <Card> enumerable = from c in base.TurnTakerControllerWithoutReplacements.TurnTaker.GetAllCards() where c.Location.IsEnvironment && (c.Location.IsDeck || c.Location.IsTrash) select c; if (enumerable.Count() > 0) { IEnumerator coroutine = RemoveCardsFromGame(enumerable); if (base.UseUnityCoroutines) { yield return(base.GameController.StartCoroutine(coroutine)); } else { base.GameController.ExhaustCoroutine(coroutine); } } if (base.CardWithoutReplacements.IsTarget) { RemoveTargetAction action = new RemoveTargetAction(base.GameController, base.CardWithoutReplacements); IEnumerator coroutine2 = DoAction(action); if (base.UseUnityCoroutines) { yield return(base.GameController.StartCoroutine(coroutine2)); } else { base.GameController.ExhaustCoroutine(coroutine2); } } if (base.TurnTakerControllerWithoutReplacements.IsIncapacitatedOrOutOfGame) { base.GameController.RemoveTriggers((ITrigger t) => t.CardSource != null && t.CardSource.CardController.TurnTakerControllerWithoutReplacements == base.TurnTakerControllerWithoutReplacements && !t.IsStatusEffect && !t.IsOutOfPlayTrigger && t.CardSource != null && (t.CardSource.CardController == this || !t.CardSource.Card.IsInPlayAndNotUnderCard)); IEnumerable <Card> cards = base.TurnTakerControllerWithoutReplacements.TurnTaker.GetAllCards(); List <Card> list = new List <Card>(); list.AddRange(cards.Where((Card c) => !c.IsHeroCharacterCard).SelectMany((Card c) => c.UnderLocation.Cards.Where((Card co) => co.Owner != base.TurnTakerControllerWithoutReplacements.TurnTaker))); if (base.TurnTakerControllerWithoutReplacements.TurnTaker.IsHero) { HeroTurnTaker heroTurnTaker = base.TurnTakerControllerWithoutReplacements.ToHero().HeroTurnTaker; list.AddRange(from c in heroTurnTaker.Hand.Cards.Union(heroTurnTaker.Deck.Cards).Union(heroTurnTaker.Trash.Cards) where c.Owner != base.TurnTakerControllerWithoutReplacements.TurnTaker select c); } foreach (Card item in list) { MoveCardDestination trashDestination = FindCardController(item).GetTrashDestination(); IEnumerator coroutine3 = base.GameController.MoveCard(base.TurnTakerController, item, trashDestination.Location, trashDestination.ToBottom); if (base.UseUnityCoroutines) { yield return(base.GameController.StartCoroutine(coroutine3)); } else { base.GameController.ExhaustCoroutine(coroutine3); } } if (base.Game.IsOblivAeonMode) { IEnumerable <Card> enumerable2 = FindCardsWhere((Card c) => c.IsObjective && c.IsInLocation(base.TurnTakerControllerWithoutReplacements.TurnTaker.PlayArea)); Log.Debug("Objectives: " + enumerable2.ToRecursiveString()); if (enumerable2.Count() > 0) { TurnTaker turnTaker = FindTurnTakersWhere((TurnTaker tt) => tt.Identifier == "OblivAeon", ignoreBattleZone: true).FirstOrDefault(); IEnumerator coroutine4 = base.GameController.BulkMoveCards(base.TurnTakerController, enumerable2, turnTaker.FindSubDeck("MissionDeck"), toBottom: true, performBeforeDestroyActions: true, null, isDiscard: false, GetCardSource()); if (base.UseUnityCoroutines) { yield return(base.GameController.StartCoroutine(coroutine4)); } else { base.GameController.ExhaustCoroutine(coroutine4); } } IEnumerable <Card> enumerable3 = FindCardsWhere((Card c) => c.DoKeywordsContain("reward", evenIfUnderCard: true, evenIfFaceDown: true) && !c.IsOutOfGame && c.Owner == base.TurnTakerControllerWithoutReplacements.TurnTaker && (!c.IsUnderCard || !c.Location.OwnerCard.IsIncapacitated), realCardsOnly: false, null, ignoreBattleZone: true); if (enumerable3.Count() > 0) { IEnumerator coroutine5 = base.GameController.BulkMoveCards(base.TurnTakerController, enumerable3, base.Card.UnderLocation); if (base.UseUnityCoroutines) { yield return(base.GameController.StartCoroutine(coroutine5)); } else { base.GameController.ExhaustCoroutine(coroutine5); } } } IEnumerator coroutine6 = RemoveCardsFromGame(cards); if (base.UseUnityCoroutines) { yield return(base.GameController.StartCoroutine(coroutine6)); } else { base.GameController.ExhaustCoroutine(coroutine6); } IEnumerator coroutine7 = base.GameController.UpdateTurnPhasesForTurnTaker(base.TurnTakerControllerWithoutReplacements, incapacitated: true); if (base.UseUnityCoroutines) { yield return(base.GameController.StartCoroutine(coroutine7)); } else { base.GameController.ExhaustCoroutine(coroutine7); } } else { RemoveAllTriggers(); } }