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();
 }
Beispiel #3
0
 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;
 }
Beispiel #5
0
 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);
 }
Beispiel #8
0
 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;
 }
Beispiel #11
0
 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);
 }
Beispiel #12
0
 public BatterCardController(Card card, TurnTakerController turnTakerController)
     : base(card, turnTakerController)
 {
     BasePoolIdentifier = base.Card.Identifier + "BasePool";
     SpecialStringMaker.ShowTokenPool(base.Card.Identifier, BasePoolIdentifier);
     SpecialStringMaker.ShowHeroTargetWithHighestHP();
 }
Beispiel #13
0
 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);
 }
Beispiel #15
0
 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());
 }
Beispiel #16
0
 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);
 }
Beispiel #20
0
        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);
        }
Beispiel #21
0
 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));
 }
Beispiel #24
0
        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;
        }
Beispiel #25
0
        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;
 }
Beispiel #27
0
 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.");
            }
        }