protected CeladrochCelestialCardController(Card card, TurnTakerController turnTakerController, DamageType damageType, string partnerIdentifier) : base(card, turnTakerController) { _damageType = damageType; _partnerIdentifier = partnerIdentifier; SpecialStringMaker.ShowSpecialString(CelestialImmuneStatusString).Condition = () => Card.IsInPlayAndHasGameText; }
public FeedbackCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { AddThisCardControllerToList(CardControllerListType.ReplacesCards); AddThisCardControllerToList(CardControllerListType.ReplacesTurnTakerController); SpecialStringMaker.ShowHeroCharacterCardWithHighestHP(); }
public FacelessDuplicateCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { // If in play, show current play area SpecialStringMaker.ShowLocationOfCards(new LinqCardCriteria((Card c) => c == base.Card, base.Card.Title, useCardsSuffix: false), specifyPlayAreas: true).Condition = () => base.Card.IsInPlayAndHasGameText; SpecialStringMaker.ShowIfElseSpecialString(() => HasBeenSetToTrueThisTurn(OncePerTurn), () => base.Card.Title + " has redirected damage this turn.", () => base.Card.Title + " has not redirected damage this turn.").Condition = () => base.Card.IsInPlayAndHasGameText; }
public RelegatesNaosCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { SpecialStringMaker.ShowVillainTargetWithLowestHP(ranking: 1, numberOfTargets: 1); AllowFastCoroutinesDuringPretend = false; RunModifyDamageAmountSimulationForThisCard = false; }
public SecurityOfficerCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { AllowFastCoroutinesDuringPretend = false; SpecialStringMaker.ShowIfElseSpecialString(() => HasBeenSetToTrueThisTurn(OneStoragePerTurn), () => base.Card.Title + " has prevented damage to a Storage card this turn", () => base.Card.Title + " has not prevented damage to a Storage card this turn").Condition = () => base.Card.IsInPlayAndHasGameText; SpecialStringMaker.ShowIfElseSpecialString(() => HasBeenSetToTrueThisTurn(OneDevicePerTurn), () => base.Card.Title + " has prevented damage to a Device card this turn", () => base.Card.Title + " has not prevented damage to a Device card this turn").Condition = () => base.Card.IsInPlayAndHasGameText; }
public CeladrochCharacterCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { SpecialStringMaker.ShowTokenPool(base.CharacterCard.FindTokenPool(StormPoolIdentifier)).Condition = () => Card.IsInPlay && !Card.IsFlipped; SpecialStringMaker.ShowSpecialString(TopCardSpecialString, null, () => new[] { FindCeladrochsTopCard() }).Condition = () => Game.HasGameStarted && Card.IsInPlay && !Card.IsFlipped; SpecialStringMaker.ShowHeroTargetWithHighestHP(numberOfTargets: Game.H - 1).Condition = () => Card.IsInPlay && Card.IsFlipped; SpecialStringMaker.ShowIfElseSpecialString(() => Game.Journal.CardEntersPlayEntriesThisTurn().Any(e => e.Card.IsVillain), () => "A villain card has entered play this turn.", () => "A villain card has not entered play this turn.").Condition = () => Card.IsInPlay && Card.IsFlipped && Game.ActiveTurnTaker == TurnTaker; }
public MarkOfTheWrithingNightCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { SpecialStringMaker.ShowHeroCharacterCardWithHighestHP(); SpecialStringMaker.ShowHeroCharacterCardWithLowestHP(); SpecialStringMaker.ShowSpecialString(ShowHeroWithFewestCardsInPlay); SpecialStringMaker.ShowHeroWithMostCards(false); }
public RazorDartCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { // If in play, show current play area SpecialStringMaker.ShowLocationOfCards(new LinqCardCriteria((Card c) => c == base.Card, base.Card.Title, useCardsSuffix: false), specifyPlayAreas: true).Condition = () => base.Card.IsInPlayAndHasGameText; AddThisCardControllerToList(CardControllerListType.ModifiesKeywords); }
public TeryxCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { //This card is indestructible base.AddThisCardControllerToList(CardControllerListType.MakesIndestructible); SpecialStringMaker.ShowVillainTargetWithHighestHP(); }
public RevisionistHistoryCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { AddThisCardControllerToList(CardControllerListType.MakesIndestructible); SpecialStringMaker.ShowIfElseSpecialString(() => CardsUnder() == "1", () => "There is 1 card under " + base.Card.Title + ".", () => "There are " + CardsUnder() + " cards under " + base.Card.Title + ".", showInEffectsList: () => base.Card.IsInPlayAndHasGameText); SpecialStringMaker.ShowListOfCardsAtLocation(base.TurnTaker.OutOfGame, new LinqCardCriteria((Card c) => c.Owner == base.TurnTaker), showInEffectsList: () => base.Card.Location.IsOutOfGame).Condition = () => base.Card.Location.IsOutOfGame; }
public SoftwareUpdateCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { SpecialStringMaker.ShowListOfCardsAtLocation(base.TurnTaker.Deck, new LinqCardCriteria((Card c) => c.DoKeywordsContain("ongoing"), "Ongoing"), () => false); SpecialStringMaker.ShowListOfCardsAtLocation(base.TurnTaker.Trash, new LinqCardCriteria((Card c) => c.DoKeywordsContain("ongoing"), "Ongoing"), () => false); SpecialStringMaker.ShowListOfCardsInPlay(TargetWithOneHP(), () => false); }
public BatterCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { BasePoolIdentifier = base.Card.Identifier + "BasePool"; SpecialStringMaker.ShowTokenPool(base.Card.Identifier, BasePoolIdentifier); SpecialStringMaker.ShowHeroTargetWithHighestHP(); }
public EbonyNeedleCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { // If in play, show current play area SpecialStringMaker.ShowLocationOfCards(new LinqCardCriteria((Card c) => c == base.Card, base.Card.Title, useCardsSuffix: false), specifyPlayAreas: true).Condition = () => base.Card.IsInPlayAndHasGameText; SpecialStringMaker.ShowNumberOfCardsAtLocation(base.TurnTaker.Trash); }
public AllergicReactionCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { SpecialStringMaker.ShowSpecialString(() => "No damage types are currently [b]monitored.[/b]", showInEffectsList: () => true).Condition = () => base.Card.IsInPlayAndHasGameText && !GetMonitoredType().HasValue; SpecialStringMaker.ShowSpecialString(() => GetMonitoredType().ToString() + " damage is currently [b]monitored.[/b]", showInEffectsList: () => true).Condition = () => base.Card.IsInPlayAndHasGameText && GetMonitoredType().HasValue; SpecialStringMaker.ShowIfElseSpecialString(() => FindCardsWhere(new LinqCardCriteria((Card c) => c.NextToLocation.Cards.Where((Card x) => x.DoKeywordsContain("antibody")).Count() > 1), visibleToCard: GetCardSource()).Count() > 0, () => "There are " + FindCardsWhere(new LinqCardCriteria((Card c) => c.NextToLocation.Cards.Where((Card x) => x.DoKeywordsContain("antibody")).Count() > 1), visibleToCard: GetCardSource()).Count().ToString() + " targets with 2 or more Antibodies.", () => "There are no targets with 2 or more Antibodies.", () => false); }
protected StSimeonsGhostCardController(Card card, TurnTakerController turnTakerController, string[] affectedIdentifiers, bool flipIdentiferInPlayCondition = false) : base(card, turnTakerController) { this.AffectedIdentifiers = affectedIdentifiers; this.FlipIdentiferInPlayCondition = flipIdentiferInPlayCondition; base.AddThisCardControllerToList(CardControllerListType.ChangesVisibility); SpecialStringMaker.ShowSpecialString(() => BuildAffectedCardString()); }
public TorrentUtilityCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { if (base.Card.DoKeywordsContain("cluster")) { SpecialStringMaker.ShowSpecialString(() => base.Card.Title + " is already being destroyed.", () => false).Condition = () => base.Card.IsBeingDestroyed; } }
public DivertAttentionCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { base.SpecialStringMaker.ShowNumberOfCardsAtLocations(() => from httc in base.GameController.FindHeroTurnTakerControllers() where !httc.IsIncapacitatedOrOutOfGame select httc.TurnTaker.Trash); SpecialStringMaker.ShowListOfCardsInPlay(TargetWithOneHP()); }
public LearnFromHistoryCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { LinqCardCriteria divergence = new LinqCardCriteria((Card c) => c.DoKeywordsContain(DivergenceKeyword), "Divergence", true, false); SpecialStringMaker.ShowListOfCardsAtLocation(base.TurnTaker.Deck, divergence); SpecialStringMaker.ShowListOfCardsInPlay(divergence); }
public CryoRegulatorCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { // If in play, show current play area SpecialStringMaker.ShowLocationOfCards(new LinqCardCriteria((Card c) => c == base.Card, base.Card.Title, useCardsSuffix: false), specifyPlayAreas: true).Condition = () => base.Card.IsInPlayAndHasGameText; SpecialStringMaker.ShowSpecialString(() => base.Card.Title + " hasn't been activated since it entered play", showInEffectsList: () => base.Card.IsInPlayAndHasGameText && (!MostRecentChosen().HasValue || !activeOptions.Contains(MostRecentChosen().Value))).Condition = () => base.Card.IsInPlayAndHasGameText && (!MostRecentChosen().HasValue || !activeOptions.Contains(MostRecentChosen().Value)); SpecialStringMaker.ShowSpecialString(() => base.Card.Title + " is set to protect itself and targets in " + base.Card.Location.HighestRecursiveLocation.OwnerName + "'s play area from " + MostRecentChosen().Value.ToString() + " damage.", showInEffectsList: () => base.Card.IsInPlayAndHasGameText && MostRecentChosen().HasValue&& activeOptions.Contains(MostRecentChosen().Value)).Condition = () => base.Card.IsInPlayAndHasGameText && MostRecentChosen().HasValue&& activeOptions.Contains(MostRecentChosen().Value); }
public CampaignOfTerrorCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { LinqCardCriteria imperialTarget = new LinqCardCriteria((Card c) => c.IsTarget && c.DoKeywordsContain(AuthorityKeyword), "Imperial target", true); SpecialStringMaker.ShowNumberOfCardsAtLocation(base.TurnTaker.Trash, imperialTarget); SpecialStringMaker.ShowNumberOfCardsInPlay(imperialTarget); }
public MomentumCharacterCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { // Both sides: has Momentum flipped this turn? SpecialStringMaker.ShowIfElseSpecialString(() => Journal.WasCardFlippedThisTurn(base.Card), () => base.Card.Title + " has already flipped this turn.", () => base.Card.Title + " has not flipped this turn."); // Front side: 2 hero targets with highest HP SpecialStringMaker.ShowHeroTargetWithHighestHP(1, 2).Condition = () => !base.Card.IsFlipped; AddThisCardControllerToList(CardControllerListType.MakesIndestructible); }
public HydraNoxiousFireTiamatInstructionsCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController, "HydraInfernoTiamatCharacter", "HydraDecayTiamatCharacter", "ElementOfFire") { SpecialStringMaker.ShowSpecialString(() => "The heroes may not win the game.").Condition = () => !base.Card.IsFlipped; SpecialStringMaker.ShowNumberOfCards(new LinqCardCriteria((Card c) => c.DoKeywordsContain("head") && c.IsFlipped, "", useCardsSuffix: false, singular: "decapitated head", plural: "decapitated heads")).Condition = () => base.Card.IsFlipped; SpecialStringMaker.ShowHeroTargetWithHighestHP().Condition = () => !base.Card.IsFlipped; SpecialStringMaker.ShowHeroTargetWithHighestHP(ranking: 2).Condition = () => base.Card.IsFlipped && !FirstHeadCardController().Card.IsFlipped; SpecialStringMaker.ShowNumberOfCardsAtLocation(base.TurnTaker.Trash, new LinqCardCriteria((Card c) => c.Identifier == "AcidBreath", "acid breath")).Condition = () => base.Card.IsFlipped && FirstHeadCardController().Card.IsFlipped&& !SecondHeadCardController().Card.IsFlipped&& SecondHeadCardController().Card.IsInPlayAndNotUnderCard; }
public NarrowEscapeCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { SpecialStringMaker.ShowIfElseSpecialString(() => HasBeenSetToTrueThisTurn(OncePerTurn), () => base.Card.Title + " has already reduced damage this turn.", () => base.Card.Title + " has not yet reduced damage this turn."); SpecialStringMaker.ShowSpecialString(BuildBlockedSpecialString); SpecialStringMaker.ShowSpecialString(BuildNotBlockedSpecialString); SpecialStringMaker.ShowLowestHP(1, () => 2, new LinqCardCriteria((Card c) => c.IsHeroCharacterCard)); }
protected HydraTiamatInstructionsCardController(Card card, TurnTakerController turnTakerController, string firstHead, string secondHead, string element) : base(card, turnTakerController) { FirstHead = firstHead; SecondHead = secondHead; Element = element; SpecialStringMaker.ShowIfElseSpecialString(() => FirstHeadCardController().Card.IsFlipped, () => FirstHeadCardController().Card.Title + " is decapitated.", () => FirstHeadCardController().Card.Title + " is not decapitated.").Condition = () => !base.Card.IsFlipped; }
public NobilityOfDuskCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { var ss = SpecialStringMaker.ShowSpecialString(() => $"{Card.Title} can increase damage this turn."); ss.Condition = IsBuffAvailable; this.RunModifyDamageAmountSimulationForThisCard = false; }
public PreciseDeflectionCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { SpecialStringMaker.ShowIfElseSpecialString(() => HasBeenSetToTrueThisTurn(PreventDamageOncePerTurn), () => base.Card.Title + " has already prevented damage this turn.", () => base.Card.Title + " has not yet prevented damage this turn.", () => true); SpecialStringMaker.ShowLocationOfCards(new LinqCardCriteria((Card c) => IsRelay(c) && c.IsInPlayAndHasGameText && c.Location.IsHero), specifyPlayAreas: true).Condition = () => NumRelaysInHeroPlayAreas() > 0; SpecialStringMaker.ShowSpecialString(() => "There are no Relay cards in hero play areas.").Condition = () => NumRelaysInHeroPlayAreas() <= 0; AllowFastCoroutinesDuringPretend = false; }
public TheShelledOneCharacterCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { AddThisCardControllerToList(CardControllerListType.MakesIndestructible); AddThisCardControllerToList(CardControllerListType.ModifiesKeywords); SpecialStringMaker.ShowTokenPool(base.Card.Identifier, StrikePoolIdentifier).Condition = () => !base.Card.IsFlipped; SpecialStringMaker.ShowNumberOfCardsInPlay(new LinqCardCriteria((Card c) => c.IsVillainTarget && !c.IsCharacter, "non-character villain targets", false, false, "non-character villain target", "non-character villain targets")).Condition = () => base.Card.IsFlipped; SpecialStringMaker.ShowNumberOfCardsAtLocation(base.TurnTaker.Deck, new LinqCardCriteria((Card c) => c.DoKeywordsContain("weather effect"), "Weather Effect")).Condition = () => base.Card.IsFlipped; }
public CriticalHitCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { SpecialStringMaker.ShowNumberOfCardsAtLocation(this.HeroTurnTaker.Deck, new LinqCardCriteria(c => IsCritical(c), "critical")); this.AllowFastCoroutinesDuringPretend = false; this.RunModifyDamageAmountSimulationForThisCard = true; }
public CriticalMassCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { SpecialStringMaker.ShowNumberOfCardsAtLocations(() => new List <Location>() { base.TurnTaker.Deck, base.TurnTaker.Trash }, new LinqCardCriteria((Card c) => c.Identifier == "ChainReaction", "chain reaction")); SpecialStringMaker.ShowNumberOfCardsAtLocation(base.TurnTaker.Trash, new LinqCardCriteria((Card c) => c.Identifier == "UnstableIsotope", "unstable isotope")); }
public PhaseVillainCharacterCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController) { SpecialStringMaker.ShowNumberOfCardsInPlay(new LinqCardCriteria(c => IsObstacle(c), "obstacle")); if (base.Game.IsAdvanced) { base.SpecialStringMaker.ShowIfElseSpecialString(() => base.Game.Journal.DealDamageEntriesThisTurn().Where((DealDamageJournalEntry entry) => entry.TargetCard == base.CharacterCard).Any(), () => "Phase has been dealt damage this turn.", () => "Phase has not been dealt damage this turn."); } }