public override IEnumerator Play()
        {
            //You may play a card.
            IEnumerator coroutine = base.SelectAndPlayCardFromHand(base.HeroTurnTakerController);

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

            //You may use {Baccarat}'s innate power twice during your phase this turn.
            if (base.GameController.ActiveTurnTaker == base.TurnTaker)
            {
                AllowSetNumberOfPowerUseStatusEffect allowSetNumberOfPowerUseStatusEffect = new AllowSetNumberOfPowerUseStatusEffect(2);
                allowSetNumberOfPowerUseStatusEffect.UsePowerCriteria.IsSpecificCard = base.CharacterCard;
                allowSetNumberOfPowerUseStatusEffect.UsePowerCriteria.CardSource     = base.CharacterCard;
                allowSetNumberOfPowerUseStatusEffect.UntilThisTurnIsOver(base.GameController.Game);
                allowSetNumberOfPowerUseStatusEffect.CardDestroyedExpiryCriteria.Card = base.CharacterCard;
                allowSetNumberOfPowerUseStatusEffect.NumberOfUses = new int?(1);
                coroutine = base.AddStatusEffect(allowSetNumberOfPowerUseStatusEffect);
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
            }
            yield break;
        }
        public override IEnumerator Play()
        {
            //You may play a card.
            IEnumerator coroutine = base.SelectAndPlayCardFromHand(base.HeroTurnTakerController, true, null, null, false, false, true, null);

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

            //You may use {Baccarat}'s innate power twice during your phase this turn.
            if (base.GameController.ActiveTurnTaker == base.TurnTaker)
            {
                AllowSetNumberOfPowerUseStatusEffect allowSetNumberOfPowerUseStatusEffect = new AllowSetNumberOfPowerUseStatusEffect(2);
                allowSetNumberOfPowerUseStatusEffect.UsePowerCriteria.IsSpecificCard = base.CharacterCard;
                allowSetNumberOfPowerUseStatusEffect.UsePowerCriteria.CardSource     = base.CharacterCard;
                allowSetNumberOfPowerUseStatusEffect.UntilThisTurnIsOver(base.GameController.Game);
                allowSetNumberOfPowerUseStatusEffect.CardDestroyedExpiryCriteria.Card = base.CharacterCard;
                allowSetNumberOfPowerUseStatusEffect.NumberOfUses = new int?(1);
                coroutine = base.AddStatusEffect(allowSetNumberOfPowerUseStatusEffect, true);
                if (base.UseUnityCoroutines)
                {
                    yield return(base.GameController.StartCoroutine(coroutine));
                }
                else
                {
                    base.GameController.ExhaustCoroutine(coroutine);
                }
            }
            else
            {
                int timesUsed = (from e in Journal.UsePowerEntriesThisTurn()
                                 where e.CardWithPower == base.CharacterCard
                                 select e).Count <UsePowerJournalEntry>();
                if (timesUsed < 2)
                {
                    List <YesNoCardDecision> storedResults = new List <YesNoCardDecision>();
                    SelectionType            type          = SelectionType.UsePowerTwice;
                    if (timesUsed == 1)
                    {
                        type = SelectionType.UsePowerAgain;
                    }
                    IEnumerator coroutine2 = base.GameController.MakeYesNoCardDecision(base.HeroTurnTakerController, type, base.CharacterCard, null, storedResults, null, base.GetCardSource(null));
                    if (base.UseUnityCoroutines)
                    {
                        yield return(base.GameController.StartCoroutine(coroutine2));
                    }
                    else
                    {
                        base.GameController.ExhaustCoroutine(coroutine2);
                    }
                    if (base.DidPlayerAnswerYes(storedResults))
                    {
                        int num;
                        for (int i = 0; i < 2 - timesUsed; i = num + 1)
                        {
                            coroutine2 = base.UsePowerOnOtherCard(base.CharacterCard, 0, true);
                            if (base.UseUnityCoroutines)
                            {
                                yield return(base.GameController.StartCoroutine(coroutine2));
                            }
                            else
                            {
                                base.GameController.ExhaustCoroutine(coroutine2);
                            }
                            num = i;
                        }
                    }
                    storedResults = null;
                }
                else
                {
                    IEnumerator coroutine3 = base.GameController.SendMessageAction(base.TurnTaker.Name + " has already used " + base.CharacterCard.Definition.Body.First <string>() + " twice this turn.", Priority.High, base.GetCardSource(null), null, true);
                    if (base.UseUnityCoroutines)
                    {
                        yield return(base.GameController.StartCoroutine(coroutine3));
                    }
                    else
                    {
                        base.GameController.ExhaustCoroutine(coroutine3);
                    }
                }
            }
            yield break;
        }