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 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 CeladrochCelestialCardController(Card card, TurnTakerController turnTakerController, DamageType damageType, string partnerIdentifier) : base(card, turnTakerController)
        {
            _damageType        = damageType;
            _partnerIdentifier = partnerIdentifier;

            SpecialStringMaker.ShowSpecialString(CelestialImmuneStatusString).Condition = () => Card.IsInPlayAndHasGameText;
        }
Ejemplo n.º 5
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());
 }
 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));
 }
 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;
 }
Ejemplo n.º 9
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 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);
 }
Ejemplo n.º 11
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 SignalTapCardController(Card card, TurnTakerController turnTakerController)
     : base(card, turnTakerController)
 {
     AllowFastCoroutinesDuringPretend           = false;
     RunModifyDamageAmountSimulationForThisCard = false;
     SpecialStringMaker.ShowLocationOfCards(new LinqCardCriteria((Card c) => IsRelay(c) && c.IsInPlayAndHasGameText), specifyPlayAreas: true).Condition = () => NumRelaysInPlay() > 0;
     SpecialStringMaker.ShowSpecialString(() => "There are no Relay cards in play.").Condition = () => NumRelaysInPlay() <= 0;
     SpecialStringMaker.ShowSpecialString(() => "This card is in " + base.Card.Location.GetFriendlyName() + ".").Condition = () => base.Card.IsInPlayAndHasGameText;
     SpecialStringMaker.ShowListOfCardsAtLocationOfCard(base.Card, new LinqCardCriteria((Card c) => c.IsTarget, "target", useCardsSuffix: false, false, "target", "targets")).Condition = () => base.Card.IsInPlayAndHasGameText;
 }
        public TacticalRelocationCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController)
        {
            var query = GameController.HeroTurnTakerControllers.Select(httc => httc.HeroTurnTaker.Trash)
                        .Where(loc => loc.Cards.Any(IsEquipmentOrOngoing));
            var ss = SpecialStringMaker.ShowNumberOfCardsAtLocations(() => query, new LinqCardCriteria(c => IsEquipmentOrOngoing(c) && c.IsInTrash, "equipment or ongoing"));

            ss.Condition = () => GameController.HeroTurnTakerControllers.Any(httc => httc.HeroTurnTaker.Trash.Cards.Any(IsEquipmentOrOngoing));

            ss           = SpecialStringMaker.ShowSpecialString(() => "No hero's Trash has any equipment or ongoing cards");
            ss.Condition = () => GameController.HeroTurnTakerControllers.All(httc => !httc.HeroTurnTaker.Trash.Cards.Any(IsEquipmentOrOngoing));
        }
        protected CeladrochPillarCardController(Card card, TurnTakerController turnTakerController, TriggerType rewardType) : base(card, turnTakerController)
        {
            _rewards    = new CeladrochPillarRewards(H);
            _rewardType = rewardType;

            SpecialStringMaker.ShowSpecialString(RemainingRewardsSpecialString);
            SpecialStringMaker.ShowSpecialString(HpTilNextRewardSpecialString).Condition = () => _rewards.HpTillNextTrigger(Card.HitPoints.Value) > 0;

            //SpecialStringMaker.ShowSpecialString(() => $"DEBUG - Pending Triggers {GetCardPropertyJournalEntryInteger(PendingTriggersKey) ?? 0}");
            //SpecialStringMaker.ShowSpecialString(() => $"DEBUG - Completed Triggers {GetCardPropertyJournalEntryInteger(CompletedTriggersKey) ?? 0}");
        }
Ejemplo n.º 15
0
        public BattlefieldScavengerCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController)
        {
            var query = GameController.HeroTurnTakerControllers.Where(httc => httc.TurnTaker.Trash.Cards.Any(c => IsEquipment(c) || c.IsOngoing))
                        .Select(httc => httc.TurnTaker.Trash);
            var ss = SpecialStringMaker.ShowNumberOfCardsAtLocations(() => query, new LinqCardCriteria(c => IsEquipment(c) || c.IsOngoing, "equipment or ongoing"));

            ss.Condition = () => GameController.HeroTurnTakerControllers.Any(httc => httc.TurnTaker.Trash.Cards.Any(c => IsEquipment(c) || c.IsOngoing));

            ss           = SpecialStringMaker.ShowSpecialString(() => "No hero has has any equipment or ongoing cards in their trash.");
            ss.Condition = () => GameController.HeroTurnTakerControllers.All(httc => !httc.TurnTaker.Trash.Cards.Any(c => IsEquipment(c) || c.IsOngoing));
        }
Ejemplo n.º 16
0
        public ForewarnedCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController)
        {
            var query = GameController.HeroTurnTakerControllers.Select(httc => httc.HeroTurnTaker)
                        .Where(htt => htt.NumberOfCardsInHand < 3)
                        .Select(htt => htt.Hand);
            var ss = SpecialStringMaker.ShowNumberOfCardsAtLocations(() => query);

            ss.Condition = () => GameController.HeroTurnTakerControllers.Any(HeroTurnTakerController => HeroTurnTakerController.HeroTurnTaker.NumberOfCardsInHand < 3);

            ss           = SpecialStringMaker.ShowSpecialString(() => "No hero has fewer than 3 cards in hard");
            ss.Condition = () => GameController.HeroTurnTakerControllers.All(HeroTurnTakerController => HeroTurnTakerController.HeroTurnTaker.NumberOfCardsInHand >= 3);
        }
 public NightloreCouncilStarlightCharacterCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController)
 {
     SpecialStringMaker.ShowSpecialString(() => $"{terra.Title} is next to a constellation", relatedCards: () => new Card[] { terra }).Condition     = () => IsNextToConstellation(terra);
     SpecialStringMaker.ShowSpecialString(() => $"{asheron.Title} is next to a constellation", relatedCards: () => new Card[] { asheron }).Condition = () => IsNextToConstellation(asheron);
     SpecialStringMaker.ShowListOfCards(new LinqCardCriteria(
                                            (Card c) => (c == terra || c == asheron || c == cryos) &&
                                            c.NextToLocation.Cards.Any((Card nextTo) => nextTo.Identifier == "RetreatIntoTheNebula"),
                                            "",
                                            useCardsSuffix: false,
                                            singular: "Starlight being protected by Retreat into the Nebula",
                                            plural: "Starlights being protected by Retreat into the Nebula"))
     .Condition = () => FindCardsWhere(new LinqCardCriteria((Card c) => c.IsInPlayAndHasGameText && c.Identifier == "RetreatIntoTheNebula")).Any();
 }
Ejemplo n.º 18
0
 public BreakawayCharacterCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController)
 {
     // Display strings...
     // Front side: has Momentum been dealt damage this turn?
     SpecialStringMaker.ShowIfElseSpecialString(() => HasBeenSetToTrueThisTurn(momentumTakenDamage), () => "Momentum has already been dealt damage this turn.", () => "Momentum has not yet been dealt damage this turn.").Condition = () => !base.Card.IsFlipped;
     // Front side: what environment cards have dealt damage to Momentum this turn?
     SpecialStringMaker.ShowSpecialString(HitMomentumThisTurn).Condition = () => !base.Card.IsFlipped;
     // Back side: what is Momentum's current HP? What effects does that have?
     SpecialStringMaker.ShowSpecialString(DeadEndJobMomentumEffects).Condition = () => base.Card.IsFlipped;
     // Back side: has a hero card entered play this turn?
     SpecialStringMaker.ShowIfElseSpecialString(() => HasBeenSetToTrueThisTurn(heroCardEntered), () => "A hero card has already entered play this turn.", () => "A hero card has not yet entered play this turn.").Condition = () => base.Card.IsFlipped;
     // Back side: who are the 2 hero targets with the highest HP?
     SpecialStringMaker.ShowHeroTargetWithHighestHP(1, 2).Condition = () => base.Card.IsFlipped;
     // Back side, Advanced: if it's a hero turn, has Breakaway dealt damage this turn?
     SpecialStringMaker.ShowIfElseSpecialString(() => HasBeenSetToTrueThisTurn(dealtDamageHero), () => "Breakaway has already dealt damage this turn", () => "Breakaway has not yet dealt damage this turn", () => base.GameController.ActiveTurnTaker.IsHero).Condition = () => (base.Game.IsAdvanced && base.Card.IsFlipped);
 }
Ejemplo n.º 19
0
        public static SpecialString ShowHeroWithMostCardsInTrash(this SpecialStringMaker maker, LinqCardCriteria additionalCriteria = null, Func <bool> showInEffectsList = null)
        {
            CardController _cardController;
            var            p1 = maker.GetType().GetField(nameof(_cardController), System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

            _cardController = (CardController)p1.GetValue(maker);

            return(maker.ShowSpecialString(delegate
            {
                IEnumerable <TurnTaker> enumerable = _cardController.GameController.FindTurnTakersWhere((TurnTaker tt) => tt.IsHero && !tt.IsIncapacitatedOrOutOfGame, _cardController.BattleZone);
                List <string> list = new List <string>();
                int num = 0;
                foreach (HeroTurnTaker hero in enumerable)
                {
                    IEnumerable <Card> cardsWhere = hero.GetCardsWhere((Card c) => c.IsInTrash && c.Location.OwnerTurnTaker == hero);
                    List <Card> source = ((additionalCriteria == null) ? cardsWhere.ToList() : cardsWhere.Where(additionalCriteria.Criteria).ToList());
                    if (source.Count() > num)
                    {
                        list.RemoveAll((string htt) => true);
                        list.Add(hero.Name);
                        num = source.Count();
                    }
                    else if (source.Count() == num)
                    {
                        list.Add(hero.Name);
                    }
                }
                string text = list.Count().ToString_SingularOrPlural("Hero", "Heroes");
                string text2 = " in trash";
                string text3 = " cards";
                if (additionalCriteria != null)
                {
                    text3 = " " + additionalCriteria.GetDescription();
                }
                return (list.Count() > 0) ? string.Format("{0} with the most{3}{2}: {1}.", text, list.ToRecursiveString(), text2, text3) : "Warning: No heroes found";
            }, showInEffectsList));
        }
Ejemplo n.º 20
0
        public ConcussiveBurstCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController)
        {
            var ss = SpecialStringMaker.ShowSpecialString(() => $"{Card.Title} has been used this turn.");

            ss.Condition = () => Card.IsInPlayAndHasGameText && base.HasBeenSetToTrueThisTurn(TrackingKey);
        }
 public SignalFlareCardController(Card card, TurnTakerController turnTakerController)
     : base(card, turnTakerController)
 {
     SpecialStringMaker.ShowLocationOfCards(new LinqCardCriteria((Card c) => IsRelay(c) && c.IsInPlayAndHasGameText && !c.Location.IsHero), specifyPlayAreas: true).Condition = () => NumRelaysInNonHeroPlayAreas() > 0;
     SpecialStringMaker.ShowSpecialString(() => "There are no Relay cards in non-hero play areas.").Condition = () => NumRelaysInNonHeroPlayAreas() <= 0;
 }
 public IdleHandsCardController(Card card, TurnTakerController turnTakerController)
     : base(card, turnTakerController)
 {
     SpecialStringMaker.ShowLocationOfCards(new LinqCardCriteria((Card c) => IsRelay(c) && c.IsInPlayAndHasGameText), specifyPlayAreas: true).Condition = () => NumRelaysInPlay() > 0;
     SpecialStringMaker.ShowSpecialString(() => "There are no Relay cards in play.").Condition = () => NumRelaysInPlay() <= 0;
 }
Ejemplo n.º 23
0
        /*
         *  "When this card enters play, play the top card of the villain deck.",
         *              "Destroy this card when {Celadroch} is dealt 16 damage in a single round.",
         *              "When this card is destroyed, put all targets from the villain trash into play."
         */

        public LingeringExhalationCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController)
        {
            SpecialStringMaker.ShowSpecialString(() => CharacterCard.AlternateTitleOrTitle + " has been dealt " + Journal.DealDamageEntriesThisRound().Where(j => j.TargetCard == CharacterCard).Sum(j => j.Amount) + " damage this round.").Condition = () => Card.IsInPlayAndHasGameText;
            SpecialStringMaker.ShowNumberOfCardsAtLocation(TurnTaker.Trash, new LinqCardCriteria(c => c.IsTarget, "target"));
        }
Ejemplo n.º 24
0
 protected TheKnightCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController)
 {
     SpecialStringMaker.ShowSpecialString(() => $"This card is currently being used by {VigilarOwnerName()}").Condition = () => this.Card.Location.OwnerTurnTaker != this.TurnTaker && VigilarOwnerName() != null;
     SpecialStringMaker.ShowSpecialString(() => $"This card is currently being used by {RoninOwnerName()}").Condition   = () => this.TurnTakerController.HasMultipleCharacterCards && RoninOwnerName() != null;
 }
Ejemplo n.º 25
0
 public SystemCrashCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController)
 {
     SpecialStringMaker.ShowNumberOfCardsInPlay(new LinqCardCriteria((Card c) => IsGridVirus(c), "grid virus"));
     SpecialStringMaker.ShowSpecialString(() => "[b]You are in danger of being deleted![/b]").Condition = () => GetNumberOfGridVirusesInPlay() >= 4;
 }
Ejemplo n.º 26
0
        /*
         *  "At the end of the villain turn, destroy 1 hero ongoing or equipment card.",
         *              "This card is immune to fire, lightning, cold, and toxic damage.",
         *              "Increase damage dealt to hero targets by 1."
         */

        public LaughingHagCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController)
        {
            SpecialStringMaker.ShowSpecialString(() => Card.Title + " is immune to fire, lightning, cold, and toxic damage.").Condition = () => Card.IsInPlayAndHasGameText;
        }
 public ExposedLifeforceCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController)
 {
     SpecialStringMaker.ShowLocationOfCards(new LinqCardCriteria(c => c.Identifier == "Teryx", "Teryx", useCardsSuffix: false)).Condition = () => !Card.IsInPlayAndHasGameText;
     SpecialStringMaker.ShowSpecialString(() => $"Teryx has gained {GetAmountTeryxGainedThisRound()} HP this round.").Condition           = () => Card.IsInPlayAndHasGameText && IsTeryxInPlay();
 }
 public MesmerPendantCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController)
 {
     SpecialStringMaker.ShowSpecialString(() => "This card currently does not work.");
     AddThisCardControllerToList(CardControllerListType.ModifiesDeckKind);
 }
        public PastVanishCharacterCardController(Card card, TurnTakerController turnTakerController) : base(card, turnTakerController)
        {
            var ss = SpecialStringMaker.ShowSpecialString(() => "The next time a target enters play, it deals itself 1 energy damage." + (Incap2Uses() > 1 ? $" x{Incap2Uses()}" : ""), () => true);

            ss.Condition = () => Incap2Uses().HasValue;
        }
 public MomentaryFugueCardController(Card card, TurnTakerController turnTakerController)
     : base(card, turnTakerController)
 {
     SpecialStringMaker.ShowListOfCardsAtLocation(base.TurnTaker.PlayArea, new LinqCardCriteria((Card c) => IsRelay(c), "relay")).Condition        = () => NumRelaysAt(base.TurnTaker.PlayArea) > 0;
     SpecialStringMaker.ShowSpecialString(() => "There are no Relay cards in " + base.TurnTaker.NameRespectingVariant + "'s play area.").Condition = () => NumRelaysAt(base.TurnTaker.PlayArea) <= 0;
 }