From bd7ae640c5c2c2b0103bff36a2d163750af6109a Mon Sep 17 00:00:00 2001 From: xenohedron Date: Mon, 9 Oct 2023 23:52:43 -0400 Subject: [PATCH] fix some effects to use DoIfCostPaid --- Mage.Sets/src/mage/cards/c/CacophonyScamp.java | 2 +- Mage.Sets/src/mage/cards/f/FurnaceScamp.java | 10 ++++++---- Mage.Sets/src/mage/cards/h/HauntedCadaver.java | 10 ++++++---- Mage.Sets/src/mage/cards/i/ImpalerShrike.java | 11 +++++++---- Mage.Sets/src/mage/cards/w/WhisperingSpecter.java | 14 +++++++++----- .../java/mage/abilities/TriggeredAbilityImpl.java | 2 +- 6 files changed, 30 insertions(+), 19 deletions(-) diff --git a/Mage.Sets/src/mage/cards/c/CacophonyScamp.java b/Mage.Sets/src/mage/cards/c/CacophonyScamp.java index 2d7e9000ba9..a8d47031667 100644 --- a/Mage.Sets/src/mage/cards/c/CacophonyScamp.java +++ b/Mage.Sets/src/mage/cards/c/CacophonyScamp.java @@ -36,7 +36,7 @@ public final class CacophonyScamp extends CardImpl { // Whenever Cacophony Scamp deals combat damage to a player, you may sacrifice it. If you do, proliferate. this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new DoIfCostPaid( - new ProliferateEffect(), new SacrificeSourceCost().setText("sacrifice it") + new ProliferateEffect(), new SacrificeSourceCost() ), false)); // When Cacophony Scamp dies, it deals damage equal to its power to any target. diff --git a/Mage.Sets/src/mage/cards/f/FurnaceScamp.java b/Mage.Sets/src/mage/cards/f/FurnaceScamp.java index 25619403d9f..3eabea17458 100644 --- a/Mage.Sets/src/mage/cards/f/FurnaceScamp.java +++ b/Mage.Sets/src/mage/cards/f/FurnaceScamp.java @@ -1,12 +1,12 @@ - package mage.cards.f; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; +import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.effects.common.DamageTargetEffect; -import mage.abilities.effects.common.SacrificeSourceEffect; +import mage.abilities.effects.common.DoIfCostPaid; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -26,8 +26,10 @@ public final class FurnaceScamp extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new SacrificeSourceEffect(), true, true); - ability.addEffect(new DamageTargetEffect(3, true, "that player")); + // 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() + ), false, true); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HauntedCadaver.java b/Mage.Sets/src/mage/cards/h/HauntedCadaver.java index bb978f99f45..3aff9924ecf 100644 --- a/Mage.Sets/src/mage/cards/h/HauntedCadaver.java +++ b/Mage.Sets/src/mage/cards/h/HauntedCadaver.java @@ -1,12 +1,12 @@ - package mage.cards.h; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; +import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.common.SacrificeSourceEffect; +import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.discard.DiscardTargetEffect; import mage.abilities.keyword.MorphAbility; import mage.cards.CardImpl; @@ -27,9 +27,11 @@ public final class HauntedCadaver extends CardImpl { this.toughness = new MageInt(2); // Whenever Haunted Cadaver deals combat damage to a player, you may sacrifice it. If you do, that player discards three cards. - Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new SacrificeSourceEffect(), true, true); - ability.addEffect( new DiscardTargetEffect(3)); + Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DoIfCostPaid( + new DiscardTargetEffect(3), new SacrificeSourceCost() + ), false, true); this.addAbility(ability); + // Morph {1}{B} this.addAbility(new MorphAbility(this, new ManaCostsImpl<>("{1}{B}"))); } diff --git a/Mage.Sets/src/mage/cards/i/ImpalerShrike.java b/Mage.Sets/src/mage/cards/i/ImpalerShrike.java index 74a1ee1f339..b6586ea7758 100644 --- a/Mage.Sets/src/mage/cards/i/ImpalerShrike.java +++ b/Mage.Sets/src/mage/cards/i/ImpalerShrike.java @@ -1,12 +1,12 @@ - package mage.cards.i; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; +import mage.abilities.costs.common.SacrificeSourceCost; +import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.DrawCardSourceControllerEffect; -import mage.abilities.effects.common.SacrificeSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -28,8 +28,11 @@ public final class ImpalerShrike extends CardImpl { this.toughness = new MageInt(1); this.addAbility(FlyingAbility.getInstance()); - Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new SacrificeSourceEffect(), true); - ability.addEffect(new DrawCardSourceControllerEffect(3)); + + // Whenever Impaler Shrike deals combat damage to a player, you may sacrifice it. If you do, draw three cards. + Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DoIfCostPaid( + new DrawCardSourceControllerEffect(3), new SacrificeSourceCost() + ), false); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WhisperingSpecter.java b/Mage.Sets/src/mage/cards/w/WhisperingSpecter.java index 884c12d6ee4..3fe3c8b1e07 100644 --- a/Mage.Sets/src/mage/cards/w/WhisperingSpecter.java +++ b/Mage.Sets/src/mage/cards/w/WhisperingSpecter.java @@ -1,12 +1,12 @@ - package mage.cards.w; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; +import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.SacrificeSourceEffect; +import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.InfectAbility; import mage.cards.CardImpl; @@ -34,8 +34,12 @@ public final class WhisperingSpecter extends CardImpl { this.addAbility(FlyingAbility.getInstance()); this.addAbility(InfectAbility.getInstance()); - Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new SacrificeSourceEffect(), true, true); - ability.addEffect(new WhisperingSpecterEffect()); + + // Whenever Whispering Specter deals combat damage to a player, you may sacrifice it. + // If you do, that player discards a card for each poison counter they have. + Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DoIfCostPaid( + new WhisperingSpecterEffect(), new SacrificeSourceCost() + ), false, true); this.addAbility(ability); } @@ -52,7 +56,7 @@ public final class WhisperingSpecter extends CardImpl { class WhisperingSpecterEffect extends OneShotEffect { WhisperingSpecterEffect() { super(Outcome.Discard); - staticText = "If you do, that player discards a card for each poison counter they have"; + staticText = "that player discards a card for each poison counter they have"; } private WhisperingSpecterEffect(final WhisperingSpecterEffect effect) { diff --git a/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java b/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java index a5e62043668..3741b32273a 100644 --- a/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java +++ b/Mage/src/main/java/mage/abilities/TriggeredAbilityImpl.java @@ -221,7 +221,7 @@ public abstract class TriggeredAbilityImpl extends AbilityImpl implements Trigge } } if (replaceRuleText && triggerPhrase != null) { - superRule = superRule.replaceFirst("^(sacrifice )?\\{this\\}", "$1it"); + superRule = superRule.replaceFirst("^(you may sacrifice |sacrifice )?\\{this\\}", "$1it"); } sb.append(superRule); if (triggersOnceEachTurn) {