From 6bfeea47c9cbb719f946df2b0670f72ef68bc3f4 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Tue, 29 Apr 2025 10:15:10 -0400 Subject: [PATCH] [AER] update revolt wording and simplify implementations --- Mage.Sets/src/mage/cards/a/AetherRevolt.java | 2 +- .../src/mage/cards/a/AidFromTheCowl.java | 58 +++++++++---------- .../src/mage/cards/a/AirdropAeronauts.java | 13 ++--- Mage.Sets/src/mage/cards/c/CallForUnity.java | 30 +++++----- .../mage/cards/c/CountlessGearsRenegade.java | 13 ++--- .../src/mage/cards/d/DeadeyeHarpooner.java | 11 +--- Mage.Sets/src/mage/cards/d/Decommission.java | 7 ++- Mage.Sets/src/mage/cards/f/FatalPush.java | 28 +++++---- .../src/mage/cards/g/GreenwheelLiberator.java | 15 ++--- .../src/mage/cards/h/HiddenHerbalists.java | 18 +++--- .../src/mage/cards/h/HiddenStockpile.java | 15 ++--- .../src/mage/cards/l/LifecraftCavalry.java | 20 +++---- .../src/mage/cards/n/NarnamRenegade.java | 7 ++- .../src/mage/cards/n/NightMarketAeronaut.java | 7 ++- .../src/mage/cards/r/RenegadeRallier.java | 9 +-- .../src/mage/cards/s/SilkweaverElite.java | 10 ++-- Mage.Sets/src/mage/cards/s/SolemnRecruit.java | 19 +++--- Mage.Sets/src/mage/cards/v/VengefulRebel.java | 14 ++--- .../condition/common/RevoltCondition.java | 2 +- 19 files changed, 128 insertions(+), 170 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AetherRevolt.java b/Mage.Sets/src/mage/cards/a/AetherRevolt.java index b3be8471053..f6f525e1897 100644 --- a/Mage.Sets/src/mage/cards/a/AetherRevolt.java +++ b/Mage.Sets/src/mage/cards/a/AetherRevolt.java @@ -33,7 +33,7 @@ public final class AetherRevolt extends CardImpl { // Revolt -- As long as a permanent you controlled left the battlefield this turn, if a source you control would deal noncombat damage to an opponent or a permanent an opponent controls, it deals that much damage plus 2 instead. this.addAbility(new SimpleStaticAbility(new ConditionalReplacementEffect( new AetherRevoltEffect(), RevoltCondition.instance - ).setText("As long as a permanent you controlled left the battlefield this turn, " + ).setText("as long as a permanent left the battlefield under your control this turn, " + "if a source you control would deal noncombat damage to an opponent or a permanent an opponent controls, " + "it deals that much damage plus 2 instead") ).setAbilityWord(AbilityWord.REVOLT).addHint(RevoltCondition.getHint()), new RevoltWatcher()); diff --git a/Mage.Sets/src/mage/cards/a/AidFromTheCowl.java b/Mage.Sets/src/mage/cards/a/AidFromTheCowl.java index 81879be5107..4fc6fa05bc5 100644 --- a/Mage.Sets/src/mage/cards/a/AidFromTheCowl.java +++ b/Mage.Sets/src/mage/cards/a/AidFromTheCowl.java @@ -1,38 +1,38 @@ package mage.cards.a; -import java.util.UUID; -import mage.MageObject; import mage.abilities.Ability; -import mage.abilities.TriggeredAbility; -import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.condition.common.RevoltCondition; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.OneShotEffect; -import mage.cards.*; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.cards.CardsImpl; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.common.FilterPermanentCard; import mage.game.Game; import mage.players.Player; +import mage.util.CardUtil; import mage.watchers.common.RevoltWatcher; +import java.util.UUID; + /** - * * @author fireshoes */ public final class AidFromTheCowl extends CardImpl { - private static final String ruleText = "Revolt — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, " - + "reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. Otherwise, you may put it on the bottom of your library."; - public AidFromTheCowl(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}{G}"); // Revolt — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, // reveal the top card of your library. If it is a permanent card, you may put it onto the battlefield. Otherwise, put it on the bottom of your library. - TriggeredAbility ability = new BeginningOfEndStepTriggeredAbility(new AidFromTheCowlEffect()); - this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, RevoltCondition.instance, ruleText).addHint(RevoltCondition.getHint()), new RevoltWatcher()); + this.addAbility(new BeginningOfEndStepTriggeredAbility(new AidFromTheCowlEffect()) + .withInterveningIf(RevoltCondition.instance) + .setAbilityWord(AbilityWord.REVOLT) + .addHint(RevoltCondition.getHint()), new RevoltWatcher()); } private AidFromTheCowl(final AidFromTheCowl card) { @@ -49,7 +49,8 @@ class AidFromTheCowlEffect extends OneShotEffect { AidFromTheCowlEffect() { super(Outcome.PutCreatureInPlay); - this.staticText = "reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. Otherwise, you may put that card on the bottom of your library"; + this.staticText = "reveal the top card of your library. If it's a permanent card, " + + "you may put it onto the battlefield. Otherwise, you may put that card on the bottom of your library"; } private AidFromTheCowlEffect(final AidFromTheCowlEffect effect) { @@ -64,25 +65,20 @@ class AidFromTheCowlEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - MageObject sourceObject = game.getObject(source); - if (controller == null || sourceObject == null) { + if (controller == null || !controller.getLibrary().hasCards()) { return false; } - - if (controller.getLibrary().hasCards()) { - Card card = controller.getLibrary().getFromTop(game); - Cards cards = new CardsImpl(card); - controller.revealCards(sourceObject.getIdName(), cards, game); - - if (card != null) { - if (new FilterPermanentCard().match(card, game) && controller.chooseUse(Outcome.Neutral, "Put " + card.getIdName() + " onto the battlefield?", source, game)) { - controller.moveCards(card, Zone.BATTLEFIELD, source, game); - } else if (controller.chooseUse(Outcome.Neutral, "Put " + card.getIdName() + " on the bottom of your library?", source, game)) { - controller.putCardsOnBottomOfLibrary(cards, game, source, false); - } else { - game.informPlayers(controller.getLogName() + " puts the revealed card back to the top of the library."); - } - } + Card card = controller.getLibrary().getFromTop(game); + if (card == null) { + return false; + } + controller.revealCards(CardUtil.getSourceIdName(game, source), new CardsImpl(card), game); + if (card.isPermanent(game) && controller.chooseUse(Outcome.Neutral, "Put " + card.getIdName() + " onto the battlefield?", source, game)) { + controller.moveCards(card, Zone.BATTLEFIELD, source, game); + } else if (controller.chooseUse(Outcome.Neutral, "Put " + card.getIdName() + " on the bottom of your library?", source, game)) { + controller.putCardsOnBottomOfLibrary(card, game, source, false); + } else { + game.informPlayers(controller.getLogName() + " puts the revealed card back to the top of the library."); } return true; } diff --git a/Mage.Sets/src/mage/cards/a/AirdropAeronauts.java b/Mage.Sets/src/mage/cards/a/AirdropAeronauts.java index 15687ad96e3..0d870248803 100644 --- a/Mage.Sets/src/mage/cards/a/AirdropAeronauts.java +++ b/Mage.Sets/src/mage/cards/a/AirdropAeronauts.java @@ -1,10 +1,8 @@ package mage.cards.a; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.RevoltCondition; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; @@ -33,13 +31,10 @@ public final class AirdropAeronauts extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Revolt — When Airdrop Aeronauts enters the battlefield, if a permanent you controlled left the battlefield this turn, you gain 5 life. - Ability ability = new ConditionalInterveningIfTriggeredAbility( - new EntersBattlefieldTriggeredAbility(new GainLifeEffect(5), false), - RevoltCondition.instance, "When {this} enters, " + - "if a permanent you controlled left the battlefield this turn, you gain 5 life." - ); - ability.setAbilityWord(AbilityWord.REVOLT); - this.addAbility(ability.addHint(RevoltCondition.getHint()), new RevoltWatcher()); + this.addAbility(new EntersBattlefieldTriggeredAbility(new GainLifeEffect(5)) + .withInterveningIf(RevoltCondition.instance) + .setAbilityWord(AbilityWord.REVOLT) + .addHint(RevoltCondition.getHint()), new RevoltWatcher()); } private AirdropAeronauts(final AirdropAeronauts card) { diff --git a/Mage.Sets/src/mage/cards/c/CallForUnity.java b/Mage.Sets/src/mage/cards/c/CallForUnity.java index a6fdead9c67..c1c60ddeb73 100644 --- a/Mage.Sets/src/mage/cards/c/CallForUnity.java +++ b/Mage.Sets/src/mage/cards/c/CallForUnity.java @@ -1,46 +1,44 @@ - package mage.cards.c; -import java.util.UUID; -import mage.abilities.TriggeredAbility; -import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.RevoltCondition; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; +import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.CountersSourceCount; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.Duration; -import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.watchers.common.RevoltWatcher; +import java.util.UUID; + /** - * * @author fireshoes */ public final class CallForUnity extends CardImpl { - private static final String ruleText = "Revolt — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, " - + "put a unity counter on {this}."; + private static final DynamicValue xValue = new CountersSourceCount(CounterType.UNITY); public CallForUnity(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}{W}"); // Revolt — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, put a unity counter on Call for Unity. - TriggeredAbility ability = new BeginningOfEndStepTriggeredAbility(new AddCountersSourceEffect(CounterType.UNITY.createInstance(), true)); - this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, RevoltCondition.instance, ruleText).addHint(RevoltCondition.getHint()), new RevoltWatcher()); + this.addAbility(new BeginningOfEndStepTriggeredAbility(new AddCountersSourceEffect(CounterType.UNITY.createInstance())) + .withInterveningIf(RevoltCondition.instance) + .setAbilityWord(AbilityWord.REVOLT) + .addHint(RevoltCondition.getHint()), new RevoltWatcher()); // Creatures you control get +1/+1 for each unity counter on Call for Unity. - Effect effect = new BoostControlledEffect(new CountersSourceCount(CounterType.UNITY), new CountersSourceCount(CounterType.UNITY), Duration.WhileOnBattlefield, - StaticFilters.FILTER_PERMANENT_CREATURE, false); - effect.setText("Creatures you control get +1/+1 for each unity counter on {this}"); - this.addAbility(new SimpleStaticAbility(effect)); + this.addAbility(new SimpleStaticAbility(new BoostControlledEffect( + xValue, xValue, Duration.WhileOnBattlefield, + StaticFilters.FILTER_PERMANENT_CREATURE, false + ).setText("creatures you control get +1/+1 for each unity counter on {this}"))); } private CallForUnity(final CallForUnity card) { diff --git a/Mage.Sets/src/mage/cards/c/CountlessGearsRenegade.java b/Mage.Sets/src/mage/cards/c/CountlessGearsRenegade.java index 1e25f1633ec..6b04aa94436 100644 --- a/Mage.Sets/src/mage/cards/c/CountlessGearsRenegade.java +++ b/Mage.Sets/src/mage/cards/c/CountlessGearsRenegade.java @@ -1,10 +1,8 @@ package mage.cards.c; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.RevoltCondition; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -31,13 +29,10 @@ public final class CountlessGearsRenegade extends CardImpl { // Revolt — When Countless Gears Renegade enters the battlefield, if a permanent you controlled // left the battlefield this turn, create a 1/1 colorless Servo artifact creature token. - Ability ability = new ConditionalInterveningIfTriggeredAbility( - new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new ServoToken()), false), - RevoltCondition.instance, "When {this} enters, if a permanent you controlled " + - "left the battlefield this turn, create a 1/1 colorless Servo artifact creature token." - ); - ability.setAbilityWord(AbilityWord.REVOLT); - this.addAbility(ability.addHint(RevoltCondition.getHint()), new RevoltWatcher()); + this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new ServoToken())) + .withInterveningIf(RevoltCondition.instance) + .setAbilityWord(AbilityWord.REVOLT) + .addHint(RevoltCondition.getHint()), new RevoltWatcher()); } private CountlessGearsRenegade(final CountlessGearsRenegade card) { diff --git a/Mage.Sets/src/mage/cards/d/DeadeyeHarpooner.java b/Mage.Sets/src/mage/cards/d/DeadeyeHarpooner.java index f0038f030ef..9decd10ada3 100644 --- a/Mage.Sets/src/mage/cards/d/DeadeyeHarpooner.java +++ b/Mage.Sets/src/mage/cards/d/DeadeyeHarpooner.java @@ -4,7 +4,6 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.RevoltCondition; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -40,14 +39,10 @@ public final class DeadeyeHarpooner extends CardImpl { this.toughness = new MageInt(2); // Revolt — When Deadeye Harpooner enters the battlefield, if a permanent you controlled left the battlefield this turn, destroy target tapped creature an opponent controls. - Ability ability = new ConditionalInterveningIfTriggeredAbility( - new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false), - RevoltCondition.instance, "When {this} enters, if a permanent you controlled " + - "left the battlefield this turn, destroy target tapped creature an opponent controls." - ); - ability.setAbilityWord(AbilityWord.REVOLT); + Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect()) + .withInterveningIf(RevoltCondition.instance); ability.addTarget(new TargetPermanent(filter)); - this.addAbility(ability.addHint(RevoltCondition.getHint()), new RevoltWatcher()); + this.addAbility(ability.setAbilityWord(AbilityWord.REVOLT).addHint(RevoltCondition.getHint()), new RevoltWatcher()); } private DeadeyeHarpooner(final DeadeyeHarpooner card) { diff --git a/Mage.Sets/src/mage/cards/d/Decommission.java b/Mage.Sets/src/mage/cards/d/Decommission.java index 147fe2d959a..4e3bba20f53 100644 --- a/Mage.Sets/src/mage/cards/d/Decommission.java +++ b/Mage.Sets/src/mage/cards/d/Decommission.java @@ -7,6 +7,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.filter.StaticFilters; import mage.target.TargetPermanent; @@ -15,7 +16,6 @@ import mage.watchers.common.RevoltWatcher; import java.util.UUID; /** - * * @author emerald000 */ public final class Decommission extends CardImpl { @@ -28,7 +28,10 @@ public final class Decommission extends CardImpl { this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT)); // Revolt — If a permanent you controlled left the battlefield this turn, you gain 3 life. - this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new GainLifeEffect(3), RevoltCondition.instance, "
Revolt — If a permanent you controlled left the battlefield this turn, you gain 3 life.")); + this.getSpellAbility().addEffect(new ConditionalOneShotEffect( + new GainLifeEffect(3), RevoltCondition.instance, "
" + AbilityWord.REVOLT.formatWord() + + "If a permanent you controlled left the battlefield this turn, you gain 3 life." + )); this.getSpellAbility().addWatcher(new RevoltWatcher()); this.getSpellAbility().addHint(RevoltCondition.getHint()); } diff --git a/Mage.Sets/src/mage/cards/f/FatalPush.java b/Mage.Sets/src/mage/cards/f/FatalPush.java index 19452081f46..cf50d901f9b 100644 --- a/Mage.Sets/src/mage/cards/f/FatalPush.java +++ b/Mage.Sets/src/mage/cards/f/FatalPush.java @@ -1,22 +1,21 @@ - package mage.cards.f; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.condition.common.RevoltCondition; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.Outcome; import mage.game.Game; import mage.game.permanent.Permanent; -import mage.players.Player; import mage.target.common.TargetCreaturePermanent; import mage.watchers.common.RevoltWatcher; +import java.util.UUID; + /** - * * @author emerald000 */ public final class FatalPush extends CardImpl { @@ -46,7 +45,9 @@ class FatalPushEffect extends OneShotEffect { FatalPushEffect() { super(Outcome.DestroyPermanent); - this.staticText = "Destroy target creature if it has mana value 2 or less.
Revolt — Destroy that creature if it has mana value 4 or less instead if a permanent you controlled left the battlefield this turn"; + this.staticText = "Destroy target creature if it has mana value 2 or less.
" + + AbilityWord.REVOLT.formatWord() + "Destroy that creature if it has mana value 4 " + + "or less instead if a permanent you controlled left the battlefield this turn"; } private FatalPushEffect(final FatalPushEffect effect) { @@ -60,16 +61,13 @@ class FatalPushEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player controller = game.getPlayer(source.getControllerId()); - if (controller != null) { - Permanent targetCreature = game.getPermanent(this.getTargetPointer().getFirst(game, source)); - if (targetCreature != null) { - int cmc = targetCreature.getManaValue(); - if (cmc <= 2 - || (RevoltCondition.instance.apply(game, source) && cmc <= 4)) { - targetCreature.destroy(source, game, false); - } - } + Permanent targetCreature = game.getPermanent(this.getTargetPointer().getFirst(game, source)); + if (targetCreature == null) { + return false; + } + int cmc = targetCreature.getManaValue(); + if ((cmc <= 2 || (RevoltCondition.instance.apply(game, source) && cmc <= 4)) + && targetCreature.destroy(source, game, false)) { return true; } return false; diff --git a/Mage.Sets/src/mage/cards/g/GreenwheelLiberator.java b/Mage.Sets/src/mage/cards/g/GreenwheelLiberator.java index 2934e000426..130582d805a 100644 --- a/Mage.Sets/src/mage/cards/g/GreenwheelLiberator.java +++ b/Mage.Sets/src/mage/cards/g/GreenwheelLiberator.java @@ -1,19 +1,20 @@ package mage.cards.g; -import java.util.UUID; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.condition.common.RevoltCondition; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.SubType; import mage.counters.CounterType; import mage.watchers.common.RevoltWatcher; +import java.util.UUID; + /** * @author JRHerlehy */ @@ -29,11 +30,11 @@ public final class GreenwheelLiberator extends CardImpl { // Revolt — Greenbelt Liberator enters the battlefield with two +1/+1 counters on it if a // permanent you controlled left the battlefield this turn. - Ability ability = new EntersBattlefieldAbility( - new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), false, RevoltCondition.instance, - "Revolt — {this} enters with two +1/+1 counters on it if a permanent you controlled left the battlefield this turn.", null); - ability.addWatcher(new RevoltWatcher()); - this.addAbility(ability.addHint(RevoltCondition.getHint())); + this.addAbility(new EntersBattlefieldAbility( + new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), false, + RevoltCondition.instance, "{this} enters with two +1/+1 counters on it " + + "if a permanent you controlled left the battlefield this turn.", null + ).setAbilityWord(AbilityWord.REVOLT).addHint(RevoltCondition.getHint()), new RevoltWatcher()); } private GreenwheelLiberator(final GreenwheelLiberator card) { diff --git a/Mage.Sets/src/mage/cards/h/HiddenHerbalists.java b/Mage.Sets/src/mage/cards/h/HiddenHerbalists.java index bf32ff78c05..54b854b9afe 100644 --- a/Mage.Sets/src/mage/cards/h/HiddenHerbalists.java +++ b/Mage.Sets/src/mage/cards/h/HiddenHerbalists.java @@ -1,21 +1,20 @@ - package mage.cards.h; -import java.util.UUID; import mage.MageInt; import mage.Mana; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.RevoltCondition; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.mana.BasicManaEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.SubType; import mage.watchers.common.RevoltWatcher; +import java.util.UUID; + /** - * * @author Styxo */ public final class HiddenHerbalists extends CardImpl { @@ -29,13 +28,10 @@ public final class HiddenHerbalists extends CardImpl { this.toughness = new MageInt(2); // Revolt &mdash When Hidden Herbalists enters the battlefield, if a permanent you controlled left the battlefield this turn, add {G}{G}; - this.addAbility( - new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldTriggeredAbility( - new BasicManaEffect(Mana.GreenMana(2)), false), RevoltCondition.instance, - "Revolt — When {this} enters, if a permanent you controlled left" - + " the battlefield this turn, add {G}{G}.").addHint(RevoltCondition.getHint()), - new RevoltWatcher() - ); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BasicManaEffect(Mana.GreenMana(2))) + .withInterveningIf(RevoltCondition.instance) + .setAbilityWord(AbilityWord.REVOLT) + .addHint(RevoltCondition.getHint()), new RevoltWatcher()); } private HiddenHerbalists(final HiddenHerbalists card) { diff --git a/Mage.Sets/src/mage/cards/h/HiddenStockpile.java b/Mage.Sets/src/mage/cards/h/HiddenStockpile.java index 41b81013265..36581aa4b73 100644 --- a/Mage.Sets/src/mage/cards/h/HiddenStockpile.java +++ b/Mage.Sets/src/mage/cards/h/HiddenStockpile.java @@ -1,25 +1,23 @@ package mage.cards.h; import mage.abilities.Ability; -import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.condition.common.RevoltCondition; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.mana.GenericManaCost; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.keyword.ScryEffect; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; import mage.constants.CardType; +import mage.filter.StaticFilters; import mage.game.permanent.token.ServoToken; import mage.watchers.common.RevoltWatcher; import java.util.UUID; -import mage.filter.StaticFilters; - /** * @author LevelX2 */ @@ -29,11 +27,10 @@ public final class HiddenStockpile extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}{B}"); // Revolt — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, create a 1/1 colorless Servo artifact creature token. - this.addAbility(new ConditionalInterveningIfTriggeredAbility( - new BeginningOfEndStepTriggeredAbility(new CreateTokenEffect(new ServoToken())), - RevoltCondition.instance, "At the beginning of your end step, if a permanent you controlled " + - "left the battlefield this turn, create a 1/1 colorless Servo artifact creature token." - ).setAbilityWord(AbilityWord.REVOLT).addHint(RevoltCondition.getHint()), new RevoltWatcher()); + this.addAbility(new BeginningOfEndStepTriggeredAbility(new CreateTokenEffect(new ServoToken())) + .withInterveningIf(RevoltCondition.instance) + .setAbilityWord(AbilityWord.REVOLT) + .addHint(RevoltCondition.getHint()), new RevoltWatcher()); // {1}, Sacrifice a creature: Scry 1. Ability ability = new SimpleActivatedAbility(new ScryEffect(1, false), new GenericManaCost(1)); diff --git a/Mage.Sets/src/mage/cards/l/LifecraftCavalry.java b/Mage.Sets/src/mage/cards/l/LifecraftCavalry.java index 7bf234eb7cf..2d6080a9757 100644 --- a/Mage.Sets/src/mage/cards/l/LifecraftCavalry.java +++ b/Mage.Sets/src/mage/cards/l/LifecraftCavalry.java @@ -1,7 +1,5 @@ - package mage.cards.l; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.condition.common.RevoltCondition; @@ -9,13 +7,15 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.SubType; import mage.counters.CounterType; import mage.watchers.common.RevoltWatcher; +import java.util.UUID; + /** - * * @author fireshoes */ public final class LifecraftCavalry extends CardImpl { @@ -32,15 +32,11 @@ public final class LifecraftCavalry extends CardImpl { this.addAbility(TrampleAbility.getInstance()); // Revolt — Lifecraft Cavalry enters the battlefield with two +1/+1 counters on it if a permanent you controlled left the battlefield this turn. - this.addAbility( - new EntersBattlefieldAbility( - new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), - false, - RevoltCondition.instance, - "Revolt — {this} enters with two +1/+1 counters on it if a permanent you controlled left the battlefield this turn.", - null).addHint(RevoltCondition.getHint()), - new RevoltWatcher() - ); + this.addAbility(new EntersBattlefieldAbility( + new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), false, + RevoltCondition.instance, "{this} enters with two +1/+1 counters on it " + + "if a permanent you controlled left the battlefield this turn.", null + ).setAbilityWord(AbilityWord.REVOLT).addHint(RevoltCondition.getHint()), new RevoltWatcher()); } private LifecraftCavalry(final LifecraftCavalry card) { diff --git a/Mage.Sets/src/mage/cards/n/NarnamRenegade.java b/Mage.Sets/src/mage/cards/n/NarnamRenegade.java index 670673c5f49..a66b114f50c 100644 --- a/Mage.Sets/src/mage/cards/n/NarnamRenegade.java +++ b/Mage.Sets/src/mage/cards/n/NarnamRenegade.java @@ -7,6 +7,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.DeathtouchAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.SubType; import mage.counters.CounterType; @@ -33,9 +34,9 @@ public final class NarnamRenegade extends CardImpl { // Revolt — Narnam Renegade enters the battlefield with a +1/+1 counter on it if a permanent you controlled left this battlefield this turn. this.addAbility(new EntersBattlefieldAbility( new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, - RevoltCondition.instance, "Revolt — {this} enters with " + - "a +1/+1 counter on it if a permanent you controlled left the battlefield this turn.", null - ).addHint(RevoltCondition.getHint()), new RevoltWatcher()); + RevoltCondition.instance, "{this} enters with a +1/+1 counter on it " + + "if a permanent you controlled left the battlefield this turn.", null + ).setAbilityWord(AbilityWord.REVOLT).addHint(RevoltCondition.getHint()), new RevoltWatcher()); } private NarnamRenegade(final NarnamRenegade card) { diff --git a/Mage.Sets/src/mage/cards/n/NightMarketAeronaut.java b/Mage.Sets/src/mage/cards/n/NightMarketAeronaut.java index 0f13cadb050..a6b8a0ec9ef 100644 --- a/Mage.Sets/src/mage/cards/n/NightMarketAeronaut.java +++ b/Mage.Sets/src/mage/cards/n/NightMarketAeronaut.java @@ -7,6 +7,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.SubType; import mage.counters.CounterType; @@ -34,9 +35,9 @@ public final class NightMarketAeronaut extends CardImpl { // a permanent you controlled left the battlefield this turn. this.addAbility(new EntersBattlefieldAbility( new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, - RevoltCondition.instance, "Revolt — {this} enters with " + - "a +1/+1 counter on it if a permanent you controlled left the battlefield this turn.", null - ).addHint(RevoltCondition.getHint()), new RevoltWatcher()); + RevoltCondition.instance, "{this} enters with a +1/+1 counter on it " + + "if a permanent you controlled left the battlefield this turn.", null + ).setAbilityWord(AbilityWord.REVOLT).addHint(RevoltCondition.getHint()), new RevoltWatcher()); } private NightMarketAeronaut(final NightMarketAeronaut card) { diff --git a/Mage.Sets/src/mage/cards/r/RenegadeRallier.java b/Mage.Sets/src/mage/cards/r/RenegadeRallier.java index 847bc6cb4fb..1569342b074 100644 --- a/Mage.Sets/src/mage/cards/r/RenegadeRallier.java +++ b/Mage.Sets/src/mage/cards/r/RenegadeRallier.java @@ -4,7 +4,6 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.RevoltCondition; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -40,11 +39,9 @@ public final class RenegadeRallier extends CardImpl { // Revolt — When Renegade Rallier enters the battlefield, if a permanent you controlled left the battlefield this turn, // return target permanent card with converted mana cost 2 or less from your graveyard to your battlefield. - Ability ability = new ConditionalInterveningIfTriggeredAbility( - new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect(), false), - RevoltCondition.instance, "When {this} enters, if a permanent you controlled " + - "left the battlefield this turn, return target permanent card with mana value 2 or less from your graveyard to the battlefield." - ).setAbilityWord(AbilityWord.REVOLT); + Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect()) + .withInterveningIf(RevoltCondition.instance); + ability.setAbilityWord(AbilityWord.REVOLT); ability.addTarget(new TargetCardInYourGraveyard(filter)); this.addAbility(ability.addHint(RevoltCondition.getHint()), new RevoltWatcher()); } diff --git a/Mage.Sets/src/mage/cards/s/SilkweaverElite.java b/Mage.Sets/src/mage/cards/s/SilkweaverElite.java index d860ded15c7..41117ad2d49 100644 --- a/Mage.Sets/src/mage/cards/s/SilkweaverElite.java +++ b/Mage.Sets/src/mage/cards/s/SilkweaverElite.java @@ -3,7 +3,6 @@ package mage.cards.s; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.RevoltCondition; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; @@ -32,11 +31,10 @@ public final class SilkweaverElite extends CardImpl { this.addAbility(ReachAbility.getInstance()); // Revolt — When Silkweaver Elite enters the battlefield, if a permanent you controlled left the battlefield this turn, draw a card. - this.addAbility(new ConditionalInterveningIfTriggeredAbility( - new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1), false), - RevoltCondition.instance, "When {this} enters, " + - "if a permanent you controlled left the battlefield this turn, draw a card." - ).setAbilityWord(AbilityWord.REVOLT).addHint(RevoltCondition.getHint()), new RevoltWatcher()); + this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1)) + .withInterveningIf(RevoltCondition.instance) + .setAbilityWord(AbilityWord.REVOLT) + .addHint(RevoltCondition.getHint()), new RevoltWatcher()); } private SilkweaverElite(final SilkweaverElite card) { diff --git a/Mage.Sets/src/mage/cards/s/SolemnRecruit.java b/Mage.Sets/src/mage/cards/s/SolemnRecruit.java index 430568a5d77..891bdfa7d76 100644 --- a/Mage.Sets/src/mage/cards/s/SolemnRecruit.java +++ b/Mage.Sets/src/mage/cards/s/SolemnRecruit.java @@ -1,22 +1,22 @@ package mage.cards.s; -import java.util.UUID; import mage.MageInt; -import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.condition.common.RevoltCondition; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.DoubleStrikeAbility; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.SubType; import mage.counters.CounterType; import mage.watchers.common.RevoltWatcher; +import java.util.UUID; + /** - * * @author fireshoes */ public final class SolemnRecruit extends CardImpl { @@ -33,13 +33,10 @@ public final class SolemnRecruit extends CardImpl { this.addAbility(DoubleStrikeAbility.getInstance()); // Revolt — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, put a +1/+1 counter on Solemn Recruit. - this.addAbility(new ConditionalInterveningIfTriggeredAbility( - new BeginningOfEndStepTriggeredAbility( - new AddCountersSourceEffect(CounterType.P1P1.createInstance()) - ), - RevoltCondition.instance, - "Revolt — At the beginning of your end step, if a permanent you controlled left the battlefield this turn, put a +1/+1 counter on {this}." - ).addHint(RevoltCondition.getHint()), new RevoltWatcher()); + this.addAbility(new BeginningOfEndStepTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance())) + .withInterveningIf(RevoltCondition.instance) + .setAbilityWord(AbilityWord.REVOLT) + .addHint(RevoltCondition.getHint()), new RevoltWatcher()); } private SolemnRecruit(final SolemnRecruit card) { diff --git a/Mage.Sets/src/mage/cards/v/VengefulRebel.java b/Mage.Sets/src/mage/cards/v/VengefulRebel.java index 32df6c4df8b..272d2798277 100644 --- a/Mage.Sets/src/mage/cards/v/VengefulRebel.java +++ b/Mage.Sets/src/mage/cards/v/VengefulRebel.java @@ -1,24 +1,22 @@ package mage.cards.v; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.RevoltCondition; -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.Duration; import mage.target.common.TargetOpponentsCreaturePermanent; import mage.watchers.common.RevoltWatcher; +import java.util.UUID; + /** - * * @author fireshoes */ public final class VengefulRebel extends CardImpl { @@ -33,12 +31,8 @@ public final class VengefulRebel extends CardImpl { // Revolt — When Vengeful Rebel enters the battlefield, if a permanent you controlled left the battlefield this turn, // target creature an opponent controls gets -3/-3 until end of turn. - Ability ability = new ConditionalInterveningIfTriggeredAbility( - new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(-3, -3, Duration.EndOfTurn), false), - RevoltCondition.instance, - "When {this} enters, if a permanent you controlled left the battlefield this turn, " - + "target creature an opponent controls gets -3/-3 until end of turn" - ); + Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(-3, -3)) + .withInterveningIf(RevoltCondition.instance); ability.addTarget(new TargetOpponentsCreaturePermanent()); ability.setAbilityWord(AbilityWord.REVOLT); this.addAbility(ability.addHint(RevoltCondition.getHint()), new RevoltWatcher()); diff --git a/Mage/src/main/java/mage/abilities/condition/common/RevoltCondition.java b/Mage/src/main/java/mage/abilities/condition/common/RevoltCondition.java index 530f657ca38..35a217f742c 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/RevoltCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/RevoltCondition.java @@ -31,6 +31,6 @@ public enum RevoltCondition implements Condition { @Override public String toString() { - return "a permanent you controlled left the battlefield this turn"; + return "a permanent left the battlefield under your control this turn"; } }