Class ChooseOneSpell
java.lang.Object
net.demilich.metastone.game.spells.Spell
net.demilich.metastone.game.spells.ChooseOneSpell
- All Implemented Interfaces:
Serializable
,HasDesc<SpellDesc>
- Direct Known Subclasses:
InvokeSpell
Provides a choice between
SpellArg.SPELL1
and SpellArg.SPELL2
, using the SpellArg.NAME
and
SpellArg.DESCRIPTION
in those spells to generate the choice cards.
The sub-spells should be ChooseOneOptionSpell
spells.
The SpellArg.CONDITION
, if specified, casts SpellArg.SPELL
(if specified) instead of giving choices
(or does nothing).
For example, this text gives the player two choices if their player has more than 1 imbue charge:
{
"class": "ChooseOneSpell",
"condition": {
"class": "AttributeCondition",
"target": "FRIENDLY_PLAYER",
"attribute": "IMBUE",
"value": 1,
"operation": "GREATER_OR_EQUAL"
},
"spell1": {
"class": "ChooseOneOptionSpell",
"name": "Normal",
"description": "Don't Imbue."
},
"spell2": {
"class": "ChooseOneOptionSpell",
"name": "Imbue",
"description": "Give this unit Spellpower +1.",
"spells": [
{
"class": "ModifyAttributeSpell",
"value": 1,
"attribute": "SPELL_DAMAGE",
"target": "SELF"
},
{
"class": "ModifyAttributeSpell",
"value": -1,
"attribute": "IMBUE",
"target": "FRIENDLY_PLAYER"
}
]
}
}
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetTempCard
(GameContext context, SpellDesc spellDesc, Card sourceCard) Generates a temporary card.protected void
Implementations ofonCast
are the meat-and-bones of a spell's effects.boolean
shouldRemoveCard
(Card card, Player player, GameContext context) Methods inherited from class net.demilich.metastone.game.spells.Spell
cast, castForPlayer, checkArguments, getDesc, isNativeStateful, setDesc, toString
-
Constructor Details
-
ChooseOneSpell
public ChooseOneSpell()
-
-
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:
-
shouldRemoveCard
-
getTempCard
Generates a temporary card. Used byChooseOneOptionSpell
to actually generate the card definitions for the choice cards.- Parameters:
context
-spellDesc
-sourceCard
-- Returns:
-