Class AddDeathrattleSecondaryAsTargetSpell
java.lang.Object
net.demilich.metastone.game.spells.Spell
net.demilich.metastone.game.spells.AddDeathrattleSpell
net.demilich.metastone.game.spells.AddDeathrattleSecondaryAsTargetSpell
- All Implemented Interfaces:
Serializable
,HasDesc<SpellDesc>
Gives the
target
the SpellArg.SPELL
as a deathrattle.
Resolves the SpellArg.SECONDARY_TARGET
and puts it as the SpellArg.TARGET
of the SpellArg.SPELL
(the deathrattle).
This is useful for "saving" the player's choices or a state of the board. For example, to implement a battlecry, "Battlecry: Choose a minion. Deathrattle: Destroy it.":
"battlecry" { "targetSelection": "MINIONS", "spell": { "class": "AddDeathrattleSecondaryAsTargetSpell", "secondaryTarget": "TARGET", "target": "SELF", "spell": { "class": "DestroySpell" } } }, "deathrattle": { "class": "NullSpell" }, "attributes": { "BATTLECRY": true, "DEATHRATTLES": true }Observe that the
"secondaryTarget"
is EntityReference.TARGET
,
which is the player's chosen target (the minion). This effect then resolves EntityReference.TARGET
and puts it into the DestroySpell
's SpellArg.TARGET
. Observe also that the minion's "deathrattle"
is a NullSpell
; if other effects try
to cast its deathrattle from the deck, for example, it will correctly do nothing.-
Nested Class Summary
Nested classes/interfaces inherited from class net.demilich.metastone.game.spells.AddDeathrattleSpell
AddDeathrattleSpell.CardAftermathTuple
-
Constructor Summary
Constructors -
Method Summary
Methods inherited from class net.demilich.metastone.game.spells.AddDeathrattleSpell
create, create
Methods inherited from class net.demilich.metastone.game.spells.Spell
cast, castForPlayer, checkArguments, getDesc, isNativeStateful, setDesc, toString
-
Constructor Details
-
AddDeathrattleSecondaryAsTargetSpell
public AddDeathrattleSecondaryAsTargetSpell()
-
-
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.- Overrides:
onCast
in classAddDeathrattleSpell
- 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:
-