Class FromDeckToHandSpell
java.lang.Object
net.demilich.metastone.game.spells.Spell
net.demilich.metastone.game.spells.FromDeckToHandSpell
- All Implemented Interfaces:
Serializable
,HasDesc<SpellDesc>
Moves a card from the deck to the hand. Triggers a draw event.
If a target
is specified and it's inside the caster's deck, that card is the one that is moved.
If a SpellArg.CARD
is specified, it is interpreted as a "replacement card" in case no cards are found that
satisfy the SpellArg.CARD_FILTER
or the deck is empty.
Otherwise, a CardFilter
is evaluated against a DeckSource
from the point of view of the caster.
If SpellArg.EXCLUSIVE
is set, only draws distinct cards.
For example, to draw a 10-cost minion from the caster's deck:
{ "class": "FromDeckToHandSpell", "value": 1, "cardFilter": { "class": "CardFilter", "cardType": "MINION", "manaCost": 10 }, "targetPlayer": "SELF" }
This effect is to be rolled into the DrawCardSpell
.
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic void
drawFromDeck
(GameContext context, Player player, Entity source, Entity target, int cardsToDraw, boolean removeDuplicates, @Nullable EntityFilter cardFilter, @Nullable SpellDesc spellOnCard, @Nullable String replacementCard) Draws a filtered card from the deck.protected void
Implementations ofonCast
are the meat-and-bones of a spell's effects.Methods inherited from class net.demilich.metastone.game.spells.Spell
cast, castForPlayer, checkArguments, getDesc, isNativeStateful, setDesc, toString
-
Constructor Details
-
FromDeckToHandSpell
public FromDeckToHandSpell()
-
-
Method Details
-
onCast
protected void onCast(GameContext context, Player player, SpellDesc desc, Entity source, Entity target) Description copied from class:Spell
Implementations ofonCast
are the meat-and-bones of a spell's effects. This should actually call a variety of methods inGameLogic
, generate cards usingSpellUtils.getCards(GameContext, Player, Entity, Entity, SpellDesc)
, interpretSpellArg
keys in thedesc
, etc.Observe that subclasses of
Spell
mostly just need to implement this function. Also, observe that instances ofSpell
are stateless: all the state is provided as arguments to this function.- Specified by:
onCast
in classSpell
- Parameters:
context
- The game contextplayer
- The casting playerdesc
- The collection ofSpellArg
keys and values that are interpreted by the implementation of this function to actually cause effects in a gamesource
- The entity from which this effect is happening (typically a card or a minion if it's a battlecry).target
- The particular target of this invocation of the spell. When a spell hits multiple targets, like an AoE damage effect, this method is called once for each target in the list of targets.- See Also:
-
drawFromDeck
public static void drawFromDeck(GameContext context, Player player, Entity source, Entity target, int cardsToDraw, boolean removeDuplicates, @Nullable @Nullable EntityFilter cardFilter, @Nullable @Nullable SpellDesc spellOnCard, @Nullable @Nullable String replacementCard) Draws a filtered card from the deck.- Parameters:
context
- the game contextplayer
- the player whose card should be drawnsource
- the source entitytarget
- the card to draw; or, if it is null or not a card in the player's deck, the target that will be passed to the spell specified to be cast on the drawn card (the spell itself will receive the drawn card as theEntityReference.OUTPUT
)cardsToDraw
- the number of cards to drawremoveDuplicates
- whentrue
, removes duplicates from the pool of cards to drawcardFilter
- the filter to apply to the cards, ornull
for no filterspellOnCard
- the spell to cast on the drawn card, if one was successfully drawn and put into the handreplacementCard
- when notnull
, receive this card instead if the deck does not contain any cards that satisfies thecardFilter
-