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