mirror of
https://github.com/correl/mage.git
synced 2024-12-25 11:11:16 +00:00
* Some fixes to some Battleebond cards.
This commit is contained in:
parent
d743864bbd
commit
66cc29325c
21 changed files with 57 additions and 44 deletions
|
@ -257,6 +257,7 @@ public enum MythicspoilerComSource implements CardImageSource {
|
|||
supportedSets.add("UST");
|
||||
supportedSets.add("RIX");
|
||||
supportedSets.add("DOM");
|
||||
supportedSets.add("BBD");
|
||||
|
||||
sets = new LinkedHashMap<>();
|
||||
setsAliases = new HashMap<>();
|
||||
|
|
|
@ -210,6 +210,7 @@ public enum ScryfallImageSource implements CardImageSource {
|
|||
supportedSets.add("PPRO");
|
||||
supportedSets.add("A25");
|
||||
supportedSets.add("DOM");
|
||||
supportedSets.add("BBD");
|
||||
// supportedSets.add("M19");
|
||||
|
||||
}
|
||||
|
|
|
@ -33,10 +33,10 @@ import mage.abilities.common.DiesTriggeredAbility;
|
|||
import mage.abilities.costs.common.ExileSourceFromGraveCost;
|
||||
import mage.abilities.effects.common.DoIfCostPaid;
|
||||
import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.common.FilterPlaneswalkerCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
|
@ -60,7 +60,7 @@ public class ArenaRector extends CardImpl {
|
|||
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(new FilterPlaneswalkerCard())),
|
||||
new ExileSourceFromGraveCost(),
|
||||
"Exile to search for a planeswalker?"
|
||||
), false
|
||||
).setText("you may exile it. If you do, search your library for a planeswalker card, put it onto the battlefield, then shuffle your library"), false
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ import mage.MageInt;
|
|||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.mana.ColoredManaCost;
|
||||
import mage.abilities.costs.mana.ColorlessManaCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
|
@ -95,7 +95,7 @@ public class Brightling extends CardImpl {
|
|||
this.addAbility(new SimpleActivatedAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new BrightlingEffect(),
|
||||
new ColorlessManaCost(1)
|
||||
new GenericManaCost(1)
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -35,10 +35,10 @@ import mage.abilities.condition.common.MyTurnCondition;
|
|||
import mage.abilities.decorator.ConditionalTriggeredAbility;
|
||||
import mage.abilities.effects.common.UntapTargetEffect;
|
||||
import mage.abilities.keyword.PartnerWithAbility;
|
||||
import mage.constants.SubType;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
|
@ -65,6 +65,7 @@ public class ChakramRetriever extends CardImpl {
|
|||
"Whenever you cast a spell during your turn, untap target creature."
|
||||
);
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
public ChakramRetriever(final ChakramRetriever card) {
|
||||
|
|
|
@ -34,12 +34,12 @@ import mage.abilities.common.SimpleActivatedAbility;
|
|||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.InfoEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.abilities.keyword.AssistAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
|
||||
/**
|
||||
|
@ -63,6 +63,7 @@ public class FanFavorite extends CardImpl {
|
|||
ActivatedAbility ability = new SimpleActivatedAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), new GenericManaCost(2));
|
||||
ability.setMayActivate(TargetController.ANY);
|
||||
ability.addEffect(new InfoEffect("Any player may activate this ability"));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
public FanFavorite(final FanFavorite card) {
|
||||
|
|
|
@ -48,7 +48,7 @@ public class HuddleUp extends CardImpl {
|
|||
this.addAbility(new AssistAbility());
|
||||
|
||||
// Two target players each draw a card.
|
||||
this.getSpellAbility().addEffect(new DrawCardTargetEffect(1));
|
||||
this.getSpellAbility().addEffect(new DrawCardTargetEffect(1).setText("Two target players each draw a card"));
|
||||
this.getSpellAbility().addTarget(new TargetPlayer(2));
|
||||
}
|
||||
|
||||
|
|
|
@ -42,13 +42,12 @@ import mage.target.TargetPlayer;
|
|||
public class KissOfTheAmesha extends CardImpl {
|
||||
|
||||
public KissOfTheAmesha(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}{U}");
|
||||
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{W}{U}");
|
||||
|
||||
// Target player gains 7 life and draws two cards.
|
||||
this.getSpellAbility().addTarget(new TargetPlayer());
|
||||
this.getSpellAbility().addEffect(new GainLifeTargetEffect(7));
|
||||
this.getSpellAbility().addEffect(new DrawCardTargetEffect(2));
|
||||
this.getSpellAbility().addEffect(new DrawCardTargetEffect(2).setText("and draws two cards"));
|
||||
}
|
||||
|
||||
public KissOfTheAmesha(final KissOfTheAmesha card) {
|
||||
|
|
|
@ -34,10 +34,10 @@ import mage.abilities.common.SimpleActivatedAbility;
|
|||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.DrawCardTargetEffect;
|
||||
import mage.abilities.keyword.PartnerWithAbility;
|
||||
import mage.constants.SubType;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.TargetPlayer;
|
||||
|
||||
/**
|
||||
|
@ -60,6 +60,7 @@ public class LoreWeaver extends CardImpl {
|
|||
// {5}{U}{U}: Target player draws two cards.
|
||||
Ability ability = new SimpleActivatedAbility(new DrawCardTargetEffect(2), new ManaCostsImpl("{5}{U}{U}"));
|
||||
ability.addTarget(new TargetPlayer());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
public LoreWeaver(final LoreWeaver card) {
|
||||
|
|
|
@ -37,12 +37,12 @@ import mage.abilities.dynamicvalue.common.SourcePermanentToughnessValue;
|
|||
import mage.abilities.effects.common.FlipUntilLoseEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
import mage.abilities.keyword.PartnerWithAbility;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.TargetController;
|
||||
|
||||
/**
|
||||
|
@ -75,7 +75,7 @@ public class OkaunEyeOfChaos extends CardImpl {
|
|||
sourceToughness,
|
||||
Duration.EndOfTurn,
|
||||
true
|
||||
).setText("double {this}'s power until end of turn")
|
||||
).setText("double {this}'s power and toughness until end of turn")
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -32,8 +32,7 @@ import mage.MageInt;
|
|||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.effects.common.DrawCardTargetEffect;
|
||||
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
||||
import mage.abilities.effects.common.DrawDiscardTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
@ -48,15 +47,15 @@ import mage.target.TargetPlayer;
|
|||
public class RecklessScholar extends CardImpl {
|
||||
|
||||
public RecklessScholar(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.WIZARD);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardTargetEffect(1), new TapSourceCost());
|
||||
ability.addEffect(new DiscardTargetEffect(1));
|
||||
// {T}: Target player draws a card, then discards a card.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawDiscardTargetEffect(1, 1), new TapSourceCost());
|
||||
ability.addTarget(new TargetPlayer());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
@ -31,7 +31,6 @@ import java.util.UUID;
|
|||
import mage.MageInt;
|
||||
import mage.abilities.common.AttacksAllTriggeredAbility;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.abilities.keyword.DeathtouchAbility;
|
||||
import mage.abilities.keyword.PartnerWithAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
@ -39,6 +38,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SetTargetPointer;
|
||||
import mage.constants.SubType;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.CounterPredicate;
|
||||
|
@ -46,6 +46,7 @@ import mage.game.Game;
|
|||
import mage.game.events.GameEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -93,7 +94,7 @@ class SoulbladeCorrupterTriggeredAbility extends AttacksAllTriggeredAbility {
|
|||
super(new GainAbilityTargetEffect(
|
||||
DeathtouchAbility.getInstance(),
|
||||
Duration.EndOfTurn
|
||||
), false, filter2, SetTargetPointer.PERMANENT, false);
|
||||
).setText("that creature gains deathtouch until end of turn"), false, filter2, SetTargetPointer.PERMANENT, false);
|
||||
}
|
||||
|
||||
SoulbladeCorrupterTriggeredAbility(final SoulbladeCorrupterTriggeredAbility effect) {
|
||||
|
@ -106,12 +107,20 @@ class SoulbladeCorrupterTriggeredAbility extends AttacksAllTriggeredAbility {
|
|||
Permanent permanent = game.getPermanent(event.getSourceId());
|
||||
if (permanent != null) {
|
||||
Player player = game.getPlayer(permanent.getControllerId());
|
||||
return player != null && player.hasOpponent(getControllerId(), game);
|
||||
if (player != null && player.hasOpponent(getControllerId(), game)) {
|
||||
getEffects().setTargetPointer(new FixedTarget(permanent, game));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever a creature with a +1/+1 counter on it attacks one of your opponents, that creature gains deathtouch until end of turn.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public SoulbladeCorrupterTriggeredAbility copy() {
|
||||
return new SoulbladeCorrupterTriggeredAbility(this);
|
||||
|
|
|
@ -31,11 +31,11 @@ import java.util.UUID;
|
|||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.common.FilterInstantOrSorceryCard;
|
||||
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
@ -62,7 +62,7 @@ public class Spellseeker extends CardImpl {
|
|||
|
||||
// When Spellseeker enters the battlefield, you may search your library for an instant or sorcery card with converted mana cost 2 or less, reveal it, put it into your hand, then shuffle your library.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, filter), true, true),
|
||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true),
|
||||
true
|
||||
));
|
||||
}
|
||||
|
|
|
@ -70,7 +70,7 @@ class StunningReversalEffect extends ReplacementEffectImpl {
|
|||
|
||||
public StunningReversalEffect() {
|
||||
super(Duration.EndOfTurn, Outcome.Benefit);
|
||||
staticText = "The next time you would lose the game this turn, instead draw seven cards and your life total becomes 1. ";
|
||||
staticText = "The next time you would lose the game this turn, instead draw seven cards and your life total becomes 1";
|
||||
}
|
||||
|
||||
public StunningReversalEffect(final StunningReversalEffect effect) {
|
||||
|
|
|
@ -50,7 +50,7 @@ import mage.target.common.TargetCreaturePermanent;
|
|||
*/
|
||||
public class TheCrowdGoesWild extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with a +1/+1 counter on it");
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each creature with a +1/+1 counter on it");
|
||||
|
||||
static {
|
||||
filter.add(new CounterPredicate(CounterType.P1P1));
|
||||
|
@ -64,7 +64,7 @@ public class TheCrowdGoesWild extends CardImpl {
|
|||
|
||||
// Support X (Put a +1/+1 counter on each of up to X target creatures.)
|
||||
this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance())
|
||||
.setText("Support X <i>(Put a +1/+1 counter on each of up to X target creatures.)</i>")
|
||||
.setText("Support X <i>(Put a +1/+1 counter on each of up to X target creatures.)</i><br>")
|
||||
);
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
|
||||
|
|
|
@ -35,11 +35,11 @@ import mage.abilities.dynamicvalue.common.CountersSourceCount;
|
|||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.keyword.PartnerWithAbility;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.counters.CounterType;
|
||||
|
||||
/**
|
||||
|
@ -63,7 +63,9 @@ public class ToothyImaginaryFriend extends CardImpl {
|
|||
this.addAbility(new DrawCardControllerTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), true));
|
||||
|
||||
// When Toothy leaves the battlefield, draw a card for each +1/+1 counter on it.
|
||||
this.addAbility(new LeavesBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(new CountersSourceCount(CounterType.P1P1)), false));
|
||||
this.addAbility(new LeavesBattlefieldTriggeredAbility(
|
||||
new DrawCardSourceControllerEffect(new CountersSourceCount(CounterType.P1P1))
|
||||
.setText("draw a card for each +1/+1 counter on it"), false));
|
||||
}
|
||||
|
||||
public ToothyImaginaryFriend(final ToothyImaginaryFriend card) {
|
||||
|
|
|
@ -40,9 +40,9 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AttachmentType;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
@ -54,10 +54,9 @@ import mage.target.common.TargetCreaturePermanent;
|
|||
public class UnflinchingCourage extends CardImpl {
|
||||
|
||||
public UnflinchingCourage(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}{W}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}{W}");
|
||||
this.subtype.add(SubType.AURA);
|
||||
|
||||
|
||||
// Enchant creature
|
||||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||
this.getSpellAbility().addTarget(auraTarget);
|
||||
|
@ -66,9 +65,10 @@ public class UnflinchingCourage extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
|
||||
// Enchanted creature gets +2/+2 and has trample and lifelink.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(TrampleAbility.getInstance(), AttachmentType.AURA)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(LifelinkAbility.getInstance(), AttachmentType.AURA)));
|
||||
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(TrampleAbility.getInstance(), AttachmentType.AURA).setText("and has trample"));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(LifelinkAbility.getInstance(), AttachmentType.AURA).setText("and lifelink"));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
public UnflinchingCourage(final UnflinchingCourage card) {
|
||||
|
|
|
@ -29,7 +29,7 @@ package mage.cards.v;
|
|||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.DealsDamageToOpponentTriggeredAbility;
|
||||
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
|
||||
import mage.abilities.effects.common.LoseHalfLifeTargetEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
|
@ -61,7 +61,7 @@ public class VirtusTheVeiled extends CardImpl {
|
|||
this.addAbility(DeathtouchAbility.getInstance());
|
||||
|
||||
// Whenever Virtus the Veiled deals combat damage to a player, that player loses half their life, rounded up.
|
||||
this.addAbility(new DealsDamageToOpponentTriggeredAbility(new LoseHalfLifeTargetEffect(), false, true, true));
|
||||
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new LoseHalfLifeTargetEffect(), false, true));
|
||||
}
|
||||
|
||||
public VirtusTheVeiled(final VirtusTheVeiled card) {
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
* authors and should not be interpreted as representing official policies, either expressed
|
||||
* or implied, of BetaSteward_at_googlemail.com.
|
||||
*/
|
||||
|
||||
package mage.abilities.common;
|
||||
|
||||
import mage.abilities.TriggeredAbilityImpl;
|
||||
|
@ -65,6 +64,6 @@ public class WinsCoinFlipTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever a player wins a coin flip," + super.getRule();
|
||||
return "Whenever a player wins a coin flip, " + super.getRule();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -115,7 +115,7 @@ public class DrawCardTargetEffect extends OneShotEffect {
|
|||
} else {
|
||||
target = mode.getTargets().get(0);
|
||||
}
|
||||
sb.append("Target ").append(target.getTargetName());
|
||||
sb.append("target ").append(target.getTargetName());
|
||||
} else {
|
||||
sb.append("that player");
|
||||
}
|
||||
|
|
|
@ -117,7 +117,7 @@ class PartnersWithSearchEffect extends OneShotEffect {
|
|||
private final String partnerName;
|
||||
|
||||
public PartnersWithSearchEffect(String partnerName) {
|
||||
super(Outcome.Detriment);
|
||||
super(Outcome.DrawCard);
|
||||
this.partnerName = partnerName;
|
||||
this.staticText = "";
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue