public override void AddDelegate(CardEffectState cardEffectState,
                                         CardEffectParams cardEffectParams,
                                         DeckScreen deckScreen)
        {
            deckScreen.AddDeckScreenCardStateChosenDelegate((DeckScreen.CardStateChosenDelegate)(chosenCardState =>
            {
                CardUpgradeState cardUpgradeState = new CardUpgradeState();
                cardUpgradeState.Setup(cardEffectState.GetParamCardUpgradeData());

                foreach (CardUpgradeMaskData filter in cardUpgradeState.GetFilters())
                {
                    if (!filter.FilterCard(chosenCardState, cardEffectParams.relicManager))
                    {
                        // If any of the filters matches, it doesn't get upgraded
                        return;
                    }
                }

                if (chosenCardState.GetCardType() == CardType.Monster)
                {
                    chosenCardState.GetTemporaryCardStateModifiers().AddUpgrade(cardUpgradeState);
                }
                if (chosenCardState.GetCardType() == CardType.Spell)
                {
                    chosenCardState.AddTemporaryTrait(new CardTraitDataBuilder {
                        TraitStateType = typeof(CardTraitPyreboost)
                    }.Build(), cardEffectParams.cardManager);
                }

                chosenCardState.UpdateCardBodyText();

                cardEffectParams.screenManager.SetScreenActive(ScreenName.Deck, false, (ScreenManager.ScreenActiveCallback)null);
            }));
        }
        public override void AddDelegate(CardEffectState cardEffectState,
                                         CardEffectParams cardEffectParams,
                                         DeckScreen deckScreen)
        {
            deckScreen.AddDeckScreenCardStateChosenDelegate((DeckScreen.CardStateChosenDelegate)(chosenCardState =>
            {
                cardEffectParams.cardManager.MoveToStandByPile(chosenCardState, wasPlayed: false, wasExhausted: true, new RemoveFromStandByCondition(() => CardPile.ExhaustedPile), new CardManager.DiscardCardParams(), HandUI.DiscardEffect.Exhausted);

                var allTargets = new List <CharacterState>();
                cardEffectParams.heroManager.AddCharactersInRoomToList(allTargets, cardEffectParams.GetSelectedRoom().GetRoomIndex());

                if (allTargets.Count > 0)
                {
                    for (int i = 0; i < chosenCardState.GetCostWithoutAnyModifications(); i++)
                    {
                        cardEffectParams.combatManager.ApplyDamageToTarget(5, allTargets[0], new CombatManager.ApplyDamageToTargetParameters
                        {
                            damageType = Damage.Type.TowerHeart,
                            playedCard = cardEffectParams.playedCard,
                        });
                    }
                }
                cardEffectParams.screenManager.SetScreenActive(ScreenName.Deck, false, (ScreenManager.ScreenActiveCallback)null);
            }));
        }
 public override void AddDelegate(CardEffectState cardEffectState,
                                  CardEffectParams cardEffectParams,
                                  DeckScreen deckScreen)
 {
     deckScreen.AddDeckScreenCardStateChosenDelegate((DeckScreen.CardStateChosenDelegate)(chosenCardState =>
     {
         cardEffectParams.cardManager.MoveToStandByPile(chosenCardState, wasPlayed: false, wasExhausted: true, new RemoveFromStandByCondition(() => CardPile.ExhaustedPile), new CardManager.DiscardCardParams(), HandUI.DiscardEffect.Exhausted);
         cardEffectParams.screenManager.SetScreenActive(ScreenName.Deck, false, (ScreenManager.ScreenActiveCallback)null);
     }));
 }
 public override void AddDelegate(CardEffectState cardEffectState,
                                  CardEffectParams cardEffectParams,
                                  DeckScreen deckScreen)
 {
     deckScreen.AddDeckScreenCardStateChosenDelegate((DeckScreen.CardStateChosenDelegate)(chosenCardState =>
     {
         chosenCardState.AddTemporaryTrait(new CardTraitDataBuilder {
             TraitStateName = "CardTraitFreebie", ParamInt = -99
         }.Build(), cardEffectParams.cardManager);
         cardEffectParams.screenManager.SetScreenActive(ScreenName.Deck, false, (ScreenManager.ScreenActiveCallback)null);
     }));
 }
 public virtual void AddDelegate(CardEffectState cardEffectState,
                                 CardEffectParams cardEffectParams,
                                 DeckScreen deckScreen)
 {
     deckScreen.AddDeckScreenCardStateChosenDelegate((DeckScreen.CardStateChosenDelegate)(chosenCardState =>
     {
         cardEffectParams.cardManager.DrawSpecificCard(chosenCardState, 0.0f, this.GetDrawSource(cardEffectState.GetTargetMode()), cardEffectParams.playedCard, 1, 1);
         chosenCardState.AddTemporaryTrait(new CardTraitDataBuilder {
             TraitStateName = "CardTraitExhaustState"
         }.Build(), cardEffectParams.cardManager);
         cardEffectParams.screenManager.SetScreenActive(ScreenName.Deck, false, (ScreenManager.ScreenActiveCallback)null);
     }));
 }
Esempio n. 6
0
        public override void AddDelegate(CardEffectState cardEffectState,
                                         CardEffectParams cardEffectParams,
                                         DeckScreen deckScreen)
        {
            deckScreen.AddDeckScreenCardStateChosenDelegate((DeckScreen.CardStateChosenDelegate)(chosenCardState =>
            {
                CardData cardData = cardEffectParams.allGameData.FindCardData(chosenCardState.GetCardDataID());
                if (cardData.GetID() == cardEffectParams.playedCard.GetCardDataID())
                {
                    Traverse.Create(cardEffectParams.cardManager).Field <HandUI>("handUI").Value.ShowCardSelectionErrorMessage("Revelation can not copy itself.", useCenterPositioning: true);
                    return;
                }

                CardManager.AddCardUpgradingInfo addCardUpgradingInfo = new CardManager.AddCardUpgradingInfo();

                addCardUpgradingInfo.ignoreTempUpgrades    = true;
                addCardUpgradingInfo.copyModifiersFromCard = chosenCardState;
                cardEffectParams.cardManager.AddCard(cardData, CardPile.HandPile, 1, 1, fromRelic: false, permanent: false, addCardUpgradingInfo);

                cardEffectParams.screenManager.SetScreenActive(ScreenName.Deck, false, (ScreenManager.ScreenActiveCallback)null);
            }));
        }
Esempio n. 7
0
        public override void AddDelegate(CardEffectState cardEffectState,
                                         CardEffectParams cardEffectParams,
                                         DeckScreen deckScreen)
        {
            deckScreen.AddDeckScreenCardStateChosenDelegate((DeckScreen.CardStateChosenDelegate)(chosenCardState =>
            {
                CardUpgradeState cardUpgradeState = new CardUpgradeState();
                cardUpgradeState.Setup(cardEffectState.GetParamCardUpgradeData());

                foreach (CardUpgradeMaskData filter in cardUpgradeState.GetFilters())
                {
                    if (!filter.FilterCard(chosenCardState, cardEffectParams.relicManager))
                    {
                        // If any of the filters matches, it doesn't get upgraded
                        return;
                    }
                }
                chosenCardState.GetTemporaryCardStateModifiers().AddUpgrade(cardUpgradeState);
                chosenCardState.UpdateCardBodyText();

                cardEffectParams.screenManager.SetScreenActive(ScreenName.Deck, false, (ScreenManager.ScreenActiveCallback)null);
            }));
        }
        public override void AddDelegate(CardEffectState cardEffectState,
                                         CardEffectParams cardEffectParams,
                                         DeckScreen deckScreen)
        {
            deckScreen.AddDeckScreenCardStateChosenDelegate((DeckScreen.CardStateChosenDelegate)(chosenCardState =>
            {
                //cardEffectParams.cardManager.MoveToStandByPile(chosenCardState, wasPlayed: false, wasExhausted: false, new RemoveFromStandByCondition(() => CardPile.DiscardPile), new CardManager.DiscardCardParams(), HandUI.DiscardEffect.Default);

                cardEffectParams.cardManager.GetDrawPile().Remove(chosenCardState);
                cardEffectParams.cardManager.GetDiscardPile().Add(chosenCardState);

                cardEffectParams.relicManager.ApplyOnPostDiscardRelicEffects(chosenCardState);
                IEnumerable <CardTraitState> traitStates = chosenCardState.GetTraitStates();
                foreach (CardTraitState item in traitStates)
                {
                    item.OnCardDiscarded(new DiscardCardParams {
                        discardCard = chosenCardState
                    }, cardEffectParams.cardManager, cardEffectParams.relicManager, cardEffectParams.combatManager);
                }
                cardEffectParams.roomManager.GetRoom(cardEffectParams.roomManager.GetSelectedRoom()).UpdateCardManagerRoomStateModifiers(chosenCardState, drawn: false);
                chosenCardState.OnCardDiscarded();

                // I hate private funcitons so much
                int discardCount = cardEffectParams.cardManager.GetDiscardPile().Count;
                CardPileInformation cardPileInformation = default(CardPileInformation);
                cardPileInformation.deckCount           = cardEffectParams.cardManager.GetDrawPile().Count;
                cardPileInformation.handCount           = cardEffectParams.cardManager.GetHand().Count;
                cardPileInformation.discardCount        = discardCount;
                cardPileInformation.exhaustedCount      = cardEffectParams.cardManager.GetExhaustedPile().Count;
                cardPileInformation.eatenCount          = cardEffectParams.cardManager.GetEatenPile().Count;
                CardPileInformation type = cardPileInformation;
                cardEffectParams.cardManager.cardPilesChangedSignal.Dispatch(type);


                cardEffectParams.screenManager.SetScreenActive(ScreenName.Deck, false, (ScreenManager.ScreenActiveCallback)null);
            }));
        }
Esempio n. 9
0
        public override void AddDelegate(CardEffectState cardEffectState,
                                         CardEffectParams cardEffectParams,
                                         DeckScreen deckScreen)
        {
            deckScreen.AddDeckScreenCardStateChosenDelegate((DeckScreen.CardStateChosenDelegate)(chosenCardState =>
            {
                cardEffectParams.cardManager.MoveToStandByPile(chosenCardState, wasPlayed: false, wasExhausted: true, new RemoveFromStandByCondition(() => CardPile.ExhaustedPile), new CardManager.DiscardCardParams(), HandUI.DiscardEffect.Exhausted);

                switch (chosenCardState.GetRarityType())
                {
                case CollectableRarity.Common:
                    cardEffectParams.saveManager.AdjustGold(5, isReward: false);
                    break;

                case CollectableRarity.Uncommon:
                    cardEffectParams.saveManager.AdjustGold(10, isReward: false);
                    break;

                case CollectableRarity.Rare:
                    cardEffectParams.saveManager.AdjustGold(20, isReward: false);
                    break;

                case CollectableRarity.Champion:
                    cardEffectParams.saveManager.AdjustGold(50, isReward: false);
                    break;

                case CollectableRarity.Starter:
                    cardEffectParams.saveManager.AdjustGold(-10, isReward: false);
                    break;

                default:
                    break;
                }

                cardEffectParams.screenManager.SetScreenActive(ScreenName.Deck, false, (ScreenManager.ScreenActiveCallback)null);
            }));
        }
Esempio n. 10
0
 private IEnumerator HandleChooseCard(
     CardEffectState cardEffectState,
     CardEffectParams cardEffectParams)
 {
     cardEffectParams.screenManager.SetScreenActive(ScreenName.Deck, true, (ScreenManager.ScreenActiveCallback)(screen =>
     {
         DeckScreen deckScreen = screen as DeckScreen;
         deckScreen.Setup(new DeckScreen.Params()
         {
             mode               = DeckScreen.Mode.CardSelection,
             targetMode         = cardEffectState.GetTargetMode(),
             showCancel         = false,
             titleKey           = cardEffectState.GetParentCardState().GetTitleKey(),
             instructionsKey    = "SeekCopyInstructions",
             numCardsSelectable = cardEffectState.GetParamInt(),
         });
         deckScreen.AddDeckScreenCardStateChosenDelegate((DeckScreen.CardStateChosenDelegate)(chosenCardState =>
         {
             cardEffectParams.cardManager.DrawSpecificCard(chosenCardState, 0.0f, this.GetDrawSource(cardEffectState.GetTargetMode()), cardEffectParams.playedCard, 1, 1);
             cardEffectParams.screenManager.SetScreenActive(ScreenName.Deck, false, (ScreenManager.ScreenActiveCallback)null);
         }));
     }));
     yield break;
 }