[AER] update revolt wording and simplify implementations

This commit is contained in:
theelk801 2025-04-29 10:15:10 -04:00
parent e9b6712915
commit 6bfeea47c9
19 changed files with 128 additions and 170 deletions

View file

@ -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());

View file

@ -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 = "<i>Revolt</i> &mdash; 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}");
// <i>Revolt</i> &mdash; 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;
}

View file

@ -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());
// <i>Revolt</i> &mdash; 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) {

View file

@ -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 = "<i>Revolt</i> &mdash; 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}");
// <i>Revolt</i> &mdash; 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) {

View file

@ -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 {
// <i>Revolt</i> &mdash; 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) {

View file

@ -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);
// <i>Revolt</i> &mdash; 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) {

View file

@ -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));
// <i>Revolt</i> &mdash; If a permanent you controlled left the battlefield this turn, you gain 3 life.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new GainLifeEffect(3), RevoltCondition.instance, "<br><i>Revolt</i> &mdash; If a permanent you controlled left the battlefield this turn, you gain 3 life."));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new GainLifeEffect(3), RevoltCondition.instance, "<br>" + 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());
}

View file

@ -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.<br><i>Revolt</i> &mdash; 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.<br>" +
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;

View file

@ -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 {
// <i>Revolt</i> &mdash; 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,
"<i>Revolt</i> &mdash; {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) {

View file

@ -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);
// <i>Revolt</i> &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,
"<i>Revolt</i> &mdash; 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) {

View file

@ -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}");
// <i>Revolt</i> &mdash; 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));

View file

@ -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());
// <i>Revolt</i> &mdash; 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,
"<i>Revolt</i> &mdash; {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) {

View file

@ -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 {
// <i>Revolt</i> &mdash; 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, "<i>Revolt</i> &mdash; {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) {

View file

@ -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, "<i>Revolt</i> &mdash; {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) {

View file

@ -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 {
// <i>Revolt</i> &mdash; 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());
}

View file

@ -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());
// <i>Revolt</i> &mdash; 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) {

View file

@ -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());
// <i>Revolt</i> &mdash; 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,
"<i>Revolt</i> &mdash; 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) {

View file

@ -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 {
// <i>Revolt</i> &mdash; 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());

View file

@ -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";
}
}