mirror of
https://github.com/magefree/mage.git
synced 2025-12-21 11:02:00 -08:00
GainAbilityControlledEffect now requires a filter to prevent mistakes in implementation
This commit is contained in:
parent
ac0f23410a
commit
af527810ac
19 changed files with 126 additions and 109 deletions
|
|
@ -1,7 +1,6 @@
|
||||||
package mage.cards.b;
|
package mage.cards.b;
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.triggers.BeginningOfCombatTriggeredAbility;
|
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.condition.common.MyTurnCondition;
|
import mage.abilities.condition.common.MyTurnCondition;
|
||||||
|
|
@ -14,6 +13,7 @@ import mage.abilities.keyword.ClassLevelAbility;
|
||||||
import mage.abilities.keyword.ClassReminderAbility;
|
import mage.abilities.keyword.ClassReminderAbility;
|
||||||
import mage.abilities.keyword.DoubleStrikeAbility;
|
import mage.abilities.keyword.DoubleStrikeAbility;
|
||||||
import mage.abilities.keyword.HasteAbility;
|
import mage.abilities.keyword.HasteAbility;
|
||||||
|
import mage.abilities.triggers.BeginningOfCombatTriggeredAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
|
|
@ -74,7 +74,7 @@ public final class BlacksmithsTalent extends CardImpl {
|
||||||
DoubleStrikeAbility.getInstance(), Duration.WhileOnBattlefield, filter2
|
DoubleStrikeAbility.getInstance(), Duration.WhileOnBattlefield, filter2
|
||||||
), MyTurnCondition.instance, "during your turn, equipped creatures you control have double strike"));
|
), MyTurnCondition.instance, "during your turn, equipped creatures you control have double strike"));
|
||||||
ability.addEffect(new ConditionalContinuousEffect(new GainAbilityControlledEffect(
|
ability.addEffect(new ConditionalContinuousEffect(new GainAbilityControlledEffect(
|
||||||
HasteAbility.getInstance(), Duration.WhileOnBattlefield
|
HasteAbility.getInstance(), Duration.WhileOnBattlefield, filter2
|
||||||
), MyTurnCondition.instance, "and haste"));
|
), MyTurnCondition.instance, "and haste"));
|
||||||
this.addAbility(new SimpleStaticAbility(new GainClassAbilitySourceEffect(ability, 3)));
|
this.addAbility(new SimpleStaticAbility(new GainClassAbilitySourceEffect(ability, 3)));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package mage.cards.b;
|
||||||
|
|
||||||
import mage.abilities.Mode;
|
import mage.abilities.Mode;
|
||||||
import mage.abilities.effects.common.DamageTargetEffect;
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||||
import mage.abilities.keyword.DoubleStrikeAbility;
|
import mage.abilities.keyword.DoubleStrikeAbility;
|
||||||
|
|
@ -11,6 +10,7 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
import mage.target.common.TargetPlayerOrPlaneswalker;
|
import mage.target.common.TargetPlayerOrPlaneswalker;
|
||||||
|
|
||||||
|
|
@ -27,10 +27,12 @@ public final class BorosCharm extends CardImpl {
|
||||||
//Choose one - Boros Charm deals 4 damage to target player
|
//Choose one - Boros Charm deals 4 damage to target player
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(4));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(4));
|
||||||
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
|
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
|
||||||
|
|
||||||
//or permanents you control are indestructible this turn
|
//or permanents you control are indestructible this turn
|
||||||
this.getSpellAbility().addMode(new Mode(new GainAbilityControlledEffect(
|
this.getSpellAbility().addMode(new Mode(new GainAbilityControlledEffect(
|
||||||
IndestructibleAbility.getInstance(), Duration.EndOfTurn
|
IndestructibleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS
|
||||||
)));
|
)));
|
||||||
|
|
||||||
//or target creature gains double strike until end of turn.
|
//or target creature gains double strike until end of turn.
|
||||||
Mode mode2 = new Mode(new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn));
|
Mode mode2 = new Mode(new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn));
|
||||||
mode2.addTarget(new TargetCreaturePermanent());
|
mode2.addTarget(new TargetCreaturePermanent());
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,9 @@ import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
|
import mage.filter.FilterPermanent;
|
||||||
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
|
import mage.filter.predicate.permanent.CounterAnyPredicate;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -25,6 +28,12 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class BulwarkOx extends CardImpl {
|
public final class BulwarkOx extends CardImpl {
|
||||||
|
|
||||||
|
private static final FilterPermanent filter = new FilterCreaturePermanent();
|
||||||
|
|
||||||
|
static {
|
||||||
|
filter.add(CounterAnyPredicate.instance);
|
||||||
|
}
|
||||||
|
|
||||||
public BulwarkOx(UUID ownerId, CardSetInfo setInfo) {
|
public BulwarkOx(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
|
||||||
|
|
||||||
|
|
@ -40,10 +49,10 @@ public final class BulwarkOx extends CardImpl {
|
||||||
|
|
||||||
// Sacrifice this creature: Creatures you control with counters on them gain hexproof and indestructible until end of turn.
|
// Sacrifice this creature: Creatures you control with counters on them gain hexproof and indestructible until end of turn.
|
||||||
ability = new SimpleActivatedAbility(new GainAbilityControlledEffect(
|
ability = new SimpleActivatedAbility(new GainAbilityControlledEffect(
|
||||||
HexproofAbility.getInstance(), Duration.EndOfTurn
|
HexproofAbility.getInstance(), Duration.EndOfTurn, filter
|
||||||
).setText("creatures you control with counters on them gain hexproof"), new SacrificeSourceCost());
|
).setText("creatures you control with counters on them gain hexproof"), new SacrificeSourceCost());
|
||||||
ability.addEffect(new GainAbilityControlledEffect(
|
ability.addEffect(new GainAbilityControlledEffect(
|
||||||
IndestructibleAbility.getInstance(), Duration.EndOfTurn
|
IndestructibleAbility.getInstance(), Duration.EndOfTurn, filter
|
||||||
).setText("and indestructible until end of turn"));
|
).setText("and indestructible until end of turn"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -35,7 +36,7 @@ public final class DawngladeRegent extends CardImpl {
|
||||||
// As long as you're the monarch, permanents you control have hexproof.
|
// As long as you're the monarch, permanents you control have hexproof.
|
||||||
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||||
new GainAbilityControlledEffect(
|
new GainAbilityControlledEffect(
|
||||||
HexproofAbility.getInstance(), Duration.WhileOnBattlefield
|
HexproofAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENTS
|
||||||
), MonarchIsSourceControllerCondition.instance,
|
), MonarchIsSourceControllerCondition.instance,
|
||||||
"as long as you're the monarch, permanents you control have hexproof"
|
"as long as you're the monarch, permanents you control have hexproof"
|
||||||
)));
|
)));
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.GiftType;
|
import mage.constants.GiftType;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -32,11 +33,12 @@ public final class DawnsTruce extends CardImpl {
|
||||||
HexproofAbility.getInstance(), Duration.EndOfTurn
|
HexproofAbility.getInstance(), Duration.EndOfTurn
|
||||||
).setText("you"));
|
).setText("you"));
|
||||||
this.getSpellAbility().addEffect(new GainAbilityControlledEffect(
|
this.getSpellAbility().addEffect(new GainAbilityControlledEffect(
|
||||||
HexproofAbility.getInstance(), Duration.EndOfTurn
|
HexproofAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS
|
||||||
).concatBy("and"));
|
).concatBy("and"));
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||||
new AddContinuousEffectToGame(new GainAbilityControlledEffect(
|
new AddContinuousEffectToGame(new GainAbilityControlledEffect(
|
||||||
IndestructibleAbility.getInstance(), Duration.EndOfTurn
|
IndestructibleAbility.getInstance(), Duration.EndOfTurn,
|
||||||
|
StaticFilters.FILTER_PERMANENTS
|
||||||
)), GiftWasPromisedCondition.TRUE, "if the gift was promised, " +
|
)), GiftWasPromisedCondition.TRUE, "if the gift was promised, " +
|
||||||
"permanents you control also gain indestructible until end of turn"
|
"permanents you control also gain indestructible until end of turn"
|
||||||
));
|
));
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
|
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.TriggeredAbility;
|
|
||||||
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
|
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
|
||||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||||
|
|
@ -17,8 +15,9 @@ import mage.constants.Duration;
|
||||||
import mage.constants.SpellAbilityType;
|
import mage.constants.SpellAbilityType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class DrivenDespair extends SplitCard {
|
public final class DrivenDespair extends SplitCard {
|
||||||
|
|
@ -27,26 +26,27 @@ public final class DrivenDespair extends SplitCard {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{1}{G}", "{1}{B}", SpellAbilityType.SPLIT_AFTERMATH);
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{1}{G}", "{1}{B}", SpellAbilityType.SPLIT_AFTERMATH);
|
||||||
|
|
||||||
// Until end of turn, creatures you control gain trample and "Whenever this creature deals combat damage to a player, draw a card."
|
// Until end of turn, creatures you control gain trample and "Whenever this creature deals combat damage to a player, draw a card."
|
||||||
getLeftHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(
|
this.getLeftHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(
|
||||||
TrampleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES)
|
TrampleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES
|
||||||
.setText("Until end of turn, creatures you control gain trample"));
|
).setText("Until end of turn, creatures you control gain trample"));
|
||||||
TriggeredAbility ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DrawCardSourceControllerEffect(1), false);
|
this.getLeftHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(
|
||||||
getLeftHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(ability, Duration.EndOfTurn)
|
new DealsCombatDamageToAPlayerTriggeredAbility(new DrawCardSourceControllerEffect(1), false),
|
||||||
.setText("\"Whenever this creature deals combat damage to a player, draw a card.\"")
|
Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES
|
||||||
.concatBy("and"));
|
).setText("\"Whenever this creature deals combat damage to a player, draw a card.\"").concatBy("and"));
|
||||||
|
|
||||||
// Despair {1}{B}
|
// Despair {1}{B}
|
||||||
// Sorcery
|
// Sorcery
|
||||||
// Aftermath
|
// Aftermath
|
||||||
getRightHalfCard().addAbility(new AftermathAbility().setRuleAtTheTop(true));
|
this.getRightHalfCard().addAbility(new AftermathAbility().setRuleAtTheTop(true));
|
||||||
// Until end of turn, creatures you control gain menace and "Whenever this creature deals combat damage to a player, that player discards a card."
|
// Until end of turn, creatures you control gain menace and "Whenever this creature deals combat damage to a player, that player discards a card."
|
||||||
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(
|
this.getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(
|
||||||
new MenaceAbility(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES)
|
new MenaceAbility(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES
|
||||||
.setText("Until end of turn, creatures you control gain menace"));
|
).setText("Until end of turn, creatures you control gain menace"));
|
||||||
ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DiscardTargetEffect(1), false, true);
|
this.getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(
|
||||||
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(ability, Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES)
|
new DealsCombatDamageToAPlayerTriggeredAbility(
|
||||||
.setText("\"Whenever this creature deals combat damage to a player, that player discards a card.\"")
|
new DiscardTargetEffect(1), false, true
|
||||||
.concatBy("and"));
|
), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES
|
||||||
|
).setText("\"Whenever this creature deals combat damage to a player, that player discards a card.\"").concatBy("and"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
|
|
||||||
package mage.cards.f;
|
package mage.cards.f;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageObject;
|
import mage.MageObject;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.condition.common.FatefulHourCondition;
|
import mage.abilities.condition.common.FatefulHourCondition;
|
||||||
|
|
@ -17,13 +16,15 @@ import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.filter.FilterCard;
|
import mage.filter.FilterCard;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author BetaSteward
|
* @author BetaSteward
|
||||||
*/
|
*/
|
||||||
public final class FaithsShield extends CardImpl {
|
public final class FaithsShield extends CardImpl {
|
||||||
|
|
@ -63,29 +64,25 @@ class FaithsShieldEffect extends OneShotEffect {
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
MageObject mageObject = game.getObject(source);
|
MageObject mageObject = game.getObject(source);
|
||||||
if (controller != null && mageObject != null) {
|
if (controller == null || mageObject == null) {
|
||||||
if (FatefulHourCondition.instance.apply(game, source)) {
|
return false;
|
||||||
ChoiceColor choice = new ChoiceColor();
|
|
||||||
if (!controller.choose(Outcome.Protect, choice, game)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (choice.getColor() != null) {
|
|
||||||
game.informPlayers(mageObject.getLogName() + ": " + controller.getLogName() + " has chosen " + choice.getChoice());
|
|
||||||
FilterCard filter = new FilterCard();
|
|
||||||
filter.add(new ColorPredicate(choice.getColor()));
|
|
||||||
filter.setMessage(choice.getChoice());
|
|
||||||
Ability ability = new ProtectionAbility(filter);
|
|
||||||
game.addEffect(new GainAbilityControlledEffect(ability, Duration.EndOfTurn), source);
|
|
||||||
game.addEffect(new GainAbilityControllerEffect(ability, Duration.EndOfTurn), source);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
game.addEffect(new GainProtectionFromColorTargetEffect(Duration.EndOfTurn), source);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return false;
|
if (!FatefulHourCondition.instance.apply(game, source)) {
|
||||||
|
game.addEffect(new GainProtectionFromColorTargetEffect(Duration.EndOfTurn), source);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
ChoiceColor choice = new ChoiceColor();
|
||||||
|
if (!controller.choose(Outcome.Protect, choice, game) || choice.getColor() == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
game.informPlayers(mageObject.getLogName() + ": " + controller.getLogName() + " has chosen " + choice.getChoice());
|
||||||
|
FilterCard filter = new FilterCard();
|
||||||
|
filter.add(new ColorPredicate(choice.getColor()));
|
||||||
|
filter.setMessage(choice.getChoice());
|
||||||
|
Ability ability = new ProtectionAbility(filter);
|
||||||
|
game.addEffect(new GainAbilityControlledEffect(ability, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT), source);
|
||||||
|
game.addEffect(new GainAbilityControllerEffect(ability, Duration.EndOfTurn), source);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package mage.cards.f;
|
package mage.cards.f;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
|
|
@ -10,22 +9,23 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.filter.StaticFilters;
|
||||||
import mage.target.common.TargetAnyTarget;
|
import mage.target.common.TargetAnyTarget;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author Loki
|
* @author Loki
|
||||||
*/
|
*/
|
||||||
public final class FlameFusillade extends CardImpl {
|
public final class FlameFusillade extends CardImpl {
|
||||||
|
|
||||||
public FlameFusillade(UUID ownerId, CardSetInfo setInfo) {
|
public FlameFusillade(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
|
||||||
|
|
||||||
// Until end of turn, permanents you control gain "{tap}: This permanent deals 1 damage to any target."
|
// Until end of turn, permanents you control gain "{tap}: This permanent deals 1 damage to any target."
|
||||||
Ability gainedAbility = new SimpleActivatedAbility(new DamageTargetEffect(1, "this permanent"), new TapSourceCost());
|
Ability gainedAbility = new SimpleActivatedAbility(new DamageTargetEffect(1, "this permanent"), new TapSourceCost());
|
||||||
gainedAbility.addTarget(new TargetAnyTarget());
|
gainedAbility.addTarget(new TargetAnyTarget());
|
||||||
this.getSpellAbility().addEffect(new GainAbilityControlledEffect(gainedAbility, Duration.EndOfTurn).withDurationRuleAtStart(true));
|
this.getSpellAbility().addEffect(new GainAbilityControlledEffect(gainedAbility, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS).withDurationRuleAtStart(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private FlameFusillade(final FlameFusillade card) {
|
private FlameFusillade(final FlameFusillade card) {
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,12 @@ package mage.cards.g;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
|
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControllerEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityControllerEffect;
|
||||||
import mage.abilities.keyword.ProtectionAbility;
|
import mage.abilities.keyword.ProtectionAbility;
|
||||||
|
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
|
|
@ -45,7 +45,7 @@ public final class GorMuldrakAmphinologist extends CardImpl {
|
||||||
new GainAbilityControllerEffect(new ProtectionAbility(filter)).setText("you")
|
new GainAbilityControllerEffect(new ProtectionAbility(filter)).setText("you")
|
||||||
);
|
);
|
||||||
ability.addEffect(new GainAbilityControlledEffect(
|
ability.addEffect(new GainAbilityControlledEffect(
|
||||||
new ProtectionAbility(filter), Duration.WhileOnBattlefield
|
new ProtectionAbility(filter), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENTS
|
||||||
).concatBy("and"));
|
).concatBy("and"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,18 @@
|
||||||
package mage.cards.l;
|
package mage.cards.l;
|
||||||
|
|
||||||
|
import mage.abilities.effects.Effect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||||
|
import mage.abilities.effects.common.continuous.GainAbilityControllerEffect;
|
||||||
import mage.abilities.effects.keyword.AmassEffect;
|
import mage.abilities.effects.keyword.AmassEffect;
|
||||||
import mage.abilities.keyword.HexproofAbility;
|
import mage.abilities.keyword.HexproofAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControllerEffect;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
|
|
@ -29,7 +30,7 @@ public final class LazotepPlating extends CardImpl {
|
||||||
HexproofAbility.getInstance(), Duration.EndOfTurn
|
HexproofAbility.getInstance(), Duration.EndOfTurn
|
||||||
);
|
);
|
||||||
Effect effect2 = new GainAbilityControlledEffect(
|
Effect effect2 = new GainAbilityControlledEffect(
|
||||||
HexproofAbility.getInstance(), Duration.EndOfTurn
|
HexproofAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS
|
||||||
);
|
);
|
||||||
effect.setText("You");
|
effect.setText("You");
|
||||||
effect2.setText("and permanents you control gain hexproof until end of turn");
|
effect2.setText("and permanents you control gain hexproof until end of turn");
|
||||||
|
|
|
||||||
|
|
@ -35,9 +35,8 @@ public final class MishraTamerOfMakFawa extends CardImpl {
|
||||||
|
|
||||||
// Permanents you control have "Ward--Sacrifice a permanent."
|
// Permanents you control have "Ward--Sacrifice a permanent."
|
||||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
||||||
new WardAbility(new SacrificeTargetCost(
|
new WardAbility(new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT), false),
|
||||||
StaticFilters.FILTER_PERMANENT
|
Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENTS
|
||||||
), false), Duration.WhileOnBattlefield
|
|
||||||
).withForceQuotes()));
|
).withForceQuotes()));
|
||||||
|
|
||||||
// Each artifact card in your graveyard has unearth {1}{B}{R}
|
// Each artifact card in your graveyard has unearth {1}{B}{R}
|
||||||
|
|
|
||||||
|
|
@ -1,40 +1,38 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Mode;
|
import mage.abilities.Mode;
|
||||||
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
||||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||||
import mage.abilities.keyword.HexproofAbility;
|
import mage.abilities.keyword.HexproofAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author Plopman
|
* @author Plopman
|
||||||
*/
|
*/
|
||||||
public final class SimicCharm extends CardImpl {
|
public final class SimicCharm extends CardImpl {
|
||||||
|
|
||||||
public SimicCharm (UUID ownerId, CardSetInfo setInfo) {
|
public SimicCharm(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}{U}");
|
||||||
|
|
||||||
//Choose one - Target creature gets +3/+3 until end of turn
|
//Choose one - Target creature gets +3/+3 until end of turn
|
||||||
this.getSpellAbility().addEffect(new BoostTargetEffect(3, 3, Duration.EndOfTurn));
|
this.getSpellAbility().addEffect(new BoostTargetEffect(3, 3, Duration.EndOfTurn));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
|
|
||||||
//permanents you control gain hexproof until end of turn
|
//permanents you control gain hexproof until end of turn
|
||||||
Mode mode = new Mode(new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.EndOfTurn));
|
this.getSpellAbility().addMode(new Mode(new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS)));
|
||||||
this.getSpellAbility().addMode(mode);
|
|
||||||
//return target creature to its owner's hand.
|
//return target creature to its owner's hand.
|
||||||
Mode mode2 = new Mode(new ReturnToHandTargetEffect());
|
Mode mode2 = new Mode(new ReturnToHandTargetEffect());
|
||||||
mode2.addTarget(new TargetCreaturePermanent());
|
mode2.addTarget(new TargetCreaturePermanent());
|
||||||
this.getSpellAbility().addMode(mode2);
|
this.getSpellAbility().addMode(mode2);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private SimicCharm(final SimicCharm card) {
|
private SimicCharm(final SimicCharm card) {
|
||||||
|
|
@ -42,7 +40,7 @@ public final class SimicCharm extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SimicCharm copy() {
|
public SimicCharm copy() {
|
||||||
return new SimicCharm(this);
|
return new SimicCharm(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
|
@ -13,30 +12,34 @@ import mage.abilities.keyword.TrampleAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class SoulOfNewPhyrexia extends CardImpl {
|
public final class SoulOfNewPhyrexia extends CardImpl {
|
||||||
|
|
||||||
public SoulOfNewPhyrexia(UUID ownerId, CardSetInfo setInfo) {
|
public SoulOfNewPhyrexia(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}");
|
||||||
this.subtype.add(SubType.PHYREXIAN);
|
this.subtype.add(SubType.PHYREXIAN);
|
||||||
this.subtype.add(SubType.AVATAR);
|
this.subtype.add(SubType.AVATAR);
|
||||||
|
|
||||||
this.power = new MageInt(6);
|
this.power = new MageInt(6);
|
||||||
this.toughness = new MageInt(6);
|
this.toughness = new MageInt(6);
|
||||||
|
|
||||||
// Trample
|
// Trample
|
||||||
this.addAbility(TrampleAbility.getInstance());
|
this.addAbility(TrampleAbility.getInstance());
|
||||||
|
|
||||||
// {5}: Permanents you control gain indestructible until end of turn.
|
// {5}: Permanents you control gain indestructible until end of turn.
|
||||||
this.addAbility(new SimpleActivatedAbility(new GainAbilityControlledEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), new GenericManaCost(5)));
|
this.addAbility(new SimpleActivatedAbility(new GainAbilityControlledEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS), new GenericManaCost(5)));
|
||||||
|
|
||||||
// {5}, Exile Soul of New Phyrexia from your graveyard: Permanents you control gain indestructible until end of turn.
|
// {5}, Exile Soul of New Phyrexia from your graveyard: Permanents you control gain indestructible until end of turn.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.GRAVEYARD, new GainAbilityControlledEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), new GenericManaCost(5));
|
Ability ability = new SimpleActivatedAbility(Zone.GRAVEYARD, new GainAbilityControlledEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS), new GenericManaCost(5));
|
||||||
ability.addCost(new ExileSourceFromGraveCost());
|
ability.addCost(new ExileSourceFromGraveCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,23 @@
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import mage.MageObject;
|
import mage.MageObject;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.effects.PreventionEffectImpl;
|
import mage.abilities.effects.PreventionEffectImpl;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControllerEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityControllerEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
|
|
||||||
import mage.abilities.keyword.HexproofAbility;
|
import mage.abilities.keyword.HexproofAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class SurgeOfSalvation extends CardImpl {
|
public final class SurgeOfSalvation extends CardImpl {
|
||||||
|
|
@ -29,7 +28,11 @@ public final class SurgeOfSalvation extends CardImpl {
|
||||||
// You and permanents you control gain hexproof until end of turn. Prevent all damage that black and/or red sources would deal to creatures you control this turn.
|
// You and permanents you control gain hexproof until end of turn. Prevent all damage that black and/or red sources would deal to creatures you control this turn.
|
||||||
this.getSpellAbility().addEffect(new GainAbilityControllerEffect(
|
this.getSpellAbility().addEffect(new GainAbilityControllerEffect(
|
||||||
HexproofAbility.getInstance(), Duration.EndOfTurn
|
HexproofAbility.getInstance(), Duration.EndOfTurn
|
||||||
).setText("you"));this.getSpellAbility().addEffect(new GainAbilityControlledEffect(HexproofAbility.getInstance(),Duration.EndOfTurn).concatBy("and"));this.getSpellAbility().addEffect(new SurgeOfSalvationEffect());
|
).setText("you"));
|
||||||
|
this.getSpellAbility().addEffect(new GainAbilityControlledEffect(
|
||||||
|
HexproofAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS
|
||||||
|
).concatBy("and"));
|
||||||
|
this.getSpellAbility().addEffect(new SurgeOfSalvationEffect());
|
||||||
}
|
}
|
||||||
|
|
||||||
private SurgeOfSalvation(final SurgeOfSalvation card) {
|
private SurgeOfSalvation(final SurgeOfSalvation card) {
|
||||||
|
|
@ -45,7 +48,7 @@ public final class SurgeOfSalvation extends CardImpl {
|
||||||
class SurgeOfSalvationEffect extends PreventionEffectImpl {
|
class SurgeOfSalvationEffect extends PreventionEffectImpl {
|
||||||
|
|
||||||
SurgeOfSalvationEffect() {
|
SurgeOfSalvationEffect() {
|
||||||
super(Duration.EndOfTurn,Integer.MAX_VALUE,false);
|
super(Duration.EndOfTurn, Integer.MAX_VALUE, false);
|
||||||
staticText = "Prevent all damage that black and/or red sources would deal to creatures you control this turn";
|
staticText = "Prevent all damage that black and/or red sources would deal to creatures you control this turn";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -60,16 +63,16 @@ class SurgeOfSalvationEffect extends PreventionEffectImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean checksEventType(GameEvent event, Game game) {
|
public boolean checksEventType(GameEvent event, Game game) {
|
||||||
return event.getType()== GameEvent.EventType.DAMAGE_PERMANENT;
|
return event.getType() == GameEvent.EventType.DAMAGE_PERMANENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean applies(GameEvent event, Ability source, Game game) {
|
public boolean applies(GameEvent event, Ability source, Game game) {
|
||||||
if(! super.applies(event, source, game)){
|
if (!super.applies(event, source, game)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Permanent permanent=game.getPermanent(event.getTargetId());
|
Permanent permanent = game.getPermanent(event.getTargetId());
|
||||||
MageObject sourceObject=game.getObject(event.getSourceId());
|
MageObject sourceObject = game.getObject(event.getSourceId());
|
||||||
return permanent != null
|
return permanent != null
|
||||||
&& sourceObject != null
|
&& sourceObject != null
|
||||||
&& permanent.isCreature(game)
|
&& permanent.isCreature(game)
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.stack.Spell;
|
import mage.game.stack.Spell;
|
||||||
|
|
||||||
|
|
@ -29,7 +30,7 @@ public final class UltimateMagicHoly extends CardImpl {
|
||||||
|
|
||||||
// Permanents you control gain indestructible until end of turn. If this spell was cast from exile, prevent all damage that would be dealt to you this turn.
|
// Permanents you control gain indestructible until end of turn. If this spell was cast from exile, prevent all damage that would be dealt to you this turn.
|
||||||
this.getSpellAbility().addEffect(new GainAbilityControlledEffect(
|
this.getSpellAbility().addEffect(new GainAbilityControlledEffect(
|
||||||
IndestructibleAbility.getInstance(), Duration.EndOfTurn
|
IndestructibleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS
|
||||||
));
|
));
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||||
new AddContinuousEffectToGame(new PreventDamageToControllerEffect(Duration.EndOfTurn)),
|
new AddContinuousEffectToGame(new PreventDamageToControllerEffect(Duration.EndOfTurn)),
|
||||||
|
|
|
||||||
|
|
@ -120,10 +120,12 @@ class VeilOfSummerEffect extends OneShotEffect {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
game.addEffect(new GainAbilityControlledEffect(
|
game.addEffect(new GainAbilityControlledEffect(
|
||||||
HexproofFromBlueAbility.getInstance(), Duration.EndOfTurn
|
HexproofFromBlueAbility.getInstance(), Duration.EndOfTurn,
|
||||||
|
StaticFilters.FILTER_PERMANENTS
|
||||||
), source);
|
), source);
|
||||||
game.addEffect(new GainAbilityControlledEffect(
|
game.addEffect(new GainAbilityControlledEffect(
|
||||||
HexproofFromBlackAbility.getInstance(), Duration.EndOfTurn
|
HexproofFromBlackAbility.getInstance(), Duration.EndOfTurn,
|
||||||
|
StaticFilters.FILTER_PERMANENTS
|
||||||
), source);
|
), source);
|
||||||
game.addEffect(new GainAbilityControllerEffect(
|
game.addEffect(new GainAbilityControllerEffect(
|
||||||
HexproofFromBlueAbility.getInstance(), Duration.EndOfTurn
|
HexproofFromBlueAbility.getInstance(), Duration.EndOfTurn
|
||||||
|
|
@ -133,4 +135,4 @@ class VeilOfSummerEffect extends OneShotEffect {
|
||||||
), source);
|
), source);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,16 +2,19 @@ package mage.cards.w;
|
||||||
|
|
||||||
import mage.ApprovingObject;
|
import mage.ApprovingObject;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
|
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||||
import mage.abilities.keyword.WardAbility;
|
import mage.abilities.keyword.WardAbility;
|
||||||
|
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
|
||||||
import mage.cards.Card;
|
import mage.cards.Card;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.Outcome;
|
||||||
|
import mage.constants.Zone;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
|
|
@ -29,13 +32,12 @@ public final class WondrousCrucible extends CardImpl {
|
||||||
|
|
||||||
// Permanents you control have ward {2}.
|
// Permanents you control have ward {2}.
|
||||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
||||||
new WardAbility(new GenericManaCost(2), false), Duration.WhileOnBattlefield
|
new WardAbility(new GenericManaCost(2), false),
|
||||||
|
Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENTS
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// At the beginning of your end step, mill two cards, then exile a nonland card at random from your graveyard. Copy it. You may cast the copy without paying its mana cost.
|
// At the beginning of your end step, mill two cards, then exile a nonland card at random from your graveyard. Copy it. You may cast the copy without paying its mana cost.
|
||||||
this.addAbility(new BeginningOfEndStepTriggeredAbility(
|
this.addAbility(new BeginningOfEndStepTriggeredAbility(new WondrousCrucibleEffect()));
|
||||||
new WondrousCrucibleEffect()
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private WondrousCrucible(final WondrousCrucible card) {
|
private WondrousCrucible(final WondrousCrucible card) {
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.predicate.permanent.TokenPredicate;
|
import mage.filter.predicate.permanent.TokenPredicate;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -43,7 +44,8 @@ public final class ZurgoThundersDecree extends CardImpl {
|
||||||
|
|
||||||
// During your end step, Warrior tokens you control have "This token can't be sacrificed."
|
// During your end step, Warrior tokens you control have "This token can't be sacrificed."
|
||||||
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(new GainAbilityControlledEffect(
|
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(new GainAbilityControlledEffect(
|
||||||
new SimpleStaticAbility(new CantBeSacrificedSourceEffect()), Duration.WhileOnBattlefield
|
new SimpleStaticAbility(new CantBeSacrificedSourceEffect()),
|
||||||
|
Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENTS
|
||||||
), condition, "during your end step, Warrior tokens you control have \"This token can't be sacrificed.\"")));
|
), condition, "during your end step, Warrior tokens you control have \"This token can't be sacrificed.\"")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ import mage.constants.Layer;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.constants.SubLayer;
|
import mage.constants.SubLayer;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.StaticFilters;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.util.CardUtil;
|
import mage.util.CardUtil;
|
||||||
|
|
@ -27,10 +26,6 @@ public class GainAbilityControlledEffect extends ContinuousEffectImpl {
|
||||||
protected boolean forceQuotes = false;
|
protected boolean forceQuotes = false;
|
||||||
protected boolean durationRuleAtStart = false; // put duration rule to the start of the rules instead end
|
protected boolean durationRuleAtStart = false; // put duration rule to the start of the rules instead end
|
||||||
|
|
||||||
public GainAbilityControlledEffect(Ability ability, Duration duration) {
|
|
||||||
this(ability, duration, StaticFilters.FILTER_PERMANENTS);
|
|
||||||
}
|
|
||||||
|
|
||||||
public GainAbilityControlledEffect(Ability ability, Duration duration, FilterPermanent filter) {
|
public GainAbilityControlledEffect(Ability ability, Duration duration, FilterPermanent filter) {
|
||||||
this(ability, duration, filter, false);
|
this(ability, duration, filter, false);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue