Log in

Forge AbilityCost

Cost is a class that attempts to streamline costs throughout all cards in Forge. A Cost string is parsed by the Cost class. It requires that each cost is separated by a space. I will use examples that could be found in Ability, although certain Keyworded abilities do use Cost

Contents

Common

Description

Description is an optional last parameter in the cost. This is to allow for complex Type definitions to have a nice Description that is readable.

XChoice

XChoice is the variable that basically means "You can choose whatever you want for this variable. But you need to decide what X is before you start paying." This would commonly appear as an SVar definition of X.

xPaid

xPaid is the amount of Mana Paid for an X Cost. There are a few cards that will use the X Payment to determine other costs (like Abandon Hope) This would commonly appear as an SVar definition of X.

CARDNAME

For Costs that do something to themselves (ex. Discard Self, Sacrifice Self)

Types of Cost

Tap

  • Cost$ T

Untap

  • Cost$ Untap

Mana

Spaces in between different mana types

  • Cost$ 2
    • 2 colorless mana
  • Cost$ B R
    • 1 black and 1 red mana
  • Cost$ WG
    • Hybrid White/Green mana
  • Cost$ S
    • Snow Mana

Discard

Discard has two required parameters and one optional in the form Discard<Num/Type/Description>

  • The first is how many cards are being discarded.
  • The second is what card types can be discarded. (Hand for the whole hand, Random for chosen randomly)

Here's some examples:

  • Discard<1/Card>
    • "Discard 1 Card"
  • Discard<0/Hand> (The number is ignored when Hand is used as a type.)
    • Discard your hand
  • Discard<2/Random>
    • Discard 2 Cards at Random
  • Discard<1/CARDNAME>
    • Discard Self (CARDNAME)
  • Discard<1/Creature.Black/Black Creature>
    • Discard 1 Black Creature

Subtract(Remove) Counter

SubCounter has two required parameters in the form of SubCounter<Num/CounterName>

  • SubCounter<2/P1P1>
  • SubCounter<1/CHARGE>

Remember the token name should appear all in caps.

In the future, this will be expanded to Remove Counters from a ValidCard you Control.

Sacrifice

Sacrifice has two required parameters and one optional parameter in the form of SubCounter<Num/Type/Description>

  • Sac<1/Artifact>
  • Sac<1/CARDNAME>

Pay Life

PayLife has one required parameter in the form of PayLife<Num>

  • PayLife<2>

TapXType

TapXType has two required parameters and one option in the form of tapXType<Num/Type/Description>

  • tapXType<3/Creature.White>

Return Type

Return has two required parameters and one optional in the form of Return<Num/Type/Description>

  • Return<1/Land>
  • Return<1/CARDNAME>

Exile

Exile has two required parameters and one option in the form of Exile<Num/Type/Description>

There are also a few sister abilities that all fit under the Exile umbrella.

  • Exile (for cards on the Battlefield)
  • ExileFromGraveyard
  • ExileFromHand
  • ExileFromTop (for cards on top of your library, this doesn't default Type to Card, so make sure you add it)

Some Examples

  • Exile<1/Creature>
  • Exile<1/CARDNAME>
  • ExileFromHand<1/CARDNAME>
  • ExileFromHand<2/Creature>
  • ExileFromGrave<1/CARDNAME>
  • ExileFromGrave<1/Treefolk>
  • ExileFromTop<10/Card>

Putting it Together

Putting it together is pretty simple. Just make sure there is a space between each cost. If a card needs to pay mana and tap, it would look like this:

  • Cost$1 W T

For a spell that has an additional cost of sacrificing a land, put the mana cost and the additional cost in the cost.

  • Cost$2 G Sac<1/Land>

One of the new features of Cost is you can have more than one of the same Cost type

  • Cost$ Sac<1/Swamp> Sac<1/Creature>

There are many examples, but they mostly fall into those categories.