public override IEnumerator UsePower(int index = 0)
        {
            //"Draw a card. Increase damage dealt by hero targets by 1 until the end of the turn."
            int increase = GetPowerNumeral(0, 1);

            var coroutine = DrawCard();

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(coroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(coroutine);
            }

            var effect = new IncreaseDamageStatusEffect(increase);

            effect.SourceCriteria.IsHero   = true;
            effect.SourceCriteria.IsTarget = true;
            effect.CardSource = Card;
            effect.UntilThisTurnIsOver(Game);

            coroutine = AddStatusEffect(effect);
            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(coroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(coroutine);
            }
        }
        public override IEnumerator UsePower(int index = 0)
        {
            int powerNumeral = GetPowerNumeral(0, 2);
            // "Draw a card."
            IEnumerator drawCoroutine = base.GameController.DrawCard(base.HeroTurnTaker, optional: false, cardSource: GetCardSource());

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(drawCoroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(drawCoroutine);
            }
            // "Increase the next damage dealt by {PalmreaderCharacter} by 2."
            IncreaseDamageStatusEffect increaseEffect = new IncreaseDamageStatusEffect(powerNumeral);

            increaseEffect.SourceCriteria.IsSpecificCard = base.CharacterCard;
            increaseEffect.NumberOfUses = 1;
            increaseEffect.UntilCardLeavesPlay(base.CharacterCard);
            IEnumerator increaseCoroutine = base.AddStatusEffect(increaseEffect);

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(increaseCoroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(increaseCoroutine);
            }
            yield break;
        }
        public override IEnumerator Play()
        {
            // Increase the next damage dealt by {TangoOne} by 3
            var effect = new IncreaseDamageStatusEffect(DamageIncrease);

            effect.SourceCriteria.IsSpecificCard = base.CharacterCard;
            effect.CardSource   = Card;
            effect.Identifier   = IncreaseDamageIdentifier;
            effect.NumberOfUses = 1;

            IEnumerator increaseDamageRoutine = base.AddStatusEffect(effect, true);

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(increaseDamageRoutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(increaseDamageRoutine);
            }

            // Play a card
            IEnumerator playCardRoutine = base.SelectAndPlayCardFromHand(DecisionMaker, true);

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(playCardRoutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(playCardRoutine);
            }
        }
        private IEnumerator FirstTimeDealDamageResponse(DealDamageAction action)
        {
            base.SetCardPropertyToTrueIfRealAction(FirstTimeDealDamage);
            //Increase damage dealt to Obstacles by 1 by the first hero target damaged by {Phase} each round.
            //...by 1...
            IncreaseDamageStatusEffect statusEffect = new IncreaseDamageStatusEffect(1);

            //...by the first hero target damaged by {Phase}...
            statusEffect.SourceCriteria.IsSpecificCard = action.Target;
            //...dealt to Obstacles...
            statusEffect.TargetCriteria.HasAnyOfTheseKeywords = new List <string>()
            {
                "obstacle"
            };
            //...each round.
            statusEffect.UntilStartOfNextTurn(base.TurnTaker);
            IEnumerator coroutine = base.AddStatusEffect(statusEffect);

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(coroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(coroutine);
            }
            yield break;
        }
Exemple #5
0
        public override IEnumerator UsePower(int index = 0)
        {
            // Draw a card
            IEnumerator drawCardRoutine = base.DrawCard(this.HeroTurnTaker);

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(drawCardRoutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(drawCardRoutine);
            }

            // Increase the next damage dealt by {TangoOne} by 2
            int powerNumeral = GetPowerNumeral(0, DamageIncrease);
            var effect       = new IncreaseDamageStatusEffect(powerNumeral);

            effect.SourceCriteria.IsSpecificCard = base.CharacterCard;
            effect.CardSource   = Card;
            effect.Identifier   = IncreaseDamageIdentifier;
            effect.NumberOfUses = 1;

            IEnumerator increaseDamageRoutine = base.AddStatusEffect(effect, true);

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(increaseDamageRoutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(increaseDamageRoutine);
            }
        }
Exemple #6
0
 public override IEnumerator ActivateAbility(string abilityKey)
 {
     if (abilityKey == "enact")
     {
         List <SelectCardDecision> storedResults = new List <SelectCardDecision>();
         var select = this.GameController.SelectCardAndStoreResults(DecisionMaker, SelectionType.IncreaseDamage, ArkHiveAndTheSparesCards, storedResults, false, true, cardSource: GetCardSource());
         if (UseUnityCoroutines)
         {
             yield return(this.GameController.StartCoroutine(select));
         }
         else
         {
             this.GameController.ExhaustCoroutine(select);
         }
         IncreaseDamageStatusEffect idse = new IncreaseDamageStatusEffect(2);
         idse.NumberOfUses = 1;
         idse.SourceCriteria.IsSpecificCard = GetSelectedCard(storedResults);
         var effect = AddStatusEffect(idse);
         if (UseUnityCoroutines)
         {
             yield return(this.GameController.StartCoroutine(effect));
         }
         else
         {
             this.GameController.ExhaustCoroutine(effect);
         }
     }
 }
        public IEnumerator ApplyStatusesResponse(DealDamageAction dda)
        {
            // "... reduce damage dealt by that target to {TheGoalieCharacter} by 1 and increase damage dealt by {TheGoalieCharacter} to that target by 1 until the end of your next turn."
            ReduceDamageStatusEffect reduction = new ReduceDamageStatusEffect(1);

            reduction.SourceCriteria.IsSpecificCard = dda.DamageSource.Card;
            reduction.TargetCriteria.IsSpecificCard = base.CharacterCard;
            reduction.UntilCardLeavesPlay(dda.DamageSource.Card);
            reduction.UntilCardLeavesPlay(base.CharacterCard);
            reduction.UntilEndOfNextTurn(base.TurnTaker);
            IncreaseDamageStatusEffect increase = new IncreaseDamageStatusEffect(1);

            increase.SourceCriteria.IsSpecificCard = base.CharacterCard;
            increase.TargetCriteria.IsSpecificCard = dda.DamageSource.Card;
            increase.UntilCardLeavesPlay(dda.DamageSource.Card);
            increase.UntilCardLeavesPlay(base.CharacterCard);
            increase.UntilEndOfNextTurn(base.TurnTaker);
            IEnumerator reduceCoroutine   = AddStatusEffect(reduction);
            IEnumerator increaseCoroutine = AddStatusEffect(increase);

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(reduceCoroutine));

                yield return(base.GameController.StartCoroutine(increaseCoroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(reduceCoroutine);
                base.GameController.ExhaustCoroutine(increaseCoroutine);
            }
            yield break;
        }
Exemple #8
0
        private IEnumerator EndOfTurnResponse()
        {
            var applyStatusFunction = new Func <DealDamageAction, IEnumerator>(this.ApplyStatusEffects);

            if (!base.GameController.IsCardInPlayAndNotUnderCard(base.ViciousRetributionIdentifier))
            {
                applyStatusFunction = null;
            }
            IEnumerator coroutine = base.GameController.SelectTargetsAndDealDamage(base.HeroTurnTakerController, new DamageSource(base.GameController, base.CharacterCard), 1, DamageType.Psychic, 1, false, 1, false, false, false, null, null, null, null, applyStatusFunction, true, null, null, false, null, GetCardSource(null));

            if (UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(coroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(coroutine);
            }
            if (base.GameController.IsCardInPlayAndNotUnderCard(base.FlaringBlazeIdentifier))
            {
                IncreaseDamageStatusEffect idse = new IncreaseDamageStatusEffect(1);
                idse.SourceCriteria.IsSpecificCard = base.CharacterCard;
                idse.NumberOfUses = 1;
                idse.UntilCardLeavesPlay(base.CharacterCard);
                coroutine = AddStatusEffect(idse, true);
                if (UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
            }
        }
        protected void AddIncreaseDamageOfDamageTypeTrigger(HeroTurnTakerController httc, DamageType damageType, int amount)
        {
            IncreaseDamageStatusEffect increaseDamageStatusEffect = new IncreaseDamageStatusEffect(amount);

            increaseDamageStatusEffect.DamageTypeCriteria.AddType(damageType);
            increaseDamageStatusEffect.NumberOfUses = 1;
            this.RunCoroutine(this.GameController.AddStatusEffect(increaseDamageStatusEffect, true, new CardSource(httc.CharacterCardController)));
        }
Exemple #10
0
        public override IEnumerator UseIncapacitatedAbility(int index)
        {
            IEnumerator coroutine;

            switch (index)
            {
            case 0:
            {
                //One player may use a power now.
                coroutine = base.GameController.SelectHeroToUsePower(base.HeroTurnTakerController, cardSource: base.GetCardSource());
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
                break;
            }

            case 1:
            {
                //One player may play a card now.
                coroutine = base.SelectHeroToPlayCard(this.HeroTurnTakerController);
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
                break;
            }

            case 2:
            {
                //Increase the next damage dealt by a hero target by 1.
                IncreaseDamageStatusEffect statusEffect = new IncreaseDamageStatusEffect(1)
                {
                    NumberOfUses   = 1,
                    SourceCriteria = { IsHero = true }
                };
                coroutine = base.AddStatusEffect(statusEffect);
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
                break;
            }
            }
        }
        public override IEnumerator Play()
        {
            //Find the hero with the most cards in hand
            List <TurnTaker> storedResults = new List <TurnTaker>();
            IEnumerator      coroutine     = base.FindHeroWithMostCardsInHand(storedResults, 1, 1, null, null, false, false);

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(coroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(coroutine);
            }
            TurnTaker turnTaker = storedResults.FirstOrDefault <TurnTaker>();

            if (turnTaker != null)
            {
                //Anathema deals the Hero target with the most cards in hand {H-1} melee damage.
                HeroTurnTakerController hero       = base.FindHeroTurnTakerController(turnTaker as HeroTurnTaker);
                IEnumerator             coroutine2 = base.DealDamage(base.CharacterCard, hero.CharacterCard, base.H - 1, DamageType.Melee, false, false, false, null, null, null, false, base.GetCardSource(null));
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine2));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine2);
                }
            }
            //Until the start of the next Villain Turn, increase damage dealt by Villain targets by 1 and reduce damage dealt to Villain targets by 1.
            ReduceDamageStatusEffect reduceDamageStatusEffect = new ReduceDamageStatusEffect(1);

            reduceDamageStatusEffect.TargetCriteria.IsVillain = true;;
            reduceDamageStatusEffect.UntilStartOfNextTurn(this.TurnTaker);
            IEnumerator reduceCoroutine = this.AddStatusEffect(reduceDamageStatusEffect, true);

            IncreaseDamageStatusEffect increaseDamageStatusEffect = new IncreaseDamageStatusEffect(1);

            increaseDamageStatusEffect.SourceCriteria.IsVillain = true;;
            increaseDamageStatusEffect.UntilStartOfNextTurn(this.TurnTaker);
            IEnumerator increaseCoroutine = this.AddStatusEffect(increaseDamageStatusEffect, true);

            if (this.UseUnityCoroutines)
            {
                yield return(this.GameController.StartCoroutine(reduceCoroutine));

                yield return(this.GameController.StartCoroutine(increaseCoroutine));
            }
            else
            {
                this.GameController.ExhaustCoroutine(reduceCoroutine);
                this.GameController.ExhaustCoroutine(increaseCoroutine);
            }
            yield break;
        }
Exemple #12
0
        public override IEnumerator UseIncapacitatedAbility(int index)
        {
            switch (index)
            {
            case 0:
            {
                //One player may play a card now.
                IEnumerator coroutine = base.SelectHeroToPlayCard(base.HeroTurnTakerController, false, true, false, null, null, null, false, true);
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
                break;
            }

            case 1:
            {
                //Destroy 1 ongoing card.
                IEnumerator coroutine2 = base.GameController.SelectAndDestroyCard(base.HeroTurnTakerController, new LinqCardCriteria((Card c) => c.IsOngoing, "ongoing", true, false, null, null, false), false, null, null, base.GetCardSource(null));
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine2));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine2);
                }
                break;
            }

            case 2:
            {
                //Until the start of your next turn increase melee damage dealt by hero targets by 1.
                IncreaseDamageStatusEffect increaseDamageStatusEffect = new IncreaseDamageStatusEffect(1);
                increaseDamageStatusEffect.SourceCriteria.IsHero = new bool?(true);
                //increaseDamageStatusEffect.DamageTypeCriteria.invertTypes = true;
                increaseDamageStatusEffect.DamageTypeCriteria.AddType(DamageType.Melee);
                increaseDamageStatusEffect.UntilStartOfNextTurn(base.TurnTaker);
                IEnumerator coroutine3 = base.AddStatusEffect(increaseDamageStatusEffect, true);
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine3));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine3);
                }
                break;
            }
            }
            yield break;
        }
        public override IEnumerator UseIncapacitatedAbility(int index)
        {
            switch (index)
            {
            case 0:
            {
                //Increase Damage dealt by Environment Cards to Villain Targets by 1 until the Start of your next turn
                IncreaseDamageStatusEffect effect = new IncreaseDamageStatusEffect(1);
                effect.SourceCriteria.IsEnvironment = true;
                effect.TargetCriteria.IsVillain     = true;
                effect.UntilStartOfNextTurn(TurnTaker);
                IEnumerator coroutine = AddStatusEffect(effect);
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
                break;
            }

            case 1:
            {
                //2 Players may Draw a Card.
                IEnumerator coroutine = TwoPlayersMayDrawACard();
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
                break;
            }

            case 2:
            {
                //One Hero may Play a Card.
                IEnumerator coroutine = SelectHeroToPlayCard(DecisionMaker);
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
                break;
            }
            }
            yield break;
        }
Exemple #14
0
        public override IEnumerator UseIncapacitatedAbility(int index)
        {
            IEnumerator coroutine;

            switch (index)
            {
            case 0:
            {
                //"One player may draw a card now.",
                coroutine = GameController.SelectHeroToDrawCard(DecisionMaker, cardSource: GetCardSource());
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
                yield break;
            }

            case 1:
            {
                //"Increase all damage by 1 until the start of your next turn.",
                IncreaseDamageStatusEffect globalBoost = new IncreaseDamageStatusEffect(1);
                globalBoost.UntilStartOfNextTurn(this.TurnTaker);
                coroutine = GameController.AddStatusEffect(globalBoost, true, GetCardSource());
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
                break;
            }

            case 2:
            {
                //"One target deals itself 1 psychic damage."
                coroutine = GameController.SelectTargetsToDealDamageToSelf(DecisionMaker, 1, DamageType.Psychic, 1, false, 1, cardSource: GetCardSource());
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
                break;
            }
            }
            yield break;
        }
Exemple #15
0
        private IEnumerator IncreaseDamageStatusEffectResponse()
        {
            var effect = new IncreaseDamageStatusEffect(2);

            effect.SourceCriteria.IsVillain = true;
            effect.SourceCriteria.IsTarget  = true;
            effect.UntilEndOfNextTurn(TurnTaker);
            effect.CardSource = Card;

            return(AddStatusEffect(effect));
        }
        public override IEnumerator UseIncapacitatedAbility(int index)
        {
            switch (index)
            {
            case 0:
            {
                //Destroy a Device
                var rend = this.GameController.SelectAndDestroyCard(HeroTurnTakerController, new LinqCardCriteria(c => c.IsDevice), false, cardSource: GetCardSource());
                if (UseUnityCoroutines)
                {
                    yield return(this.GameController.StartCoroutine(rend));
                }
                else
                {
                    this.GameController.ExhaustCoroutine(rend);
                }
                break;
            }

            case 1:
            {
                //One Hero may Use a Power now
                var pow = this.GameController.SelectHeroToUsePower(HeroTurnTakerController, cardSource: GetCardSource());
                if (UseUnityCoroutines)
                {
                    yield return(this.GameController.StartCoroutine(pow));
                }
                else
                {
                    this.GameController.ExhaustCoroutine(pow);
                }
                break;
            }

            case 2:
            {
                //Increase Hero Damage by 1 until the start of your next turn
                IncreaseDamageStatusEffect idse = new IncreaseDamageStatusEffect(1);
                idse.SourceCriteria.IsHero = true;
                idse.UntilStartOfNextTurn(TurnTaker);
                var bold = AddStatusEffect(idse);
                if (UseUnityCoroutines)
                {
                    yield return(this.GameController.StartCoroutine(bold));
                }
                else
                {
                    this.GameController.ExhaustCoroutine(bold);
                }
                break;
            }
            }
        }
Exemple #17
0
        public override IEnumerator UseIncapacitatedAbility(int index)
        {
            switch (index)
            {
            case 0:
            {
                var rend = this.GameController.SelectAndDestroyCard(HeroTurnTakerController, new LinqCardCriteria(c => c.DoKeywordsContain("device") || c.DoKeywordsContain("ongoing")), true, cardSource: GetCardSource());
                if (UseUnityCoroutines)
                {
                    yield return(this.GameController.StartCoroutine(rend));
                }
                else
                {
                    this.GameController.ExhaustCoroutine(rend);
                }
                break;
            }

            case 1:
            {
                IncreaseDamageStatusEffect idse = new IncreaseDamageStatusEffect(1);
                idse.SourceCriteria.IsHero = true;
                idse.UntilStartOfNextTurn(TurnTaker);
                var inspire = AddStatusEffect(idse);
                if (UseUnityCoroutines)
                {
                    yield return(this.GameController.StartCoroutine(inspire));
                }
                else
                {
                    this.GameController.ExhaustCoroutine(inspire);
                }
                break;
            }

            case 2:
            {
                var draw = this.GameController.SelectHeroToDrawCard(HeroTurnTakerController, numberOfCards: 1, cardSource: GetCardSource());
                if (UseUnityCoroutines)
                {
                    yield return(this.GameController.StartCoroutine(draw));
                }
                else
                {
                    this.GameController.ExhaustCoroutine(draw);
                }
                break;
            }
            }
        }
        public override IEnumerator Play()
        {
            //"Search your deck for a Single Hand Equipment card and put it into play. Shuffle your deck.",
            //"Select a hero target. Until the start of your next turn, increase damage dealt by that target by 1."
            var criteria  = new LinqCardCriteria(c => IsEquipment(c) && IsSingleHandCard(c), "single hand equipment");
            var coroutine = base.SearchForCards(this.DecisionMaker, true, false, 1, 1, criteria, true, false, false, shuffleAfterwards: true);

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(coroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(coroutine);
            }
            var storedResult = new List <SelectCardDecision>();

            criteria  = new LinqCardCriteria(c => c.IsHero && c.IsTarget && c.IsInPlayAndHasGameText, "hero target");
            coroutine = base.GameController.SelectCardAndStoreResults(this.DecisionMaker, SelectionType.IncreaseDamage, criteria, storedResult, false, cardSource: base.GetCardSource());
            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(coroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(coroutine);
            }

            if (DidSelectCard(storedResult))
            {
                Card card = GetSelectedCard(storedResult);
                IncreaseDamageStatusEffect increaseDamageStatusEffect = new IncreaseDamageStatusEffect(1);
                increaseDamageStatusEffect.SourceCriteria.IsSpecificCard = card;
                increaseDamageStatusEffect.UntilStartOfNextTurn(base.TurnTaker);
                increaseDamageStatusEffect.UntilTargetLeavesPlay(card);

                coroutine = base.AddStatusEffect(increaseDamageStatusEffect, true);
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
            }
            yield break;
        }
        private IEnumerator EndOfTurnResponse()
        {
            List <SelectCardDecision> storedResults = new List <SelectCardDecision>();
            IEnumerator coroutine = base.GameController.SelectTargetsAndDealDamage(base.HeroTurnTakerController, new DamageSource(base.GameController, base.CharacterCard), 1, DamageType.Sonic, 1, false, 1, false, false, false, null, storedResults, null, null, null, true, null, null, false, null, GetCardSource(null));

            if (UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(coroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(coroutine);
            }
            Card target = storedResults.FirstOrDefault()?.SelectedCard;

            if (base.GameController.IsCardInPlayAndNotUnderCard(base.VigilanteJusticeIdentifier) || base.GameController.IsCardInPlayAndNotUnderCard(base.ThunderStormIdentifier))
            {
                IncreaseDamageStatusEffect idse = new IncreaseDamageStatusEffect(1);
                idse.TargetCriteria.IsSpecificCard = target;
                idse.NumberOfUses = 1;
                idse.UntilCardLeavesPlay(target);
                coroutine = AddStatusEffect(idse, true);
                if (UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
            }
            if (base.GameController.IsCardInPlayAndNotUnderCard(base.VigilanteJusticeIdentifier) && base.GameController.IsCardInPlayAndNotUnderCard(base.ThunderStormIdentifier))
            {
                CannotDealDamageStatusEffect cddse = new CannotDealDamageStatusEffect();
                cddse.SourceCriteria.IsSpecificCard = target;
                cddse.NumberOfUses = 1;
                cddse.UntilCardLeavesPlay(target);
                coroutine = AddStatusEffect(cddse, true);
                if (UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
            }
        }
Exemple #20
0
 private IEnumerator DealDamageResponseAndIncreaseDamageTaken(int X)
 {
     if (X > 0)
     {
         List <SelectDamageTypeDecision> storedResults = new List <SelectDamageTypeDecision>();
         IEnumerator chooseDamageType = base.GameController.SelectDamageType(base.HeroTurnTakerController, storedResults, new DamageType[]
         {
             DamageType.Fire,
             DamageType.Cold
         }, null, SelectionType.DamageType, base.GetCardSource(null));
         if (base.UseUnityCoroutines)
         {
             yield return(base.GameController.StartCoroutine(chooseDamageType));
         }
         else
         {
             base.GameController.ExhaustCoroutine(chooseDamageType);
         }
         DamageType  value          = storedResults.First((SelectDamageTypeDecision d) => d.Completed).SelectedDamageType.Value;
         IEnumerator dealAuraDamage = base.GameController.SelectTargetsAndDealDamage(this.DecisionMaker, new DamageSource(base.GameController, base.CharacterCard), 6, value, new int?(X), false, new int?(0), false, false, false, null, null, null, null, null, false, null, null, false, null, base.GetCardSource(null));
         if (base.UseUnityCoroutines)
         {
             yield return(base.GameController.StartCoroutine(dealAuraDamage));
         }
         else
         {
             base.GameController.ExhaustCoroutine(dealAuraDamage);
         }
         IncreaseDamageStatusEffect increaseDamageStatusEffect = new IncreaseDamageStatusEffect(X);
         increaseDamageStatusEffect.TargetCriteria.IsSpecificCard = base.CharacterCard;
         increaseDamageStatusEffect.UntilStartOfNextTurn(base.TurnTaker);
         IEnumerator increaseDamageTaken = base.AddStatusEffect(increaseDamageStatusEffect, true);
         if (base.UseUnityCoroutines)
         {
             yield return(base.GameController.StartCoroutine(increaseDamageTaken));
         }
         else
         {
             base.GameController.ExhaustCoroutine(increaseDamageTaken);
         }
         yield break;
     }
     else
     {
         yield break;
     }
 }
Exemple #21
0
        protected override IEnumerator Effect(Card c)
        {
            IncreaseDamageStatusEffect idse = new IncreaseDamageStatusEffect(1);

            idse.SourceCriteria.IsSpecificCard = c;
            idse.NumberOfUses = 1;
            var effect = AddStatusEffect(idse);

            if (UseUnityCoroutines)
            {
                yield return(this.GameController.StartCoroutine(effect));
            }
            else
            {
                this.GameController.ExhaustCoroutine(effect);
            }
        }
 public override IEnumerator Play()
 {
     if (!FindCard("PaleMoonPendant").IsInPlay)
     {
         var search = this.GameController.PlayCard(TurnTakerController, FindCard("PaleMoonPendant"), true, null, false, evenIfAlreadyInPlay: false, associateCardSource: true, cardSource: GetCardSource());
         //var search = SearchForCards(HeroTurnTakerController, true, true, 1, 1, new LinqCardCriteria(FindCard("PaleMoonPendant")), true, false, false);
         if (UseUnityCoroutines)
         {
             yield return(this.GameController.StartCoroutine(search));
         }
         else
         {
             this.GameController.ExhaustCoroutine(search);
         }
     }
     if (ShouldActivate("human"))
     {
         var heal = this.GameController.GainHP(CharacterCard, 2, cardSource: GetCardSource());
         if (UseUnityCoroutines)
         {
             yield return(this.GameController.StartCoroutine(heal));
         }
         else
         {
             this.GameController.ExhaustCoroutine(heal);
         }
     }
     if (ShouldActivate("wolf"))
     {
         IncreaseDamageStatusEffect boost = new IncreaseDamageStatusEffect(1);
         boost.SourceCriteria.IsSpecificCard = CharacterCard;
         boost.SourceCriteria.HasIdentifierOfSpecifiedCard = true;
         boost.NumberOfUses          = 1;
         boost.TargetCriteria.IsHero = false;
         var effect = AddStatusEffect(boost);
         if (UseUnityCoroutines)
         {
             yield return(this.GameController.StartCoroutine(effect));
         }
         else
         {
             this.GameController.ExhaustCoroutine(effect);
         }
     }
 }
Exemple #23
0
        private IEnumerator IncreaseNextDamageResponse(DealDamageAction dd)
        {
            IncreaseDamageStatusEffect increaseDamageStatusEffect = new IncreaseDamageStatusEffect(1);

            increaseDamageStatusEffect.SourceCriteria.IsSpecificCard = this.HeroTurnTaker.CharacterCard;
            increaseDamageStatusEffect.UntilCardLeavesPlay(this.HeroTurnTaker.CharacterCard);
            increaseDamageStatusEffect.NumberOfUses = 1;
            IEnumerator coroutine = base.AddStatusEffect(increaseDamageStatusEffect, true);

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(coroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(coroutine);
            }
        }
Exemple #24
0
        private IEnumerator IncreaseNextDamageResponse(DealDamageAction dd)
        {
            base.SetCardPropertyToTrueIfRealAction("BlitzDealtEnoughDamage", null);
            IncreaseDamageStatusEffect idse = new IncreaseDamageStatusEffect(1);

            idse.SourceCriteria.IsSpecificCard = this.Card;
            idse.NumberOfUses = 1;
            IEnumerator coroutine = base.AddStatusEffect(idse, true);

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(coroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(coroutine);
            }
        }
Exemple #25
0
        public override IEnumerator Play()
        {
            List <SelectCardDecision> storedResults = new List <SelectCardDecision>();
            IEnumerator coroutine = base.GameController.SelectCardAndStoreResults(this.DecisionMaker, SelectionType.SelectTargetFriendly, new LinqCardCriteria((Card c) => c.IsInPlayAndHasGameText && c.IsTarget, "hero target in play", false, false, null, null, false), storedResults, true, false, null, true, base.GetCardSource());

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(coroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(coroutine);
            }
            Card selectedCard = base.GetSelectedCard(storedResults);
            IncreaseDamageStatusEffect idse = new IncreaseDamageStatusEffect(1);

            idse.SourceCriteria.IsSpecificCard = selectedCard;
            idse.UntilStartOfNextTurn(base.TurnTaker);
            idse.UntilCardLeavesPlay(selectedCard);
            coroutine = base.AddStatusEffect(idse, true);
            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(coroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(coroutine);
            }
            IncreaseDamageStatusEffect idse2 = new IncreaseDamageStatusEffect(1);

            idse2.SourceCriteria.IsSpecificCard = selectedCard;
            idse2.UntilCardLeavesPlay(selectedCard);
            idse2.NumberOfUses = 1;
            IEnumerator coroutine2 = base.AddStatusEffect(idse2, true);

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(coroutine2));
            }
            else
            {
                base.GameController.ExhaustCoroutine(coroutine2);
            }
        }
Exemple #26
0
        private IEnumerator AddSummerResponse()
        {
            //Increase fire damage dealt by heroes by 2
            IncreaseDamageStatusEffect effect = new IncreaseDamageStatusEffect(2);

            effect.SourceCriteria.IsHeroCharacterCard = true;
            effect.DamageTypeCriteria.AddType(DamageType.Fire);
            effect.UntilStartOfNextTurn(base.TurnTaker);
            IEnumerator coroutine = AddStatusEffect(effect);

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(coroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(coroutine);
            }
        }
        private IEnumerator AddStatusEffectResponse(DealDamageAction dd)
        {
            IncreaseDamageStatusEffect increaseDamageStatusEffect = new IncreaseDamageStatusEffect(1);

            increaseDamageStatusEffect.SourceCriteria.IsSpecificCard = this.CharacterCard;
            increaseDamageStatusEffect.TargetCriteria.IsSpecificCard = dd.DamageSource.Card;
            increaseDamageStatusEffect.NumberOfUses = 1;
            IEnumerator coroutine = AddStatusEffect(increaseDamageStatusEffect);

            if (UseUnityCoroutines)
            {
                yield return(this.GameController.StartCoroutine(coroutine));
            }
            else
            {
                this.GameController.ExhaustCoroutine(coroutine);
            }
            yield break;
        }
        public IEnumerator IncreaseDamageResponse(PhaseChangeAction _, OnPhaseChangeStatusEffect sourceEffect)
        {
            int increaseNumeral = sourceEffect.PowerNumeralsToChange[0];

            IncreaseDamageStatusEffect statusEffect = new IncreaseDamageStatusEffect(increaseNumeral);

            statusEffect.UntilThisTurnIsOver(Game);
            statusEffect.UntilTargetLeavesPlay(base.CharacterCard);
            IEnumerator coroutine = base.AddStatusEffect(statusEffect);

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(coroutine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(coroutine);
            }
            yield break;
        }
Exemple #29
0
 private IEnumerator IncreaseDamageResponse(DealDamageAction dd)
 {
     if (!dd.DidDealDamage)
     {
         IncreaseDamageStatusEffect increaseDamageStatusEffect = new IncreaseDamageStatusEffect(1);
         increaseDamageStatusEffect.TargetCriteria.IsSpecificCard = dd.Target;
         increaseDamageStatusEffect.UntilStartOfNextTurn(base.GameController.FindNextTurnTaker());
         increaseDamageStatusEffect.UntilCardLeavesPlay(dd.Target);
         IEnumerator coroutine = base.AddStatusEffect(increaseDamageStatusEffect, true);
         if (base.UseUnityCoroutines)
         {
             yield return(base.GameController.StartCoroutine(coroutine));
         }
         else
         {
             base.GameController.ExhaustCoroutine(coroutine);
         }
     }
     yield break;
 }
        private IEnumerator IncreaseDamageFromEffectResponse(AddStatusEffectAction se, int increaseAmount, Power power)
        {
            IncreaseDamageStatusEffect increaseDamageStatusEffect = new IncreaseDamageStatusEffect(increaseAmount);

            increaseDamageStatusEffect.StatusEffectCriteria.Effect = se.StatusEffect;
            if (power != null && power.CardController != null)
            {
                increaseDamageStatusEffect.StatusEffectCriteria.CardWithPower = power.CardController.Card;
            }
            IEnumerator coroutine = AddStatusEffect(increaseDamageStatusEffect);

            if (UseUnityCoroutines)
            {
                yield return(GameController.StartCoroutine(coroutine));
            }
            else
            {
                GameController.ExhaustCoroutine(coroutine);
            }
        }