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); })); }
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); })); }
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); })); }
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); })); }
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; }