private IEnumerator Evolve(PhaseChangeAction arg) { List <SelectTurnPhaseDecision> storedResults = new List <SelectTurnPhaseDecision>(); var select = this.GameController.SelectPhase(DecisionMaker, new List <TurnPhase> { new TurnPhase(TurnTaker, Phase.PlayCard, Card), new TurnPhase(TurnTaker, Phase.DrawCard, Card) }, SelectionType.PlayExtraCard, storedResults, false, GetCardSource()); if (UseUnityCoroutines) { yield return(this.GameController.StartCoroutine(select)); } else { this.GameController.ExhaustCoroutine(select); } SelectTurnPhaseDecision stpd = storedResults.FirstOrDefault(); IncreasePhaseActionCountStatusEffect ipacse = new IncreasePhaseActionCountStatusEffect(1); ipacse.ActualToTurnPhaseCriteria.Phase = stpd.SelectedPhase.Phase; ipacse.ActualToTurnPhaseCriteria.TurnTaker = stpd.SelectedTurnTaker; ipacse.UntilThisTurnIsOver(Game); var status = AddStatusEffect(ipacse); if (UseUnityCoroutines) { yield return(this.GameController.StartCoroutine(status)); } else { this.GameController.ExhaustCoroutine(status); } }
private IEnumerator StartOfTurnPhaseShiftResponse(PhaseChangeAction pca) { TurnTaker heroTT = pca.GameController.ActiveTurnTaker; HeroTurnTakerController heroTTC = pca.GameController.ActiveTurnTakerController.ToHero(); List <YesNoCardDecision> storedResults = new List <YesNoCardDecision>(); IEnumerator routine = base.GameController.MakeYesNoCardDecision(heroTTC, YesNoSelectionType, this.Card, storedResults: storedResults, cardSource: GetCardSource()); if (base.UseUnityCoroutines) { yield return(base.GameController.StartCoroutine(routine)); } else { base.GameController.ExhaustCoroutine(routine); } if (!base.DidPlayerAnswerYes(storedResults)) { yield break; } var extraAction = new IncreasePhaseActionCountStatusEffect(1); extraAction.UntilThisTurnIsOver(Game); extraAction.ToTurnPhaseCriteria.Phase = PhaseToIncrease; extraAction.ToTurnPhaseCriteria.TurnTaker = GameController.ActiveTurnTaker; extraAction.CardSource = this.Card; routine = AddStatusEffect(extraAction); if (base.UseUnityCoroutines) { yield return(base.GameController.StartCoroutine(routine)); } else { base.GameController.ExhaustCoroutine(routine); } var skippedAction = new PreventPhaseActionStatusEffect(); skippedAction.UntilThisTurnIsOver(Game); skippedAction.ToTurnPhaseCriteria.Phase = PhaseToSkip; skippedAction.ToTurnPhaseCriteria.TurnTaker = GameController.ActiveTurnTaker; skippedAction.CardSource = this.Card; routine = AddStatusEffect(skippedAction); if (base.UseUnityCoroutines) { yield return(base.GameController.StartCoroutine(routine)); } else { base.GameController.ExhaustCoroutine(routine); } yield break; }