* Do if cost paid - fixed that some cards asks player about pay two times (fixed ~30 cards);

This commit is contained in:
Oleg Agafonov 2020-08-14 16:36:00 +04:00
parent 61bfdf8108
commit d8c9d10066
30 changed files with 143 additions and 170 deletions

View file

@ -1,7 +1,5 @@
package mage.cards.a;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@ -16,8 +14,9 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.ServoToken;
import java.util.UUID;
/**
*
* @author fireshoes
*/
public final class AetherChaser extends CardImpl {
@ -37,7 +36,7 @@ public final class AetherChaser extends CardImpl {
this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(2)));
// Whenever Aether Chaser attacks, you may pay {E}{E}. If you do, create a 1/1 colorless Servo artifact creature token.
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(new CreateTokenEffect(new ServoToken()), new PayEnergyCost(2)), true,
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(new CreateTokenEffect(new ServoToken()), new PayEnergyCost(2)), false,
"Whenever {this} attacks you may pay {E}{E}. If you do, create a 1/1 colorless Servo artifact creature token."));
}

View file

@ -1,7 +1,5 @@
package mage.cards.a;
import java.util.UUID;
import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.common.DiesSourceTriggeredAbility;
@ -16,8 +14,9 @@ import mage.constants.SubType;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ColorPredicate;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public final class AuspiciousAncestor extends CardImpl {
@ -29,7 +28,7 @@ public final class AuspiciousAncestor extends CardImpl {
}
public AuspiciousAncestor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.CLERIC);
this.power = new MageInt(2);
@ -38,7 +37,7 @@ public final class AuspiciousAncestor extends CardImpl {
// When Auspicious Ancestor dies, you gain 3 life.
this.addAbility(new DiesSourceTriggeredAbility(new GainLifeEffect(3), false));
// Whenever a player casts a white spell, you may pay {1}. If you do, you gain 1 life.
this.addAbility(new SpellCastAllTriggeredAbility(new DoIfCostPaid(new GainLifeEffect(1), new ManaCostsImpl("{1}")), filter, true));
this.addAbility(new SpellCastAllTriggeredAbility(new DoIfCostPaid(new GainLifeEffect(1), new ManaCostsImpl("{1}")), filter, false));
}
public AuspiciousAncestor(final AuspiciousAncestor card) {

View file

@ -1,7 +1,5 @@
package mage.cards.a;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.costs.mana.ManaCostsImpl;
@ -19,8 +17,9 @@ import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
import mage.game.permanent.Permanent;
import java.util.UUID;
/**
*
* @author jeffwadsworth
*/
public final class AzoriusAethermage extends CardImpl {
@ -37,7 +36,7 @@ public final class AzoriusAethermage extends CardImpl {
// Whenever a permanent is returned to your hand, you may pay {1}. If you do, draw a card.
Effect effect = new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new ManaCostsImpl("{1}"));
this.addAbility(new AzoriusAEthermageAbility(Zone.BATTLEFIELD, Zone.BATTLEFIELD, Zone.HAND, effect, new FilterPermanent(), rule, true));
this.addAbility(new AzoriusAEthermageAbility(Zone.BATTLEFIELD, Zone.BATTLEFIELD, Zone.HAND, effect, new FilterPermanent(), rule, false));
}
public AzoriusAethermage(final AzoriusAethermage card) {
@ -87,11 +86,10 @@ class AzoriusAEthermageAbility extends TriggeredAbilityImpl {
if (zEvent.getTarget() != null) {
permanentThatMoved = zEvent.getTarget();
}
if (permanentThatMoved != null
//The controller's hand is where the permanent moved to.
return permanentThatMoved != null
&& filter.match(permanentThatMoved, sourceId, controllerId, game)
&& zEvent.getPlayerId().equals(controllerId)) { //The controller's hand is where the permanent moved to.
return true;
}
&& zEvent.getPlayerId().equals(controllerId);
}
return false;
}

View file

@ -55,8 +55,8 @@ public final class BlindZealot extends CardImpl {
class BlindZealotTriggeredAbility extends TriggeredAbilityImpl {
BlindZealotTriggeredAbility() {
super(Zone.BATTLEFIELD, new DoIfCostPaid(new DestroyTargetEffect(), new SacrificeSourceCost()), true);
BlindZealotTriggeredAbility() {
super(Zone.BATTLEFIELD, new DoIfCostPaid(new DestroyTargetEffect(), new SacrificeSourceCost()), false);
}
private BlindZealotTriggeredAbility(final BlindZealotTriggeredAbility ability) {

View file

@ -1,7 +1,5 @@
package mage.cards.b;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SpellCastAllTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
@ -14,29 +12,30 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.FilterSpell;
import java.util.UUID;
/**
*
* @author EvilGeek
*/
public final class BogStriderAsh extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a Goblin spell");
static {
private static final FilterSpell filter = new FilterSpell("a Goblin spell");
static {
filter.add(SubType.GOBLIN.getPredicate());
}
public BogStriderAsh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
this.subtype.add(SubType.TREEFOLK, SubType.SHAMAN);
this.power = new MageInt(2);
this.toughness = new MageInt(4);
// Swampwalk
this.addAbility(new SwampwalkAbility());
// Whenever a player casts a Goblin spell, you may pay {G}. If you do, you gain 2 life.
this.addAbility(new SpellCastAllTriggeredAbility(new DoIfCostPaid(new GainLifeEffect(2), new ManaCostsImpl("{G}")), filter, true));
this.addAbility(new SpellCastAllTriggeredAbility(new DoIfCostPaid(new GainLifeEffect(2), new ManaCostsImpl("{G}")), filter, false));
}
public BogStriderAsh(final BogStriderAsh card) {

View file

@ -1,22 +1,22 @@
package mage.cards.b;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.constants.SubType;
import mage.abilities.keyword.MenaceAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.StaticFilters;
import mage.target.common.TargetControlledPermanent;
import java.util.UUID;
/**
*
* @author TheElk801
*/
public final class BrawlBashOgre extends CardImpl {
@ -39,7 +39,7 @@ public final class BrawlBashOgre extends CardImpl {
new SacrificeTargetCost(new TargetControlledPermanent(
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE
))
), true
), false
));
}

View file

@ -1,7 +1,5 @@
package mage.cards.c;
import java.util.UUID;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.Effect;
@ -14,8 +12,9 @@ import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.MulticoloredPredicate;
import java.util.UUID;
/**
*
* @author jeffwadsworth
*/
public final class ClovenCasting extends CardImpl {
@ -30,12 +29,12 @@ public final class ClovenCasting extends CardImpl {
}
public ClovenCasting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{5}{U}{R}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{U}{R}");
// Whenever you cast a multicolored instant or sorcery spell, you may pay {1}. If you do, copy that spell. You may choose new targets for the copy.
Effect effect = new CopyTargetSpellEffect(true);
effect.setText("copy that spell. You may choose new targets for the copy");
this.addAbility(new SpellCastControllerTriggeredAbility(new DoIfCostPaid(effect, new GenericManaCost(1)), filter, true, true));
this.addAbility(new SpellCastControllerTriggeredAbility(new DoIfCostPaid(effect, new GenericManaCost(1)), filter, false, true));
}
public ClovenCasting(final ClovenCasting card) {

View file

@ -1,7 +1,5 @@
package mage.cards.c;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility;
@ -14,14 +12,15 @@ import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.common.FilterAttackingCreature;
import mage.filter.predicate.permanent.AnotherPredicate;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class ConsulsShieldguard extends CardImpl {
@ -33,7 +32,7 @@ public final class ConsulsShieldguard extends CardImpl {
}
public ConsulsShieldguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
this.subtype.add(SubType.DWARF);
this.subtype.add(SubType.SOLDIER);
this.power = new MageInt(3);
@ -44,7 +43,7 @@ public final class ConsulsShieldguard extends CardImpl {
// Whenever Consul's Shiedguard attacks, you may pay {E}. If you do, another target attacking creature gets indestructible until end of turn.
DoIfCostPaid doIfCostPaidEffect = new DoIfCostPaid(new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), new PayEnergyCost(1));
Ability ability = new AttacksTriggeredAbility(doIfCostPaidEffect, true,
Ability ability = new AttacksTriggeredAbility(doIfCostPaidEffect, false,
"Whenever {this} attacks, you may pay {E}. If you do, another target attacking creature gets indestructible until end of turn.");
ability.addTarget(new TargetCreaturePermanent(filter));
this.addAbility(ability);

View file

@ -1,6 +1,5 @@
package mage.cards.c;
import java.util.UUID;
import mage.abilities.common.ZoneChangeTriggeredAbility;
import mage.abilities.costs.common.ExileSourceFromGraveCost;
import mage.abilities.effects.common.DamagePlayersEffect;
@ -12,8 +11,9 @@ import mage.constants.CardType;
import mage.constants.TargetController;
import mage.constants.Zone;
import java.util.UUID;
/**
*
* @author TheElk801
*/
public final class CreepingChill extends CardImpl {
@ -52,7 +52,7 @@ class CreepingChillAbility extends ZoneChangeTriggeredAbility {
new DamagePlayersEffect(3, TargetController.OPPONENT),
new ExileSourceFromGraveCost()
).addEffect(new GainLifeEffect(3)),
"", true
"", false
);
}

View file

@ -1,7 +1,5 @@
package mage.cards.e;
import java.util.UUID;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DoIfCostPaid;
@ -12,23 +10,24 @@ import mage.constants.CardType;
import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import java.util.UUID;
/**
*
* @author Plopman
*/
public final class EyesOfTheWatcher extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell");
static{
static {
filter.add(Predicates.or(CardType.INSTANT.getPredicate(), CardType.SORCERY.getPredicate()));
}
public EyesOfTheWatcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}");
public EyesOfTheWatcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
// Whenever you cast an instant or sorcery spell, you may pay {1}. If you do, scry 2.
this.addAbility(new SpellCastControllerTriggeredAbility(new DoIfCostPaid(new ScryEffect(2), new ManaCostsImpl("{1}")), filter, true));
this.addAbility(new SpellCastControllerTriggeredAbility(new DoIfCostPaid(new ScryEffect(2), new ManaCostsImpl("{1}")), filter, false));
}
public EyesOfTheWatcher(final EyesOfTheWatcher card) {

View file

@ -1,7 +1,5 @@
package mage.cards.f;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
@ -18,14 +16,15 @@ import mage.constants.*;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
import java.util.UUID;
/**
*
* @author fireshoes
*/
public final class Farmstead extends CardImpl {
public Farmstead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}{W}{W}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}{W}{W}");
this.subtype.add(SubType.AURA);
// Enchant land
@ -34,11 +33,11 @@ public final class Farmstead extends CardImpl {
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Benefit));
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
// Enchanted land has "At the beginning of your upkeep, you may pay {W}{W}. If you do, you gain 1 life."
ability = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD,
new DoIfCostPaid(new GainLifeEffect(1), new ManaCostsImpl("{W}{W}")),
TargetController.YOU, true);
TargetController.YOU, false);
Effect effect = new GainAbilityAttachedEffect(ability, AttachmentType.AURA);
effect.setText("Enchanted land has \"At the beginning of your upkeep, you may pay {W}{W}. If you do, you gain 1 life.\"");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));

View file

@ -1,7 +1,5 @@
package mage.cards.f;
import java.util.UUID;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.ExileFromHandCost;
@ -17,23 +15,24 @@ import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.target.common.TargetCardInHand;
import java.util.UUID;
/**
*
* @author Luna Skyrise
*/
public final class ForsakenCity extends CardImpl {
private static final FilterCard filter = new FilterCard("a card from your hand");
private static final FilterCard filter = new FilterCard("a card from your hand");
public ForsakenCity(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
// Forsaken City doesn't untap during your untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// At the beginning of your upkeep, you may exile a card from your hand. If you do, untap Forsaken City.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new DoIfCostPaid(new UntapSourceEffect(), new ExileFromHandCost(new TargetCardInHand(filter))), TargetController.YOU, true));
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new DoIfCostPaid(new UntapSourceEffect(), new ExileFromHandCost(new TargetCardInHand(filter))), TargetController.YOU, false));
// {T}: Add one mana of any color.
this.addAbility(new AnyColorManaAbility());
}

View file

@ -1,7 +1,5 @@
package mage.cards.h;
import java.util.UUID;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastAllTriggeredAbility;
@ -15,12 +13,13 @@ import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
public final class HematiteTalisman extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a red spell");
static {
@ -28,10 +27,10 @@ public final class HematiteTalisman extends CardImpl {
}
public HematiteTalisman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
// Whenever a player casts a red spell, you may pay {3}. If you do, untap target permanent.
Ability ability = new SpellCastAllTriggeredAbility(new DoIfCostPaid(new UntapTargetEffect(), new ManaCostsImpl("{3}")), filter, true);
Ability ability = new SpellCastAllTriggeredAbility(new DoIfCostPaid(new UntapTargetEffect(), new ManaCostsImpl("{3}")), filter, false);
ability.addTarget(new TargetPermanent());
this.addAbility(ability);
}

View file

@ -1,7 +1,5 @@
package mage.cards.i;
import java.util.UUID;
import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.Ability;
@ -12,38 +10,38 @@ import mage.abilities.effects.common.combat.CantBlockTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
*
* @author jeffwadsworth
*/
public final class IntimidatorInitiate extends CardImpl {
private static final FilterSpell filter = new FilterSpell("red spell");
static {
filter.add(new ColorPredicate(ObjectColor.RED));
}
private static final String rule = "Whenever a player casts a red spell, you may pay {1}. If you do, target creature can't block this turn.";
public IntimidatorInitiate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
this.subtype.add(SubType.GOBLIN);
this.subtype.add(SubType.SHAMAN);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// Whenever a player casts a red spell, you may pay {1}. If you do, target creature can't block this turn.
Ability ability = new SpellCastAllTriggeredAbility(new DoIfCostPaid(new CantBlockTargetEffect(Duration.EndOfTurn), new GenericManaCost(1)), filter, true, rule);
Ability ability = new SpellCastAllTriggeredAbility(new DoIfCostPaid(new CantBlockTargetEffect(Duration.EndOfTurn), new GenericManaCost(1)), filter, false, rule);
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}
public IntimidatorInitiate(final IntimidatorInitiate card) {

View file

@ -1,7 +1,5 @@
package mage.cards.l;
import java.util.UUID;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastAllTriggeredAbility;
@ -15,12 +13,13 @@ import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
public final class LapisLazuliTalisman extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a blue spell");
static {
@ -28,10 +27,10 @@ public final class LapisLazuliTalisman extends CardImpl {
}
public LapisLazuliTalisman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
// Whenever a player casts a blue spell, you may pay {3}. If you do, untap target permanent.
Ability ability = new SpellCastAllTriggeredAbility(new DoIfCostPaid(new UntapTargetEffect(), new ManaCostsImpl("{3}")), filter, true);
Ability ability = new SpellCastAllTriggeredAbility(new DoIfCostPaid(new UntapTargetEffect(), new ManaCostsImpl("{3}")), filter, false);
ability.addTarget(new TargetPermanent());
this.addAbility(ability);
}

View file

@ -1,7 +1,5 @@
package mage.cards.l;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DiesCreatureTriggeredAbility;
@ -24,8 +22,9 @@ import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
/**
*
* @author jeffwadsworth
*/
public final class LimDulTheNecromancer extends CardImpl {
@ -47,7 +46,7 @@ public final class LimDulTheNecromancer extends CardImpl {
this.toughness = new MageInt(4);
// Whenever a creature an opponent controls dies, you may pay {1}{B}. If you do, return that card to the battlefield under your control. If it's a creature, it's a Zombie in addition to its other creature types.
this.addAbility(new DiesCreatureTriggeredAbility(new DoIfCostPaid(new LimDulTheNecromancerEffect(), new ManaCostsImpl("{1}{B}")), true, filter, true));
this.addAbility(new DiesCreatureTriggeredAbility(new DoIfCostPaid(new LimDulTheNecromancerEffect(), new ManaCostsImpl("{1}{B}")), false, filter, true));
// {1}{B}: Regenerate target Zombie.
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateTargetEffect(), new ManaCostsImpl("{1}{B}"));

View file

@ -1,7 +1,5 @@
package mage.cards.l;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
@ -15,8 +13,9 @@ import mage.constants.Zone;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.HistoricPredicate;
import java.util.UUID;
/**
*
* @author TheElk801
*/
public final class LingeringPhantom extends CardImpl {
@ -37,9 +36,9 @@ public final class LingeringPhantom extends CardImpl {
// Whenever you cast a historic spell, you may pay {B}. If you do, return Lingering Phantom from your graveyard to your hand.
this.addAbility(new SpellCastControllerTriggeredAbility(
Zone.GRAVEYARD, new DoIfCostPaid(new ReturnSourceFromGraveyardToHandEffect()
.setText("return {this} from your graveyard to your hand. <i>(Artifacts, legendaries, and Sagas are historic.)</i>"),
new ManaCostsImpl("{B}")),
filter, true, false
.setText("return {this} from your graveyard to your hand. <i>(Artifacts, legendaries, and Sagas are historic.)</i>"),
new ManaCostsImpl("{B}")),
filter, false, false
));
}

View file

@ -1,7 +1,5 @@
package mage.cards.m;
import java.util.UUID;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastAllTriggeredAbility;
@ -15,12 +13,13 @@ import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
public final class MalachiteTalisman extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a green spell");
static {
@ -28,10 +27,10 @@ public final class MalachiteTalisman extends CardImpl {
}
public MalachiteTalisman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
// Whenever a player casts a green spell, you may pay {3}. If you do, untap target permanent.
Ability ability = new SpellCastAllTriggeredAbility(new DoIfCostPaid(new UntapTargetEffect(), new ManaCostsImpl("{3}")), filter, true);
Ability ability = new SpellCastAllTriggeredAbility(new DoIfCostPaid(new UntapTargetEffect(), new ManaCostsImpl("{3}")), filter, false);
ability.addTarget(new TargetPermanent());
this.addAbility(ability);
}

View file

@ -1,7 +1,5 @@
package mage.cards.n;
import java.util.UUID;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastAllTriggeredAbility;
@ -15,12 +13,13 @@ import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
public final class NacreTalisman extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a white spell");
static {
@ -28,10 +27,10 @@ public final class NacreTalisman extends CardImpl {
}
public NacreTalisman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
// Whenever a player casts a white spell, you may pay {3}. If you do, untap target permanent.
Ability ability = new SpellCastAllTriggeredAbility(new DoIfCostPaid(new UntapTargetEffect(), new ManaCostsImpl("{3}")), filter, true);
Ability ability = new SpellCastAllTriggeredAbility(new DoIfCostPaid(new UntapTargetEffect(), new ManaCostsImpl("{3}")), filter, false);
ability.addTarget(new TargetPermanent());
this.addAbility(ability);
}

View file

@ -1,7 +1,5 @@
package mage.cards.o;
import java.util.UUID;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastAllTriggeredAbility;
@ -15,12 +13,13 @@ import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
public final class OnyxTalisman extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a black spell");
static {
@ -28,10 +27,10 @@ public final class OnyxTalisman extends CardImpl {
}
public OnyxTalisman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
// Whenever a player casts a black spell, you may pay {3}. If you do, untap target permanent.
Ability ability = new SpellCastAllTriggeredAbility(new DoIfCostPaid(new UntapTargetEffect(), new ManaCostsImpl("{3}")), filter, true);
Ability ability = new SpellCastAllTriggeredAbility(new DoIfCostPaid(new UntapTargetEffect(), new ManaCostsImpl("{3}")), filter, false);
ability.addTarget(new TargetPermanent());
this.addAbility(ability);
}

View file

@ -1,7 +1,5 @@
package mage.cards.q;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.costs.common.DiscardCardCost;
@ -14,8 +12,9 @@ import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledArtifactPermanent;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class QuicksmithGenius extends CardImpl {
@ -29,7 +28,7 @@ public final class QuicksmithGenius extends CardImpl {
// Whenever an artifact enters the battlefield under your control, you may discard a card. If you do, draw a card.
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
Zone.BATTLEFIELD, new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new DiscardCardCost()), new FilterControlledArtifactPermanent("an artifact"), true, null, true));
Zone.BATTLEFIELD, new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new DiscardCardCost()), new FilterControlledArtifactPermanent("an artifact"), false, null, true));
}
public QuicksmithGenius(final QuicksmithGenius card) {

View file

@ -1,25 +1,25 @@
package mage.cards.r;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.TapSourceEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.constants.SubType;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.counters.CounterType;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
/**
*
* @author TheElk801
*/
public final class RavenousVampire extends CardImpl {
@ -47,7 +47,7 @@ public final class RavenousVampire extends CardImpl {
new TapSourceEffect(),
new SacrificeTargetCost(new TargetControlledCreaturePermanent(filter))
),
TargetController.YOU, true
TargetController.YOU, false
));
}

View file

@ -1,6 +1,5 @@
package mage.cards.r;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.costs.common.SacrificeSourceCost;
@ -11,8 +10,8 @@ import mage.abilities.keyword.MorphAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.ControllerIdPredicate;
@ -21,8 +20,9 @@ import mage.game.events.GameEvent;
import mage.players.Player;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
*
* @author TheElk801
*/
public final class RiptideEntrancer extends CardImpl {
@ -58,7 +58,7 @@ class RiptideEntrancerTriggeredAbility extends TriggeredAbilityImpl {
super(Zone.BATTLEFIELD, new DoIfCostPaid(
new GainControlTargetEffect(Duration.Custom),
new SacrificeSourceCost()
), true);
), false);
}
public RiptideEntrancerTriggeredAbility(final RiptideEntrancerTriggeredAbility ability) {

View file

@ -40,7 +40,7 @@ public final class SafeHaven extends CardImpl {
new SacrificeSourceCost()
),
TargetController.YOU,
true);
false);
this.addAbility(ability);
}

View file

@ -1,7 +1,5 @@
package mage.cards.t;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.ZoneChangeAllTriggeredAbility;
import mage.abilities.costs.mana.GenericManaCost;
@ -14,22 +12,23 @@ import mage.constants.CardType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledArtifactPermanent;
import java.util.UUID;
/**
*
* @author MarcoMarin
*/
public final class TabletOfEpityr extends CardImpl {
public TabletOfEpityr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
// Whenever an artifact you control is put into a graveyard from the battlefield, you may pay {1}. If you do, you gain 1 life.
Effect effect = new DoIfCostPaid(new GainLifeEffect(1), new GenericManaCost(1));
effect.setText("you may pay {1}. If you do, you gain 1 life.");
Ability ability = new ZoneChangeAllTriggeredAbility(Zone.BATTLEFIELD, Zone.BATTLEFIELD, Zone.GRAVEYARD,
effect, new FilterControlledArtifactPermanent(),
"Whenever an artifact you control is put into a graveyard from the battlefield, ", true);
"Whenever an artifact you control is put into a graveyard from the battlefield, ", false);
this.addAbility(ability);
}

View file

@ -1,7 +1,5 @@
package mage.cards.t;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DiscardCardPlayerTriggeredAbility;
@ -12,21 +10,21 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author jeffwadsworth
*/
public final class TelekineticBonds extends CardImpl {
public TelekineticBonds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}{U}");
// Whenever a player discards a card, you may pay {1}{U}. If you do, you may tap or untap target permanent.
Ability ability = new DiscardCardPlayerTriggeredAbility(new DoIfCostPaid(new MayTapOrUntapTargetEffect(), new ManaCostsImpl("{1}{U}")), true);
ability.addTarget(new TargetPermanent());
this.addAbility(ability);
Ability ability = new DiscardCardPlayerTriggeredAbility(new DoIfCostPaid(new MayTapOrUntapTargetEffect(), new ManaCostsImpl("{1}{U}")), false);
ability.addTarget(new TargetPermanent());
this.addAbility(ability);
}
public TelekineticBonds(final TelekineticBonds card) {

View file

@ -1,4 +1,3 @@
package mage.cards.u;
import mage.abilities.Ability;
@ -23,21 +22,20 @@ import java.util.List;
import java.util.UUID;
/**
*
* @author MarcoMarin
*/
public final class UrzasMiter extends CardImpl {
public UrzasMiter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
Watcher watcher = new UrzasMiterWatcher();
Watcher watcher = new UrzasMiterWatcher();
// Whenever an artifact you control is put into a graveyard from the battlefield, if it wasn't sacrificed, you may pay {3}. If you do, draw a card.
Effect effect = new UrzasMiterDoIfCostPaid(new DrawCardSourceControllerEffect(1), new GenericManaCost(3));
effect.setText("you may pay {3}. If you do, draw a card.");
Ability ability = new ZoneChangeAllTriggeredAbility(Zone.BATTLEFIELD, Zone.BATTLEFIELD, Zone.GRAVEYARD,
effect, new FilterControlledArtifactPermanent(),
"Whenever an artifact you control is put into a graveyard from the battlefield, ", true);
"Whenever an artifact you control is put into a graveyard from the battlefield, ", false);
this.addAbility(ability, watcher);
}
@ -52,21 +50,21 @@ public final class UrzasMiter extends CardImpl {
}
class UrzasMiterDoIfCostPaid extends DoIfCostPaid {
public UrzasMiterDoIfCostPaid(Effect effect, Cost cost){
public UrzasMiterDoIfCostPaid(Effect effect, Cost cost) {
super(effect, cost);
}
@Override
public boolean apply(Game game, Ability source) {
UrzasMiterWatcher watcher = game.getState().getWatcher(UrzasMiterWatcher.class);
if(watcher != null && !watcher.cards.contains(source.getFirstTarget())) {
if (watcher != null && !watcher.cards.contains(source.getFirstTarget())) {
return super.apply(game, source);
}
return false;
}
}
}
class UrzasMiterWatcher extends Watcher {
@ -81,7 +79,7 @@ class UrzasMiterWatcher extends Watcher {
@Override
public void watch(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.SACRIFICED_PERMANENT) {
if (event.getType() == GameEvent.EventType.SACRIFICED_PERMANENT) {
cards.add(event.getTargetId());
}
}

View file

@ -1,7 +1,5 @@
package mage.cards.w;
import java.util.UUID;
import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.TriggeredAbility;
@ -19,8 +17,9 @@ import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.ColorPredicate;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class WanderingChampion extends CardImpl {
@ -32,14 +31,14 @@ public final class WanderingChampion extends CardImpl {
}
public WanderingChampion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.MONK);
this.power = new MageInt(3);
this.toughness = new MageInt(1);
// Whenever Wandering Champion deals combat damage to a player, if you control a blue or red permanent, you may discard a card. If you do, draw a card.
TriggeredAbility ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new DiscardCardCost()), true);
TriggeredAbility ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new DiscardCardCost()), false);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new PermanentsOnTheBattlefieldCondition(filter),
"Whenever {this} deals combat damage to a player, if you control a blue or red permanent, you may discard a card. If you do, draw a card."));

View file

@ -1,7 +1,5 @@
package mage.cards.w;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
@ -16,8 +14,9 @@ import mage.constants.SubType;
import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetControlledPermanent;
import java.util.UUID;
/**
*
* @author Plopman
*/
public final class WanderwineProphets extends CardImpl {
@ -41,7 +40,7 @@ public final class WanderwineProphets extends CardImpl {
Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DoIfCostPaid(
new AddExtraTurnControllerEffect(),
new SacrificeTargetCost(new TargetControlledPermanent(1, 1, filter, true))
), true);
), false);
this.addAbility(ability);
}

View file

@ -97,7 +97,7 @@ public class DoIfCostPaid extends OneShotEffect {
cost.clearPaid();
int bookmark = game.bookmarkState();
if (cost.pay(source, game, source.getSourceId(), player.getId(), false)) {
game.informPlayers(player.getLogName() + " paid for " + mageObject.getLogName() + " - " + executingEffects.getText(source.getModes().getMode()));
game.informPlayers(player.getLogName() + " paid for " + mageObject.getLogName() + " - " + message);
for (Effect effect : executingEffects) {
effect.setTargetPointer(this.targetPointer);
if (effect instanceof OneShotEffect) {