Class DiscardSpell
java.lang.Object
net.demilich.metastone.game.spells.Spell
net.demilich.metastone.game.spells.AbstractRemoveCardSpell
net.demilich.metastone.game.spells.DiscardSpell
- All Implemented Interfaces:
Serializable
,HasDesc<SpellDesc>
- Direct Known Subclasses:
RoastSpell
Discards cards from the
Spellsource.ZonesMessage.Zones.HAND
or from a CardSource
like
DeckSource
which does not generate new cards (does not implement HasCardCreationSideEffects
), like DeckSource
.
Discarding from the hand generates a DiscardEvent
, while discarding from the deck generates a RoastEvent
. Use RoastSpell
to remove cards from the deck when using the Roast keyword.
To discard all cards, use a SpellArg.VALUE
of -1
.
Cards to discard are always chosen at random.
SpellArg.CARD_FILTER
can be specified to filter which cards should be discarded.
For example, to implement "Battlecry: Discard a Banana to deal 3 damage to an enemy minion:"
"battlecry": { "condition": { "class": "HoldsCardCondition", "cardFilter": { "class": "SpecificCardFilter", "card": "spell_bananas" } }, "targetSelection": "ENEMY_MINIONS", "spell": { "class": "MetaSpell", "spells": [ { "class": "DiscardSpell", "cardFilter": { "class": "SpecificCardFilter", "card": "spell_bananas" } }, { "class": "DamageSpell", "value": 3 } ] } }
- See Also:
-
Field Summary
-
Constructor Summary
-
Method Summary
Methods inherited from class net.demilich.metastone.game.spells.Spell
cast, castForPlayer, checkArguments, getDesc, isNativeStateful, setDesc, toString
-
Field Details
-
ALL_CARDS
public static final int ALL_CARDS- See Also:
-
-
Constructor Details
-
DiscardSpell
public DiscardSpell()
-
-
Method Details
-
create
-
create
-
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:
-