Class ModifyDamageSpell
java.lang.Object
net.demilich.metastone.game.spells.Spell
net.demilich.metastone.game.spells.ModifyDamageSpell
- All Implemented Interfaces:
Serializable
,HasDesc<SpellDesc>
Modifies the amount of damage that is currently about to be dealt.
The expression for the modification is DAMAGE OPERATION VALUE
. In other words, if SpellArg.OPERATION
is AlgebraicOperation.ADD
, the damage is 2 and the value is 4, the new damage will be 2 + 4 = 6
.
Several triggers cast their spells at the right moment to modify damage. For example, a common trigger is a
PreDamageTrigger
, for text like "Your minions can only take 1
damage at a time":
{ "eventTrigger": { "class": "PreDamageTrigger", "fireCondition": { "class": "OwnedByPlayerCondition", "targetPlayer": "SELF" }, "targetEntityType": "MINION", "targetPlayer": "SELF" }, "spell": { "class": "ModifyDamageSpell", "value": 1, "operation": "SET" } }Or, for example, the
FatalDamageTrigger
is useful for text
like "When your hero takes fatal damage, heal for the amount instead.":
{ "eventTrigger": { "class": "FatalDamageTrigger", "sourcePlayer": "BOTH", "targetEntityType": "HERO", "targetPlayer": "SELF" }, "spell": { "class": "MetaSpell", "spells": [ { "class": "ModifyDamageSpell", "value": 0, "operation": "SET" }, { "class": "HealSpell", "target": "FRIENDLY_HERO", "value": { "class": "EventValueProvider" } } ] } }Finally, to double damage dealt by this minion to heroes:
{ "eventTrigger": { "class": "PreDamageTrigger", "hostTargetType": "IGNORE_OTHER_SOURCES", "targetEntityType": "HERO" }, "spell": { "class": "ModifyDamageSpell", "value": 2, "operation": "MULTIPLY" } }
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic SpellDesc
create
(int value, AlgebraicOperation operation) 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
-
ModifyDamageSpell
public ModifyDamageSpell()
-
-
Method Details
-
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:
-