Class CardDesc
- All Implemented Interfaces:
Serializable
,Cloneable
,HasEntrySet<CardDescArg,
,Object> AbstractEnchantmentDesc<Enchantment>
All types of cards are encoded as a CardDesc
; spells, secrets, hero cards, hero powers, minions, etc. This
class should only store the data related to the card, not card functionality itself.
Each of the fields in this class correspond exactly to the fields in a .json
file located in the
cards
directory. A card JSON looks like:
{ "name": "Angry Primate", "baseManaCost": 1, "type": "MINION", "heroClass": "ANY", "baseAttack": 1, "baseHp": 2, "rarity": "COMMON", "race": "BEAST", "description": "Battlecry: Add a Banana to your hand.", line 63: "battlecry": { "targetSelection": "NONE", "spell": { "class": "ReceiveCardSpell", line 67: "cards": [ "spell_bananas" ] } }, line 72: "attributes": { "BATTLECRY": true }, "collectible": true, "set": "CUSTOM", "fileFormatVersion": 1 }Observe that each of the keys in the JSON, or the text matching the quotation marks, matches a field in this class. So
"name"
corresponds to the name
field, "battlecry"
corresponds to the battlecry
field, etc.
To figure out the format of the value of complex objects like "battlecry" on line 63 in the example above, look at
the type of the field in this class. In the case of battlecry, the type is a OpenerDesc
, and it
appears to also have fields that exactly correspond to the keys that appear in the JSON object that is the value of
"battlecry."
Some objects, like "spell"
, are Desc
classes: these use a corresponding "argument" enumeration to
determine the names and types of the fields. In the case of SpellDesc
, the keys are SpellArg
names,
except written in camelCase
. In the example of Angry Primate above, the "cards"
key on line 67 inside
the SpellDesc
corresponds to the SpellArg.CARDS
enum name. Observe that "cards"
is just
SpellArg.CARDS
except lowercase.
The only exception to this rule is the AttributeMap
object located on line 72 in the example above. The keys
(left hand part in quotation marks of the JSON object) should always be capitalized, and correspond exactly to the
names in Attribute
.
-
Nested Class Summary
Nested classes/interfaces inherited from interface net.demilich.metastone.game.cards.desc.HasEntrySet
HasEntrySet.BfsEnum, HasEntrySet.BfsNode<T extends Enum,
V> -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionclone()
create()
entrySet()
This makes it possible to iterate through a CardDesc.com.hiddenswitch.spellsource.rpc.Spellsource.Art
getArt()
Represents a key-value collection ofAttribute
.getAura()
The aura that is active whenever the actor is in a in-play zone (Spellsource.ZonesMessage.Zones.BATTLEFIELD
,Spellsource.ZonesMessage.Zones.WEAPON
,Spellsource.ZonesMessage.Zones.HERO
).AuraDesc[]
getAuras()
The auras that are active whenever the actor is in play.Indicates the author of this card.int
The base attack of the minion.int
The base HP of the minion.int
The base mana cost of the card.Specifies the minion, hero or weapon's battlecry.A card cost modifier that is active whenever the actor is in play.Indicates the battlecry that will be played when Fandral Staghelm is in play, if thisSpellsource.CardTypeMessage.CardType.MINION
haschooseOneBattlecries
specified.Indicates the spell card that will be cast when Fandral Staghelm is in play, if this is aSpellsource.CardTypeMessage.CardType.CHOOSE_ONE
card.Whenever aSpellsource.CardTypeMessage.CardType.MINION
has choose one battlecries, the player will be given an option of which battlecry will be played for the minion.String[]
Whenever the card is aSpellsource.CardTypeMessage.CardType.CHOOSE_ONE
and this field is specified, the player will get to choose between these two cards for their effects.boolean
TheCondition
that must be met in order for thisSpellsource.CardTypeMessage.CardType.SPELL
to be playable.int
Indicates the number of times thequest
trigger needs to fire until this quest'sspell
is cast.int
Indicates the amount of damage thisSpellsource.CardTypeMessage.CardType.WEAPON
will deal (add to the attack of the equippingHero
).Specifies the minion, hero or weapon's deathrattle.Indiciates anEnchantment
that is active while the card is in the player'sSpellsource.ZonesMessage.Zones.DECK
.A description of the card that should be rendered in the client.int
Indicates the durability of thisSpellsource.CardTypeMessage.CardType.WEAPON
.int
Indicates the version of this card description.Stores flavor text provided by the author.Indicates anEnchantment
that is active as soon as the game begins (just afterGameLogic.handleMulligan(Player, boolean, List)
, in theGameLogic.startGameForPlayer(Player)
phase.Iterates through the most important conditions on the card, heuristically.getGroup()
Indicates the subspells/subcards of thisSpellsource.CardTypeMessage.CardType.GROUP
.getHero()
The hero class this card belongs to.String[]
For tri-class cards from the MSOG Hearthstone expansion, this field contains their three classes.Indicates aSpellsource.CardTypeMessage.CardType.HERO_POWER
that thisSpellsource.CardTypeMessage.CardType.HERO
should put into play for the player.getId()
The ID of the card when referred to by other cards and other places in the game engine.Indicates whether this card will participate in the determination of legacy mechanics, the storing of data about cards across all matches.Indicates an amount the card's cost should be subtracted by while the card is in the player's hand.getName()
The name of the card that should be rendered in the client.Indicates a spell that should be cast when the weapon enters the battlefield/an in-play zone, regardless of how it is put into play (i.e., unlike a battlecry, which is only activated by cards played from the hand).Indicates a spell taht shoudl be cast when the weapon exits the battlefield/an in-play zone, regardless of how it is removed.Describes anEnchantment
that is active while the card is in the player'sSpellsource.ZonesMessage.Zones.HAND
.Describes an array ofEnchantment
s that are active while the card is in the player'sSpellsource.ZonesMessage.Zones.HAND
.getQuest()
Indicates theEventTrigger
that will increase the number of fires of the quest by one.getRace()
The actor's race, or "tribe."com.hiddenswitch.spellsource.rpc.Spellsource.RarityMessage.Rarity
The rarity of the card.String[]
Indicates theEventTrigger
for this secret.getSet()
The set this card belongs to.String[]
getSets()
getSpell()
Indicates the spell that thisSpellsource.CardTypeMessage.CardType.SPELL
orSpellsource.CardTypeMessage.CardType.HERO_POWER
should cast whenCard.play()
.Indicates what kind of target selection thisSpellsource.CardTypeMessage.CardType.SPELL
orSpellsource.CardTypeMessage.CardType.HERO_POWER
has.com.hiddenswitch.spellsource.rpc.Spellsource.Tooltip[]
Specifies tooltips for this card.Specifies the minion, hero, or weapon'sEnchantment
that become active when the actor goes into an in-play zone (Spellsource.ZonesMessage.Zones.BATTLEFIELD
,Spellsource.ZonesMessage.Zones.WEAPON
,Spellsource.ZonesMessage.Zones.HERO
).Multipletrigger
objects that should come into play whenever the actor comes into an in-play zone.com.hiddenswitch.spellsource.rpc.Spellsource.CardTypeMessage.CardType
getType()
The type of card this instance describes.getWiki()
Stores notes about the card's implementation or behaviour.boolean
Indicates whether or not the card should appear in discovers and in the collection browser.boolean
boolean
Indicates whether, based on the code written on this card, this card ever reveals itself.setArt
(com.hiddenswitch.spellsource.rpc.Spellsource.Art art) void
setAttributes
(AttributeMap attributes) void
void
void
void
setBaseAttack
(int baseAttack) void
setBaseHp
(int baseHp) void
setBaseManaCost
(int baseManaCost) void
setBattlecry
(OpenerDesc battlecry) void
setCardCostModifier
(CardCostModifierDesc cardCostModifier) void
setChooseBothBattlecry
(OpenerDesc chooseBothBattlecry) void
setChooseBothCardId
(String chooseBothCardId) void
setChooseOneBattlecries
(OpenerDesc[] chooseOneBattlecries) void
setChooseOneCardIds
(String[] chooseOneCardIds) void
setCollectible
(boolean collectible) void
setCondition
(ConditionDesc condition) void
setCountByValue
(boolean countByValue) void
setCountUntilCast
(int countUntilCast) void
setDamage
(int damage) void
setDeathrattle
(SpellDesc deathrattle) void
setDeckTrigger
(EnchantmentDesc deckTrigger) void
setDeckTriggers
(EnchantmentDesc[] deckTriggers) void
setDescription
(String description) void
setDurability
(int durability) void
setDynamicDescription
(DynamicDescriptionDesc[] dynamicDescription) void
setFileFormatVersion
(int fileFormatVersion) void
void
setGameTriggers
(EnchantmentDesc[] gameTriggers) setGlowConditions
(List<Condition> glowConditions) void
void
void
setHeroClass
(String heroClass) void
setHeroClasses
(String[] heroClasses) void
setHeroPower
(String heroPower) void
void
void
setManaCostModifier
(ValueProviderDesc manaCostModifier) void
void
setOnEquip
(SpellDesc onEquip) void
setOnUnequip
(SpellDesc onUnequip) void
setPassiveTrigger
(EnchantmentDesc passiveTrigger) void
setPassiveTriggers
(EnchantmentDesc[] passiveTriggers) void
setQuest
(EventTriggerDesc quest) void
void
setRarity
(com.hiddenswitch.spellsource.rpc.Spellsource.RarityMessage.Rarity rarity) void
setSecondPlayerBonusCards
(String[] secondPlayerBonusCards) void
setSecret
(EventTriggerDesc secret) void
void
void
void
setTargetSelection
(TargetSelection targetSelection) void
setTargetSelectionCondition
(ConditionDesc targetSelectionCondition) void
setTargetSelectionOverride
(TargetSelection targetSelectionOverride) setTooltips
(com.hiddenswitch.spellsource.rpc.Spellsource.Tooltip[] tooltips) void
setTrigger
(EnchantmentDesc trigger) void
setTriggers
(EnchantmentDesc[] triggers) void
setType
(com.hiddenswitch.spellsource.rpc.Spellsource.CardTypeMessage.CardType type) void
tryCreate
(GameContext context, Player player, Entity effectSource, Card enchantmentSource, Entity host, boolean force) Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface net.demilich.metastone.game.cards.desc.HasEntrySet
bfs
-
Constructor Details
-
CardDesc
public CardDesc()
-
-
Method Details
-
create
- Returns:
- A card.
-
getCollectible
public boolean getCollectible() -
clone
-
getId
The ID of the card when referred to by other cards and other places in the game engine.Typically, the ID is not specified inside the card file. It is assumed to be the file name of the card file, minus the JSON extension. For example, the card
minion_bloodfen_raptor.json
will have its ID field assigned tominion_bloodfen_raptor
.IDs should not be changed after a public server release is made, even when there is a misspelling or other issue. Player's inventories store references to the underlying cards using the IDs, and changing the IDs will damage those references. The
Spellsource
migrations system provides a mechanism for changing IDs of cards after they have been given to players; see thenet
module'sSpellsource
class for details. -
setId
-
getName
The name of the card that should be rendered in the client. The name is also used for some card mechanics, like The Caverns Below. The name can be overridden byAttribute.NAME
on the card entity. -
setName
-
getDescription
A description of the card that should be rendered in the client. This field does not support formatting specifiers like bolding, italics, etc. -
setDescription
-
getLegacy
Indicates whether this card will participate in the determination of legacy mechanics, the storing of data about cards across all matches.- See Also:
-
setLegacy
-
getType
public com.hiddenswitch.spellsource.rpc.Spellsource.CardTypeMessage.CardType getType()The type of card this instance describes. -
getHeroClass
The hero class this card belongs to.Choose
HeroClass.ANY
for a neutral card. -
setHeroClass
-
getHeroClasses
For tri-class cards from the MSOG Hearthstone expansion, this field contains their three classes. Typically uninteresting to use for custom cards. -
setHeroClasses
-
getRarity
public com.hiddenswitch.spellsource.rpc.Spellsource.RarityMessage.Rarity getRarity()The rarity of the card. UseSpellsource.RarityMessage.Rarity.FREE
for tokens, andSpellsource.RarityMessage.Rarity.ALLIANCE
forlegacy
cards. -
getSet
The set this card belongs to. Unless the card's author designed this card in the context of a greater set, useCardSet.CUSTOM
for community cards.Eventually, a set will be immutable and represent a particular release or expansion, while a
DeckFormat
will represent a certain set of rules of play. -
getSets
-
setSet
-
getBaseManaCost
public int getBaseManaCost()The base mana cost of the card. All cards should have this field set, even if they are virtual / non-acting cards. Use0
as the cost of those cards.Choice cards for
Spellsource.CardTypeMessage.CardType.CHOOSE_ONE
cards andSpellsource.CardTypeMessage.CardType.MINION
cards with choose-one battlecries that transform into anotherMinion
should have the same cost as the parent card. For example, the choice card of Wrath should still have Wrath's cost, not0
. -
setBaseManaCost
public void setBaseManaCost(int baseManaCost) -
isCollectible
public boolean isCollectible()Indicates whether or not the card should appear in discovers and in the collection browser. Choose one choice cards, virtual choice cards, tokens, base heroes, and previous versions of other cards ("unnerfed" cards) should not be collectible. -
setCollectible
public void setCollectible(boolean collectible) -
getAttributes
Represents a key-value collection ofAttribute
.AttributeMap
is aMap
type, so in JSON, it will be represented by a bracketed object.For example, a spell with lifesteal will have a field
"attributes"
that looks like:"attributes": { "LIFESTEAL": true }
Not all attributes areBoolean
. For example, anAttribute.OVERLOAD
card that reads, "Overload: 3" will have a value equal to amount of overload the card will give:"attributes": { "OVERLOAD": 3 }
-
setAttributes
-
getFileFormatVersion
public int getFileFormatVersion()Indicates the version of this card description. Defaults to1
. When new expansions are released, this number should be incremented for the new cards to help the game record traces and reproduce bugs (only the cards that were around for a particular release of the code should participate in a game trace's lookup of cards in theCardCatalogue
, for example). -
setFileFormatVersion
public void setFileFormatVersion(int fileFormatVersion) -
getManaCostModifier
Indicates an amount the card's cost should be subtracted by while the card is in the player's hand.For example, to decrease the card's cost for each other card in the player's hand, the
"manaCostModifier"
field in theCardDesc
would look like:"manaCostModifier": { "class": "PlayerAttributeValueProvider", "offset": -1, "playerAttribute": "HAND_COUNT", "targetPlayer": "SELF" }
-
setManaCostModifier
-
getPassiveTrigger
Describes anEnchantment
that is active while the card is in the player'sSpellsource.ZonesMessage.Zones.HAND
.For example, to reduce the cost of a card each turn the card is in the player's hand, the
"passiveTrigger"
field should look like:"passiveTrigger": { "eventTrigger": { "class": "TurnStartTrigger", "targetPlayer": "SELF" }, "spell": { "class": "CardCostModifierSpell", "target": "SELF", "cardCostModifier": { "class": "CardCostModifier", "target": "SELF", "value": 1, "operation": "SUBTRACT" } } }
- See Also:
-
setPassiveTrigger
-
getPassiveTriggers
Describes an array ofEnchantment
s that are active while the card is in the player'sSpellsource.ZonesMessage.Zones.HAND
.Arrays in JSON are specified using
[]
. Place what you would ordinarily put in the value part (to the right of the colon) forpassiveTrigger
into the brackets here. For example:"passiveTriggers": [ { ... }, { ... } ]
-
setPassiveTriggers
-
getDeckTrigger
Indiciates anEnchantment
that is active while the card is in the player'sSpellsource.ZonesMessage.Zones.DECK
. -
setDeckTrigger
-
getGameTriggers
Indicates anEnchantment
that is active as soon as the game begins (just afterGameLogic.handleMulligan(Player, boolean, List)
, in theGameLogic.startGameForPlayer(Player)
phase.Note that the
GameStartEvent
is raised twice, once for each player, so yourEventTriggerDesc
should specify aEventTriggerArg.TARGET_PLAYER
.For example, consider the text, "Passive: You draw an extra card at the start of every turn." A passive is implemented as a game trigger, and typically it puts another enchantment into play. Observe that the
GameStartTrigger
is used to do something when the game starts, while the actual effect is implemented by a different enchantment:"gameTriggers": [{ "eventTrigger": { "class": "GameStartTrigger", "targetPlayer": "SELF" }, "spell": { "class": "AddEnchantmentSpell", "trigger": { "eventTrigger": { "class": "TurnStartTrigger", "targetPlayer": "SELF" }, "spell": { "class": "DrawCardSpell" } } } }]
-
setGameTriggers
-
getAuthor
Indicates the author of this card.This field will be migrated to indicate where this username originated from (e.g., Discord versus Reddit versus Spellsource).
-
setAuthor
-
getFlavor
Stores flavor text provided by the author. -
setFlavor
-
getWiki
Stores notes about the card's implementation or behaviour. Use this field to explain surprising rules or to do a FAQ.This field will be migrated to support Markdown syntax in the future for better rendering controls in the client.
-
getHero
-
setWiki
-
getBattlecry
Specifies the minion, hero or weapon's battlecry.Battlecries are always executed whenever the
Card
is played from the hand.In order to be counted as a "Battlecry" minion, the card's
attributes
must contain aAttribute.BATTLECRY
key withtrue
.- See Also:
-
setBattlecry
-
getDeathrattle
Specifies the minion, hero or weapon's deathrattle.- See Also:
-
setDeathrattle
-
getTrigger
Specifies the minion, hero, or weapon'sEnchantment
that become active when the actor goes into an in-play zone (Spellsource.ZonesMessage.Zones.BATTLEFIELD
,Spellsource.ZonesMessage.Zones.WEAPON
,Spellsource.ZonesMessage.Zones.HERO
).Spellsource.CardTypeMessage.CardType.HERO_POWER
should have itspassiveTrigger
orpassiveTriggers
fields set instead of this one, because hero powers behave like an extension of your hand and not like a place in the battlefield. -
setTrigger
-
getTriggers
Multipletrigger
objects that should come into play whenever the actor comes into an in-play zone. -
setTriggers
-
getAura
The aura that is active whenever the actor is in a in-play zone (Spellsource.ZonesMessage.Zones.BATTLEFIELD
,Spellsource.ZonesMessage.Zones.WEAPON
,Spellsource.ZonesMessage.Zones.HERO
).Card
entities do not support auras, since they are not in play.Auras describe ongoing effects on other cards. They are updated at the end of a sequence (i.e., when actors are removed from the battlefield) and whenever the "board" (the three in-play zones) change. Updated means the affected actors are recalculated.
Auras are appropriate for effects like Ironwood Golem, which reads "Taunt. Can only attack if you have 3 or more Armor.":
"aura": { "class": "AttributeAura", "target": "SELF", "condition": { "class": "AttributeCondition", "target": "FRIENDLY_HERO", "value": 3, "attribute": "ARMOR", "operation": "LESS" }, "attribute": "AURA_CANNOT_ATTACK", "secondaryTrigger": { "class": "ArmorChangedTrigger", "targetPlayer": "SELF" } }
Observe that this aura, anAttributeAura
, has a condition to indicate when the specified attribute should or should not be present on the target (EntityReference.SELF
). Also observe that the attribute is prefixed withAURA_
indicating that, as opposed to an effect that is applied once (e.gAttribute.CANNOT_ATTACK
), it is an "aura" effect, and it won't be removed by a silence.- See Also:
-
setAura
-
getAuras
The auras that are active whenever the actor is in play. -
setAuras
-
getRace
The actor's race, or "tribe." -
setRace
-
getCardCostModifier
A card cost modifier that is active whenever the actor is in play. -
setCardCostModifier
-
getBaseAttack
public int getBaseAttack()The base attack of the minion. This will be theActor.getBaseAttack()
value. -
setBaseAttack
public void setBaseAttack(int baseAttack) -
getBaseHp
public int getBaseHp()The base HP of the minion. This will be theActor.getBaseHp()
value. -
setBaseHp
public void setBaseHp(int baseHp) -
getChooseOneBattlecries
Whenever aSpellsource.CardTypeMessage.CardType.MINION
has choose one battlecries, the player will be given an option of which battlecry will be played for the minion.Typically, choose one battlecries that put a "different" minion into play will be implemented using a
TransformMinionSpell
. In this common situation, the client will render the choice card as theSpellArg.CARD
argument of the spell, i.e., the minion the base minion will transform into.The
SpellArg.CARD
specified by the transform spell should not becollectible
. -
setChooseOneBattlecries
-
getChooseBothBattlecry
Indicates the battlecry that will be played when Fandral Staghelm is in play, if thisSpellsource.CardTypeMessage.CardType.MINION
haschooseOneBattlecries
specified. -
setChooseBothBattlecry
-
getChooseOneCardIds
Whenever the card is aSpellsource.CardTypeMessage.CardType.CHOOSE_ONE
and this field is specified, the player will get to choose between these two cards for their effects. The choice card is put into theSpellsource.ZonesMessage.Zones.SET_ASIDE_ZONE
, cast, and then put intoSpellsource.ZonesMessage.Zones.REMOVED_FROM_PLAY
, while the base card is moved to theSpellsource.ZonesMessage.Zones.GRAVEYARD
.These choice cards should not be
collectible
. -
setChooseOneCardIds
-
getChooseBothCardId
Indicates the spell card that will be cast when Fandral Staghelm is in play, if this is aSpellsource.CardTypeMessage.CardType.CHOOSE_ONE
card. -
setChooseBothCardId
-
getDamage
public int getDamage()Indicates the amount of damage thisSpellsource.CardTypeMessage.CardType.WEAPON
will deal (add to the attack of the equippingHero
). -
setDamage
public void setDamage(int damage) -
getDurability
public int getDurability()Indicates the durability of thisSpellsource.CardTypeMessage.CardType.WEAPON
. -
setDurability
public void setDurability(int durability) -
getOnEquip
Indicates a spell that should be cast when the weapon enters the battlefield/an in-play zone, regardless of how it is put into play (i.e., unlike a battlecry, which is only activated by cards played from the hand).Contemporaneously, such effects are better implemented by
aura
. -
setOnEquip
-
getOnUnequip
Indicates a spell taht shoudl be cast when the weapon exits the battlefield/an in-play zone, regardless of how it is removed.Contemporaneously, such effects are better implemented by
aura
. -
setOnUnequip
-
getHeroPower
Indicates aSpellsource.CardTypeMessage.CardType.HERO_POWER
that thisSpellsource.CardTypeMessage.CardType.HERO
should put into play for the player. -
setHeroPower
-
getTargetSelection
Indicates what kind of target selection thisSpellsource.CardTypeMessage.CardType.SPELL
orSpellsource.CardTypeMessage.CardType.HERO_POWER
has. Any choice other thanTargetSelection.NONE
will prompt the user to pick a target as filtered by thespell
field'sSpellArg.FILTER
field.For example, to indicate a spell should prompt the user to choose any Murloc on the battlefield:
"targetSelection": "MINIONS", "spell": { "class": "...", "filter": { "class": "RaceFilter", "race": "MURLOC" }, "..." }
Observe that a"target"
ofEntityReference.ALL_MINIONS
is not specified on the"spell"
field; the target is set to the player's choice, as filtered by"filter"
. -
setTargetSelection
-
getSpell
Indicates the spell that thisSpellsource.CardTypeMessage.CardType.SPELL
orSpellsource.CardTypeMessage.CardType.HERO_POWER
should cast whenCard.play()
.For
Spellsource.CardTypeMessage.CardType.SPELL
that contain asecret
orquest
field set, this spell is cast when the secret or quest is activated. -
setSpell
-
getCondition
TheCondition
that must be met in order for thisSpellsource.CardTypeMessage.CardType.SPELL
to be playable. -
setCondition
-
getGroup
Indicates the subspells/subcards of thisSpellsource.CardTypeMessage.CardType.GROUP
.Used for Adaptation effects.
-
setGroup
-
getSecret
Indicates theEventTrigger
for this secret. -
setSecret
-
getQuest
Indicates theEventTrigger
that will increase the number of fires of the quest by one. -
setQuest
-
getCountUntilCast
public int getCountUntilCast()Indicates the number of times thequest
trigger needs to fire until this quest'sspell
is cast. -
isCountByValue
public boolean isCountByValue() -
setCountUntilCast
public void setCountUntilCast(int countUntilCast) -
getTooltips
public com.hiddenswitch.spellsource.rpc.Spellsource.Tooltip[] getTooltips()Specifies tooltips for this card.If
Spellsource.Tooltip.getKeywordsList()
is written on a card's tooltip, the game will make the tooltip appear wherever the keyword appears in any card'sgetDescription()
. -
setGlowConditions
-
entrySet
This makes it possible to iterate through a CardDesc.- Specified by:
entrySet
in interfaceHasEntrySet<CardDescArg,
Object> - Returns:
- An entry set for this instance.
-
getDeckTriggers
-
getGlowConditions
Iterates through the most important conditions on the card, heuristically.This includes spell conditions (
getCondition()
, opener conditionsOpenerDesc.getCondition()
,ComboSpell
and condition arguments specified on subspells.- Returns:
- A stream.
-
revealsSelf
public boolean revealsSelf()Indicates whether, based on the code written on this card, this card ever reveals itself.- Returns:
true
if any spell written on the card is aRevealCardSpell
with targetEntityReference.SELF
-
getDynamicDescription
-
getSecondPlayerBonusCards
-
setSecondPlayerBonusCards
-
getTargetSelectionCondition
-
getTargetSelectionOverride
-
setTargetSelectionCondition
-
setTargetSelectionOverride
-
setCountByValue
public void setCountByValue(boolean countByValue) -
setDeckTriggers
-
setSets
-
setDynamicDescription
-
setHero
-
getEnchantmentDescs
-
tryCreate
public Optional<Enchantment> tryCreate(GameContext context, Player player, Entity effectSource, Card enchantmentSource, Entity host, boolean force) - Specified by:
tryCreate
in interfaceAbstractEnchantmentDesc<Enchantment>
-
getArt
public com.hiddenswitch.spellsource.rpc.Spellsource.Art getArt()
-