forked from External/mage
[AER] update revolt wording and simplify implementations
This commit is contained in:
parent
e9b6712915
commit
6bfeea47c9
19 changed files with 128 additions and 170 deletions
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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> — 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> — 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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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> — 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) {
|
||||
|
|
|
|||
|
|
@ -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> — 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> — 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) {
|
||||
|
|
|
|||
|
|
@ -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> — 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) {
|
||||
|
|
|
|||
|
|
@ -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> — 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) {
|
||||
|
|
|
|||
|
|
@ -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> — 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> — 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());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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> — 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;
|
||||
|
|
|
|||
|
|
@ -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> — 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> — {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) {
|
||||
|
|
|
|||
|
|
@ -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> — 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) {
|
||||
|
|
|
|||
|
|
@ -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> — 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));
|
||||
|
|
|
|||
|
|
@ -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> — 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> — {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) {
|
||||
|
|
|
|||
|
|
@ -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> — 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> — {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) {
|
||||
|
|
|
|||
|
|
@ -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> — {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) {
|
||||
|
|
|
|||
|
|
@ -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> — 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());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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> — 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) {
|
||||
|
|
|
|||
|
|
@ -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> — 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> — 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) {
|
||||
|
|
|
|||
|
|
@ -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> — 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());
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue