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
Constructors -
Method Summary
Modifier and TypeMethodDescriptionclone()create()entrySet()This makes it possible to iterate through a CardDesc.com.hiddenswitch.spellsource.rpc.Spellsource.ArtgetArt()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.intThe base attack of the minion.intThe base HP of the minion.intThe 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.MINIONhaschooseOneBattlecriesspecified.Indicates the spell card that will be cast when Fandral Staghelm is in play, if this is aSpellsource.CardTypeMessage.CardType.CHOOSE_ONEcard.Whenever aSpellsource.CardTypeMessage.CardType.MINIONhas 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_ONEand this field is specified, the player will get to choose between these two cards for their effects.booleanTheConditionthat must be met in order for thisSpellsource.CardTypeMessage.CardType.SPELLto be playable.intIndicates the number of times thequesttrigger needs to fire until this quest'sspellis cast.intIndicates the amount of damage thisSpellsource.CardTypeMessage.CardType.WEAPONwill deal (add to the attack of the equippingHero).Specifies the minion, hero or weapon's deathrattle.Indiciates anEnchantmentthat 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.intIndicates the durability of thisSpellsource.CardTypeMessage.CardType.WEAPON.intIndicates the version of this card description.Stores flavor text provided by the author.Indicates anEnchantmentthat 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_POWERthat thisSpellsource.CardTypeMessage.CardType.HEROshould 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 anEnchantmentthat is active while the card is in the player'sSpellsource.ZonesMessage.Zones.HAND.Describes an array ofEnchantments that are active while the card is in the player'sSpellsource.ZonesMessage.Zones.HAND.getQuest()Indicates theEventTriggerthat will increase the number of fires of the quest by one.getRace()The actor's race, or "tribe."com.hiddenswitch.spellsource.rpc.Spellsource.RarityMessage.RarityThe rarity of the card.String[]Indicates theEventTriggerfor this secret.getSet()The set this card belongs to.String[]getSets()getSpell()Indicates the spell that thisSpellsource.CardTypeMessage.CardType.SPELLorSpellsource.CardTypeMessage.CardType.HERO_POWERshould cast whenCard.play().Indicates what kind of target selection thisSpellsource.CardTypeMessage.CardType.SPELLorSpellsource.CardTypeMessage.CardType.HERO_POWERhas.com.hiddenswitch.spellsource.rpc.Spellsource.Tooltip[]Specifies tooltips for this card.Specifies the minion, hero, or weapon'sEnchantmentthat become active when the actor goes into an in-play zone (Spellsource.ZonesMessage.Zones.BATTLEFIELD,Spellsource.ZonesMessage.Zones.WEAPON,Spellsource.ZonesMessage.Zones.HERO).Multipletriggerobjects that should come into play whenever the actor comes into an in-play zone.com.hiddenswitch.spellsource.rpc.Spellsource.CardTypeMessage.CardTypegetType()The type of card this instance describes.getWiki()Stores notes about the card's implementation or behaviour.booleanIndicates whether or not the card should appear in discovers and in the collection browser.booleanbooleanIndicates whether, based on the code written on this card, this card ever reveals itself.setArt(com.hiddenswitch.spellsource.rpc.Spellsource.Art art) voidsetAttributes(AttributeMap attributes) voidvoidvoidvoidsetBaseAttack(int baseAttack) voidsetBaseHp(int baseHp) voidsetBaseManaCost(int baseManaCost) voidsetBattlecry(OpenerDesc battlecry) voidsetCardCostModifier(CardCostModifierDesc cardCostModifier) voidsetChooseBothBattlecry(OpenerDesc chooseBothBattlecry) voidsetChooseBothCardId(String chooseBothCardId) voidsetChooseOneBattlecries(OpenerDesc[] chooseOneBattlecries) voidsetChooseOneCardIds(String[] chooseOneCardIds) voidsetCollectible(boolean collectible) voidsetCondition(ConditionDesc condition) voidsetCountByValue(boolean countByValue) voidsetCountUntilCast(int countUntilCast) voidsetDamage(int damage) voidsetDeathrattle(SpellDesc deathrattle) voidsetDeckTrigger(EnchantmentDesc deckTrigger) voidsetDeckTriggers(EnchantmentDesc[] deckTriggers) voidsetDescription(String description) voidsetDurability(int durability) voidsetDynamicDescription(DynamicDescriptionDesc[] dynamicDescription) voidsetFileFormatVersion(int fileFormatVersion) voidvoidsetGameTriggers(EnchantmentDesc[] gameTriggers) setGlowConditions(List<Condition> glowConditions) voidvoidvoidsetHeroClass(String heroClass) voidsetHeroClasses(String[] heroClasses) voidsetHeroPower(String heroPower) voidvoidvoidsetManaCostModifier(ValueProviderDesc manaCostModifier) voidvoidsetOnEquip(SpellDesc onEquip) voidsetOnUnequip(SpellDesc onUnequip) voidsetPassiveTrigger(EnchantmentDesc passiveTrigger) voidsetPassiveTriggers(EnchantmentDesc[] passiveTriggers) voidsetQuest(EventTriggerDesc quest) voidvoidsetRarity(com.hiddenswitch.spellsource.rpc.Spellsource.RarityMessage.Rarity rarity) voidsetSecondPlayerBonusCards(String[] secondPlayerBonusCards) voidsetSecret(EventTriggerDesc secret) voidvoidvoidvoidsetTargetSelection(TargetSelection targetSelection) voidsetTargetSelectionCondition(ConditionDesc targetSelectionCondition) voidsetTargetSelectionOverride(TargetSelection targetSelectionOverride) setTooltips(com.hiddenswitch.spellsource.rpc.Spellsource.Tooltip[] tooltips) voidsetTrigger(EnchantmentDesc trigger) voidsetTriggers(EnchantmentDesc[] triggers) voidsetType(com.hiddenswitch.spellsource.rpc.Spellsource.CardTypeMessage.CardType type) voidtryCreate(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, waitMethods 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.jsonwill 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
Spellsourcemigrations system provides a mechanism for changing IDs of cards after they have been given to players; see thenetmodule'sSpellsourceclass 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.NAMEon 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.ANYfor 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.FREEfor tokens, andSpellsource.RarityMessage.Rarity.ALLIANCEforlegacycards. -
getSet
The set this card belongs to. Unless the card's author designed this card in the context of a greater set, useCardSet.CUSTOMfor community cards.Eventually, a set will be immutable and represent a particular release or expansion, while a
DeckFormatwill 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. Use0as the cost of those cards.Choice cards for
Spellsource.CardTypeMessage.CardType.CHOOSE_ONEcards andSpellsource.CardTypeMessage.CardType.MINIONcards with choose-one battlecries that transform into anotherMinionshould 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.AttributeMapis aMaptype, 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.OVERLOADcard 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 theCardDescwould look like:"manaCostModifier": { "class": "PlayerAttributeValueProvider", "offset": -1, "playerAttribute": "HAND_COUNT", "targetPlayer": "SELF" } -
setManaCostModifier
-
getPassiveTrigger
Describes anEnchantmentthat 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 ofEnchantments 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) forpassiveTriggerinto the brackets here. For example:"passiveTriggers": [ { ... }, { ... } ] -
setPassiveTriggers
-
getDeckTrigger
Indiciates anEnchantmentthat is active while the card is in the player'sSpellsource.ZonesMessage.Zones.DECK. -
setDeckTrigger
-
getGameTriggers
Indicates anEnchantmentthat is active as soon as the game begins (just afterGameLogic.handleMulligan(Player, boolean, List), in theGameLogic.startGameForPlayer(Player)phase.Note that the
GameStartEventis raised twice, once for each player, so yourEventTriggerDescshould 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
GameStartTriggeris 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
Cardis played from the hand.In order to be counted as a "Battlecry" minion, the card's
attributesmust contain aAttribute.BATTLECRYkey withtrue.- See Also:
-
setBattlecry
-
getDeathrattle
Specifies the minion, hero or weapon's deathrattle.- See Also:
-
setDeathrattle
-
getTrigger
Specifies the minion, hero, or weapon'sEnchantmentthat 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_POWERshould have itspassiveTriggerorpassiveTriggersfields 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
Multipletriggerobjects 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).Cardentities 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.MINIONhas 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.CARDargument of the spell, i.e., the minion the base minion will transform into.The
SpellArg.CARDspecified 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.MINIONhaschooseOneBattlecriesspecified. -
setChooseBothBattlecry
-
getChooseOneCardIds
Whenever the card is aSpellsource.CardTypeMessage.CardType.CHOOSE_ONEand 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_ONEcard. -
setChooseBothCardId
-
getDamage
public int getDamage()Indicates the amount of damage thisSpellsource.CardTypeMessage.CardType.WEAPONwill 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_POWERthat thisSpellsource.CardTypeMessage.CardType.HEROshould put into play for the player. -
setHeroPower
-
getTargetSelection
Indicates what kind of target selection thisSpellsource.CardTypeMessage.CardType.SPELLorSpellsource.CardTypeMessage.CardType.HERO_POWERhas. Any choice other thanTargetSelection.NONEwill prompt the user to pick a target as filtered by thespellfield'sSpellArg.FILTERfield.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_MINIONSis 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.SPELLorSpellsource.CardTypeMessage.CardType.HERO_POWERshould cast whenCard.play().For
Spellsource.CardTypeMessage.CardType.SPELLthat contain asecretorquestfield set, this spell is cast when the secret or quest is activated. -
setSpell
-
getCondition
TheConditionthat must be met in order for thisSpellsource.CardTypeMessage.CardType.SPELLto be playable. -
setCondition
-
getGroup
Indicates the subspells/subcards of thisSpellsource.CardTypeMessage.CardType.GROUP.Used for Adaptation effects.
-
setGroup
-
getSecret
Indicates theEventTriggerfor this secret. -
setSecret
-
getQuest
Indicates theEventTriggerthat will increase the number of fires of the quest by one. -
setQuest
-
getCountUntilCast
public int getCountUntilCast()Indicates the number of times thequesttrigger needs to fire until this quest'sspellis 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:
entrySetin 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(),ComboSpelland 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:
trueif any spell written on the card is aRevealCardSpellwith 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:
tryCreatein interfaceAbstractEnchantmentDesc<Enchantment>
-
getArt
public com.hiddenswitch.spellsource.rpc.Spellsource.Art getArt()
-