Base Game CardTraits - brandonandzeus/Trainworks2 GitHub Wiki

Base Game CardTraits

CardTraitAllowUpgradeOnCardType

Allows the card to only upgrade cards matching a type. (Though with CardUpgradeMaskData filters I don't see the need for this).

  • ParamCardType: Can only be set to Monster or Spell.

CardTraitCopyOnPlay

AKA Spellchain. Though not reusable since the TooltipText isn't overridable (Will always say +1 ember and Purge)

In a general sense, this Trait causes the card to generate copies of itself when played potentially applying a CardUpgrade to the generated cards.

This trait is best used with StackMode.ParamInt

  • ParamInt: Number of copies.
  • ParamCardUpgradeData: Optional upgrade to apply.

CardTraitCorruptRestricted

Extract

This trait prevents the card from being played unless the Charged Echoes on the floor is above a threshold. After being played the trait removes the amount of Charged Echoes from the floor.

  • ParamInt: Number of Charged Echoes required.

CardTraitCorruptState

Infused.

CardTraitCostReduceCharactersInTowerState

Consumer of Crowns special card ability.

Specifically what this does is modify the cost of the card depending on the number of Monster subtypes that exist on the train (not on the current floor). It then multiples that number by a multiplier and that is the cost reduction.

  • ParamInt: Multiplier. (Can be negative to increase cost).
  • ParamSubtype: Subtype.

CardTraitExhaustState

Consume, when played the card goes to the Consume pile.

CardTraitFreeze

TEMPORARY Frozen the card stays in your hand at the end of the turn. It removes itself from the card when played.

CardTraitIgnoreArmor

Piercing damage from this card ignores armor, damage shield, and spell shield.

CardTraitIntrinsicState

This trait is the Intrinsic effect. The card will appear in hand at the start of battle (up to Max hand size).

CardTraitJuice

This trait is the Doublestack effect.

No parameters, the status effect doubling is hardcoded into the trait.

Note that this trait can't be applied to a card multiple times. Some other traits don't account for this trait being present on a card multiple times.

CardTraitLevelMonsterState

Unused and does nothing. This seems to be part of a card level-up system that was scrapped.

CardTraitLimitedRange

Pyrebound if you aren't playing this card in the room below the Pyre then it isn't playable.

CardTraitMagneticState

Unused in base game Magnetic. Appears to be similar to Holdover, except you always draw the card even if you didn't play it the previous turn. The magnetic card is drawn in addition to your normal card draw. (I guess from reading the code).

Appears to be in use in the Sweetkin clan.

CardTraitMultiplyDamageStatusEffectState

Unused by any cards in the game This trait appears to multiply damage if the target has any of the status effects listed. It does not consider the number of stacks of the status effect, just if they have the status effect listed.

  • ParamFloat: Multiplier applied to damage if the target has any of the status effects listed (can apply multiple times).
  • ParamStatusEffects: Status effects to check.

CardTraitPermafrost

Permafrost. The card gains CardTraitFreeze when drawn (applied as a TemporaryTrait)

CardTraitRetain

Holdover

CardTraitScalingAddCards

The Awoken's Rail Spike trait. The exact effect of this trait is that if you play this card (and when it is discarded from being played) you draw cards. (The CardEffectDraw in Awoken's Rail Spike does nothing this trait is what is drawing the cards. In summary, this trait doesn't interact with CardEffectDraw).

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

  • ParamInt: Multiplier.

CardTraitScalingAddDamage

This Trait interacts with Damaging CardEffects and adds scaling damage. The base damage is given in the CardEffect(s) and this trait adds damage on top of that value. Note that the trait adjusts the damage of all Damaging CardEffects on the card. This trait can be added to a Monster card to adjust their attack damage as well.

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

  • ParamInt: Multiplier
  • ParamFloat: Second Multiplier

CardTraitScalingAddEnergy

The exact effect of this trait is that if you play this card (and when it is discarded from being played) you gain energy. It doesn't interact with the CardEffects with a similar name that AddEnergy.

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

  • ParamInt multiplier

CardTraitScalingAddStatusEffect

This card trait interacts with any effects that apply status effects. It adds additional stacks (and if Doublestack'd multiplies that added amount by 2)

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

  • ParamInt: multiplier

CardTraitScalingBuffDamage

Only used by Bone Rattler. Interacts with CardEffectBuffDamage to replace the damage buff with the amount calculated from this trait. (Seems off that it doesn't consider the amount given in the CardEffect, but that's how the code works). So it doesn't add to the damage buff, it replaces it with the value from the TrackedValue and multiplier.

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

*ParamInt: multiplier

CardTraitScalingByConsumedTempCardUpgradeToCard

Warning Do not add this card trait to a Monster card. Only intended to be added on Spell cards. Otherwise, the monster will apply the upgrade to ALL cards being upgraded.

The Sacrificial Resurrection main effect. This card trait has some requirements to be used correctly.

  1. You must use CardEffectDiscardHand with DiscardMode.Consume as that is how it Scales the upgrade.
  2. There must be a CardEffect present that applies an upgrade to a card (since the hand must be discarded CardEffectAddBattleCard, CardEffectAddRunCard, or CardEffectAddTempCardUpgradeToNextDrawnCard + CardEffectDraw/Type are your choices)

This Trait will multiply the stats (damage, health, healing, size) in the card upgrade by the number of consumed cards * multiplier * card upgrade value. However, it seems the status effect stats will be computed as follows (status effect stacks * ( consumed cards * multiplier - status effect stacks))

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

  • ParamInt: multiplier

CardTraitScalingFeederRules

Shroud Spike. This trait modifies the number of triggers in CardEffectFeederRules.

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

  • ParamInt: multiplier

CardTraitScalingHeal

Unused Interacts with all healing effects and (seems to) replace the healing amount with the value given.

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

CardTraitScalingHealTrain

Only used by Boneshine. Interacts with CardEffectHealTrain and replaces the amount healed with the value computed.

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

  • ParamInt: multiplier

CardTraitScalingReduceCost

Unused Reduce (or increase) the cost of a card with this CardTrait.

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

  • ParamInt: multiplier

CardTraitScalingReturnConsumedCards

Unused Doesn't interact with any card effects. When the card is played and discarded from being played. It seems to return consumed cards (in the order in which they were consumed?)

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

  • ParamInt: multiplier

CardTraitScalingRewardGold

The Gift of Gratitude effect. Does not interact with the CardEffect of a similar name. When the card is played and discarded from being played. Reward gold.

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

  • ParamInt: multiplier

CardTraitScalingTempCardUpgradeToCard

This CardTrait is the same as CardTraitScalingByConsumedTempCardUpgradeToCard except the scaled amount is computed via a TrackedValue instead of the number of cards consumed. Warning Do not use this on a Monster Card as the monster card will scale all upgrades applied to any card.

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

  • ParamInt: multiplier

CardTraitScalingUpgradeUnitAttack

WARNING Do not use this CardTrait on a monster card. Or you will create a Kinhost Carapace. If unaware, Kinhost Carapace in the base game has an issue since each Card Upgrade he applies will be scaled with its "When Played" effect. The base game's Heaven's Aid upgrade does this currently. If intending to use on a Monster Card use CardTraitScalingUpgradeUnitAttackSafely.

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

  • ParamInt: multiplier

CardTraitScalingUpgradeUnitHealth

WARNING Do not use this CardTrait on a monster card. Or you will create a Kinhost Carapace. If unaware, Kinhost Carapace in the base game has an issue since each Card Upgrade he applies will be scaled with its "When Played" effect. The base game's Heaven's Aid upgrade does this currently. If intending to use on a Monster Card use CardTraitScalingUpgradeUnitHealthSafely.

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

  • ParamInt: multiplier

CardTraitScalingUpgradeUnitSize

WARNING Do not use this CardTrait on a monster card. Or you will create a Kinhost Carapace. If unaware, Kinhost Carapace in the base game has an issue since each Card Upgrade he applies will be scaled with its "When Played" effect. The base game's Heaven's Aid upgrade does this currently. If intending to use on a Monster Card use CardTraitScalingUpgradeUnitSizeSafely.

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

  • ParamInt: multiplier

CardTraitScalingUpgradeUnitStatusEffect

This CardTrait is unused in the base game seems to be bugged in it's usage requires the card to apply a CardUpgrade to the unit for the trait to kick in.

WARNING Do not use this CardTrait on a monster card. Or you will create a Kinhost Carapace. If unaware, Kinhost Carapace in the base game has an issue since each Card Upgrade he applies will be scaled with its "When Played" effect. The base game's Heaven's Aid upgrade does this currently. If intending to use on a Monster Card use CardTraitScalingUpgradeUnitStatusEffectSafely.

This is a scaling CardTrait for parameters see the section of ScalingCardTrait parameters.

  • ParamInt: multiplier
  • ParamStatusEffects: Status effects to append to the CardUpgrade to the unit. Note that the count of each StatusEffectStackData is ignored and replaced with the scaled value from the tracked value.

CardTraitSelfPurge

Purge

CardTraitShowCardTargets

The only use of this card trait is for showing the number of targets the Card's effects can get as text at the bottom of the card.

It causes the text "(# available)" to show up.

A Good example is Channelsong.

CardTraitSpellAffinity

Unused Spell Affinity.

It appears this one restricts you from playing the card unless you have another Spell card in your hand at the time

This may be bugged though depending on if this Trait is present on a Spell Card itself since it checks all cards currently in the hand and it doesn't explicitly remove the card with this trait.

CardTraitStrongerMagicPower

Attuned

CardTraitTreasure

Offering. Plays itself when discarded (but not by the end of turn discard).

CardTraitUnplayable

Unplayable. Gives card a special look.

CardTraitUnpurgable

Unpurgebale.

Generic Scaling Card Trait Parameters

  • ParamTrackedValue: Tracked variable
  • ParamEntryDuration: Duration of the tracked variable to get.
  • ParamCardType: Card Type restriction (may not make sense depending on TrackedValue)
  • ParamSubtype: Subtype restriction (may not make sense depending on the TrackedValue)
  • ParamStatusEffects: Status Effect Filter (may not make sense depending on the TrackedValue)
  • ParamTeamType: Team type filter (may not make sense depending on the TrackedValue)