From d4008728ed3632964fac399a78dbafeda4459e6c Mon Sep 17 00:00:00 2001 From: Steven Knipe Date: Tue, 5 Nov 2024 01:55:29 -0800 Subject: [PATCH] Refactor "At the beginning of your end step, if a creature died this turn" abilities (#13041) --- Mage.Sets/src/mage/cards/b/Bulette.java | 15 ++++++--------- Mage.Sets/src/mage/cards/c/CompySwarm.java | 16 +++++++--------- Mage.Sets/src/mage/cards/l/LilianasDevotee.java | 13 ++++--------- .../src/mage/cards/s/SabertoothMauler.java | 17 ++++++----------- .../src/mage/cards/t/TwinbladeAssassins.java | 12 ++++-------- Mage.Sets/src/mage/cards/w/WarlockClass.java | 17 ++++++++--------- 6 files changed, 35 insertions(+), 55 deletions(-) diff --git a/Mage.Sets/src/mage/cards/b/Bulette.java b/Mage.Sets/src/mage/cards/b/Bulette.java index ac58df41cf7..13086d3a1be 100644 --- a/Mage.Sets/src/mage/cards/b/Bulette.java +++ b/Mage.Sets/src/mage/cards/b/Bulette.java @@ -1,18 +1,18 @@ package mage.cards.b; -import java.util.UUID; import mage.MageInt; -import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.condition.common.MorbidCondition; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.hint.common.MorbidHint; -import mage.constants.SubType; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.counters.CounterType; +import java.util.UUID; + /** * * @author weirddan455 @@ -27,11 +27,8 @@ public final class Bulette extends CardImpl { this.toughness = new MageInt(3); // At the beginning of your end step, if a creature died this turn, put a +1/+1 counter on Bulette. - this.addAbility(new ConditionalInterveningIfTriggeredAbility( - new BeginningOfEndStepTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance())), - MorbidCondition.instance, - "At the beginning of your end step, if a creature died this turn, put a +1/+1 counter on {this}." - ).addHint(MorbidHint.instance)); + this.addAbility(new BeginningOfEndStepTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance())) + .withInterveningIf(MorbidCondition.instance).addHint(MorbidHint.instance)); } private Bulette(final Bulette card) { diff --git a/Mage.Sets/src/mage/cards/c/CompySwarm.java b/Mage.Sets/src/mage/cards/c/CompySwarm.java index c9c40a96106..6c7f4f2abf0 100644 --- a/Mage.Sets/src/mage/cards/c/CompySwarm.java +++ b/Mage.Sets/src/mage/cards/c/CompySwarm.java @@ -1,16 +1,16 @@ package mage.cards.c; -import java.util.UUID; import mage.MageInt; -import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.condition.common.MorbidCondition; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.CreateTokenCopySourceEffect; import mage.abilities.hint.common.MorbidHint; -import mage.constants.SubType; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; + +import java.util.UUID; /** * @@ -26,11 +26,9 @@ public final class CompySwarm extends CardImpl { this.toughness = new MageInt(2); // At the beginning of your end step, if a creature died this turn, create a tapped token that's a copy of Compy Swarm. - this.addAbility(new ConditionalInterveningIfTriggeredAbility( - new BeginningOfEndStepTriggeredAbility(new CreateTokenCopySourceEffect(1, true)), - MorbidCondition.instance, - "At the beginning of your end step, if a creature died this turn, create a tapped token that's a copy of {this}." - ).addHint(MorbidHint.instance)); + this.addAbility(new BeginningOfEndStepTriggeredAbility( + new CreateTokenCopySourceEffect(1, true) + ).withInterveningIf(MorbidCondition.instance).addHint(MorbidHint.instance)); } private CompySwarm(final CompySwarm card) { diff --git a/Mage.Sets/src/mage/cards/l/LilianasDevotee.java b/Mage.Sets/src/mage/cards/l/LilianasDevotee.java index 2ffcce4281b..45fbb2cba0b 100644 --- a/Mage.Sets/src/mage/cards/l/LilianasDevotee.java +++ b/Mage.Sets/src/mage/cards/l/LilianasDevotee.java @@ -1,15 +1,14 @@ package mage.cards.l; import mage.MageInt; -import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.MorbidCondition; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.hint.common.MorbidHint; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -41,13 +40,9 @@ public final class LilianasDevotee extends CardImpl { ))); // At the beginning of your end step, if a creature died this turn, you may pay {1}{B}. If you do, create a 2/2 black Zombie creature token. - this.addAbility(new ConditionalInterveningIfTriggeredAbility( - new BeginningOfEndStepTriggeredAbility(new DoIfCostPaid( - new CreateTokenEffect(new ZombieToken()), new ManaCostsImpl<>("{1}{B}") - )), MorbidCondition.instance, - "At the beginning of your end step, if a creature died this turn, " + - "you may pay {1}{B}. If you do, create a 2/2 black Zombie creature token." - ).addHint(MorbidHint.instance)); + this.addAbility(new BeginningOfEndStepTriggeredAbility( + new DoIfCostPaid(new CreateTokenEffect(new ZombieToken()), new ManaCostsImpl<>("{1}{B}")) + ).withInterveningIf(MorbidCondition.instance).addHint(MorbidHint.instance)); } private LilianasDevotee(final LilianasDevotee card) { diff --git a/Mage.Sets/src/mage/cards/s/SabertoothMauler.java b/Mage.Sets/src/mage/cards/s/SabertoothMauler.java index 3e78ae0031e..50cd9d1be01 100644 --- a/Mage.Sets/src/mage/cards/s/SabertoothMauler.java +++ b/Mage.Sets/src/mage/cards/s/SabertoothMauler.java @@ -2,12 +2,11 @@ package mage.cards.s; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.condition.common.MorbidCondition; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.UntapSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.hint.common.MorbidHint; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -29,15 +28,11 @@ public final class SabertoothMauler extends CardImpl { this.toughness = new MageInt(3); // At the beginning of your end step, if a creature died this turn, put a +1/+1 counter on Sabertooth Mauler and untap it. - Ability ability = new ConditionalInterveningIfTriggeredAbility( - new BeginningOfEndStepTriggeredAbility( - new AddCountersSourceEffect(CounterType.P1P1.createInstance() - ) - ), MorbidCondition.instance, "At the beginning of your end step, " + - "if a creature died this turn, put a +1/+1 counter on {this} and untap it." - ); - ability.addEffect(new UntapSourceEffect()); - this.addAbility(ability.addHint(MorbidHint.instance)); + Ability ability = new BeginningOfEndStepTriggeredAbility( + new AddCountersSourceEffect(CounterType.P1P1.createInstance()) + ).withInterveningIf(MorbidCondition.instance).addHint(MorbidHint.instance); + ability.addEffect(new UntapSourceEffect().concatBy("and ")); + this.addAbility(ability); } private SabertoothMauler(final SabertoothMauler card) { diff --git a/Mage.Sets/src/mage/cards/t/TwinbladeAssassins.java b/Mage.Sets/src/mage/cards/t/TwinbladeAssassins.java index 1aa8139b10c..70342985672 100644 --- a/Mage.Sets/src/mage/cards/t/TwinbladeAssassins.java +++ b/Mage.Sets/src/mage/cards/t/TwinbladeAssassins.java @@ -1,11 +1,10 @@ package mage.cards.t; import mage.MageInt; -import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.condition.common.MorbidCondition; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.hint.common.MorbidHint; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -27,12 +26,9 @@ public final class TwinbladeAssassins extends CardImpl { this.toughness = new MageInt(4); // At the beginning of your end step, if a creature died this turn, draw a card. - this.addAbility(new ConditionalInterveningIfTriggeredAbility( - new BeginningOfEndStepTriggeredAbility( - new DrawCardSourceControllerEffect(1) - ), MorbidCondition.instance, "At the beginning of your end step, " + - "if a creature died this turn, draw a card." - ).addHint(MorbidHint.instance)); + this.addAbility(new BeginningOfEndStepTriggeredAbility( + new DrawCardSourceControllerEffect(1) + ).withInterveningIf(MorbidCondition.instance).addHint(MorbidHint.instance)); } private TwinbladeAssassins(final TwinbladeAssassins card) { diff --git a/Mage.Sets/src/mage/cards/w/WarlockClass.java b/Mage.Sets/src/mage/cards/w/WarlockClass.java index 691f06b98cf..3cf6cca40c0 100644 --- a/Mage.Sets/src/mage/cards/w/WarlockClass.java +++ b/Mage.Sets/src/mage/cards/w/WarlockClass.java @@ -2,10 +2,8 @@ package mage.cards.w; import mage.abilities.Ability; import mage.abilities.common.BecomesClassLevelTriggeredAbility; -import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.MorbidCondition; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; import mage.abilities.effects.common.LoseLifeOpponentsEffect; @@ -13,9 +11,13 @@ import mage.abilities.effects.common.continuous.GainClassAbilitySourceEffect; import mage.abilities.hint.common.MorbidHint; import mage.abilities.keyword.ClassLevelAbility; import mage.abilities.keyword.ClassReminderAbility; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.PutCards; +import mage.constants.SubType; import mage.game.Game; import mage.players.Player; import mage.watchers.common.PlayerLostLifeWatcher; @@ -36,12 +38,9 @@ public final class WarlockClass extends CardImpl { this.addAbility(new ClassReminderAbility()); // At the beginning of your end step, if a creature died this turn, each opponent loses 1 life. - this.addAbility(new ConditionalInterveningIfTriggeredAbility( - new BeginningOfEndStepTriggeredAbility( - new LoseLifeOpponentsEffect(1) - ), MorbidCondition.instance, "At the beginning of your end step, " + - "if a creature died this turn, each opponent loses 1 life." - ).addHint(MorbidHint.instance)); + this.addAbility(new BeginningOfEndStepTriggeredAbility( + new LoseLifeOpponentsEffect(1) + ).withInterveningIf(MorbidCondition.instance).addHint(MorbidHint.instance)); // {1}{B}: Level 2 this.addAbility(new ClassLevelAbility(2, "{1}{B}"));