diff --git a/Mage.Sets/src/mage/cards/a/AcolyteOfTheInferno.java b/Mage.Sets/src/mage/cards/a/AcolyteOfTheInferno.java
index 2fc675be257..8e0489ff96a 100644
--- a/Mage.Sets/src/mage/cards/a/AcolyteOfTheInferno.java
+++ b/Mage.Sets/src/mage/cards/a/AcolyteOfTheInferno.java
@@ -1,4 +1,3 @@
-
package mage.cards.a;
import java.util.UUID;
@@ -28,7 +27,9 @@ public final class AcolyteOfTheInferno extends CardImpl {
this.addAbility(new RenownAbility(1));
// Whenever Acolyte of the Inferno becomes blocked by a creature, it deals 2 damage to that creature
- this.addAbility(new BecomesBlockedByCreatureTriggeredAbility(new DamageTargetEffect(2, true, "that creature", "it"), false));
+ this.addAbility(new BecomesBlockedByCreatureTriggeredAbility(
+ new DamageTargetEffect(2, "it")
+ .withTargetDescription("that creature"), false));
}
private AcolyteOfTheInferno(final AcolyteOfTheInferno card) {
diff --git a/Mage.Sets/src/mage/cards/a/AdrenalineJockey.java b/Mage.Sets/src/mage/cards/a/AdrenalineJockey.java
index 2eed3297193..5126774a212 100644
--- a/Mage.Sets/src/mage/cards/a/AdrenalineJockey.java
+++ b/Mage.Sets/src/mage/cards/a/AdrenalineJockey.java
@@ -41,7 +41,7 @@ public final class AdrenalineJockey extends CardImpl {
// Whenever a player casts a spell, if it's not their turn, this creature deals 4 damage to them.
this.addAbility(new SpellCastAllTriggeredAbility(
- new DamageTargetEffect(4, true, "them"),
+ new DamageTargetEffect(4).withTargetDescription("them"),
filter, false, SetTargetPointer.PLAYER
));
diff --git a/Mage.Sets/src/mage/cards/a/ArrowStorm.java b/Mage.Sets/src/mage/cards/a/ArrowStorm.java
index 7d68830e13d..02c720d83ca 100644
--- a/Mage.Sets/src/mage/cards/a/ArrowStorm.java
+++ b/Mage.Sets/src/mage/cards/a/ArrowStorm.java
@@ -7,7 +7,6 @@ import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.hint.common.RaidHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.AbilityWord;
import mage.constants.CardType;
import mage.target.common.TargetAnyTarget;
import mage.watchers.common.PlayerAttackedWatcher;
@@ -30,7 +29,7 @@ public final class ArrowStorm extends CardImpl {
this.getSpellAbility().addTarget(new TargetAnyTarget());
// Raid - If you attacked with a creature this turn, instead Arrow Storm deals 5 damage to that creature or player and the damage can't be prevented.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
- new DamageTargetEffect(5, false),
+ new DamageTargetEffect(5).withCantBePrevented(),
RaidCondition.instance,
"
Raid — If you attacked this turn, instead {this} deals 5 damage to that permanent or player and the damage can't be prevented"));
this.getSpellAbility().addWatcher(new PlayerAttackedWatcher());
diff --git a/Mage.Sets/src/mage/cards/a/AshmouthHound.java b/Mage.Sets/src/mage/cards/a/AshmouthHound.java
index 4fcfac4c2ab..5e9241b9555 100644
--- a/Mage.Sets/src/mage/cards/a/AshmouthHound.java
+++ b/Mage.Sets/src/mage/cards/a/AshmouthHound.java
@@ -23,7 +23,7 @@ public final class AshmouthHound extends CardImpl {
this.toughness = new MageInt(1);
// Whenever Ashmouth Hound blocks or becomes blocked by a creature, Ashmouth Hound deals 1 damage to that creature.
- this.addAbility(new BlocksOrBlockedByCreatureSourceTriggeredAbility(new DamageTargetEffect(1, true, "that creature")));
+ this.addAbility(new BlocksOrBlockedByCreatureSourceTriggeredAbility(new DamageTargetEffect(1).withTargetDescription("that creature")));
}
private AshmouthHound(final AshmouthHound card) {
diff --git a/Mage.Sets/src/mage/cards/a/AvalancheOfSector7.java b/Mage.Sets/src/mage/cards/a/AvalancheOfSector7.java
index 863b8b6def2..911a52fe8da 100644
--- a/Mage.Sets/src/mage/cards/a/AvalancheOfSector7.java
+++ b/Mage.Sets/src/mage/cards/a/AvalancheOfSector7.java
@@ -65,7 +65,7 @@ public final class AvalancheOfSector7 extends CardImpl {
class AvalancheOfSector7TriggeredAbility extends TriggeredAbilityImpl {
AvalancheOfSector7TriggeredAbility() {
- super(Zone.BATTLEFIELD, new DamageTargetEffect(1, true, "that player"));
+ super(Zone.BATTLEFIELD, new DamageTargetEffect(1).withTargetDescription("that player"));
setTriggerPhrase("Whenever an opponent activates an ability of an artifact they control, ");
}
diff --git a/Mage.Sets/src/mage/cards/b/BarretWallace.java b/Mage.Sets/src/mage/cards/b/BarretWallace.java
index d7e9c48f3ad..df2a98d233d 100644
--- a/Mage.Sets/src/mage/cards/b/BarretWallace.java
+++ b/Mage.Sets/src/mage/cards/b/BarretWallace.java
@@ -49,10 +49,10 @@ public final class BarretWallace extends CardImpl {
// Whenever Barret Wallace attacks, it deals damage equal to the number of equipped creatures you control to defending player.
this.addAbility(new AttacksTriggeredAbility(
- new DamageTargetEffect(xValue, true, "it")
+ new DamageTargetEffect(xValue)
.setText("it deals damage equal to the number of equipped creatures you control to defending player"),
false, null, SetTargetPointer.PLAYER
- ).withRuleTextReplacement(true).addHint(hint));
+ ).addHint(hint));
}
private BarretWallace(final BarretWallace card) {
diff --git a/Mage.Sets/src/mage/cards/b/BenBenAkkiHermit.java b/Mage.Sets/src/mage/cards/b/BenBenAkkiHermit.java
index 7fd9c9d7903..f9f263deb35 100644
--- a/Mage.Sets/src/mage/cards/b/BenBenAkkiHermit.java
+++ b/Mage.Sets/src/mage/cards/b/BenBenAkkiHermit.java
@@ -39,7 +39,7 @@ public final class BenBenAkkiHermit extends CardImpl {
this.power = new MageInt(1);
this.toughness = new MageInt(1);
- Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter), true), new TapSourceCost());
+ Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter)), new TapSourceCost());
ability.addTarget(new TargetAttackingCreature());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/b/BonecrusherGiant.java b/Mage.Sets/src/mage/cards/b/BonecrusherGiant.java
index c20f2a16940..8fc5ea889d1 100644
--- a/Mage.Sets/src/mage/cards/b/BonecrusherGiant.java
+++ b/Mage.Sets/src/mage/cards/b/BonecrusherGiant.java
@@ -29,9 +29,8 @@ public final class BonecrusherGiant extends AdventureCard {
// Whenever Bonecrusher Giant becomes the target of a spell, Bonecrusher Giant deals 2 damage to that spell's controller.
this.addAbility(new BecomesTargetSourceTriggeredAbility(
- new DamageTargetEffect(
- 2, true, "that spell's controller", "{this}"
- ), StaticFilters.FILTER_SPELL_A, SetTargetPointer.PLAYER, false)
+ new DamageTargetEffect(2).withTargetDescription("that spell's controller"),
+ StaticFilters.FILTER_SPELL_A, SetTargetPointer.PLAYER, false)
.withRuleTextReplacement(false));
// Stomp
diff --git a/Mage.Sets/src/mage/cards/b/BoobyTrap.java b/Mage.Sets/src/mage/cards/b/BoobyTrap.java
index e26b8ebf1af..2cec841bf46 100644
--- a/Mage.Sets/src/mage/cards/b/BoobyTrap.java
+++ b/Mage.Sets/src/mage/cards/b/BoobyTrap.java
@@ -51,8 +51,11 @@ public final class BoobyTrap extends CardImpl {
class BoobyTrapTriggeredAbility extends TriggeredAbilityImpl {
- public BoobyTrapTriggeredAbility() {
- super(Zone.BATTLEFIELD, new DoIfCostPaid(new DamageTargetEffect(10, true, "that player"), new SacrificeSourceCost(), "", false), false);
+ BoobyTrapTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new DoIfCostPaid(
+ new DamageTargetEffect(10).withTargetDescription("that player"),
+ new SacrificeSourceCost(), "", false
+ ), false);
}
private BoobyTrapTriggeredAbility(final BoobyTrapTriggeredAbility ability) {
diff --git a/Mage.Sets/src/mage/cards/b/BurningEarth.java b/Mage.Sets/src/mage/cards/b/BurningEarth.java
index 36d30a2a340..7449ebdfc43 100644
--- a/Mage.Sets/src/mage/cards/b/BurningEarth.java
+++ b/Mage.Sets/src/mage/cards/b/BurningEarth.java
@@ -29,7 +29,7 @@ public final class BurningEarth extends CardImpl {
// Whenever a player taps a nonbasic land for mana, Burning Earth deals 1 damage to that player.
this.addAbility(new TapForManaAllTriggeredAbility(
- new DamageTargetEffect(1, true, "that player"),
+ new DamageTargetEffect(1).withTargetDescription("that player"),
filter, SetTargetPointer.PLAYER));
}
diff --git a/Mage.Sets/src/mage/cards/b/BurningTreeShaman.java b/Mage.Sets/src/mage/cards/b/BurningTreeShaman.java
index 9295e4ec8b0..aa615d6b308 100644
--- a/Mage.Sets/src/mage/cards/b/BurningTreeShaman.java
+++ b/Mage.Sets/src/mage/cards/b/BurningTreeShaman.java
@@ -2,7 +2,6 @@ package mage.cards.b;
import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
-import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.cards.CardImpl;
@@ -46,7 +45,8 @@ public final class BurningTreeShaman extends CardImpl {
class BurningTreeShamanTriggeredAbility extends TriggeredAbilityImpl {
BurningTreeShamanTriggeredAbility() {
- super(Zone.BATTLEFIELD, new DamageTargetEffect(StaticValue.get(1), true, "that player"));
+ super(Zone.BATTLEFIELD, new DamageTargetEffect(1).withTargetDescription("that player"));
+ setTriggerPhrase("Whenever a player activates an ability that isn't a mana ability, ");
}
private BurningTreeShamanTriggeredAbility(final BurningTreeShamanTriggeredAbility ability) {
@@ -75,8 +75,4 @@ class BurningTreeShamanTriggeredAbility extends TriggeredAbilityImpl {
return false;
}
- @Override
- public String getRule() {
- return "Whenever a player activates an ability that isn't a mana ability, {this} deals 1 damage to that player.";
- }
}
diff --git a/Mage.Sets/src/mage/cards/c/CemeteryGatekeeper.java b/Mage.Sets/src/mage/cards/c/CemeteryGatekeeper.java
index 9ec04a37b8b..54fd2fb2943 100644
--- a/Mage.Sets/src/mage/cards/c/CemeteryGatekeeper.java
+++ b/Mage.Sets/src/mage/cards/c/CemeteryGatekeeper.java
@@ -99,7 +99,7 @@ class CemeteryGatekeeperEffect extends OneShotEffect {
class CemeteryGatekeeperTriggeredAbility extends TriggeredAbilityImpl {
public CemeteryGatekeeperTriggeredAbility() {
- super(Zone.BATTLEFIELD, new DamageTargetEffect(2, true, "that player"));
+ super(Zone.BATTLEFIELD, new DamageTargetEffect(2).withTargetDescription("that player"));
setTriggerPhrase("Whenever a player plays a land or casts a spell, if it shares a card type with the exiled card, ");
}
diff --git a/Mage.Sets/src/mage/cards/c/ChandraHopesBeacon.java b/Mage.Sets/src/mage/cards/c/ChandraHopesBeacon.java
index 1fb0d5e1482..ec1368360ce 100644
--- a/Mage.Sets/src/mage/cards/c/ChandraHopesBeacon.java
+++ b/Mage.Sets/src/mage/cards/c/ChandraHopesBeacon.java
@@ -51,9 +51,8 @@ public class ChandraHopesBeacon extends CardImpl {
this.addAbility(new LoyaltyAbility(new ChandraHopesBeaconEffect(), 1), new ChandraHopesBeaconWatcher());
//−X: Chandra, Hope’s Beacon deals X damage to each of up to two targets.
- LoyaltyAbility loyaltyAbility = new LoyaltyAbility(new DamageTargetEffect(
- GetXValue.instance, true, "each of up to two targets"
- ));
+ LoyaltyAbility loyaltyAbility = new LoyaltyAbility(new DamageTargetEffect(GetXValue.instance)
+ .withTargetDescription("each of up to two targets"));
loyaltyAbility.addTarget(new TargetAnyTarget(0, 2));
this.addAbility(loyaltyAbility);
}
diff --git a/Mage.Sets/src/mage/cards/c/ChandraTheFirebrand.java b/Mage.Sets/src/mage/cards/c/ChandraTheFirebrand.java
index 1b145814642..96293d1cc59 100644
--- a/Mage.Sets/src/mage/cards/c/ChandraTheFirebrand.java
+++ b/Mage.Sets/src/mage/cards/c/ChandraTheFirebrand.java
@@ -36,7 +36,7 @@ public final class ChandraTheFirebrand extends CardImpl {
));
// -6: Chandra, the Firebrand deals 6 damage to each of up to six target creatures and/or players
- LoyaltyAbility ability2 = new LoyaltyAbility(new DamageTargetEffect(6, true, "each of up to six targets"), -6);
+ LoyaltyAbility ability2 = new LoyaltyAbility(new DamageTargetEffect(6).withTargetDescription("each of up to six targets"), -6);
ability2.addTarget(new TargetAnyTarget(0, 6));
this.addAbility(ability2);
}
diff --git a/Mage.Sets/src/mage/cards/c/Cindervines.java b/Mage.Sets/src/mage/cards/c/Cindervines.java
index aa6108c9ea3..b6a1ea1e6aa 100644
--- a/Mage.Sets/src/mage/cards/c/Cindervines.java
+++ b/Mage.Sets/src/mage/cards/c/Cindervines.java
@@ -31,7 +31,7 @@ public final class Cindervines extends CardImpl {
// Whenever an opponent casts a noncreature spell, Cindervines deals 1 damage to that player.
this.addAbility(new SpellCastOpponentTriggeredAbility(
- Zone.BATTLEFIELD, new DamageTargetEffect(1, true, "that player"),
+ Zone.BATTLEFIELD, new DamageTargetEffect(1).withTargetDescription("that player"),
StaticFilters.FILTER_SPELL_A_NON_CREATURE, false, SetTargetPointer.PLAYER
));
diff --git a/Mage.Sets/src/mage/cards/c/Combust.java b/Mage.Sets/src/mage/cards/c/Combust.java
index 7e0703f4087..7a4c5659917 100644
--- a/Mage.Sets/src/mage/cards/c/Combust.java
+++ b/Mage.Sets/src/mage/cards/c/Combust.java
@@ -2,7 +2,6 @@
package mage.cards.c;
-import java.util.UUID;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
@@ -16,7 +15,8 @@ import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.target.TargetPermanent;
-import mage.target.common.TargetCreaturePermanent;
+
+import java.util.UUID;
/**
*
@@ -36,7 +36,7 @@ public final class Combust extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}");
// Combust deals 5 damage to target white or blue creature. The damage can't be prevented.
- this.getSpellAbility().addEffect(new DamageTargetEffect(5, false));
+ this.getSpellAbility().addEffect(new DamageTargetEffect(5).withCantBePrevented());
this.getSpellAbility().addTarget(new TargetPermanent(filter));
// Combust can't be countered.
diff --git a/Mage.Sets/src/mage/cards/c/CopperTablet.java b/Mage.Sets/src/mage/cards/c/CopperTablet.java
index 308d02063d0..240d72dc1ab 100644
--- a/Mage.Sets/src/mage/cards/c/CopperTablet.java
+++ b/Mage.Sets/src/mage/cards/c/CopperTablet.java
@@ -20,7 +20,7 @@ public final class CopperTablet extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
// At the beginning of each player's upkeep, Copper Tablet deals 1 damage to that player.
- this.addAbility(new BeginningOfUpkeepTriggeredAbility(TargetController.EACH_PLAYER, new DamageTargetEffect(1, true, "that player"), false));
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(TargetController.EACH_PLAYER, new DamageTargetEffect(1).withTargetDescription("that player"), false));
}
private CopperTablet(final CopperTablet card) {
diff --git a/Mage.Sets/src/mage/cards/d/DavrielRogueShadowmage.java b/Mage.Sets/src/mage/cards/d/DavrielRogueShadowmage.java
index 6d5c900626c..04275b5768e 100644
--- a/Mage.Sets/src/mage/cards/d/DavrielRogueShadowmage.java
+++ b/Mage.Sets/src/mage/cards/d/DavrielRogueShadowmage.java
@@ -31,9 +31,7 @@ public final class DavrielRogueShadowmage extends CardImpl {
// At the beginning of each opponent's upkeep, if that player has one or fewer cards in hand, Davriel, Rogue Shadowmage deals 2 damage to them.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(
TargetController.OPPONENT,
- new DamageTargetEffect(
- 2, true, "them", "{this}"
- ), false
+ new DamageTargetEffect(2).withTargetDescription("them"), false
).withInterveningIf(condition));
// -1: Target player discards a card.
diff --git a/Mage.Sets/src/mage/cards/d/Demonfire.java b/Mage.Sets/src/mage/cards/d/Demonfire.java
index fc9191b441c..d140c247695 100644
--- a/Mage.Sets/src/mage/cards/d/Demonfire.java
+++ b/Mage.Sets/src/mage/cards/d/Demonfire.java
@@ -41,7 +41,7 @@ public final class Demonfire extends CardImpl {
// Hellbent - If you have no cards in hand, Demonfire can't be countered and the damage can't be prevented.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
- new DamageTargetEffect(GetXValue.instance, false),
+ new DamageTargetEffect(GetXValue.instance).withCantBePrevented(),
HellbentCondition.instance,
"
Hellbent — If you have no cards in hand, this spell can't be countered and the damage can't be prevented."));
// can't be countered
diff --git a/Mage.Sets/src/mage/cards/d/DwarvenSeaClan.java b/Mage.Sets/src/mage/cards/d/DwarvenSeaClan.java
index 6cafeb67f3c..bcdfce26d32 100644
--- a/Mage.Sets/src/mage/cards/d/DwarvenSeaClan.java
+++ b/Mage.Sets/src/mage/cards/d/DwarvenSeaClan.java
@@ -42,7 +42,7 @@ public final class DwarvenSeaClan extends CardImpl {
// {tap}: Choose target attacking or blocking creature whose controller controls an Island. Dwarven Sea Clan deals 2 damage to that creature at end of combat. Activate this ability only before the end of combat step.
Ability ability = new ActivateIfConditionActivatedAbility(
new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(
- new DamageTargetEffect(2, true, "that creature")
+ new DamageTargetEffect(2).withTargetDescription("that creature")
)).setText("Choose target attacking or blocking creature whose controller controls an Island. " +
"{this} deals 2 damage to that creature at end of combat."),
new TapSourceCost(), BeforeEndCombatCondition.getInstance()
diff --git a/Mage.Sets/src/mage/cards/e/EidolonOfTheGreatRevel.java b/Mage.Sets/src/mage/cards/e/EidolonOfTheGreatRevel.java
index 66b05b103db..6ba0665ca81 100644
--- a/Mage.Sets/src/mage/cards/e/EidolonOfTheGreatRevel.java
+++ b/Mage.Sets/src/mage/cards/e/EidolonOfTheGreatRevel.java
@@ -49,7 +49,7 @@ class EidolonOfTheGreatRevelTriggeredAbility extends TriggeredAbilityImpl {
public EidolonOfTheGreatRevelTriggeredAbility() {
- super(Zone.BATTLEFIELD, new DamageTargetEffect(2, true, "that player"));
+ super(Zone.BATTLEFIELD, new DamageTargetEffect(2).withTargetDescription("that player"));
}
diff --git a/Mage.Sets/src/mage/cards/f/FalkenrathPerforator.java b/Mage.Sets/src/mage/cards/f/FalkenrathPerforator.java
index dde1b9eb370..94171df03cb 100644
--- a/Mage.Sets/src/mage/cards/f/FalkenrathPerforator.java
+++ b/Mage.Sets/src/mage/cards/f/FalkenrathPerforator.java
@@ -24,9 +24,8 @@ public final class FalkenrathPerforator extends CardImpl {
this.toughness = new MageInt(1);
// Whenever Falkenrath Perforator attacks, it deals 1 damage to defending player.
- this.addAbility(new AttacksTriggeredAbility(new DamageTargetEffect(
- 1, true, "defending player", "it"
- ), false, null, SetTargetPointer.PLAYER));
+ this.addAbility(new AttacksTriggeredAbility(new DamageTargetEffect(1)
+ .withTargetDescription("defending player"), false, null, SetTargetPointer.PLAYER));
}
private FalkenrathPerforator(final FalkenrathPerforator card) {
diff --git a/Mage.Sets/src/mage/cards/f/FallOfTheTitans.java b/Mage.Sets/src/mage/cards/f/FallOfTheTitans.java
index 499d0a3a875..c59f26d3d0c 100644
--- a/Mage.Sets/src/mage/cards/f/FallOfTheTitans.java
+++ b/Mage.Sets/src/mage/cards/f/FallOfTheTitans.java
@@ -21,7 +21,8 @@ public final class FallOfTheTitans extends CardImpl {
// Fall of the Titans deals X damage to each of up to two target creatures and/or players.
this.getSpellAbility().addTarget(new TargetAnyTarget(0, 2));
- this.getSpellAbility().addEffect(new DamageTargetEffect(GetXValue.instance, true, "each of up to two targets"));
+ this.getSpellAbility().addEffect(new DamageTargetEffect(GetXValue.instance)
+ .withTargetDescription("each of up to two targets"));
// Surge {X}{R}
addAbility(new SurgeAbility(this, "{X}{R}"));
diff --git a/Mage.Sets/src/mage/cards/f/FateUnraveler.java b/Mage.Sets/src/mage/cards/f/FateUnraveler.java
index 991456c01c9..f278bc05a14 100644
--- a/Mage.Sets/src/mage/cards/f/FateUnraveler.java
+++ b/Mage.Sets/src/mage/cards/f/FateUnraveler.java
@@ -24,7 +24,7 @@ public final class FateUnraveler extends CardImpl {
this.toughness = new MageInt(4);
// Whenever an opponent draws a card, Fate Unraveler deals 1 damage to that player.
- this.addAbility(new DrawCardOpponentTriggeredAbility(new DamageTargetEffect(1, true, "that player"), false, true));
+ this.addAbility(new DrawCardOpponentTriggeredAbility(new DamageTargetEffect(1).withTargetDescription("that player"), false, true));
}
private FateUnraveler(final FateUnraveler card) {
diff --git a/Mage.Sets/src/mage/cards/f/FatefulEnd.java b/Mage.Sets/src/mage/cards/f/FatefulEnd.java
index 4890a8f8415..cb22c7c62ad 100644
--- a/Mage.Sets/src/mage/cards/f/FatefulEnd.java
+++ b/Mage.Sets/src/mage/cards/f/FatefulEnd.java
@@ -18,7 +18,7 @@ public final class FatefulEnd extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
// Fateful End deals 3 damage to any target. Scry 1.
- this.getSpellAbility().addEffect(new DamageTargetEffect(3, true, "any target"));
+ this.getSpellAbility().addEffect(new DamageTargetEffect(3));
this.getSpellAbility().addTarget(new TargetAnyTarget());
this.getSpellAbility().addEffect(new ScryEffect(1, false));
}
diff --git a/Mage.Sets/src/mage/cards/f/FieryAnnihilation.java b/Mage.Sets/src/mage/cards/f/FieryAnnihilation.java
index 2196e4d6699..157c2ec53b7 100644
--- a/Mage.Sets/src/mage/cards/f/FieryAnnihilation.java
+++ b/Mage.Sets/src/mage/cards/f/FieryAnnihilation.java
@@ -36,14 +36,12 @@ public final class FieryAnnihilation extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
// Fiery Annihilation deals 5 damage to target creature. Exile up to one target Equipment attached to that creature. If that creature would die this turn, exile it instead.
- this.getSpellAbility().addEffect(new DamageTargetEffect(
- 5, true, "target creature"
- ));
+ this.getSpellAbility().addEffect(new DamageTargetEffect(5));
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addEffect(new ExileTargetEffect()
.setTargetPointer(new SecondTargetPointer())
.setText("exile up to one target Equipment attached to that creature"));
this.getSpellAbility().addEffect(new ExileTargetIfDiesEffect());
- this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addTarget(new TargetPermanent(0, 1, filter));
}
diff --git a/Mage.Sets/src/mage/cards/f/FlamebladeAngel.java b/Mage.Sets/src/mage/cards/f/FlamebladeAngel.java
index 2f7bc7c0015..be67527a492 100644
--- a/Mage.Sets/src/mage/cards/f/FlamebladeAngel.java
+++ b/Mage.Sets/src/mage/cards/f/FlamebladeAngel.java
@@ -28,7 +28,7 @@ public final class FlamebladeAngel extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
// Whenever a source an opponent controls deals damage to you or a permanent you control, you may have Flameblade Angel deal 1 damage to that source's controller.
- Effect effect = new DamageTargetEffect(1, true, "that source's controller");
+ Effect effect = new DamageTargetEffect(1).withTargetDescription("that source's controller");
this.addAbility(new SourceDealsDamageToYouTriggeredAbility(effect, StaticFilters.FILTER_PERMANENT, true));
}
diff --git a/Mage.Sets/src/mage/cards/f/FlameheartWerewolf.java b/Mage.Sets/src/mage/cards/f/FlameheartWerewolf.java
index a1666e46be1..4da8cf33502 100644
--- a/Mage.Sets/src/mage/cards/f/FlameheartWerewolf.java
+++ b/Mage.Sets/src/mage/cards/f/FlameheartWerewolf.java
@@ -27,7 +27,7 @@ public final class FlameheartWerewolf extends CardImpl {
this.nightCard = true;
// Whenever Flameheart Werewolf blocks or becomes blocked by a creature, Flameheart Werewolf deals 2 damage to that creature.
- this.addAbility(new BlocksOrBlockedByCreatureSourceTriggeredAbility(new DamageTargetEffect(2, true, "that creature")));
+ this.addAbility(new BlocksOrBlockedByCreatureSourceTriggeredAbility(new DamageTargetEffect(2).withTargetDescription("that creature")));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Flameheart Werewolf.
this.addAbility(new WerewolfBackTriggeredAbility());
diff --git a/Mage.Sets/src/mage/cards/f/FlamesOfTheBloodHand.java b/Mage.Sets/src/mage/cards/f/FlamesOfTheBloodHand.java
index ef55c8f7de0..8f03422d378 100644
--- a/Mage.Sets/src/mage/cards/f/FlamesOfTheBloodHand.java
+++ b/Mage.Sets/src/mage/cards/f/FlamesOfTheBloodHand.java
@@ -24,7 +24,7 @@ public final class FlamesOfTheBloodHand extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
// Flames of the Blood Hand deals 4 damage to target player. The damage can't be prevented.
- this.getSpellAbility().addEffect(new DamageTargetEffect(4, false));
+ this.getSpellAbility().addEffect(new DamageTargetEffect(4).withCantBePrevented());
// If that player would gain life this turn, that player gains no life instead.
this.getSpellAbility().addEffect(new FlamesOfTheBloodHandReplacementEffect());
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
diff --git a/Mage.Sets/src/mage/cards/f/FlamescrollCelebrant.java b/Mage.Sets/src/mage/cards/f/FlamescrollCelebrant.java
index ee7cedd0b5a..2a3bfa4abb9 100644
--- a/Mage.Sets/src/mage/cards/f/FlamescrollCelebrant.java
+++ b/Mage.Sets/src/mage/cards/f/FlamescrollCelebrant.java
@@ -6,7 +6,6 @@ import mage.abilities.LoyaltyAbility;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.ExileSpellEffect;
@@ -73,7 +72,8 @@ public final class FlamescrollCelebrant extends ModalDoubleFacedCard {
class FlamescrollCelebrantTriggeredAbility extends TriggeredAbilityImpl {
FlamescrollCelebrantTriggeredAbility() {
- super(Zone.BATTLEFIELD, new DamageTargetEffect(StaticValue.get(1), true, "that player"));
+ super(Zone.BATTLEFIELD, new DamageTargetEffect(1).withTargetDescription("that player"));
+ setTriggerPhrase("Whenever an opponent activates an ability that isn't a mana ability, ");
}
private FlamescrollCelebrantTriggeredAbility(final FlamescrollCelebrantTriggeredAbility ability) {
@@ -103,11 +103,6 @@ class FlamescrollCelebrantTriggeredAbility extends TriggeredAbilityImpl {
return true;
}
- @Override
- public String getRule() {
- return "Whenever an opponent activates an ability that isn't a mana ability, " +
- "{this} deals 1 damage to that player.";
- }
}
class RevelInSilenceEffect extends ContinuousRuleModifyingEffectImpl {
diff --git a/Mage.Sets/src/mage/cards/f/FuriousReprisal.java b/Mage.Sets/src/mage/cards/f/FuriousReprisal.java
index 4f99b3d599f..1ead08841c9 100644
--- a/Mage.Sets/src/mage/cards/f/FuriousReprisal.java
+++ b/Mage.Sets/src/mage/cards/f/FuriousReprisal.java
@@ -18,7 +18,7 @@ public final class FuriousReprisal extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
// Furious Reprisal deals 2 damage to each of two target creatures and/or players.
- this.getSpellAbility().addEffect(new DamageTargetEffect(2, true, "each of two targets"));
+ this.getSpellAbility().addEffect(new DamageTargetEffect(2).withTargetDescription("each of two targets"));
this.getSpellAbility().addTarget(new TargetAnyTarget(2, 2));
}
diff --git a/Mage.Sets/src/mage/cards/f/FurnaceScamp.java b/Mage.Sets/src/mage/cards/f/FurnaceScamp.java
index 3eabea17458..fd55df86f03 100644
--- a/Mage.Sets/src/mage/cards/f/FurnaceScamp.java
+++ b/Mage.Sets/src/mage/cards/f/FurnaceScamp.java
@@ -28,7 +28,7 @@ public final class FurnaceScamp extends CardImpl {
// Whenever Furnace Scamp deals combat damage to a player, you may sacrifice it. If you do, Furnace Scamp deals 3 damage to that player.
Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DoIfCostPaid(
- new DamageTargetEffect(3, true, "that player"), new SacrificeSourceCost()
+ new DamageTargetEffect(3).withTargetDescription("that player"), new SacrificeSourceCost()
), false, true);
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/g/GibberingFiend.java b/Mage.Sets/src/mage/cards/g/GibberingFiend.java
index 0fe87e51653..e119ecfb373 100644
--- a/Mage.Sets/src/mage/cards/g/GibberingFiend.java
+++ b/Mage.Sets/src/mage/cards/g/GibberingFiend.java
@@ -35,7 +35,7 @@ public final class GibberingFiend extends CardImpl {
// Delirium — At the beginning of each opponent's upkeep, if there are four or more card types among cards in your graveyard,
// Gibbering Fiend deals 1 damage to that player.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(
- TargetController.OPPONENT, new DamageTargetEffect(1, true, "that player"), false
+ TargetController.OPPONENT, new DamageTargetEffect(1).withTargetDescription("that player"), false
).withInterveningIf(DeliriumCondition.instance).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
diff --git a/Mage.Sets/src/mage/cards/h/HarshMentor.java b/Mage.Sets/src/mage/cards/h/HarshMentor.java
index 281c340514d..1c5332d40e4 100644
--- a/Mage.Sets/src/mage/cards/h/HarshMentor.java
+++ b/Mage.Sets/src/mage/cards/h/HarshMentor.java
@@ -2,7 +2,6 @@ package mage.cards.h;
import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
-import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.cards.Card;
@@ -48,7 +47,8 @@ public final class HarshMentor extends CardImpl {
class HarshMentorTriggeredAbility extends TriggeredAbilityImpl {
HarshMentorTriggeredAbility() {
- super(Zone.BATTLEFIELD, new DamageTargetEffect(StaticValue.get(2), true, "that player"));
+ super(Zone.BATTLEFIELD, new DamageTargetEffect(2).withTargetDescription("that player"));
+ setTriggerPhrase("Whenever an opponent activates an ability of an artifact, creature, or land on the battlefield, if it isn't a mana ability, ");
}
private HarshMentorTriggeredAbility(final HarshMentorTriggeredAbility ability) {
@@ -82,8 +82,4 @@ class HarshMentorTriggeredAbility extends TriggeredAbilityImpl {
return false;
}
- @Override
- public String getRule() {
- return "Whenever an opponent activates an ability of an artifact, creature, or land on the battlefield, if it isn't a mana ability, {this} deals 2 damage to that player.";
- }
}
diff --git a/Mage.Sets/src/mage/cards/h/HellfireMongrel.java b/Mage.Sets/src/mage/cards/h/HellfireMongrel.java
index 527669c7bd4..97ae001b9d0 100644
--- a/Mage.Sets/src/mage/cards/h/HellfireMongrel.java
+++ b/Mage.Sets/src/mage/cards/h/HellfireMongrel.java
@@ -33,7 +33,7 @@ public final class HellfireMongrel extends CardImpl {
// At the beginning of each opponent's upkeep, if that player has two or fewer cards in hand, Hellfire Mongrel deals 2 damage to that player.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(
TargetController.OPPONENT,
- new DamageTargetEffect(2, true, "that player"),
+ new DamageTargetEffect(2).withTargetDescription("that player"),
false
).withInterveningIf(condition));
}
diff --git a/Mage.Sets/src/mage/cards/i/IchneumonDruid.java b/Mage.Sets/src/mage/cards/i/IchneumonDruid.java
index 174558742a7..7f17695d748 100644
--- a/Mage.Sets/src/mage/cards/i/IchneumonDruid.java
+++ b/Mage.Sets/src/mage/cards/i/IchneumonDruid.java
@@ -1,11 +1,7 @@
package mage.cards.i;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
-import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.cards.CardImpl;
@@ -20,6 +16,10 @@ import mage.game.stack.Spell;
import mage.target.targetpointer.FixedTarget;
import mage.watchers.Watcher;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
/**
*
* @author L_J
@@ -50,7 +50,8 @@ public final class IchneumonDruid extends CardImpl {
class IchneumonDruidAbility extends TriggeredAbilityImpl {
IchneumonDruidAbility() {
- super(Zone.BATTLEFIELD, new DamageTargetEffect(StaticValue.get(4), false, "that player"));
+ super(Zone.BATTLEFIELD, new DamageTargetEffect(4).withTargetDescription("that player"));
+ setTriggerPhrase("Whenever an opponent casts an instant spell other than the first instant spell that player casts each turn, ");
}
private IchneumonDruidAbility(final IchneumonDruidAbility ability) {
@@ -84,10 +85,6 @@ class IchneumonDruidAbility extends TriggeredAbilityImpl {
return false;
}
- @Override
- public String getRule() {
- return "Whenever an opponent casts an instant spell other than the first instant spell that player casts each turn, {this} deals 4 damage to that player.";
- }
}
class IchneumonDruidWatcher extends Watcher {
diff --git a/Mage.Sets/src/mage/cards/i/ImmolationShaman.java b/Mage.Sets/src/mage/cards/i/ImmolationShaman.java
index 785653ee816..c78eb4351d7 100644
--- a/Mage.Sets/src/mage/cards/i/ImmolationShaman.java
+++ b/Mage.Sets/src/mage/cards/i/ImmolationShaman.java
@@ -5,7 +5,6 @@ import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
@@ -67,7 +66,7 @@ public final class ImmolationShaman extends CardImpl {
class ImmolationShamanTriggeredAbility extends TriggeredAbilityImpl {
ImmolationShamanTriggeredAbility() {
- super(Zone.BATTLEFIELD, new DamageTargetEffect(StaticValue.get(1), true, "that player"));
+ super(Zone.BATTLEFIELD, new DamageTargetEffect(1).withTargetDescription("that player"));
setTriggerPhrase("Whenever an opponent activates an ability of an artifact, creature, or land that isn't a mana ability, ");
}
diff --git a/Mage.Sets/src/mage/cards/i/InfernoElemental.java b/Mage.Sets/src/mage/cards/i/InfernoElemental.java
index 1ba8734e94d..51de7e5c9ee 100644
--- a/Mage.Sets/src/mage/cards/i/InfernoElemental.java
+++ b/Mage.Sets/src/mage/cards/i/InfernoElemental.java
@@ -23,7 +23,8 @@ public final class InfernoElemental extends CardImpl {
this.toughness = new MageInt(4);
// Whenever Inferno Elemental blocks or becomes blocked by a creature, Inferno Elemental deals 3 damage to that creature.
- this.addAbility(new BlocksOrBlockedByCreatureSourceTriggeredAbility(new DamageTargetEffect(3, true, "that creature")));
+ this.addAbility(new BlocksOrBlockedByCreatureSourceTriggeredAbility(
+ new DamageTargetEffect(3).withTargetDescription("that creature")));
}
private InfernoElemental(final InfernoElemental card) {
diff --git a/Mage.Sets/src/mage/cards/i/IshiIshiAkkiCrackshot.java b/Mage.Sets/src/mage/cards/i/IshiIshiAkkiCrackshot.java
index 6cbc709eefb..554e8c77c3b 100644
--- a/Mage.Sets/src/mage/cards/i/IshiIshiAkkiCrackshot.java
+++ b/Mage.Sets/src/mage/cards/i/IshiIshiAkkiCrackshot.java
@@ -28,7 +28,7 @@ public final class IshiIshiAkkiCrackshot extends CardImpl {
// Whenever an opponent casts a Spirit or Arcane spell, Ishi-Ishi, Akki Crackshot deals 2 damage to that player.
this.addAbility(new SpellCastOpponentTriggeredAbility(Zone.BATTLEFIELD,
- new DamageTargetEffect(2, true, "that player"),
+ new DamageTargetEffect(2).withTargetDescription("that player"),
StaticFilters.FILTER_SPELL_SPIRIT_OR_ARCANE, false, SetTargetPointer.PLAYER));
}
diff --git a/Mage.Sets/src/mage/cards/j/JaggedLightning.java b/Mage.Sets/src/mage/cards/j/JaggedLightning.java
index 0da793f9011..5a818c25a6a 100644
--- a/Mage.Sets/src/mage/cards/j/JaggedLightning.java
+++ b/Mage.Sets/src/mage/cards/j/JaggedLightning.java
@@ -17,7 +17,7 @@ public final class JaggedLightning extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}");
// Jagged Lightning deals 3 damage to each of two target creatures.
- this.getSpellAbility().addEffect(new DamageTargetEffect(3, true, "each of two target creatures"));
+ this.getSpellAbility().addEffect(new DamageTargetEffect(3).withTargetDescription("each of two target creatures"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent(2));
}
diff --git a/Mage.Sets/src/mage/cards/j/JeskaiRevelation.java b/Mage.Sets/src/mage/cards/j/JeskaiRevelation.java
index 4a0b4d6f52b..71f62bc2e88 100644
--- a/Mage.Sets/src/mage/cards/j/JeskaiRevelation.java
+++ b/Mage.Sets/src/mage/cards/j/JeskaiRevelation.java
@@ -22,9 +22,7 @@ public final class JeskaiRevelation extends CardImpl {
// Return target spell or permanent to its owner's hand. Jeskai Revelation deals 4 damage to any target. Create two 1/1 white Monk creature tokens with prowess. Draw two cards. You gain 4 life.
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellAbility().addTarget(new TargetSpellOrPermanent());
- this.getSpellAbility().addEffect(new DamageTargetEffect(
- 4, true, "any target"
- ).setTargetPointer(new SecondTargetPointer()));
+ this.getSpellAbility().addEffect(new DamageTargetEffect(4).setTargetPointer(new SecondTargetPointer()));
this.getSpellAbility().addTarget(new TargetAnyTarget());
this.getSpellAbility().addEffect(new CreateTokenEffect(new MonasteryMentorToken(), 2));
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2));
diff --git a/Mage.Sets/src/mage/cards/k/KederektParasite.java b/Mage.Sets/src/mage/cards/k/KederektParasite.java
index 8242a79a6c7..e5c279bd776 100644
--- a/Mage.Sets/src/mage/cards/k/KederektParasite.java
+++ b/Mage.Sets/src/mage/cards/k/KederektParasite.java
@@ -1,4 +1,3 @@
-
package mage.cards.k;
import java.util.UUID;
@@ -17,7 +16,6 @@ import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.game.Game;
import mage.game.events.GameEvent;
-import mage.game.events.GameEvent.EventType;
import mage.target.targetpointer.FixedTarget;
/**
@@ -56,7 +54,7 @@ class KederektParasiteTriggeredAbility extends TriggeredAbilityImpl {
}
KederektParasiteTriggeredAbility() {
- super(Zone.BATTLEFIELD, new DamageTargetEffect(1, true, "opponent"), true);
+ super(Zone.BATTLEFIELD, new DamageTargetEffect(1), true);
}
private KederektParasiteTriggeredAbility(final KederektParasiteTriggeredAbility ability) {
diff --git a/Mage.Sets/src/mage/cards/k/KessigForgemaster.java b/Mage.Sets/src/mage/cards/k/KessigForgemaster.java
index 77c073320d1..9ac344d5b16 100644
--- a/Mage.Sets/src/mage/cards/k/KessigForgemaster.java
+++ b/Mage.Sets/src/mage/cards/k/KessigForgemaster.java
@@ -27,7 +27,7 @@ public final class KessigForgemaster extends CardImpl {
this.secondSideCardClazz = mage.cards.f.FlameheartWerewolf.class;
// Whenever Kessig Forgemaster blocks or becomes blocked by a creature, Kessig Forgemaster deals 1 damage to that creature.
- this.addAbility(new BlocksOrBlockedByCreatureSourceTriggeredAbility(new DamageTargetEffect(1, true, "that creature")));
+ this.addAbility(new BlocksOrBlockedByCreatureSourceTriggeredAbility(new DamageTargetEffect(1).withTargetDescription("that creature")));
// At the beginning of each upkeep, if no spells were cast last turn, transform Kessig Forgemaster.
this.addAbility(new TransformAbility());
diff --git a/Mage.Sets/src/mage/cards/k/KnollspineInvocation.java b/Mage.Sets/src/mage/cards/k/KnollspineInvocation.java
index 32b51409d80..fdfc2100202 100644
--- a/Mage.Sets/src/mage/cards/k/KnollspineInvocation.java
+++ b/Mage.Sets/src/mage/cards/k/KnollspineInvocation.java
@@ -30,13 +30,11 @@ import java.util.UUID;
*/
public final class KnollspineInvocation extends CardImpl {
- protected static final FilterCard filter = new FilterCard("a card with mana value X");
-
public KnollspineInvocation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{R}");
// {X}, Discard a card with mana value X: This enchantment deals X damage to any target.
- Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(GetXValue.instance, true), new ManaCostsImpl<>("{X}"));
+ Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(GetXValue.instance), new ManaCostsImpl<>("{X}"));
ability.addCost(new KnollspineInvocationDiscardCost());
ability.addTarget(new TargetAnyTarget());
ability.setCostAdjuster(KnollspineInvocationAdjuster.instance);
diff --git a/Mage.Sets/src/mage/cards/k/KolaghanAspirant.java b/Mage.Sets/src/mage/cards/k/KolaghanAspirant.java
index c0fb8e3cf9c..aeac9a73ecd 100644
--- a/Mage.Sets/src/mage/cards/k/KolaghanAspirant.java
+++ b/Mage.Sets/src/mage/cards/k/KolaghanAspirant.java
@@ -24,7 +24,7 @@ public final class KolaghanAspirant extends CardImpl {
this.toughness = new MageInt(1);
// Whenever Kolaghan Aspirant becomes blocked by a creature, Kolaghan Aspirant deals 1 damage to that creature.
- this.addAbility(new BecomesBlockedByCreatureTriggeredAbility(new DamageTargetEffect(1, true, "that creature"), false));
+ this.addAbility(new BecomesBlockedByCreatureTriggeredAbility(new DamageTargetEffect(1).withTargetDescription("that creature"), false));
}
private KolaghanAspirant(final KolaghanAspirant card) {
diff --git a/Mage.Sets/src/mage/cards/l/LavabornMuse.java b/Mage.Sets/src/mage/cards/l/LavabornMuse.java
index e63bccc138b..7c215610f31 100644
--- a/Mage.Sets/src/mage/cards/l/LavabornMuse.java
+++ b/Mage.Sets/src/mage/cards/l/LavabornMuse.java
@@ -30,7 +30,7 @@ public final class LavabornMuse extends CardImpl {
// At the beginning of each opponent's upkeep, if that player has two or fewer cards in hand, Lavaborn Muse deals 3 damage to that player.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(
TargetController.OPPONENT,
- new DamageTargetEffect(3, true, "that player"),
+ new DamageTargetEffect(3).withTargetDescription("that player"),
false
).withInterveningIf(condition));
}
diff --git a/Mage.Sets/src/mage/cards/l/LightningSurge.java b/Mage.Sets/src/mage/cards/l/LightningSurge.java
index 517f07f2347..4affdc01001 100644
--- a/Mage.Sets/src/mage/cards/l/LightningSurge.java
+++ b/Mage.Sets/src/mage/cards/l/LightningSurge.java
@@ -25,7 +25,7 @@ public final class LightningSurge extends CardImpl {
// Lightning Surge deals 4 damage to any target.
// Threshold - If seven or more cards are in your graveyard, instead Lightning Surge deals 6 damage to that creature or player and the damage can't be prevented.
Effect effect = new ConditionalOneShotEffect(
- new DamageTargetEffect(6, false), new DamageTargetEffect(4),
+ new DamageTargetEffect(6).withCantBePrevented(), new DamageTargetEffect(4),
ThresholdCondition.instance, "{this} deals 4 damage to any target.
" +
AbilityWord.THRESHOLD.formatWord() + "If seven or more cards are in your graveyard, " +
"instead {this} deals 6 damage to that permanent or player and the damage can't be prevented"
diff --git a/Mage.Sets/src/mage/cards/m/Manabarbs.java b/Mage.Sets/src/mage/cards/m/Manabarbs.java
index 2ce7acb564f..d267a2cbd21 100644
--- a/Mage.Sets/src/mage/cards/m/Manabarbs.java
+++ b/Mage.Sets/src/mage/cards/m/Manabarbs.java
@@ -22,7 +22,7 @@ public final class Manabarbs extends CardImpl {
// Whenever a player taps a land for mana, Manabarbs deals 1 damage to that player.
this.addAbility(new TapForManaAllTriggeredAbility(
- new DamageTargetEffect(1, true, "that player"),
+ new DamageTargetEffect(1).withTargetDescription("that player"),
new FilterLandPermanent("a player taps a land"), SetTargetPointer.PLAYER));
}
diff --git a/Mage.Sets/src/mage/cards/m/MaskOfIntolerance.java b/Mage.Sets/src/mage/cards/m/MaskOfIntolerance.java
index b4d4df12080..4c33ac837a6 100644
--- a/Mage.Sets/src/mage/cards/m/MaskOfIntolerance.java
+++ b/Mage.Sets/src/mage/cards/m/MaskOfIntolerance.java
@@ -24,7 +24,7 @@ public final class MaskOfIntolerance extends CardImpl {
// At the beginning of each player's upkeep, if there are four or more basic land types among lands that player controls, Mask of Intolerance deals 3 damage to that player.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(
- TargetController.EACH_PLAYER, new DamageTargetEffect(3, true, "that player"), false
+ TargetController.EACH_PLAYER, new DamageTargetEffect(3).withTargetDescription("that player"), false
).withInterveningIf(MaskOfIntoleranceCondition.instance).addHint(DomainHint.instance));
}
diff --git a/Mage.Sets/src/mage/cards/m/Megrim.java b/Mage.Sets/src/mage/cards/m/Megrim.java
index 4f2d3aec0ca..a258655a852 100644
--- a/Mage.Sets/src/mage/cards/m/Megrim.java
+++ b/Mage.Sets/src/mage/cards/m/Megrim.java
@@ -19,7 +19,7 @@ public final class Megrim extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}");
// Whenever an opponent discards a card, Megrim deals 2 damage to that player.
- this.addAbility(new DiscardsACardOpponentTriggeredAbility(new DamageTargetEffect(2, true, "that player"), false, SetTargetPointer.PLAYER));
+ this.addAbility(new DiscardsACardOpponentTriggeredAbility(new DamageTargetEffect(2).withTargetDescription("that player"), false, SetTargetPointer.PLAYER));
}
private Megrim(final Megrim card) {
diff --git a/Mage.Sets/src/mage/cards/n/NekusarTheMindrazer.java b/Mage.Sets/src/mage/cards/n/NekusarTheMindrazer.java
index 43c1a721efd..e565a69b724 100644
--- a/Mage.Sets/src/mage/cards/n/NekusarTheMindrazer.java
+++ b/Mage.Sets/src/mage/cards/n/NekusarTheMindrazer.java
@@ -33,7 +33,7 @@ public final class NekusarTheMindrazer extends CardImpl {
false));
// Whenever an opponent draws a card, Nekusar, the Mindrazer deals 1 damage to that player.
- this.addAbility(new DrawCardOpponentTriggeredAbility(new DamageTargetEffect(1, true, "that player"), false, true));
+ this.addAbility(new DrawCardOpponentTriggeredAbility(new DamageTargetEffect(1).withTargetDescription("that player"), false, true));
}
private NekusarTheMindrazer(final NekusarTheMindrazer card) {
diff --git a/Mage.Sets/src/mage/cards/o/ObNixilisTheHateTwisted.java b/Mage.Sets/src/mage/cards/o/ObNixilisTheHateTwisted.java
index 09a51a27ee6..7cf043ecee2 100644
--- a/Mage.Sets/src/mage/cards/o/ObNixilisTheHateTwisted.java
+++ b/Mage.Sets/src/mage/cards/o/ObNixilisTheHateTwisted.java
@@ -28,9 +28,8 @@ public final class ObNixilisTheHateTwisted extends CardImpl {
this.setStartingLoyalty(5);
// Whenever an opponent draws a card, Ob Nixilis, the Hate-Twisted deals 1 damage to that player.
- this.addAbility(new DrawCardOpponentTriggeredAbility(new DamageTargetEffect(
- 1, true, "that player"
- ), false, true));
+ this.addAbility(new DrawCardOpponentTriggeredAbility(new DamageTargetEffect(1)
+ .withTargetDescription("that player"), false, true));
// -2: Destroy target creature. Its controller draws two cards.
Ability ability = new LoyaltyAbility(new DestroyTargetEffect(), -2);
diff --git a/Mage.Sets/src/mage/cards/o/OrneryGoblin.java b/Mage.Sets/src/mage/cards/o/OrneryGoblin.java
index 5c78ad12729..418e73e97db 100644
--- a/Mage.Sets/src/mage/cards/o/OrneryGoblin.java
+++ b/Mage.Sets/src/mage/cards/o/OrneryGoblin.java
@@ -24,7 +24,7 @@ public final class OrneryGoblin extends CardImpl {
this.toughness = new MageInt(1);
// Whenever Ornery Goblin blocks or becomes blocked by a creature, Ornery Goblin deals 1 damage to that creature.
- this.addAbility(new BlocksOrBlockedByCreatureSourceTriggeredAbility(new DamageTargetEffect(1, true, "that creature")));
+ this.addAbility(new BlocksOrBlockedByCreatureSourceTriggeredAbility(new DamageTargetEffect(1).withTargetDescription("that creature")));
}
private OrneryGoblin(final OrneryGoblin card) {
diff --git a/Mage.Sets/src/mage/cards/o/Overabundance.java b/Mage.Sets/src/mage/cards/o/Overabundance.java
index 94b7b809584..ea68ec6f634 100644
--- a/Mage.Sets/src/mage/cards/o/Overabundance.java
+++ b/Mage.Sets/src/mage/cards/o/Overabundance.java
@@ -30,7 +30,7 @@ public final class Overabundance extends CardImpl {
));
this.addAbility(new TapForManaAllTriggeredAbility(
- new DamageTargetEffect(1, true, "that player"),
+ new DamageTargetEffect(1).withTargetDescription("that player"),
new FilterLandPermanent("a player taps a land"),
SetTargetPointer.PLAYER
));
diff --git a/Mage.Sets/src/mage/cards/p/PaupersCage.java b/Mage.Sets/src/mage/cards/p/PaupersCage.java
index 2c976f03dca..757ffb2fbea 100644
--- a/Mage.Sets/src/mage/cards/p/PaupersCage.java
+++ b/Mage.Sets/src/mage/cards/p/PaupersCage.java
@@ -24,7 +24,7 @@ public final class PaupersCage extends CardImpl {
// At the beginning of each opponent's upkeep, if that player has two or fewer cards in hand, Paupers' Cage deals 2 damage to that player.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(
- TargetController.OPPONENT, new DamageTargetEffect(2, true, "that player"), false
+ TargetController.OPPONENT, new DamageTargetEffect(2).withTargetDescription("that player"), false
).withInterveningIf(condition));
}
diff --git a/Mage.Sets/src/mage/cards/p/PinpointAvalanche.java b/Mage.Sets/src/mage/cards/p/PinpointAvalanche.java
index ab81e6a79d4..83e9d3ed0b4 100644
--- a/Mage.Sets/src/mage/cards/p/PinpointAvalanche.java
+++ b/Mage.Sets/src/mage/cards/p/PinpointAvalanche.java
@@ -18,7 +18,7 @@ public final class PinpointAvalanche extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{R}{R}");
// Pinpoint Avalanche deals 4 damage to target creature. The damage can't be prevented.
- this.getSpellAbility().addEffect(new DamageTargetEffect(4, false));
+ this.getSpellAbility().addEffect(new DamageTargetEffect(4).withCantBePrevented());
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}
diff --git a/Mage.Sets/src/mage/cards/p/PrickleFaeries.java b/Mage.Sets/src/mage/cards/p/PrickleFaeries.java
index 525b6089461..331dcf20681 100644
--- a/Mage.Sets/src/mage/cards/p/PrickleFaeries.java
+++ b/Mage.Sets/src/mage/cards/p/PrickleFaeries.java
@@ -34,7 +34,7 @@ public final class PrickleFaeries extends CardImpl {
// At the beginning of each opponent's upkeep, if that player has two or fewer cards in hand, Prickle Faeries deals 2 damage to them.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(
Zone.BATTLEFIELD, TargetController.OPPONENT,
- new DamageTargetEffect(2, true, "them"), false
+ new DamageTargetEffect(2).withTargetDescription("them"), false
).withInterveningIf(condition));
}
diff --git a/Mage.Sets/src/mage/cards/p/PyrostaticPillar.java b/Mage.Sets/src/mage/cards/p/PyrostaticPillar.java
index 1d4a2db8358..f099429192d 100644
--- a/Mage.Sets/src/mage/cards/p/PyrostaticPillar.java
+++ b/Mage.Sets/src/mage/cards/p/PyrostaticPillar.java
@@ -42,7 +42,7 @@ class PyrostaticPillarTriggeredAbility extends TriggeredAbilityImpl {
public PyrostaticPillarTriggeredAbility() {
- super(Zone.BATTLEFIELD, new DamageTargetEffect(2, true, "that player"));
+ super(Zone.BATTLEFIELD, new DamageTargetEffect(2).withTargetDescription("that player"));
}
@@ -76,4 +76,4 @@ class PyrostaticPillarTriggeredAbility extends TriggeredAbilityImpl {
public String getRule() {
return "Whenever a player casts a spell with mana value 3 or less, {this} deals 2 damage to that player.";
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/q/QuenchableFire.java b/Mage.Sets/src/mage/cards/q/QuenchableFire.java
index 0b555526ce7..fac069deee6 100644
--- a/Mage.Sets/src/mage/cards/q/QuenchableFire.java
+++ b/Mage.Sets/src/mage/cards/q/QuenchableFire.java
@@ -24,7 +24,7 @@ public final class QuenchableFire extends CardImpl {
this.getSpellAbility().addEffect(new DamageTargetEffect(3));
// It deals an additional 3 damage to that player or planeswalker at the beginning of your next upkeep step unless that player or that planeswalker’s controller pays {U} before that step.
this.getSpellAbility().addEffect(new UnlessPaysDelayedEffect(new ManaCostsImpl<>("{U}"),
- new DamageTargetEffect(3, true, "that player or that planeswalker's controller"), PhaseStep.UPKEEP, false,
+ new DamageTargetEffect(3).withTargetDescription("that player or that planeswalker's controller"), PhaseStep.UPKEEP, false,
"It deals an additional 3 damage to that player or planeswalker at the beginning of your next upkeep step unless that player or that planeswalker's controller pays {U} before that step."));
}
diff --git a/Mage.Sets/src/mage/cards/r/RampagingFerocidon.java b/Mage.Sets/src/mage/cards/r/RampagingFerocidon.java
index 131cab77f3d..d3e630d8ca4 100644
--- a/Mage.Sets/src/mage/cards/r/RampagingFerocidon.java
+++ b/Mage.Sets/src/mage/cards/r/RampagingFerocidon.java
@@ -43,8 +43,9 @@ public final class RampagingFerocidon extends CardImpl {
this.addAbility(new SimpleStaticAbility(new CantGainLifeAllEffect()));
// Whenever another creature enters the battlefield, Rampaging Ferocidon deals 1 damage to that creature's controller.
- this.addAbility(new EntersBattlefieldAllTriggeredAbility(
- Zone.BATTLEFIELD, new DamageTargetEffect(1, true, "that creature's controller"), filter, false, SetTargetPointer.PLAYER));
+ this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD,
+ new DamageTargetEffect(1).withTargetDescription("that creature's controller"),
+ filter, false, SetTargetPointer.PLAYER));
}
private RampagingFerocidon(final RampagingFerocidon card) {
diff --git a/Mage.Sets/src/mage/cards/r/RazorPendulum.java b/Mage.Sets/src/mage/cards/r/RazorPendulum.java
index 6a0e1d0d6b0..e891923fc6d 100644
--- a/Mage.Sets/src/mage/cards/r/RazorPendulum.java
+++ b/Mage.Sets/src/mage/cards/r/RazorPendulum.java
@@ -25,7 +25,7 @@ public final class RazorPendulum extends CardImpl {
// At the beginning of each player’s end step, if that player has 5 or less life, Razor Pendulum deals 2 damage to that player.
this.addAbility(new BeginningOfEndStepTriggeredAbility(
TargetController.EACH_PLAYER,
- new DamageTargetEffect(2, true, "that player"),
+ new DamageTargetEffect(2).withTargetDescription("that player"),
false, condition
));
}
diff --git a/Mage.Sets/src/mage/cards/r/RazorkinNeedlehead.java b/Mage.Sets/src/mage/cards/r/RazorkinNeedlehead.java
index 42eeff23e9d..20271b68b2e 100644
--- a/Mage.Sets/src/mage/cards/r/RazorkinNeedlehead.java
+++ b/Mage.Sets/src/mage/cards/r/RazorkinNeedlehead.java
@@ -35,9 +35,9 @@ public final class RazorkinNeedlehead extends CardImpl {
)));
// Whenever an opponent draws a card, Razorkin Needlehead deals 1 damage to them.
- this.addAbility(new DrawCardOpponentTriggeredAbility(new DamageTargetEffect(
- 1, true, "them"
- ), false, true));
+ this.addAbility(new DrawCardOpponentTriggeredAbility(
+ new DamageTargetEffect(1).withTargetDescription("them"),
+ false, true));
}
private RazorkinNeedlehead(final RazorkinNeedlehead card) {
diff --git a/Mage.Sets/src/mage/cards/r/RoilingVortex.java b/Mage.Sets/src/mage/cards/r/RoilingVortex.java
index 3f64b096d95..e35c3e043aa 100644
--- a/Mage.Sets/src/mage/cards/r/RoilingVortex.java
+++ b/Mage.Sets/src/mage/cards/r/RoilingVortex.java
@@ -32,15 +32,15 @@ public final class RoilingVortex extends CardImpl {
// At the beginning of each player's upkeep, Roiling Vortex deals 1 damage to them.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(
- TargetController.EACH_PLAYER, new DamageTargetEffect(1, true, "them"),
+ TargetController.EACH_PLAYER, new DamageTargetEffect(1).withTargetDescription("them"),
false
));
// Whenever a player casts a spell, if no mana was spent to cast that spell, Roiling Vortex deals 5 damage to that player.
- this.addAbility(new SpellCastAllTriggeredAbility(new DamageTargetEffect(
- 5, true, "that player",
- "if no mana was spent to cast that spell, {this}"
- ), filter, false, SetTargetPointer.PLAYER));
+ this.addAbility(new SpellCastAllTriggeredAbility(
+ new DamageTargetEffect(5)
+ .setText("if no mana was spent to cast that spell, {this} deals 5 damage to that player"),
+ filter, false, SetTargetPointer.PLAYER));
// {R}: Your opponents can't gain life this turn.
this.addAbility(new SimpleActivatedAbility(
diff --git a/Mage.Sets/src/mage/cards/s/ScabClanBerserker.java b/Mage.Sets/src/mage/cards/s/ScabClanBerserker.java
index 408833a25e4..b250229b7e1 100644
--- a/Mage.Sets/src/mage/cards/s/ScabClanBerserker.java
+++ b/Mage.Sets/src/mage/cards/s/ScabClanBerserker.java
@@ -37,7 +37,7 @@ public final class ScabClanBerserker extends CardImpl {
// Whenever an opponent casts a noncreature spell, if Scab-Clan Berserker is renowned, Scab-Clan Berserker deals 2 damage to that player.
this.addAbility(new SpellCastOpponentTriggeredAbility(
Zone.BATTLEFIELD,
- new DamageTargetEffect(2, true, "that player"),
+ new DamageTargetEffect(2).withTargetDescription("that player"),
StaticFilters.FILTER_SPELL_A_NON_CREATURE, false, SetTargetPointer.PLAYER
).withInterveningIf(RenownedSourceCondition.THIS));
}
diff --git a/Mage.Sets/src/mage/cards/s/Scald.java b/Mage.Sets/src/mage/cards/s/Scald.java
index 48f66774b62..fcad2a81c3e 100644
--- a/Mage.Sets/src/mage/cards/s/Scald.java
+++ b/Mage.Sets/src/mage/cards/s/Scald.java
@@ -29,7 +29,7 @@ public final class Scald extends CardImpl {
// Whenever a player taps an Island for mana, Scald deals 1 damage to that player.
this.addAbility(new TapForManaAllTriggeredAbility(
- new DamageTargetEffect(1, true, "that player"),
+ new DamageTargetEffect(1).withTargetDescription("that player"),
filter,
SetTargetPointer.PLAYER));
}
diff --git a/Mage.Sets/src/mage/cards/s/ScaldingViper.java b/Mage.Sets/src/mage/cards/s/ScaldingViper.java
index f0e17f5f7fc..7006ac38719 100644
--- a/Mage.Sets/src/mage/cards/s/ScaldingViper.java
+++ b/Mage.Sets/src/mage/cards/s/ScaldingViper.java
@@ -34,7 +34,7 @@ public final class ScaldingViper extends AdventureCard {
// Whenever an opponent casts a spell with mana value 3 or less, Scalding Viper deals 1 damage to that player.
this.addAbility(new SpellCastOpponentTriggeredAbility(
- Zone.BATTLEFIELD, new DamageTargetEffect(1, true, "that player"),
+ Zone.BATTLEFIELD, new DamageTargetEffect(1).withTargetDescription("that player"),
filter, false, SetTargetPointer.PLAYER
));
diff --git a/Mage.Sets/src/mage/cards/s/SearingBlood.java b/Mage.Sets/src/mage/cards/s/SearingBlood.java
index dde6c05bf80..91fcf8785da 100644
--- a/Mage.Sets/src/mage/cards/s/SearingBlood.java
+++ b/Mage.Sets/src/mage/cards/s/SearingBlood.java
@@ -23,7 +23,7 @@ public final class SearingBlood extends CardImpl {
this.getSpellAbility().addEffect(new DamageTargetEffect(2));
this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(
new WhenTargetDiesDelayedTriggeredAbility(
- new DamageTargetEffect(3, true, "the creature's controller"),
+ new DamageTargetEffect(3).withTargetDescription("the creature's controller"),
SetTargetPointer.PLAYER
)
));
diff --git a/Mage.Sets/src/mage/cards/s/ShadowInTheWarp.java b/Mage.Sets/src/mage/cards/s/ShadowInTheWarp.java
index 2670cc3f137..8c4feb6466d 100644
--- a/Mage.Sets/src/mage/cards/s/ShadowInTheWarp.java
+++ b/Mage.Sets/src/mage/cards/s/ShadowInTheWarp.java
@@ -14,7 +14,6 @@ import mage.constants.Zone;
import mage.filter.common.FilterCreatureCard;
import mage.filter.predicate.ObjectSourcePlayer;
import mage.filter.predicate.ObjectSourcePlayerPredicate;
-import mage.game.Controllable;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.stack.Spell;
@@ -22,6 +21,7 @@ import mage.players.Player;
import mage.target.targetpointer.FixedTarget;
import mage.watchers.Watcher;
import mage.watchers.common.SpellsCastWatcher;
+
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@@ -108,8 +108,8 @@ class FirstCastCreatureSpellPredicate implements ObjectSourcePlayerPredicate