Fix formatting in several card files

This commit is contained in:
Fenhl 2016-05-16 02:01:09 +00:00
parent eb50790b97
commit 77b32014f6
35 changed files with 493 additions and 463 deletions

View file

@ -59,21 +59,22 @@ public class LongForgottenGohei extends CardImpl {
}
public LongForgottenGohei(UUID ownerId) {
super(ownerId, 261, "Long-Forgotten Gohei", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{3}");
this.expansionSetCode = "CHK";
// Arcane spells you cast cost {1} less to cast.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionControllerEffect(arcaneFilter, 1)));
// Spirit creatures you control get +1/+1.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, spiritFilter, false)));
super(ownerId, 261, "Long-Forgotten Gohei", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{3}");
this.expansionSetCode = "CHK";
// Arcane spells you cast cost {1} less to cast.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionControllerEffect(arcaneFilter, 1)));
// Spirit creatures you control get +1/+1.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, spiritFilter, false)));
}
public LongForgottenGohei(final LongForgottenGohei card) {
super(card);
super(card);
}
@Override
public LongForgottenGohei copy() {
return new LongForgottenGohei(this);
return new LongForgottenGohei(this);
}
}

View file

@ -46,21 +46,20 @@ import mage.watchers.common.DamagedByWatcher;
public class YamabushisFlame extends CardImpl {
public YamabushisFlame(UUID ownerId) {
super(ownerId, 198, "Yamabushi's Flame", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{2}{R}");
this.expansionSetCode = "CHK";
super(ownerId, 198, "Yamabushi's Flame", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{2}{R}");
this.expansionSetCode = "CHK";
// Yamabushi's Flame deals 3 damage to target creature or player.
this.getSpellAbility().addEffect(new DamageTargetEffect(3));
this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
// Yamabushi's Flame deals 3 damage to target creature or player.
this.getSpellAbility().addEffect(new DamageTargetEffect(3));
this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
// If a creature dealt damage this way would die this turn, exile it instead.
this.getSpellAbility().addEffect(new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn));
this.getSpellAbility().addWatcher(new DamagedByWatcher());
}
// If a creature dealt damage this way would die this turn, exile it instead.
this.getSpellAbility().addEffect(new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn));
this.getSpellAbility().addWatcher(new DamagedByWatcher());
}
public YamabushisFlame(final YamabushisFlame card) {
super(card);
public YamabushisFlame(final YamabushisFlame card) {
super(card);
}
@Override

View file

@ -53,73 +53,69 @@ import java.util.UUID;
*/
public class ThrummingStone extends CardImpl {
//applies to all spells
private static final FilterSpell anySpellFilter = new FilterSpell("Spells you cast");
//applies to all spells
private static final FilterSpell anySpellFilter = new FilterSpell("Spells you cast");
public ThrummingStone(UUID ownerId) {
super(ownerId, 142, "Thrumming Stone", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{5}");
this.expansionSetCode = "CSP";
this.supertype.add("Legendary");
public ThrummingStone(UUID ownerId) {
super(ownerId, 142, "Thrumming Stone", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{5}");
this.expansionSetCode = "CSP";
this.supertype.add("Legendary");
// spells you cast have Ripple 4
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ThrummingStoneGainAbilitySpellsEffect(new RippleAbility(4), anySpellFilter)));
}
// spells you cast have Ripple 4
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ThrummingStoneGainAbilitySpellsEffect(new RippleAbility(4), anySpellFilter)));
}
public ThrummingStone(final ThrummingStone card) {
super(card);
}
@Override
public ThrummingStone copy() {
return new ThrummingStone(this);
}
public ThrummingStone(final ThrummingStone card) {
super(card);
}
@Override
public ThrummingStone copy() {
return new ThrummingStone(this);
}
}
class ThrummingStoneGainAbilitySpellsEffect extends ContinuousEffectImpl {
private final Ability ability;
private final FilterSpell filter;
private final Ability ability;
private final FilterSpell filter;
public ThrummingStoneGainAbilitySpellsEffect(Ability ability, FilterSpell filter) {
super(Duration.WhileOnBattlefield, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility);
this.ability = ability;
this.filter = filter;
staticText = filter.getMessage() + " have " + ability.getRule();
}
public ThrummingStoneGainAbilitySpellsEffect(final ThrummingStoneGainAbilitySpellsEffect effect) {
super(effect);
this.ability = effect.ability.copy();
this.filter = effect.filter.copy();
}
@Override
public ThrummingStoneGainAbilitySpellsEffect copy() {
return new ThrummingStoneGainAbilitySpellsEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
Permanent permanent = game.getPermanent(source.getSourceId());
if (player != null && permanent != null) {
for (StackObject stackObject : game.getStack()) {
// only spells cast, so no copies of spells
if ((stackObject instanceof Spell) && !stackObject.isCopy() && stackObject.getControllerId().equals(source.getControllerId())) {
Spell spell = (Spell) stackObject;
if (filter.match(spell, game)) {
if (!spell.getAbilities().contains(ability)) {
game.getState().addOtherAbility(spell.getCard(), ability);
}
}
}
}
return true;
public ThrummingStoneGainAbilitySpellsEffect(Ability ability, FilterSpell filter) {
super(Duration.WhileOnBattlefield, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility);
this.ability = ability;
this.filter = filter;
staticText = filter.getMessage() + " have " + ability.getRule();
}
public ThrummingStoneGainAbilitySpellsEffect(final ThrummingStoneGainAbilitySpellsEffect effect) {
super(effect);
this.ability = effect.ability.copy();
this.filter = effect.filter.copy();
}
@Override
public ThrummingStoneGainAbilitySpellsEffect copy() {
return new ThrummingStoneGainAbilitySpellsEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
Permanent permanent = game.getPermanent(source.getSourceId());
if (player != null && permanent != null) {
for (StackObject stackObject : game.getStack()) {
// only spells cast, so no copies of spells
if ((stackObject instanceof Spell) && !stackObject.isCopy() && stackObject.getControllerId().equals(source.getControllerId())) {
Spell spell = (Spell) stackObject;
if (filter.match(spell, game)) {
if (!spell.getAbilities().contains(ability)) {
game.getState().addOtherAbility(spell.getCard(), ability);
}
}
}
}
return true;
}
return false;
}
return false;
}
}

View file

@ -1 +1,52 @@
/* * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of BetaSteward_at_googlemail.com. */package mage.sets.eighthedition;import java.util.UUID;/** * * @author Backfir3 */public class Rhox extends mage.sets.tenthedition.Rhox { public Rhox(UUID ownerId) { super(ownerId); this.cardNumber = 277; this.expansionSetCode = "8ED"; } public Rhox(final Rhox card) { super(card); } @Override public Rhox copy() { return new Rhox(this); }}
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets.eighthedition;
import java.util.UUID;
/**
*
* @author Backfir3
*/
public class Rhox extends mage.sets.tenthedition.Rhox {
public Rhox(UUID ownerId) {
super(ownerId);
this.cardNumber = 277;
this.expansionSetCode = "8ED";
}
public Rhox(final Rhox card) {
super(card);
}
@Override
public Rhox copy() {
return new Rhox(this);
}
}

View file

@ -47,22 +47,21 @@ import mage.game.permanent.token.SoldierTokenWithHaste;
public class AssembleTheLegion extends CardImpl {
public AssembleTheLegion(UUID ownerId) {
super(ownerId, 142, "Assemble the Legion", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}{W}");
this.expansionSetCode = "GTC";
super(ownerId, 142, "Assemble the Legion", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}{W}");
this.expansionSetCode = "GTC";
// At the beginning of your upkeep, put a muster counter on Assemble the Legion. Then put a 1/1 red and white Soldier creature token with haste onto the battlefield for each muster counter on Assemble the Legion.
Ability ability = new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.MUSTER.createInstance()), TargetController.YOU, false);
ability.addEffect(new CreateTokenEffect(new SoldierTokenWithHaste(), new CountersCount(CounterType.MUSTER)));
this.addAbility(ability);
// At the beginning of your upkeep, put a muster counter on Assemble the Legion. Then put a 1/1 red and white Soldier creature token with haste onto the battlefield for each muster counter on Assemble the Legion.
Ability ability = new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.MUSTER.createInstance()), TargetController.YOU, false);
ability.addEffect(new CreateTokenEffect(new SoldierTokenWithHaste(), new CountersCount(CounterType.MUSTER)));
this.addAbility(ability);
}
public AssembleTheLegion(final AssembleTheLegion card) {
super(card);
super(card);
}
@Override
public AssembleTheLegion copy() {
return new AssembleTheLegion(this);
return new AssembleTheLegion(this);
}
}

View file

@ -66,93 +66,92 @@ import mage.util.CardUtil;
public class NightveilSpecter extends CardImpl {
public NightveilSpecter(UUID ownerId) {
super(ownerId, 222, "Nightveil Specter", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{U/B}{U/B}{U/B}");
this.expansionSetCode = "GTC";
this.subtype.add("Specter");
super(ownerId, 222, "Nightveil Specter", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{U/B}{U/B}{U/B}");
this.expansionSetCode = "GTC";
this.subtype.add("Specter");
this.power = new MageInt(2);
this.toughness = new MageInt(3);
this.power = new MageInt(2);
this.toughness = new MageInt(3);
// Flying
this.addAbility(FlyingAbility.getInstance());
// Flying
this.addAbility(FlyingAbility.getInstance());
// Whenever Nightveil Specter deals combat damage to a player, that player exiles the top card of his or her library.
this.addAbility(new DealsDamageToAPlayerTriggeredAbility(new NightveilSpecterExileEffect(),false, true));
// Whenever Nightveil Specter deals combat damage to a player, that player exiles the top card of his or her library.
this.addAbility(new DealsDamageToAPlayerTriggeredAbility(new NightveilSpecterExileEffect(),false, true));
// You may play cards exiled with Nightveil Specter.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new NightveilSpecterEffect()));
// You may play cards exiled with Nightveil Specter.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new NightveilSpecterEffect()));
}
public NightveilSpecter(final NightveilSpecter card) {
super(card);
super(card);
}
@Override
public NightveilSpecter copy() {
return new NightveilSpecter(this);
return new NightveilSpecter(this);
}
}
class NightveilSpecterExileEffect extends OneShotEffect {
public NightveilSpecterExileEffect() {
super(Outcome.Discard);
staticText = "that player exiles the top card of his or her library";
super(Outcome.Discard);
staticText = "that player exiles the top card of his or her library";
}
public NightveilSpecterExileEffect(final NightveilSpecterExileEffect effect) {
super(effect);
super(effect);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(targetPointer.getFirst(game, source));
if (player != null) {
Card card = player.getLibrary().removeFromTop(game);
MageObject sourceObject = game.getObject(source.getSourceId());
if (card != null && sourceObject != null) {
player.moveCardToExileWithInfo(card, CardUtil.getCardExileZoneId(game, source), sourceObject.getIdName(), source.getSourceId(), game, Zone.LIBRARY, true);
return true;
}
}
return false;
Player player = game.getPlayer(targetPointer.getFirst(game, source));
if (player != null) {
Card card = player.getLibrary().removeFromTop(game);
MageObject sourceObject = game.getObject(source.getSourceId());
if (card != null && sourceObject != null) {
player.moveCardToExileWithInfo(card, CardUtil.getCardExileZoneId(game, source), sourceObject.getIdName(), source.getSourceId(), game, Zone.LIBRARY, true);
return true;
}
}
return false;
}
@Override
public NightveilSpecterExileEffect copy() {
return new NightveilSpecterExileEffect(this);
return new NightveilSpecterExileEffect(this);
}
}
class NightveilSpecterEffect extends AsThoughEffectImpl {
public NightveilSpecterEffect() {
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.EndOfGame, Outcome.Benefit);
staticText = "You may play cards exiled with {this}";
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.EndOfGame, Outcome.Benefit);
staticText = "You may play cards exiled with {this}";
}
public NightveilSpecterEffect(final NightveilSpecterEffect effect) {
super(effect);
super(effect);
}
@Override
public boolean apply(Game game, Ability source) {
return true;
return true;
}
@Override
public NightveilSpecterEffect copy() {
return new NightveilSpecterEffect(this);
return new NightveilSpecterEffect(this);
}
@Override
public boolean applies(UUID objectId, Ability source, UUID affectedControllerId, Game game) {
Card card = game.getCard(objectId);
if (affectedControllerId.equals(source.getControllerId()) && card != null && game.getState().getZone(card.getId()) == Zone.EXILED) {
ExileZone zone = game.getExile().getExileZone(CardUtil.getCardExileZoneId(game, source));
return zone != null && zone.contains(card.getId());
}
return false;
Card card = game.getCard(objectId);
if (affectedControllerId.equals(source.getControllerId()) && card != null && game.getState().getZone(card.getId()) == Zone.EXILED) {
ExileZone zone = game.getExile().getExileZone(CardUtil.getCardExileZoneId(game, source));
return zone != null && zone.contains(card.getId());
}
return false;
}
}

View file

@ -48,28 +48,29 @@ import mage.target.common.TargetNonlandPermanent;
public class ThrullParasite extends CardImpl {
public ThrullParasite(UUID ownerId) {
super(ownerId, 81, "Thrull Parasite", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{B}");
this.expansionSetCode = "GTC";
this.subtype.add("Thrull");
super(ownerId, 81, "Thrull Parasite", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{B}");
this.expansionSetCode = "GTC";
this.subtype.add("Thrull");
this.power = new MageInt(1);
this.toughness = new MageInt(1);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// Extort
this.addAbility(new ExtortAbility());
// {tap}, Pay 2 life: Remove a counter from target nonland permanent.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RemoveCounterTargetEffect(), new TapSourceCost());
ability.addTarget(new TargetNonlandPermanent());
ability.addCost(new PayLifeCost(2));
this.addAbility(ability);
// Extort
this.addAbility(new ExtortAbility());
// {tap}, Pay 2 life: Remove a counter from target nonland permanent.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RemoveCounterTargetEffect(), new TapSourceCost());
ability.addTarget(new TargetNonlandPermanent());
ability.addCost(new PayLifeCost(2));
this.addAbility(ability);
}
public ThrullParasite(final ThrullParasite card) {
super(card);
super(card);
}
@Override
public ThrullParasite copy() {
return new ThrullParasite(this);
return new ThrullParasite(this);
}
}

View file

@ -52,32 +52,32 @@ public class UrborgSkeleton extends CardImpl {
private static final String staticText = "If Urborg Skeleton was kicked, it enters the battlefield with a +1/+1 counter on it";
public UrborgSkeleton(UUID ownerId) {
super(ownerId, 134, "Urborg Skeleton", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{B}");
this.expansionSetCode = "INV";
this.subtype.add("Skeleton");
super(ownerId, 134, "Urborg Skeleton", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{B}");
this.expansionSetCode = "INV";
this.subtype.add("Skeleton");
this.power = new MageInt(0);
this.toughness = new MageInt(1);
this.power = new MageInt(0);
this.toughness = new MageInt(1);
// Kicker {3} (You may pay an additional {3} as you cast this spell.)
this.addAbility(new KickerAbility("{3}"));
// Kicker {3} (You may pay an additional {3} as you cast this spell.)
this.addAbility(new KickerAbility("{3}"));
// {B}: Regenerate Urborg Skeleton.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{B}")));
// {B}: Regenerate Urborg Skeleton.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{B}")));
// If Urborg Skeleton was kicked, it enters the battlefield with a +1/+1 counter on it.
Ability ability = new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)),
KickedCondition.getInstance(), staticText,"");
this.addAbility(ability);
// If Urborg Skeleton was kicked, it enters the battlefield with a +1/+1 counter on it.
Ability ability = new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)),
KickedCondition.getInstance(), staticText,"");
this.addAbility(ability);
}
public UrborgSkeleton(final UrborgSkeleton card) {
super(card);
super(card);
}
@Override
public UrborgSkeleton copy() {
return new UrborgSkeleton(this);
return new UrborgSkeleton(this);
}
}
}

View file

@ -59,18 +59,18 @@ public class CateranBrute extends CardImpl {
}
public CateranBrute(UUID ownerId) {
super(ownerId, 120, "Cateran Brute", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Horror");
this.subtype.add("Mercenary");
super(ownerId, 120, "Cateran Brute", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Horror");
this.subtype.add("Mercenary");
this.power = new MageInt(2);
this.toughness = new MageInt(2);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// {2}, {T}: Search your library for a Mercenary permanent card with converted mana cost 2 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(2));
this.addAbility(ability);
// {2}, {T}: Search your library for a Mercenary permanent card with converted mana cost 2 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(2));
this.addAbility(ability);
}
public CateranBrute(final CateranBrute card) {
@ -81,5 +81,4 @@ public class CateranBrute extends CardImpl {
public CateranBrute copy() {
return new CateranBrute(this);
}
}
}

View file

@ -60,19 +60,21 @@ public class CateranEnforcer extends CardImpl {
}
public CateranEnforcer(UUID ownerId) {
super(ownerId, 121, "Cateran Enforcer", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Horror");
this.subtype.add("Mercenary");
super(ownerId, 121, "Cateran Enforcer", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Horror");
this.subtype.add("Mercenary");
this.power = new MageInt(4);
this.toughness = new MageInt(3);
this.power = new MageInt(4);
this.toughness = new MageInt(3);
// Fear
this.addAbility(FearAbility.getInstance());
// {4}, {T}: Search your library for a Mercenary permanent card with converted mana cost 4 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(4));
this.addAbility(ability);
// {4}, {T}: Search your library for a Mercenary permanent card with converted mana cost 4 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(4));
this.addAbility(ability);
}
public CateranEnforcer(final CateranEnforcer card) {
@ -83,5 +85,4 @@ public class CateranEnforcer extends CardImpl {
public CateranEnforcer copy() {
return new CateranEnforcer(this);
}
}
}

View file

@ -55,22 +55,22 @@ public class CateranKidnappers extends CardImpl {
static {
filter.add(new SubtypePredicate("Mercenary"));
filter.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, 4));
filter.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, 4));
}
public CateranKidnappers(UUID ownerId) {
super(ownerId, 122, "Cateran Kidnappers", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Mercenary");
super(ownerId, 122, "Cateran Kidnappers", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Mercenary");
this.power = new MageInt(4);
this.toughness = new MageInt(2);
// {3}, {T}: Search your library for a Mercenary permanent card with converted mana cost 3 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(3));
this.addAbility(ability);
this.power = new MageInt(4);
this.toughness = new MageInt(2);
// {3}, {T}: Search your library for a Mercenary permanent card with converted mana cost 3 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(3));
this.addAbility(ability);
}
public CateranKidnappers(final CateranKidnappers card) {
@ -81,5 +81,4 @@ public class CateranKidnappers extends CardImpl {
public CateranKidnappers copy() {
return new CateranKidnappers(this);
}
}
}

View file

@ -63,20 +63,21 @@ public class CateranOverlord extends CardImpl {
}
public CateranOverlord(UUID ownerId) {
super(ownerId, 123, "Cateran Overlord", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{4}{B}{B}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Horror");
this.subtype.add("Mercenary");
super(ownerId, 123, "Cateran Overlord", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{4}{B}{B}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Horror");
this.subtype.add("Mercenary");
this.power = new MageInt(7);
this.toughness = new MageInt(5);
// Sacrifice a creature: Regenerate Cateran Overlord.
this.power = new MageInt(7);
this.toughness = new MageInt(5);
// Sacrifice a creature: Regenerate Cateran Overlord.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new SacrificeTargetCost(new TargetControlledCreaturePermanent())));
// {6}, {T}: Search your library for a Mercenary permanent card with converted mana cost 6 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(6));
this.addAbility(ability);
// {6}, {T}: Search your library for a Mercenary permanent card with converted mana cost 6 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(6));
this.addAbility(ability);
}
public CateranOverlord(final CateranOverlord card) {
@ -87,5 +88,4 @@ public class CateranOverlord extends CardImpl {
public CateranOverlord copy() {
return new CateranOverlord(this);
}
}
}

View file

@ -55,22 +55,22 @@ public class CateranPersuader extends CardImpl {
static {
filter.add(new SubtypePredicate("Mercenary"));
filter.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, 2));
filter.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, 2));
}
public CateranPersuader(UUID ownerId) {
super(ownerId, 124, "Cateran Persuader", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{B}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Mercenary");
super(ownerId, 124, "Cateran Persuader", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{B}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Mercenary");
this.power = new MageInt(2);
this.toughness = new MageInt(1);
// {1}, {T}: Search your library for a Mercenary permanent card with converted mana cost 1 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(1));
this.addAbility(ability);
this.power = new MageInt(2);
this.toughness = new MageInt(1);
// {1}, {T}: Search your library for a Mercenary permanent card with converted mana cost 1 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(1));
this.addAbility(ability);
}
public CateranPersuader(final CateranPersuader card) {
@ -81,5 +81,4 @@ public class CateranPersuader extends CardImpl {
public CateranPersuader copy() {
return new CateranPersuader(this);
}
}
}

View file

@ -60,19 +60,21 @@ public class CateranSlaver extends CardImpl {
}
public CateranSlaver(UUID ownerId) {
super(ownerId, 125, "Cateran Slaver", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Horror");
this.subtype.add("Mercenary");
super(ownerId, 125, "Cateran Slaver", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Horror");
this.subtype.add("Mercenary");
this.power = new MageInt(5);
this.toughness = new MageInt(5);
this.power = new MageInt(5);
this.toughness = new MageInt(5);
// Swampwalk
this.addAbility(new SwampwalkAbility());
// {5}, {T}: Search your library for a Mercenary permanent card with converted mana cost 5 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(5));
this.addAbility(ability);
// {5}, {T}: Search your library for a Mercenary permanent card with converted mana cost 5 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(5));
this.addAbility(ability);
}
public CateranSlaver(final CateranSlaver card) {
@ -83,5 +85,4 @@ public class CateranSlaver extends CardImpl {
public CateranSlaver copy() {
return new CateranSlaver(this);
}
}
}

View file

@ -51,11 +51,10 @@ public class CateranSummons extends CardImpl {
}
public CateranSummons(UUID ownerId) {
super(ownerId, 126, "Cateran Summons", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{B}");
this.expansionSetCode = "MMQ";
super(ownerId, 126, "Cateran Summons", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{B}");
this.expansionSetCode = "MMQ";
// Search your library for a Mercenary card, reveal that card, and put it into your hand. Then shuffle your library.
// Search your library for a Mercenary card, reveal that card, and put it into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true));
}
@ -67,5 +66,4 @@ public class CateranSummons extends CardImpl {
public CateranSummons copy() {
return new CateranSummons(this);
}
}
}

View file

@ -46,15 +46,17 @@ import mage.cards.CardImpl;
public class MoltingHarpy extends CardImpl {
public MoltingHarpy(UUID ownerId) {
super(ownerId, 148, "Molting Harpy", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Harpy");
this.subtype.add("Mercenary");
super(ownerId, 148, "Molting Harpy", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Harpy");
this.subtype.add("Mercenary");
this.power = new MageInt(2);
this.toughness = new MageInt(1);
this.power = new MageInt(2);
this.toughness = new MageInt(1);
// Flying
this.addAbility(FlyingAbility.getInstance());
// At the beginning of your upkeep, sacrifice Molting Harpy unless you pay {2}.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new ManaCostsImpl("{2}")), TargetController.YOU, false));
}
@ -67,5 +69,4 @@ public class MoltingHarpy extends CardImpl {
public MoltingHarpy copy() {
return new MoltingHarpy(this);
}
}
}

View file

@ -45,34 +45,34 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public class NightwindGlider extends CardImpl {
private static final FilterCard filter = new FilterCard("Black");
private static final FilterCard filter = new FilterCard("Black");
static {
filter.add(new ColorPredicate(ObjectColor.BLACK));
}
static {
filter.add(new ColorPredicate(ObjectColor.BLACK));
}
public NightwindGlider(UUID ownerId) {
super(ownerId, 31, "Nightwind Glider", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Rebel");
public NightwindGlider(UUID ownerId) {
super(ownerId, 31, "Nightwind Glider", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Rebel");
this.power = new MageInt(2);
this.toughness = new MageInt(1);
// Flying
this.addAbility(FlyingAbility.getInstance());
// Protection from black
this.addAbility(new ProtectionAbility(filter));
}
this.power = new MageInt(2);
this.toughness = new MageInt(1);
public NightwindGlider(final NightwindGlider card) {
super(card);
}
// Flying
this.addAbility(FlyingAbility.getInstance());
@Override
public NightwindGlider copy() {
return new NightwindGlider(this);
}
// Protection from black
this.addAbility(new ProtectionAbility(filter));
}
public NightwindGlider(final NightwindGlider card) {
super(card);
}
@Override
public NightwindGlider copy() {
return new NightwindGlider(this);
}
}

View file

@ -46,16 +46,16 @@ import mage.cards.CardImpl;
public class PrimevalShambler extends CardImpl {
public PrimevalShambler(UUID ownerId) {
super(ownerId, 152, "Primeval Shambler", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{4}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Horror");
this.subtype.add("Mercenary");
super(ownerId, 152, "Primeval Shambler", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{4}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Horror");
this.subtype.add("Mercenary");
this.power = new MageInt(3);
this.toughness = new MageInt(3);
// {B}: Primeval Shambler gets +1/+1 until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl("{B}")));
this.power = new MageInt(3);
this.toughness = new MageInt(3);
// {B}: Primeval Shambler gets +1/+1 until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl("{B}")));
}
public PrimevalShambler(final PrimevalShambler card) {
@ -66,5 +66,4 @@ public class PrimevalShambler extends CardImpl {
public PrimevalShambler copy() {
return new PrimevalShambler(this);
}
}
}

View file

@ -60,21 +60,21 @@ public class RamosianCaptain extends CardImpl {
}
public RamosianCaptain(UUID ownerId) {
super(ownerId, 35, "Ramosian Captain", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Rebel");
super(ownerId, 35, "Ramosian Captain", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Rebel");
this.power = new MageInt(2);
this.toughness = new MageInt(2);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// First strike
this.addAbility(FirstStrikeAbility.getInstance());
// {5}, {T}: Search your library for a Rebel permanent card with converted mana cost 4 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(5));
this.addAbility(ability);
// {5}, {T}: Search your library for a Rebel permanent card with converted mana cost 4 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(5));
this.addAbility(ability);
}
public RamosianCaptain(final RamosianCaptain card) {
@ -85,5 +85,4 @@ public class RamosianCaptain extends CardImpl {
public RamosianCaptain copy() {
return new RamosianCaptain(this);
}
}

View file

@ -59,18 +59,18 @@ public class RamosianCommander extends CardImpl {
}
public RamosianCommander(UUID ownerId) {
super(ownerId, 36, "Ramosian Commander", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Rebel");
super(ownerId, 36, "Ramosian Commander", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Rebel");
this.power = new MageInt(2);
this.toughness = new MageInt(4);
// {6}, {T}: Search your library for a Rebel permanent card with converted mana cost 5 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(6));
this.addAbility(ability);
this.power = new MageInt(2);
this.toughness = new MageInt(4);
// {6}, {T}: Search your library for a Rebel permanent card with converted mana cost 5 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(6));
this.addAbility(ability);
}
public RamosianCommander(final RamosianCommander card) {
@ -81,5 +81,4 @@ public class RamosianCommander extends CardImpl {
public RamosianCommander copy() {
return new RamosianCommander(this);
}
}

View file

@ -59,18 +59,18 @@ public class RamosianLieutenant extends CardImpl {
}
public RamosianLieutenant(UUID ownerId) {
super(ownerId, 37, "Ramosian Lieutenant", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{W}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Rebel");
super(ownerId, 37, "Ramosian Lieutenant", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{W}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Rebel");
this.power = new MageInt(1);
this.toughness = new MageInt(2);
// {4}, {T}: Search your library for a Rebel permanent card with converted mana cost 3 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(4));
this.addAbility(ability);
this.power = new MageInt(1);
this.toughness = new MageInt(2);
// {4}, {T}: Search your library for a Rebel permanent card with converted mana cost 3 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(4));
this.addAbility(ability);
}
public RamosianLieutenant(final RamosianLieutenant card) {
@ -81,5 +81,4 @@ public class RamosianLieutenant extends CardImpl {
public RamosianLieutenant copy() {
return new RamosianLieutenant(this);
}
}

View file

@ -59,18 +59,18 @@ public class RamosianSergeant extends CardImpl {
}
public RamosianSergeant(UUID ownerId) {
super(ownerId, 39, "Ramosian Sergeant", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{W}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Rebel");
super(ownerId, 39, "Ramosian Sergeant", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{W}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Rebel");
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// {3}, {T}: Search your library for a Rebel permanent card with converted mana cost 2 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(3));
this.addAbility(ability);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// {3}, {T}: Search your library for a Rebel permanent card with converted mana cost 2 or less and put it onto the battlefield. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost());
ability.addManaCost(new GenericManaCost(3));
this.addAbility(ability);
}
public RamosianSergeant(final RamosianSergeant card) {
@ -81,5 +81,4 @@ public class RamosianSergeant extends CardImpl {
public RamosianSergeant copy() {
return new RamosianSergeant(this);
}
}

View file

@ -46,21 +46,22 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
public class RampartCrawler extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Walls");
static {
filter.add(new SubtypePredicate("Wall"));
}
public RampartCrawler(UUID ownerId) {
super(ownerId, 156, "Rampart Crawler", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Lizard");
this.subtype.add("Mercenary");
super(ownerId, 156, "Rampart Crawler", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Lizard");
this.subtype.add("Mercenary");
this.power = new MageInt(1);
this.toughness = new MageInt(1);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// Rampart Crawler can't be blocked by Walls.
this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield)));
this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield)));
}
public RampartCrawler(final RampartCrawler card) {
@ -71,5 +72,4 @@ public class RampartCrawler extends CardImpl {
public RampartCrawler copy() {
return new RampartCrawler(this);
}
}

View file

@ -43,14 +43,14 @@ import mage.cards.CardImpl;
public class SkulkingFugitive extends CardImpl {
public SkulkingFugitive(UUID ownerId) {
super(ownerId, 161, "Skulking Fugitive", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Horror");
this.subtype.add("Mercenary");
super(ownerId, 161, "Skulking Fugitive", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Horror");
this.subtype.add("Mercenary");
this.power = new MageInt(3);
this.toughness = new MageInt(4);
this.power = new MageInt(3);
this.toughness = new MageInt(4);
// When Skulking Fugitive becomes the target of a spell or ability, sacrifice it.
this.addAbility(new BecomesTargetTriggeredAbility(new SacrificeSourceEffect()));
}
@ -63,5 +63,4 @@ public class SkulkingFugitive extends CardImpl {
public SkulkingFugitive copy() {
return new SkulkingFugitive(this);
}
}
}

View file

@ -53,16 +53,16 @@ public class StrongarmThug extends CardImpl {
}
public StrongarmThug(UUID ownerId) {
super(ownerId, 165, "Strongarm Thug", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Mercenary");
super(ownerId, 165, "Strongarm Thug", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{B}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Mercenary");
this.power = new MageInt(1);
this.toughness = new MageInt(1);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// When Strongarm Thug enters the battlefield, you may return target Mercenary card from your graveyard to your hand.
Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), true);
Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), true);
ability.addTarget(new TargetCardInYourGraveyard(filter));
this.addAbility(ability);
}
@ -75,5 +75,4 @@ public class StrongarmThug extends CardImpl {
public StrongarmThug copy() {
return new StrongarmThug(this);
}
}
}

View file

@ -45,34 +45,34 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public class ThermalGlider extends CardImpl {
private static final FilterCard filter = new FilterCard("Red");
private static final FilterCard filter = new FilterCard("Red");
static {
filter.add(new ColorPredicate(ObjectColor.RED));
}
static {
filter.add(new ColorPredicate(ObjectColor.RED));
}
public ThermalGlider(UUID ownerId) {
super(ownerId, 53, "Thermal Glider", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Rebel");
public ThermalGlider(UUID ownerId) {
super(ownerId, 53, "Thermal Glider", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}");
this.expansionSetCode = "MMQ";
this.subtype.add("Human");
this.subtype.add("Rebel");
this.power = new MageInt(2);
this.toughness = new MageInt(1);
// Flying
this.addAbility(FlyingAbility.getInstance());
// Protection from red
this.addAbility(new ProtectionAbility(filter));
}
this.power = new MageInt(2);
this.toughness = new MageInt(1);
public ThermalGlider(final ThermalGlider card) {
super(card);
}
// Flying
this.addAbility(FlyingAbility.getInstance());
@Override
public ThermalGlider copy() {
return new ThermalGlider(this);
}
// Protection from red
this.addAbility(new ProtectionAbility(filter));
}
public ThermalGlider(final ThermalGlider card) {
super(card);
}
@Override
public ThermalGlider copy() {
return new ThermalGlider(this);
}
}

View file

@ -52,18 +52,18 @@ import mage.target.common.TargetCardInHand;
public class StampedeDriver extends CardImpl {
public StampedeDriver(UUID ownerId) {
super(ownerId, 122, "Stampede Driver", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{G}");
this.expansionSetCode = "NMS";
this.subtype.add("Human");
this.subtype.add("Spellshaper");
super(ownerId, 122, "Stampede Driver", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{G}");
this.expansionSetCode = "NMS";
this.subtype.add("Human");
this.subtype.add("Spellshaper");
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// {1}{G}, {T}, Discard a card: Creatures you control get +1/+1 and gain trample until end of turn.
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// {1}{G}, {T}, Discard a card: Creatures you control get +1/+1 and gain trample until end of turn.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl("{1}{G}"));
ability.addCost(new TapSourceCost());
ability.addCost(new DiscardTargetCost(new TargetCardInHand()));
ability.addCost(new TapSourceCost());
ability.addCost(new DiscardTargetCost(new TargetCardInHand()));
ability.addEffect(new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, new FilterCreaturePermanent()));
this.addAbility(ability);
}

View file

@ -9,25 +9,24 @@ import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
public class HeroesRemembered extends CardImpl{
public class HeroesRemembered extends CardImpl {
public HeroesRemembered(UUID ownerId){
super(ownerId, 7, "Heroes Remembered", Rarity.RARE, new CardType[] {CardType.SORCERY}, "{6}{W}{W}{W}");
this.expansionSetCode = "PLC";
//You gain 20 life.
this.getSpellAbility().addEffect(new GainLifeEffect(20));
//Suspend 10-{W}
this.addAbility(new SuspendAbility(10, new ManaCostsImpl("{W}"), this));
}
public HeroesRemembered(final HeroesRemembered card) {
super(card);
}
public HeroesRemembered(UUID ownerId){
super(ownerId, 7, "Heroes Remembered", Rarity.RARE, new CardType[] {CardType.SORCERY}, "{6}{W}{W}{W}");
this.expansionSetCode = "PLC";
@Override
public Card copy() {
return new HeroesRemembered(this);
}
//You gain 20 life.
this.getSpellAbility().addEffect(new GainLifeEffect(20));
//Suspend 10-{W}
this.addAbility(new SuspendAbility(10, new ManaCostsImpl("{W}"), this));
}
public HeroesRemembered(final HeroesRemembered card) {
super(card);
}
@Override
public Card copy() {
return new HeroesRemembered(this);
}
}

View file

@ -44,26 +44,26 @@ import mage.constants.Zone;
public class IllusoryAngel extends CardImpl {
public IllusoryAngel(UUID ownerId) {
super(ownerId, 19, "Illusory Angel", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{U}");
this.expansionSetCode = "PC2";
this.subtype.add("Angel");
this.subtype.add("Illusion");
this.power = new MageInt(4);
this.toughness = new MageInt(4);
super(ownerId, 19, "Illusory Angel", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{U}");
this.expansionSetCode = "PC2";
this.subtype.add("Angel");
this.subtype.add("Illusion");
this.power = new MageInt(4);
this.toughness = new MageInt(4);
// Flying
this.addAbility(FlyingAbility.getInstance());
// Flying
this.addAbility(FlyingAbility.getInstance());
// Cast Illusory Angel only if you've cast another spell this turn.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new CastOnlyIfYouHaveCastAnotherSpellEffect()));
// Cast Illusory Angel only if you've cast another spell this turn.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new CastOnlyIfYouHaveCastAnotherSpellEffect()));
}
public IllusoryAngel(final IllusoryAngel card) {
super(card);
super(card);
}
@Override
public IllusoryAngel copy() {
return new IllusoryAngel(this);
return new IllusoryAngel(this);
}
}

View file

@ -41,26 +41,24 @@ import mage.cards.CardImpl;
public class ShardlessAgent extends CardImpl {
public ShardlessAgent(UUID ownerId) {
super(ownerId, 104, "Shardless Agent", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT,CardType.CREATURE}, "{1}{G}{U}");
this.expansionSetCode = "PC2";
this.subtype.add("Human");
this.subtype.add("Rogue");
super(ownerId, 104, "Shardless Agent", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT,CardType.CREATURE}, "{1}{G}{U}");
this.expansionSetCode = "PC2";
this.subtype.add("Human");
this.subtype.add("Rogue");
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// Cascade
this.addAbility(new CascadeAbility());
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// Cascade
this.addAbility(new CascadeAbility());
}
public ShardlessAgent(final ShardlessAgent card) {
super(card);
super(card);
}
@Override
public ShardlessAgent copy() {
return new ShardlessAgent(this);
return new ShardlessAgent(this);
}
}

View file

@ -42,24 +42,22 @@ import mage.cards.CardImpl;
public class Overwhelm extends CardImpl {
public Overwhelm(UUID ownerId) {
super(ownerId, 175, "Overwhelm", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{5}{G}{G}");
this.expansionSetCode = "RAV";
super(ownerId, 175, "Overwhelm", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{5}{G}{G}");
this.expansionSetCode = "RAV";
// Convoke (Each creature you tap while casting this spell reduces its cost by {1} or by one mana of that creature's color.)
this.addAbility(new ConvokeAbility());
// Convoke (Each creature you tap while casting this spell reduces its cost by {1} or by one mana of that creature's color.)
this.addAbility(new ConvokeAbility());
// Creatures you control get +3/+3 until end of turn.
this.getSpellAbility().addEffect(new BoostControlledEffect(3, 3, Duration.EndOfTurn));
// Creatures you control get +3/+3 until end of turn.
this.getSpellAbility().addEffect(new BoostControlledEffect(3, 3, Duration.EndOfTurn));
}
public Overwhelm(final Overwhelm card) {
super(card);
super(card);
}
@Override
public Overwhelm copy() {
return new Overwhelm(this);
return new Overwhelm(this);
}
}

View file

@ -45,11 +45,10 @@ import mage.target.common.TargetCreaturePermanent;
public class InnerCalmOuterStrength extends CardImpl {
public InnerCalmOuterStrength(UUID ownerId) {
super(ownerId, 133, "Inner Calm, Outer Strength", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{2}{G}");
super(ownerId, 133, "Inner Calm, Outer Strength", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{2}{G}");
this.expansionSetCode = "SOK";
this.subtype.add("Arcane");
// Target creature gets +X/+X until end of turn, where X is the number of cards in your hand.
DynamicValue xValue= new CardsInControllerHandCount();
Effect effect = new BoostTargetEffect(xValue, xValue, Duration.EndOfTurn, true);

View file

@ -48,10 +48,9 @@ import mage.target.common.TargetCreaturePermanent;
public class CrownOfFlames extends CardImpl {
public CrownOfFlames(UUID ownerId) {
super(ownerId, 169, "Crown of Flames", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{R}");
super(ownerId, 169, "Crown of Flames", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{R}");
this.expansionSetCode = "TMP";
this.subtype.add("Aura");
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();

View file

@ -49,15 +49,15 @@ import mage.target.common.TargetAttackingCreature;
public class Condemn extends CardImpl {
public Condemn(UUID ownerId) {
super(ownerId, 13, "Condemn", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{W}");
super(ownerId, 13, "Condemn", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{W}");
this.expansionSetCode = "10E";
// Put target attacking creature on the bottom of its owner's library.
this.getSpellAbility().addTarget(new TargetAttackingCreature());
this.getSpellAbility().addEffect(new PutOnLibraryTargetEffect(false));
// Its controller gains life equal to its toughness.
this.getSpellAbility().addEffect(new CondemnEffect());
}
public Condemn(final Condemn card) {
@ -68,7 +68,6 @@ public class Condemn extends CardImpl {
public Condemn copy() {
return new Condemn(this);
}
}
class CondemnEffect extends OneShotEffect {
@ -99,5 +98,4 @@ class CondemnEffect extends OneShotEffect {
}
return false;
}
}

View file

@ -61,13 +61,14 @@ public class TriadOfFates extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
private static final FilterCreaturePermanent filterCounter = new FilterCreaturePermanent("creature that has a fate counter on it");
static {
filter.add(new AnotherPredicate());
filterCounter.add(new CounterPredicate(CounterType.FATE));
}
public TriadOfFates(UUID ownerId) {
super(ownerId, 206, "Triad of Fates", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{W}{B}");
super(ownerId, 206, "Triad of Fates", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{W}{B}");
this.expansionSetCode = "THS";
this.supertype.add("Legendary");
this.subtype.add("Human");
@ -82,6 +83,7 @@ public class TriadOfFates extends CardImpl {
Target target = new TargetCreaturePermanent(filter);
ability.addTarget(target);
this.addAbility(ability);
// {W}, {T}: Exile target creature that has a fate counter on it, then return it to the battlefield under its owner's control.
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetForSourceEffect(), new ManaCostsImpl("{W}"));
ability.addCost(new TapSourceCost());
@ -89,6 +91,7 @@ public class TriadOfFates extends CardImpl {
ability.addTarget(target);
ability.addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect());
this.addAbility(ability);
// {B}, {T}: Exile target creature that has a fate counter on it. Its controller draws two cards.
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(), new ManaCostsImpl("{B}"));
ability.addCost(new TapSourceCost());
@ -96,7 +99,6 @@ public class TriadOfFates extends CardImpl {
ability.addTarget(target);
ability.addEffect(new DrawCardControllerTargetEffect());
this.addAbility(ability);
}
public TriadOfFates(final TriadOfFates card) {