Exemple #1
0
 public string GetTipTooltipKey(CardEffectState cardEffectState)
 {
     if (cardEffectState.GetParamCardUpgradeData() != null && cardEffectState.GetParamCardUpgradeData().HasUnitStatUpgrade())
     {
         return("TipTooltip_StatChangesStick");
     }
     return(null);
 }
        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);
            }));
        }
Exemple #3
0
        public override IEnumerator ApplyEffect(CardEffectState cardEffectState, CardEffectParams cardEffectParams)
        {
            foreach (CharacterState target in cardEffectParams.targets)
            {
                if (!OnGainEmber.energyData.TryGetValue(target, out int addEnergy))
                {
                    addEnergy = 1;
                }

                CardUpgradeState upgradeState = new CardUpgradeState();
                upgradeState.Setup(cardEffectState.GetParamCardUpgradeData());

                // Tweak the CardUpgradeState's stats
                Traverse.Create(upgradeState).Field("attackDamage").SetValue(upgradeState.GetAttackDamage() * addEnergy);
                Traverse.Create(upgradeState).Field("additionalHP").SetValue(upgradeState.GetAdditionalHP() * addEnergy);

                if (cardEffectParams.playedCard != null)
                {
                    foreach (CardTraitState traitState in cardEffectParams.playedCard.GetTraitStates())
                    {
                        traitState.OnApplyingCardUpgradeToUnit(cardEffectParams.playedCard, target, upgradeState, cardEffectParams.cardManager);
                    }
                }
                int    attackDamage = upgradeState.GetAttackDamage();
                int    additionalHP = upgradeState.GetAdditionalHP();
                string text         = ((attackDamage != 0) ? GetAttackNotificationText(upgradeState) : null);
                string text2        = ((additionalHP != 0) ? GetHPNotificationText(upgradeState) : null);
                string text3        = string.Empty;
                if (text != null && text2 != null)
                {
                    text3 = string.Format("TextFormat_SpacedItems".Localize(), text, text2);
                }
                else if (text != null)
                {
                    text3 = text;
                }
                else if (text2 != null)
                {
                    text3 = text2;
                }
                if (text3 != null)
                {
                    NotifyHealthEffectTriggered(cardEffectParams.saveManager, cardEffectParams.popupNotificationManager, text3, target.GetCharacterUI());
                }
                yield return(target.ApplyCardUpgrade(upgradeState));

                CardState spawnerCard = target.GetSpawnerCard();
                bool      flag        = target.HasStatusEffect("cardless");
                if (spawnerCard != null && !cardEffectParams.saveManager.PreviewMode && !flag)
                {
                    CardAnimator.CardUpgradeAnimationInfo type = new CardAnimator.CardUpgradeAnimationInfo(spawnerCard, upgradeState);
                    CardAnimator.DoAddRecentCardUpgrade.Dispatch(type);
                    spawnerCard.GetTemporaryCardStateModifiers().AddUpgrade(upgradeState);
                    spawnerCard.UpdateCardBodyText();
                    cardEffectParams.cardManager?.RefreshCardInHand(spawnerCard);
                }
            }
        }
Exemple #4
0
        public override IEnumerator ApplyEffect(
            CardEffectState cardEffectState,
            CardEffectParams cardEffectParams)
        {
            CardUpgradeState cardUpgradeState = new CardUpgradeState();

            cardUpgradeState.Setup(cardEffectState.GetParamCardUpgradeData());
            var card = cardEffectParams.playedCard;

            CardAnimator.CardUpgradeAnimationInfo type = new CardAnimator.CardUpgradeAnimationInfo(card, cardUpgradeState);
            CardAnimator.DoAddRecentCardUpgrade.Dispatch(type);
            card.GetTemporaryCardStateModifiers().AddUpgrade(cardUpgradeState);
            card.UpdateCardBodyText();
            cardEffectParams.cardManager.RefreshCardInHand(card);

            yield break;
        }
Exemple #5
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);
            }));
        }