This commit is contained in:
BetaSteward 2010-04-11 22:42:32 +00:00
parent 736b59967a
commit ecef0ab8dc
94 changed files with 2539 additions and 137 deletions

View file

@ -45,12 +45,15 @@ public class AlaraReborn extends ExpansionSet {
private AlaraReborn() {
this.name = "Alara Reborn";
this.cards.add(BehemothSledge.class);
this.cards.add(BituminousBlast.class);
this.cards.add(BloodbraidElf.class);
this.cards.add(FinestHour.class);
this.cards.add(MaelstromPulse.class);
this.cards.add(PutridLeech.class);
this.cards.add(SpellbreakerBehemoth.class);
this.cards.add(Terminate.class);
this.cards.add(VengefulRebirth.class);
}
}

View file

@ -45,9 +45,12 @@ public class Conflux extends ExpansionSet {
private Conflux() {
this.name = "Conflux";
this.cards.add(FontOfMythos.class);
this.cards.add(KnightOfTheReliquary.class);
this.cards.add(MartialCoup.class);
this.cards.add(NobleHierarch.class);
this.cards.add(PathToExile.class);
this.cards.add(Thornling.class);
}
}

View file

@ -46,17 +46,25 @@ public class Magic2010 extends ExpansionSet {
private Magic2010() {
this.name = "Magic 2010";
this.cards.add(BaneslayerAngel.class);
this.cards.add(BirdsOfParadise.class);
this.cards.add(Cancel.class);
this.cards.add(CelestialPurge.class);
this.cards.add(DragonskullSummit.class);
this.cards.add(Flashfreeze.class);
this.cards.add(GargoyleCastle.class);
this.cards.add(GarrukWildspeaker.class);
this.cards.add(GlacialFortress.class);
this.cards.add(GreatSableStag.class);
this.cards.add(HonorOfThePure.class);
this.cards.add(HowlingMine.class);
this.cards.add(JaceBeleren.class);
this.cards.add(LightningBolt.class);
this.cards.add(MasterOfTheWildHunt.class);
this.cards.add(RootboundCrag.class);
this.cards.add(SafePassage.class);
this.cards.add(SunpetalGrove.class);
this.cards.add(TerramorphicExpanse.class);
this.cards.add(TimeWarp.class);
this.cards.add(WhiteKnight.class);
}
}

View file

@ -0,0 +1,57 @@
/*
* 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;
import java.util.ArrayList;
import mage.cards.ExpansionSet;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class Sets extends ArrayList<ExpansionSet> {
private static final Sets fINSTANCE = new Sets();
public static Sets getInstance() {
return fINSTANCE;
}
private Sets() {
this.add(AlaraReborn.getInstance());
this.add(Conflux.getInstance());
this.add(Magic2010.getInstance());
this.add(Planechase.getInstance());
this.add(ShardsOfAlara.getInstance());
this.add(Tenth.getInstance());
this.add(Worldwake.getInstance());
this.add(Zendikar.getInstance());
}
}

View file

@ -46,12 +46,16 @@ public class ShardsOfAlara extends ExpansionSet {
private ShardsOfAlara() {
this.name = "Shards Of Alara";
this.cards.add(AjaniVengeant.class);
this.cards.add(Angelsong.class);
this.cards.add(Blightning.class);
this.cards.add(BroodmateDragon.class);
this.cards.add(CrumblingNecropolis.class);
this.cards.add(ElspethKnightErrant.class);
this.cards.add(JundPanorama.class);
this.cards.add(KnightOfTheWhiteOrchid.class);
this.cards.add(RafiqOfTheMany.class);
this.cards.add(RangerOfEos.class);
this.cards.add(RhoxWarMonk.class);
this.cards.add(SarkhanVol.class);
this.cards.add(SavageLands.class);
this.cards.add(SproutingThrinax.class);

View file

@ -46,7 +46,12 @@ public class Worldwake extends ExpansionSet {
private Worldwake() {
this.name = "Worldwake";
this.cards.add(BasiliskCollar.class);
this.cards.add(CelestialColonnade.class);
this.cards.add(RagingRavine.class);
this.cards.add(SejiriSteppe.class);
this.cards.add(StirringWildwood.class);
this.cards.add(StoneforgeMystic.class);
this.cards.add(TectonicEdge.class);
}
}

View file

@ -45,17 +45,25 @@ public class Zendikar extends ExpansionSet {
private Zendikar() {
this.name = "Zendikar";
this.cards.add(ArchiveTrap.class);
this.cards.add(AridMesa.class);
this.cards.add(BraveTheElements.class);
this.cards.add(BurstLightning.class);
this.cards.add(ConquerorsPledge.class);
this.cards.add(DayOfJudgment.class);
this.cards.add(EmeriaAngel.class);
this.cards.add(GoblinRuinblaster.class);
this.cards.add(KabiraCrossroads.class);
this.cards.add(LotusCobra.class);
this.cards.add(MarshFlats.class);
this.cards.add(MistyRainforest.class);
this.cards.add(OranRiefTheVastwood.class);
this.cards.add(RampagingBaloths.class);
this.cards.add(ScaldingTarn.class);
this.cards.add(ScuteMob.class);
this.cards.add(SteppeLynx.class);
this.cards.add(SunspringExpedition.class);
this.cards.add(TeeteringPeaks.class);
this.cards.add(VerdantCatacombs.class);
}

View file

@ -0,0 +1,62 @@
/*
* 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.alarareborn;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Outcome;
import mage.Constants.Zone;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.BoostEquippedEffect;
import mage.abilities.effects.common.GainAbilityEquippedEffect;
import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.sets.AlaraReborn;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class BehemothSledge extends CardImpl {
public BehemothSledge(UUID ownerId) {
super(ownerId, "Behemoth Sledge", new CardType[]{CardType.ARTIFACT}, "{1}{G}{W}");
this.expansionSetId = AlaraReborn.getInstance().getId();
this.art = "120963_typ_reg_sty_010.jpg";
this.subtype.add("Equipment");
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(3)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityEquippedEffect(LifelinkAbility.getInstance())));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityEquippedEffect(TrampleAbility.getInstance())));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2)));
}
}

View file

@ -33,6 +33,7 @@ import mage.Constants.CardType;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.keyword.CascadeAbility;
import mage.cards.CardImpl;
import mage.sets.AlaraReborn;
import mage.target.common.TargetCreaturePermanent;
/**
@ -43,6 +44,7 @@ public class BituminousBlast extends CardImpl {
public BituminousBlast(UUID ownerId) {
super(ownerId, "Bituminous Blast", new CardType[]{CardType.INSTANT}, "{3}{B}{R}");
this.expansionSetId = AlaraReborn.getInstance().getId();
this.color.setBlack(true);
this.color.setRed(true);
this.art = "121045_typ_reg_sty_010.jpg";

View file

@ -34,6 +34,7 @@ import mage.MageInt;
import mage.abilities.keyword.CascadeAbility;
import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl;
import mage.sets.AlaraReborn;
/**
*
@ -43,6 +44,7 @@ public class BloodbraidElf extends CardImpl {
public BloodbraidElf(UUID ownerId) {
super(ownerId, "Bloodbraid Elf", new CardType[]{CardType.CREATURE}, "{2}{R}{G}");
this.expansionSetId = AlaraReborn.getInstance().getId();
this.color.setRed(true);
this.color.setGreen(true);
this.subtype.add("Elf");

View file

@ -0,0 +1,117 @@
/*
* 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.alarareborn;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Outcome;
import mage.Constants.TurnPhase;
import mage.Constants.Zone;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.keyword.ExaltedAbility;
import mage.cards.CardImpl;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.game.turn.TurnMod;
import mage.sets.AlaraReborn;
import mage.target.common.TargetCreaturePermanent;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class FinestHour extends CardImpl {
public FinestHour(UUID ownerId) {
super(ownerId, "Finest Hour", new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{W}{U}");
this.expansionSetId = AlaraReborn.getInstance().getId();
this.color.setWhite(true);
this.color.setGreen(true);
this.color.setBlue(true);
this.art = "121018_typ_reg_sty_010.jpg";
this.addAbility(new ExaltedAbility());
this.addAbility(new FinestHourAbility());
}
}
class FinestHourAbility extends TriggeredAbilityImpl {
public FinestHourAbility() {
super(Zone.BATTLEFIELD, new FinestHourEffect());
}
@Override
public void checkTrigger(GameEvent event, Game game) {
if (checkIfClause(game) && game.getActivePlayerId().equals(this.controllerId)) {
if (event.getType() == EventType.DECLARED_ATTACKERS) {
if (game.getCombat().attacksAlone()) {
this.targets.add(new TargetCreaturePermanent());
this.targets.get(0).getTargets().add(game.getCombat().getAttackers().get(0));
trigger(game, event.getPlayerId());
}
}
}
}
@Override
public boolean checkIfClause(Game game) {
return game.getTurn().getPhase(TurnPhase.COMBAT).getCount() == 0;
}
@Override
public String getRule() {
return "Whenever a creature you control attacks alone, if it's the first combat phase of the turn, untap that creature. After this phase, there is an additional combat phase.";
}
}
class FinestHourEffect extends OneShotEffect {
public FinestHourEffect() {
super(Outcome.Benefit);
}
@Override
public boolean apply(Game game) {
Permanent permanent = game.getPermanent(this.source.getFirstTarget());
if (permanent != null) {
permanent.setTapped(false);
game.getState().getTurnMods().add(new TurnMod(this.source.getControllerId(), TurnPhase.COMBAT, null));
}
else {
return false;
}
return true;
}
}

View file

@ -32,6 +32,7 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.abilities.effects.common.DestroyAllNamedPermanentsEffect;
import mage.cards.CardImpl;
import mage.sets.AlaraReborn;
import mage.target.common.TargetNonlandPermanent;
/**
@ -42,6 +43,7 @@ public class MaelstromPulse extends CardImpl {
public MaelstromPulse(UUID ownerId) {
super(ownerId, "Maelstrom Pulse", new CardType[]{CardType.SORCERY}, "{1}{B}{G}");
this.expansionSetId = AlaraReborn.getInstance().getId();
this.color.setBlack(true);
this.color.setGreen(true);
this.art = "121021_typ_reg_sty_010.jpg";

View file

@ -30,12 +30,14 @@ package mage.sets.alarareborn;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.Constants.Zone;
import mage.MageInt;
import mage.abilities.common.ActivateOncePerTurnActivatedAbility;
import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.effects.common.BoostSourceEOTEffect;
import mage.abilities.effects.common.BoostSourceEffect;
import mage.cards.CardImpl;
import mage.sets.AlaraReborn;
/**
*
@ -45,6 +47,7 @@ public class PutridLeech extends CardImpl {
public PutridLeech(UUID ownerId) {
super(ownerId, "Putrid Leech", new CardType[]{CardType.CREATURE}, "{B}{G}");
this.expansionSetId = AlaraReborn.getInstance().getId();
this.color.setBlack(true);
this.color.setGreen(true);
this.subtype.add("Zombie");
@ -52,6 +55,6 @@ public class PutridLeech extends CardImpl {
this.art = "120997_typ_reg_sty_010.jpg";
this.power = new MageInt(2);
this.toughness = new MageInt(2);
this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEOTEffect(2, 2), new PayLifeCost(2)));
this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new PayLifeCost(2)));
}
}

View file

@ -37,6 +37,7 @@ import mage.abilities.effects.common.CantCounterControlledEffect;
import mage.abilities.effects.common.CantCounterSourceEffect;
import mage.cards.CardImpl;
import mage.filter.FilterSpell;
import mage.sets.AlaraReborn;
/**
*
@ -46,6 +47,7 @@ public class SpellbreakerBehemoth extends CardImpl {
public SpellbreakerBehemoth(UUID ownerId) {
super(ownerId, "Spellbreaker Behemoth", new CardType[]{CardType.CREATURE}, "{1}{R}{G}{G}");
this.expansionSetId = AlaraReborn.getInstance().getId();
this.color.setRed(true);
this.color.setGreen(true);
this.subtype.add("Beast");

View file

@ -32,6 +32,7 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.abilities.effects.common.DestroyNoRegenTargetEffect;
import mage.cards.CardImpl;
import mage.sets.AlaraReborn;
import mage.target.common.TargetCreaturePermanent;
/**
@ -42,6 +43,7 @@ public class Terminate extends CardImpl {
public Terminate(UUID ownerId) {
super(ownerId, "Terminate", new CardType[]{CardType.INSTANT}, "{B}{R}");
this.expansionSetId = AlaraReborn.getInstance().getId();
this.color.setBlack(true);
this.color.setRed(true);
this.art = "115230_typ_reg_sty_010.jpg";

View file

@ -38,6 +38,7 @@ import mage.cards.CardImpl;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.sets.AlaraReborn;
import mage.target.common.TargetCardInGraveyard;
import mage.target.common.TargetCreatureOrPlayer;
@ -49,6 +50,7 @@ public class VengefulRebirth extends CardImpl {
public VengefulRebirth(UUID ownerId) {
super(ownerId, "Vengeful Rebirth", new CardType[]{CardType.SORCERY}, "{4}{R}{G}");
this.expansionSetId = AlaraReborn.getInstance().getId();
this.color.setRed(true);
this.color.setGreen(true);
this.art = "115104_typ_reg_sty_010.jpg";

View file

@ -0,0 +1,78 @@
/*
* 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.conflux;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Zone;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.common.DrawCardTargetEffect;
import mage.cards.CardImpl;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.sets.Conflux;
import mage.target.TargetPlayer;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class FontOfMythos extends CardImpl {
public FontOfMythos(UUID ownerId) {
super(ownerId, "Font of Mythos", new CardType[]{CardType.ARTIFACT}, "{4}");
this.expansionSetId = Conflux.getInstance().getId();
this.art = "119800_typ_reg_sty_010.jpg";
this.addAbility(new FontOfMythosAbility());
}
}
class FontOfMythosAbility extends TriggeredAbilityImpl {
public FontOfMythosAbility() {
super(Zone.BATTLEFIELD, new DrawCardTargetEffect(2));
}
@Override
public void checkTrigger(GameEvent event, Game game) {
if (event.getType() == EventType.DRAW_STEP_PRE) {
this.targets.add(new TargetPlayer());
this.targets.get(0).getTargets().add(event.getPlayerId());
trigger(game, event.getPlayerId());
}
}
@Override
public String getRule() {
return "At the beginning of each player's draw step, that player draws two additional cards.";
}
}

View file

@ -0,0 +1,120 @@
/*
* 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.conflux;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.Constants.Layer;
import mage.Constants.Outcome;
import mage.Constants.SubLayer;
import mage.Constants.TargetController;
import mage.Constants.Zone;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.Costs;
import mage.abilities.costs.CostsImpl;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.effects.common.SearchLibraryPutInPlayEffect;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonScope;
import mage.filter.common.FilterLandCard;
import mage.filter.common.FilterLandPermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.sets.Conflux;
import mage.target.common.TargetCardInLibrary;
import mage.target.common.TargetLandPermanent;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class KnightOfTheReliquary extends CardImpl {
private static FilterLandPermanent filter = new FilterLandPermanent("Forest or Plains");
static {
filter.getSubtype().add("Forest");
filter.getSubtype().add("Plains");
filter.setScopeSubtype(ComparisonScope.Any);
}
public KnightOfTheReliquary(UUID ownerId) {
super(ownerId, "Knight of the Reliquary", new CardType[]{CardType.CREATURE}, "{1}{G}{W}");
this.expansionSetId = Conflux.getInstance().getId();
this.color.setWhite(true);
this.color.setGreen(true);
this.subtype.add("Human");
this.subtype.add("Knight");
this.art = "119798_typ_reg_sty_010.jpg";
this.power = new MageInt(2);
this.toughness = new MageInt(2);
TargetCardInLibrary target = new TargetCardInLibrary(new FilterLandCard());
TargetLandPermanent sac = new TargetLandPermanent(1, 1, filter, TargetController.YOU);
Costs costs = new CostsImpl();
costs.add(new TapSourceCost());
costs.add(new SacrificeTargetCost(sac));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new KnightOfTheReliquaryEffect()));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(target, false, Outcome.PutLandInPlay), costs));
}
}
class KnightOfTheReliquaryEffect extends ContinuousEffectImpl {
private static FilterLandCard filter = new FilterLandCard();
public KnightOfTheReliquaryEffect() {
super(Duration.WhileOnBattlefield, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature);
}
@Override
public boolean apply(Game game) {
int count = game.getPlayer(this.source.getControllerId()).getGraveyard().count(filter);
if (count > 0) {
Permanent target = (Permanent) game.getPermanent(this.source.getSourceId());
if (target != null) {
target.addPower(count);
target.addToughness(count);
return true;
}
}
return false;
}
@Override
public String getText() {
return "{this} gets +1/+1 for each land card in your graveyard";
}
}

View file

@ -38,6 +38,7 @@ import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.SoldierToken;
import mage.players.Player;
import mage.sets.Conflux;
/**
*
@ -47,6 +48,7 @@ public class MartialCoup extends CardImpl {
public MartialCoup(UUID ownerId) {
super(ownerId, "Martial Coup", new CardType[]{CardType.SORCERY}, "{X}{W}{W}");
this.expansionSetId = Conflux.getInstance().getId();
this.color.setWhite(true);
this.art = "118685_typ_reg_sty_010.jpg";
this.getSpellAbility().addEffect(new MartialCoupEffect());
@ -59,9 +61,10 @@ class MartialCoupEffect extends OneShotEffect {
super(Outcome.PutCreatureInPlay);
}
@Override
public boolean apply(Game game) {
Player controller = game.getPlayer(this.source.getControllerId());
int amount = this.source.getCosts().getVariableCosts().get(0).getValue();
int amount = this.source.getManaCosts().getVariableCosts().get(0).getValue();
FilterCreaturePermanent filter = new FilterCreaturePermanent();
if (amount > 4) {

View file

@ -36,6 +36,7 @@ import mage.abilities.mana.BlueManaAbility;
import mage.abilities.mana.GreenManaAbility;
import mage.abilities.mana.WhiteManaAbility;
import mage.cards.CardImpl;
import mage.sets.Conflux;
/**
*
@ -45,6 +46,7 @@ public class NobleHierarch extends CardImpl {
public NobleHierarch(UUID ownerId) {
super(ownerId, "Noble Hierarch", new CardType[]{CardType.CREATURE}, "{G}");
this.expansionSetId = Conflux.getInstance().getId();
this.color.setGreen(true);
this.subtype.add("Human");
this.subtype.add("Druid");

View file

@ -39,6 +39,7 @@ import mage.filter.common.FilterBasicLandCard;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.sets.Conflux;
import mage.target.common.TargetCardInLibrary;
import mage.target.common.TargetCreaturePermanent;
@ -50,6 +51,7 @@ public class PathToExile extends CardImpl {
public PathToExile(UUID ownerId) {
super(ownerId, "Path To Exile", new CardType[]{CardType.INSTANT}, "{W}");
this.expansionSetId = Conflux.getInstance().getId();
this.color.setWhite(true);
this.art = "118686_typ_reg_sty_010.jpg";
this.getSpellAbility().addTarget(new TargetCreaturePermanent());

View file

@ -0,0 +1,68 @@
/*
* 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.conflux;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.Constants.Zone;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCosts;
import mage.abilities.effects.common.BoostSourceEffect;
import mage.abilities.effects.common.GainAbilitySourceEffect;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.IndestructableAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.sets.Conflux;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class Thornling extends CardImpl {
public Thornling(UUID ownerId) {
super(ownerId, "Thornling", new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
this.expansionSetId = Conflux.getInstance().getId();
this.color.setGreen(true);
this.subtype.add("Elemental");
this.subtype.add("Shapeshifter");
this.art = "118734_typ_reg_sty_010.jpg";
this.power = new MageInt(4);
this.toughness = new MageInt(4);
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(HasteAbility.getInstance(), Duration.EndOfTurn), new ManaCosts("{G}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.EndOfTurn), new ManaCosts("{G}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(IndestructableAbility.getInstance(), Duration.EndOfTurn), new ManaCosts("{G}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, -1, Duration.EndOfTurn), new ManaCosts("{1}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(-1, 1, Duration.EndOfTurn), new ManaCosts("{1}")));
}
}

View file

@ -38,6 +38,7 @@ import mage.abilities.keyword.ProtectionAbility;
import mage.cards.CardImpl;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.sets.Magic2010;
/**
*
@ -47,6 +48,7 @@ public class BaneslayerAngel extends CardImpl {
public BaneslayerAngel(UUID ownerId) {
super(ownerId, "Baneslayer Angel", new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
this.expansionSetId = Magic2010.getInstance().getId();
this.subtype.add("Angel");
this.color.setWhite(true);
this.art = "";

View file

@ -0,0 +1,65 @@
/*
* 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.magic2010;
import java.util.UUID;
import mage.Constants.CardType;
import mage.MageInt;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.mana.BlackManaAbility;
import mage.abilities.mana.BlueManaAbility;
import mage.abilities.mana.GreenManaAbility;
import mage.abilities.mana.RedManaAbility;
import mage.abilities.mana.WhiteManaAbility;
import mage.cards.CardImpl;
import mage.sets.Magic2010;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class BirdsOfParadise extends CardImpl {
public BirdsOfParadise(UUID ownerId) {
super(ownerId, "Birds of Paradise", new CardType[]{CardType.CREATURE}, "{G}");
this.expansionSetId = Magic2010.getInstance().getId();
this.subtype.add("Bird");
this.color.setGreen(true);
this.art = "88690_typ_reg_sty_010.jpg";
this.power = new MageInt(0);
this.toughness = new MageInt(1);
this.addAbility(FlyingAbility.getInstance());
this.addAbility(new BlackManaAbility());
this.addAbility(new BlueManaAbility());
this.addAbility(new GreenManaAbility());
this.addAbility(new RedManaAbility());
this.addAbility(new WhiteManaAbility());
}
}

View file

@ -32,7 +32,7 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.abilities.effects.common.CounterTargetEffect;
import mage.cards.CardImpl;
import mage.filter.FilterSpell;
import mage.sets.Magic2010;
import mage.target.TargetSpell;
/**
@ -41,13 +41,12 @@ import mage.target.TargetSpell;
*/
public class Cancel extends CardImpl {
private static FilterSpell filter = new FilterSpell();
public Cancel(UUID ownerId) {
super(ownerId, "Cancel", new CardType[]{CardType.INSTANT}, "{1}{U}{U}");
this.expansionSetId = Magic2010.getInstance().getId();
this.color.setBlue(true);
this.art = "116179_typ_reg_sty_010.jpg";
this.getSpellAbility().addTarget(new TargetSpell(filter));
this.getSpellAbility().addTarget(new TargetSpell());
this.getSpellAbility().addEffect(new CounterTargetEffect());
}

View file

@ -31,11 +31,11 @@ package mage.sets.magic2010;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.TargetController;
import mage.ObjectColor;
import mage.abilities.effects.common.ExileTargetEffect;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonScope;
import mage.filter.FilterPermanent;
import mage.sets.Magic2010;
import mage.target.TargetPermanent;
/**
@ -55,6 +55,7 @@ public class CelestialPurge extends CardImpl {
public CelestialPurge(UUID ownerId) {
super(ownerId, "Celestial Purge", new CardType[]{CardType.INSTANT}, "{1}{W}");
this.expansionSetId = Magic2010.getInstance().getId();
this.color.setWhite(true);
this.art = "118751_typ_reg_sty_010.jpg";
this.getSpellAbility().addTarget(new TargetPermanent(filter, TargetController.ANY));

View file

@ -38,6 +38,7 @@ import mage.cards.CardImpl;
import mage.filter.FilterPermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.sets.Magic2010;
/**
*
@ -47,6 +48,7 @@ public class DragonskullSummit extends CardImpl {
public DragonskullSummit(UUID ownerId) {
super(ownerId, "Dragonskull Summit", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Magic2010.getInstance().getId();
this.art = "121671_typ_reg_sty_010.jpg";
this.addAbility(new EntersBattlefieldStaticAbility(new DragonskullSummitEffect()));
this.addAbility(new BlackManaAbility());

View file

@ -0,0 +1,54 @@
/*
* 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.magic2010;
import java.util.UUID;
import mage.Constants.CardType;
import mage.MageInt;
import mage.cards.CardImpl;
import mage.sets.Magic2010;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class EliteVanguard extends CardImpl {
public EliteVanguard(UUID ownerId) {
super(ownerId, "Elite Vanguard", new CardType[]{CardType.CREATURE}, "{W}");
this.expansionSetId = Magic2010.getInstance().getId();
this.color.setWhite(true);
this.subtype.add("Human");
this.subtype.add("Soldier");
this.art = "";
this.power = new MageInt(2);
this.toughness = new MageInt(1);
}
}

View file

@ -0,0 +1,64 @@
/*
* 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.magic2010;
import java.util.UUID;
import mage.Constants.CardType;
import mage.abilities.effects.common.CounterTargetEffect;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonScope;
import mage.filter.FilterSpell;
import mage.sets.Magic2010;
import mage.target.TargetSpell;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class Flashfreeze extends CardImpl {
private static FilterSpell filter = new FilterSpell("red or green spell");
static {
filter.getColor().setRed(true);
filter.getColor().setGreen(true);
filter.setScopeColor(ComparisonScope.Any);
filter.setUseColor(true);
}
public Flashfreeze(UUID ownerId) {
super(ownerId, "Flashfreeze", new CardType[]{CardType.INSTANT}, "{1}{U}");
this.expansionSetId = Magic2010.getInstance().getId();
this.color.setBlue(true);
this.art = "96954_typ_reg_sty_010.jpg";
this.getSpellAbility().addTarget(new TargetSpell(filter));
this.getSpellAbility().addEffect(new CounterTargetEffect());
}
}

View file

@ -32,7 +32,6 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Zone;
import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.ActivatedAbilityImpl;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.common.TapSourceCost;
@ -42,6 +41,7 @@ import mage.abilities.keyword.FlyingAbility;
import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl;
import mage.game.permanent.token.Token;
import mage.sets.Magic2010;
/**
*
@ -51,6 +51,7 @@ public class GargoyleCastle extends CardImpl {
public GargoyleCastle(UUID ownerId) {
super(ownerId, "Gargoyle Castle", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Magic2010.getInstance().getId();
this.art = "122169_typ_reg_sty_010.jpg";
this.addAbility(new ColorlessManaAbility());
this.addAbility(new GargoyleCastleAbility());

View file

@ -37,11 +37,13 @@ import mage.abilities.LoyaltyAbility;
import mage.abilities.effects.Effects;
import mage.abilities.effects.common.BoostControlledEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.GainAbilityControlledEOTEffect;
import mage.abilities.effects.common.GainAbilityControlledEffect;
import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.permanent.token.BeastToken;
import mage.sets.Magic2010;
import mage.target.common.TargetLandPermanent;
/**
@ -54,6 +56,7 @@ public class GarrukWildspeaker extends CardImpl {
public GarrukWildspeaker(UUID ownerId) {
super(ownerId, "Garruk Wildspeaker", new CardType[]{CardType.PLANESWALKER}, "{2}{G}{G}");
this.expansionSetId = Magic2010.getInstance().getId();
this.subtype.add("Garruk");
this.color.setGreen(true);
this.art = "105523_typ_reg_sty_010.jpg";
@ -67,7 +70,7 @@ public class GarrukWildspeaker extends CardImpl {
Effects effects1 = new Effects(null);
effects1.add(new BoostControlledEffect(3, 3, Duration.EndOfTurn));
effects1.add(new GainAbilityControlledEOTEffect(TrampleAbility.getInstance()));
effects1.add(new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, new FilterCreaturePermanent()));
this.addAbility(new LoyaltyAbility(effects1, -4));
}
}

View file

@ -0,0 +1,77 @@
/*
* 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.magic2010;
import java.util.UUID;
import mage.Constants.CardType;
import mage.abilities.common.EntersBattlefieldStaticAbility;
import mage.abilities.effects.common.EntersBattlefieldTappedEffect;
import mage.abilities.mana.BlueManaAbility;
import mage.abilities.mana.WhiteManaAbility;
import mage.cards.CardImpl;
import mage.filter.FilterPermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.sets.Magic2010;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class GlacialFortress extends CardImpl {
public GlacialFortress(UUID ownerId) {
super(ownerId, "Glacial Fortress", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Magic2010.getInstance().getId();
this.art = "121634_typ_reg_sty_010.jpg";
this.addAbility(new EntersBattlefieldStaticAbility(new GlacialFortressEffect()));
this.addAbility(new BlueManaAbility());
this.addAbility(new WhiteManaAbility());
}
}
class GlacialFortressEffect extends EntersBattlefieldTappedEffect {
@Override
public boolean replaceEvent(GameEvent event, Game game) {
FilterPermanent filter = new FilterPermanent();
filter.getName().add("Plains");
filter.getName().add("Island");
filter.getControllerId().add(this.source.getControllerId());
if (game.getBattlefield().count(filter) == 0)
return apply(game);
return false;
}
@Override
public String getText() {
return super.getText() + " unless you control a Plains or an Island";
}
}

View file

@ -37,6 +37,7 @@ import mage.abilities.effects.common.CantCounterSourceEffect;
import mage.abilities.keyword.ProtectionAbility;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.sets.Magic2010;
/**
*
@ -46,6 +47,7 @@ public class GreatSableStag extends CardImpl {
public GreatSableStag(UUID ownerId) {
super(ownerId, "Great Sable Stag", new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
this.expansionSetId = Magic2010.getInstance().getId();
this.subtype.add("Elk");
this.color.setGreen(true);
this.art = "122172_typ_reg_sty_010.jpg";

View file

@ -36,6 +36,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.BoostControlledEffect;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
import mage.sets.Magic2010;
/**
*
@ -47,11 +48,12 @@ public class HonorOfThePure extends CardImpl {
public HonorOfThePure(UUID ownerId) {
super(ownerId, "Honor of the Pure", new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
this.expansionSetId = Magic2010.getInstance().getId();
this.color.setWhite(true);
this.art = "";
filter.setUseColor(true);
filter.getColor().setWhite(true);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileInPlay, filter)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter)));
}
}

View file

@ -0,0 +1,83 @@
/*
* 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.magic2010;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Zone;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.common.DrawCardTargetEffect;
import mage.cards.CardImpl;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.sets.Magic2010;
import mage.target.TargetPlayer;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class HowlingMine extends CardImpl {
public HowlingMine(UUID ownerId) {
super(ownerId, "Howling Mine", new CardType[]{CardType.ARTIFACT}, "{2}");
this.expansionSetId = Magic2010.getInstance().getId();
this.art = "102959_typ_reg_sty_010.jpg";
this.addAbility(new HowlingMineAbility());
}
}
class HowlingMineAbility extends TriggeredAbilityImpl {
public HowlingMineAbility() {
super(Zone.BATTLEFIELD, new DrawCardTargetEffect(1));
}
@Override
public void checkTrigger(GameEvent event, Game game) {
if (event.getType() == EventType.DRAW_STEP_PRE) {
this.targets.add(new TargetPlayer());
this.targets.get(0).getTargets().add(event.getPlayerId());
trigger(game, event.getPlayerId());
}
}
@Override
public boolean checkIfClause(Game game) {
return !game.getPermanent(this.sourceId).isTapped();
}
@Override
public String getRule() {
return "At the beginning of each player's draw step, if {this} is untapped, that player draws an additional card.";
}
}

View file

@ -0,0 +1,68 @@
/*
* 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.magic2010;
import java.util.UUID;
import mage.Constants.CardType;
import mage.MageInt;
import mage.abilities.LoyaltyAbility;
import mage.abilities.effects.common.DrawCardAllEffect;
import mage.abilities.effects.common.DrawCardTargetEffect;
import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect;
import mage.cards.CardImpl;
import mage.sets.Magic2010;
import mage.target.TargetPlayer;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class JaceBeleren extends CardImpl {
public JaceBeleren(UUID ownerId) {
super(ownerId, "Jace Beleren", new CardType[]{CardType.PLANESWALKER}, "{1}{U}{U}");
this.expansionSetId = Magic2010.getInstance().getId();
this.subtype.add("Jace");
this.color.setBlue(true);
this.art = "105537_typ_reg_sty_010.jpg";
this.loyalty = new MageInt(3);
this.addAbility(new LoyaltyAbility(new DrawCardAllEffect(1), 2));
LoyaltyAbility ability1 = new LoyaltyAbility(new DrawCardTargetEffect(1), -1);
ability1.addTarget(new TargetPlayer());
this.addAbility(ability1);
LoyaltyAbility ability2 = new LoyaltyAbility(new PutLibraryIntoGraveTargetEffect(20), -10);
ability2.addTarget(new TargetPlayer());
this.addAbility(ability2);
}
}

View file

@ -32,6 +32,7 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.cards.CardImpl;
import mage.sets.Magic2010;
import mage.target.common.TargetCreatureOrPlayer;
/**
@ -42,6 +43,7 @@ public class LightningBolt extends CardImpl {
public LightningBolt(UUID ownerId) {
super(ownerId, "Lightning Bolt", new CardType[]{CardType.INSTANT}, "{R}");
this.expansionSetId = Magic2010.getInstance().getId();
this.color.setRed(true);
this.art = "121669_typ_reg_sty_010.jpg";
this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());

View file

@ -33,11 +33,9 @@ import java.util.List;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Outcome;
import mage.Constants.PhaseStep;
import mage.Constants.Zone;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.ActivatedAbilityImpl;
import mage.abilities.common.OnEventTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
@ -50,6 +48,7 @@ import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.WolfToken;
import mage.players.Player;
import mage.sets.Magic2010;
import mage.target.common.TargetCreaturePermanent;
/**
@ -62,6 +61,7 @@ public class MasterOfTheWildHunt extends CardImpl {
public MasterOfTheWildHunt(UUID ownerId) {
super(ownerId, "Master of the Wild Hunt", new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
this.expansionSetId = Magic2010.getInstance().getId();
this.subtype.add("Human");
this.subtype.add("Shaman");
this.color.setGreen(true);

View file

@ -38,6 +38,7 @@ import mage.cards.CardImpl;
import mage.filter.FilterPermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.sets.Magic2010;
/**
*
@ -47,6 +48,7 @@ public class RootboundCrag extends CardImpl {
public RootboundCrag(UUID ownerId) {
super(ownerId, "Rootbound Crag", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Magic2010.getInstance().getId();
this.art = "121648_typ_reg_sty_010.jpg";
this.addAbility(new EntersBattlefieldStaticAbility(new RootboundCragEffect()));
this.addAbility(new RedManaAbility());

View file

@ -0,0 +1,53 @@
/*
* 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.magic2010;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.abilities.effects.common.PreventAllDamageToEffect;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreatureOrPlayer;
import mage.sets.Magic2010;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class SafePassage extends CardImpl {
public SafePassage(UUID ownerId) {
super(ownerId, "Safe Passage", new CardType[]{CardType.INSTANT}, "{2}{W}");
this.expansionSetId = Magic2010.getInstance().getId();
this.color.setWhite(true);
this.art = "121601_typ_reg_sty_010.jpg";
this.getSpellAbility().addEffect(new PreventAllDamageToEffect(Duration.EndOfTurn, new FilterCreatureOrPlayer("you and creatures you control", ownerId)));
}
}

View file

@ -38,6 +38,7 @@ import mage.cards.CardImpl;
import mage.filter.FilterPermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.sets.Magic2010;
/**
*
@ -47,6 +48,7 @@ public class SunpetalGrove extends CardImpl {
public SunpetalGrove(UUID ownerId) {
super(ownerId, "Sunpetal Grove", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Magic2010.getInstance().getId();
this.art = "121679_typ_reg_sty_010.jpg";
this.addAbility(new EntersBattlefieldStaticAbility(new SunpetalGroveEffect()));
this.addAbility(new GreenManaAbility());

View file

@ -0,0 +1,69 @@
/*
* 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.magic2010;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Outcome;
import mage.Constants.Zone;
import mage.abilities.ActivatedAbilityImpl;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.SearchLibraryPutInPlayEffect;
import mage.cards.CardImpl;
import mage.filter.common.FilterBasicLandCard;
import mage.sets.Magic2010;
import mage.target.common.TargetCardInLibrary;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class TerramorphicExpanse extends CardImpl {
public TerramorphicExpanse(UUID ownerId) {
super(ownerId, "Terramorphic Expanse", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Magic2010.getInstance().getId();
this.art = "97502_typ_reg_sty_010.jpg";
this.addAbility(new TerramorphicExpanseAbility());
}
}
class TerramorphicExpanseAbility extends ActivatedAbilityImpl {
public TerramorphicExpanseAbility() {
super(Zone.BATTLEFIELD, null);
addCost(new TapSourceCost());
addCost(new SacrificeSourceCost());
TargetCardInLibrary target = new TargetCardInLibrary(new FilterBasicLandCard());
addEffect(new SearchLibraryPutInPlayEffect(target, true, Outcome.PutLandInPlay));
}
}

View file

@ -0,0 +1,74 @@
/*
* 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.magic2010;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Outcome;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
import mage.game.Game;
import mage.game.turn.TurnMod;
import mage.sets.Magic2010;
import mage.target.TargetPlayer;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class TimeWarp extends CardImpl {
public TimeWarp(UUID ownerId) {
super(ownerId, "Time Warp", new CardType[]{CardType.SORCERY}, "{3}{U}{U}");
this.expansionSetId = Magic2010.getInstance().getId();
this.color.setBlue(true);
this.art = "122160_typ_reg_sty_010.jpg";
this.getSpellAbility().addTarget(new TargetPlayer());
this.getSpellAbility().addEffect(new TimeWarpEffect());
}
}
class TimeWarpEffect extends OneShotEffect {
public TimeWarpEffect() {
super(Outcome.ExtraTurn);
}
@Override
public boolean apply(Game game) {
game.getState().getTurnMods().add(new TurnMod(source.getFirstTarget()));
return true;
}
@Override
public String getText() {
return "Target player takes an extra turn after this one.";
}
}

View file

@ -35,6 +35,7 @@ import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.ProtectionAbility;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.sets.Magic2010;
/**
*
@ -44,6 +45,7 @@ public class WhiteKnight extends CardImpl {
public WhiteKnight(UUID ownerId) {
super(ownerId, "White Knight", new CardType[]{CardType.CREATURE}, "{W}{W}");
this.expansionSetId = Magic2010.getInstance().getId();
this.subtype.add("Human");
this.subtype.add("Knight");
this.color.setWhite(true);

View file

@ -39,6 +39,7 @@ import mage.abilities.common.LeavesBattlefieldTriggeredAbility;
import mage.abilities.effects.common.ExileTargetEffect;
import mage.cards.CardImpl;
import mage.filter.common.FilterNonlandPermanent;
import mage.sets.Planechase;
import mage.target.TargetPermanent;
/**
@ -49,6 +50,7 @@ public class OblivionRing extends CardImpl {
public OblivionRing(UUID ownerId) {
super(ownerId, "Oblivion Ring", new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
this.expansionSetId = Planechase.getInstance().getId();
this.color.setWhite(true);
this.art = "115005_typ_reg_sty_010.jpg";
FilterNonlandPermanent filter = new FilterNonlandPermanent();

View file

@ -30,12 +30,9 @@ package mage.sets.planechase;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.Constants.Zone;
import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.ReplacementEffectImpl;
import mage.abilities.effects.common.GainLifeEffect;
import mage.cards.CardImpl;
import mage.game.Game;
@ -43,6 +40,7 @@ import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.events.ZoneChangeEvent;
import mage.game.permanent.Permanent;
import mage.sets.Planechase;
/**
*
@ -52,6 +50,7 @@ public class SoulWarden extends CardImpl {
public SoulWarden(UUID ownerId) {
super(ownerId, "Soul Warden", new CardType[]{CardType.CREATURE}, "{W}");
this.expansionSetId = Planechase.getInstance().getId();
this.subtype.add("Human");
this.subtype.add("Cleric");
this.color.setWhite(true);
@ -70,7 +69,7 @@ class SoulWardenAbility extends TriggeredAbilityImpl {
}
@Override
public void handleEvent(GameEvent event, Game game) {
public void checkTrigger(GameEvent event, Game game) {
if (event.getType() == EventType.ZONE_CHANGE && ((ZoneChangeEvent)event).getToZone() == Zone.BATTLEFIELD) {
Permanent permanent = game.getPermanent(event.getTargetId());
if (permanent.getCardType().contains(CardType.CREATURE) && !permanent.getId().equals(this.getSourceId()))
@ -84,38 +83,3 @@ class SoulWardenAbility extends TriggeredAbilityImpl {
}
}
//class SoulWardenEffect extends ReplacementEffectImpl {
//
// public SoulWardenEffect() {
// super(Duration.WhileInPlay);
// }
//
// @Override
// public boolean apply(Game game) {
// game.getPlayer(source.getControllerId()).gainLife(1, game);
// return true;
// }
//
// @Override
// public boolean replaceEvent(GameEvent event, Game game) {
// apply(game);
// return false;
// }
//
// @Override
// public boolean applies(GameEvent event, Game game) {
// if (event.getType() == EventType.ZONE_CHANGE && ((ZoneChangeEvent)event).getToZone() == Zone.BATTLEFIELD) {
// Permanent permanent = game.getPermanent(event.getTargetId());
// if (permanent.getCardType().contains(CardType.CREATURE))
// return true;
// }
// return false;
// }
//
// @Override
// public String getText() {
// return "Whenever another creature enters the battlefield, you gain 1 life";
// }
//
//}

View file

@ -35,11 +35,11 @@ import mage.abilities.LoyaltyAbility;
import mage.abilities.effects.Effects;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.DestroyAllControlledTargetEffect;
import mage.abilities.effects.common.DestroyAllEffect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.cards.CardImpl;
import mage.filter.FilterPermanent;
import mage.sets.ShardsOfAlara;
import mage.target.TargetPermanent;
import mage.target.TargetPlayer;
import mage.target.common.TargetCreatureOrPlayer;
@ -52,6 +52,7 @@ public class AjaniVengeant extends CardImpl {
public AjaniVengeant(UUID ownerId) {
super(ownerId, "Ajani Vengeant", new CardType[]{CardType.PLANESWALKER}, "{2}{R}{W}");
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.subtype.add("Ajani");
this.color.setRed(true);
this.color.setWhite(true);

View file

@ -0,0 +1,55 @@
/*
* 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.shardsofalara;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.abilities.costs.mana.ManaCosts;
import mage.abilities.effects.common.PreventAllCombatDamageEffect;
import mage.abilities.keyword.CyclingAbility;
import mage.cards.CardImpl;
import mage.sets.ShardsOfAlara;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class Angelsong extends CardImpl {
public Angelsong(UUID ownerId) {
super(ownerId, "Angelsong", new CardType[]{CardType.INSTANT}, "{1}{W}");
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.color.setWhite(true);
this.art = "115068_typ_reg_sty_010.jpg";
this.getSpellAbility().addEffect(new PreventAllCombatDamageEffect(Duration.EndOfTurn));
this.addAbility(new CyclingAbility(new ManaCosts("{2}")));
}
}

View file

@ -33,6 +33,7 @@ import mage.Constants.CardType;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.DiscardTargetEffect;
import mage.cards.CardImpl;
import mage.sets.ShardsOfAlara;
import mage.target.TargetPlayer;
/**
@ -43,6 +44,7 @@ public class Blightning extends CardImpl {
public Blightning(UUID ownerId) {
super(ownerId, "Blightning", new CardType[]{CardType.SORCERY}, "{1}{B}{R}");
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.color.setBlack(true);
this.color.setRed(true);
this.art = "115010_typ_reg_sty_010.jpg";

View file

@ -36,6 +36,7 @@ import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.game.permanent.token.DragonToken;
import mage.sets.ShardsOfAlara;
/**
*
@ -47,6 +48,7 @@ public class BroodmateDragon extends CardImpl {
public BroodmateDragon(UUID ownerId) {
super(ownerId, "Broodmate Dragon", new CardType[]{CardType.CREATURE}, "{3}{B}{R}{G}");
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.subtype.add("Dragon");
this.color.setRed(true);
this.color.setGreen(true);

View file

@ -36,6 +36,7 @@ import mage.abilities.mana.BlackManaAbility;
import mage.abilities.mana.BlueManaAbility;
import mage.abilities.mana.RedManaAbility;
import mage.cards.CardImpl;
import mage.sets.ShardsOfAlara;
/**
*
@ -45,6 +46,7 @@ public class CrumblingNecropolis extends CardImpl {
public CrumblingNecropolis(UUID ownerId) {
super(ownerId, "Crumbling Necropolis", new CardType[]{CardType.LAND}, null);
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.art = "115145_typ_reg_sty_010.jpg";
this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect()));
this.addAbility(new RedManaAbility());

View file

@ -0,0 +1,83 @@
/*
* 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.shardsofalara;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.MageInt;
import mage.abilities.LoyaltyAbility;
import mage.abilities.effects.Effects;
import mage.abilities.effects.common.BoostTargetEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.GainAbilityControlledEffect;
import mage.abilities.effects.common.GainAbilityTargetEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.IndestructableAbility;
import mage.cards.CardImpl;
import mage.filter.FilterPermanent;
import mage.game.permanent.token.SoldierToken;
import mage.sets.ShardsOfAlara;
import mage.target.common.TargetCreaturePermanent;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class ElspethKnightErrant extends CardImpl {
private static SoldierToken soldierToken = new SoldierToken();
public ElspethKnightErrant(UUID ownerId) {
super(ownerId, "Elspeth, Knight-Errant", new CardType[]{CardType.PLANESWALKER}, "{2}{W}{W}");
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.subtype.add("Elspeth");
this.color.setWhite(true);
this.art = "114973_typ_reg_sty_010.jpg";
this.loyalty = new MageInt(4);
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(soldierToken), 1));
Effects effects1 = new Effects(null);
effects1.add(new BoostTargetEffect(3, 3, Duration.EndOfTurn));
effects1.add(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn));
LoyaltyAbility ability1 = new LoyaltyAbility(effects1, 1);
ability1.addTarget(new TargetCreaturePermanent());
this.addAbility(ability1);
FilterPermanent filter = new FilterPermanent("artifacts, creatures, enchantments and lands");
filter.getCardType().add(CardType.ARTIFACT);
filter.getCardType().add(CardType.CREATURE);
filter.getCardType().add(CardType.ENCHANTMENT);
filter.getCardType().add(CardType.LAND);
this.addAbility(new LoyaltyAbility(new GainAbilityControlledEffect(IndestructableAbility.getInstance(), Duration.EndOfGame, filter), -8));
}
}

View file

@ -40,6 +40,7 @@ import mage.abilities.effects.common.SearchLibraryPutInPlayEffect;
import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.sets.ShardsOfAlara;
import mage.target.common.TargetCardInLibrary;
/**
@ -50,6 +51,7 @@ public class JundPanorama extends CardImpl {
public JundPanorama(UUID ownerId) {
super(ownerId, "Jund Panorama", new CardType[]{CardType.LAND}, null);
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.art = "116191_typ_reg_sty_010.jpg";
this.addAbility(new ColorlessManaAbility());
this.addAbility(new JundPanoramaAbility());

View file

@ -43,6 +43,7 @@ import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.events.ZoneChangeEvent;
import mage.sets.ShardsOfAlara;
import mage.target.common.TargetCardInLibrary;
/**
@ -53,6 +54,7 @@ public class KnightOfTheWhiteOrchid extends CardImpl {
public KnightOfTheWhiteOrchid(UUID ownerId) {
super(ownerId, "Knight of the White Orchid", new CardType[]{CardType.CREATURE}, "{W}{W}");
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.subtype.add("Human");
this.subtype.add("Knight");
this.color.setWhite(true);
@ -77,29 +79,35 @@ class KnightOfTheWhiteOrchidAbility extends EntersBattlefieldTriggeredAbility {
}
@Override
public void handleEvent(GameEvent event, Game game) {
public void checkTrigger(GameEvent event, Game game) {
if (event.getType() == EventType.ZONE_CHANGE && event.getTargetId().equals(this.getSourceId()) ) {
ZoneChangeEvent zEvent = (ZoneChangeEvent)event;
if (zEvent.getToZone() == Zone.BATTLEFIELD) {
FilterLandPermanent filter = new FilterLandPermanent();
filter.getControllerId().clear();
filter.getControllerId().add(this.controllerId);
int numLands = game.getBattlefield().count(filter);
for (UUID opponentId: game.getOpponents(this.controllerId)) {
filter.getControllerId().clear();
filter.getControllerId().add(opponentId);
if (numLands < game.getBattlefield().count(filter)) {
trigger(game, this.controllerId);
break;
}
}
trigger(game, this.controllerId);
}
}
}
@Override
public boolean checkIfClause(Game game) {
FilterLandPermanent filter = new FilterLandPermanent();
filter.getControllerId().clear();
filter.getControllerId().add(this.controllerId);
int numLands = game.getBattlefield().count(filter);
for (UUID opponentId: game.getOpponents(this.controllerId)) {
filter.getControllerId().clear();
filter.getControllerId().add(opponentId);
if (numLands < game.getBattlefield().count(filter)) {
return true;
}
}
return false;
}
@Override
public String getRule() {
return "When Knight of the White Orchid enters the battlefield, if an opponent controls more lands than you, you may " + super.getRule();
return "When {this} enters the battlefield, if an opponent controls more lands than you, you may " + super.getRule();
}
}

View file

@ -0,0 +1,93 @@
/*
* 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.shardsofalara;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.Constants.Zone;
import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.common.GainAbilityTargetEffect;
import mage.abilities.keyword.DoubleStrikeAbility;
import mage.abilities.keyword.ExaltedAbility;
import mage.cards.CardImpl;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.sets.ShardsOfAlara;
import mage.target.common.TargetCreaturePermanent;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class RafiqOfTheMany extends CardImpl {
public RafiqOfTheMany(UUID ownerId) {
super(ownerId, "Rafiq of the Many", new CardType[]{CardType.CREATURE}, "{1}{G}{W}{U}");
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.color.setGreen(true);
this.color.setWhite(true);
this.color.setBlue(true);
this.supertype.add("Legendary");
this.subtype.add("Human");
this.subtype.add("Knight");
this.art = "115029_typ_reg_sty_010.jpg";
this.power = new MageInt(3);
this.toughness = new MageInt(3);
this.addAbility(new ExaltedAbility());
this.addAbility(new RafiqOfTheManyAbility());
}
}
class RafiqOfTheManyAbility extends TriggeredAbilityImpl {
public RafiqOfTheManyAbility() {
super(Zone.BATTLEFIELD, new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn));
}
@Override
public void checkTrigger(GameEvent event, Game game) {
if (event.getType() == EventType.DECLARED_ATTACKERS ) {
if (game.getCombat().attacksAlone()) {
this.targets.add(new TargetCreaturePermanent());
this.targets.get(0).getTargets().add(game.getCombat().getAttackers().get(0));
trigger(game, event.getPlayerId());
}
}
}
@Override
public String getRule() {
return "Whenever a creature you control attacks alone, it gains double strike until end of turn.";
}
}

View file

@ -30,21 +30,13 @@ package mage.sets.shardsofalara;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Outcome;
import mage.Constants.Zone;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.SearchLibraryRevealPutInHandEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.filter.Filter.ComparisonType;
import mage.filter.FilterCard;
import mage.game.Game;
import mage.players.Player;
import mage.target.TargetCard;
import mage.sets.ShardsOfAlara;
import mage.target.common.TargetCardInLibrary;
/**
@ -63,6 +55,7 @@ public class RangerOfEos extends CardImpl {
public RangerOfEos(UUID ownerId) {
super(ownerId, "Ranger Of Eos", new CardType[]{CardType.CREATURE}, "{3}{W}");
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.color.setWhite(true);
this.subtype.add("Human");
this.subtype.add("Soldier");
@ -75,37 +68,3 @@ public class RangerOfEos extends CardImpl {
}
}
//class RangerOfEosEffect extends OneShotEffect {
//
// private static FilterCard filter = new FilterCard();
//
// static {
// filter.getCardType().add(CardType.CREATURE);
// filter.setConvertedManaCost(2);
// filter.setConvertedManaCostComparison(ComparisonType.LessThan);
// }
//
// @Override
// public boolean apply(Game game) {
// Player player = game.getPlayer(this.getSource().getControllerId());
// TargetCard target = new TargetCard(0, 2, Zone.LIBRARY, filter);
// player.searchCards(new CardsImpl(Zone.LIBRARY, player.getLibrary().getCards()), target, game);
// Cards cards = new CardsImpl(Zone.REVEALED);
// for (UUID cardId: target.getTargets()) {
// Card card = player.getLibrary().remove(cardId);
// if (card != null) {
// player.putInHand(card, game);
// cards.add(card);
// }
// }
// if (cards.size() > 0)
// player.revealCards(cards, game);
// return true;
// }
//
// @Override
// public String getText() {
// return "you may search your library for up to two creature cards with converted mana cost 1 or less, reveal them, and put them into your hand. If you do, shuffle your library.";
// }
//}

View file

@ -0,0 +1,59 @@
/*
* 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.shardsofalara;
import java.util.UUID;
import mage.Constants.CardType;
import mage.MageInt;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
import mage.sets.ShardsOfAlara;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class RhoxWarMonk extends CardImpl {
public RhoxWarMonk(UUID ownerId) {
super(ownerId, "Rhox War Monk", new CardType[]{CardType.CREATURE}, "{G}{W}{U}");
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.subtype.add("Rhino");
this.subtype.add("Monk");
this.color.setWhite(true);
this.color.setBlue(true);
this.color.setGreen(true);
this.art = "115055_typ_reg_sty_010.jpg";
this.power = new MageInt(3);
this.toughness = new MageInt(4);
this.addAbility(LifelinkAbility.getInstance());
}
}

View file

@ -36,13 +36,15 @@ import mage.abilities.LoyaltyAbility;
import mage.abilities.effects.Effects;
import mage.abilities.effects.common.BoostControlledEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.GainAbilityControlledEOTEffect;
import mage.abilities.effects.common.GainAbilityTargetEOTEffect;
import mage.abilities.effects.common.GainAbilityControlledEffect;
import mage.abilities.effects.common.GainAbilityTargetEffect;
import mage.abilities.effects.common.GainControlTargetEOTEffect;
import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.permanent.token.DragonToken;
import mage.sets.ShardsOfAlara;
import mage.target.common.TargetCreaturePermanent;
/**
@ -55,6 +57,7 @@ public class SarkhanVol extends CardImpl {
public SarkhanVol(UUID ownerId) {
super(ownerId, "Sarkhan Vol", new CardType[]{CardType.PLANESWALKER}, "{2}{R}{G}");
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.subtype.add("Sarkhan");
this.color.setRed(true);
this.color.setGreen(true);
@ -63,13 +66,13 @@ public class SarkhanVol extends CardImpl {
Effects effects1 = new Effects(null);
effects1.add(new BoostControlledEffect(1, 1, Duration.EndOfTurn));
effects1.add(new GainAbilityControlledEOTEffect(HasteAbility.getInstance()));
effects1.add(new GainAbilityControlledEffect(HasteAbility.getInstance(), Duration.EndOfTurn, new FilterCreaturePermanent()));
this.addAbility(new LoyaltyAbility(effects1, 1));
Effects effects2 = new Effects(null);
effects2.add(new GainControlTargetEOTEffect());
effects2.add(new UntapTargetEffect());
effects2.add(new GainAbilityTargetEOTEffect(HasteAbility.getInstance()));
effects2.add(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn));
LoyaltyAbility ability = new LoyaltyAbility(effects2, -2);
ability.addTarget(new TargetCreaturePermanent());

View file

@ -36,6 +36,7 @@ import mage.abilities.mana.BlackManaAbility;
import mage.abilities.mana.GreenManaAbility;
import mage.abilities.mana.RedManaAbility;
import mage.cards.CardImpl;
import mage.sets.ShardsOfAlara;
/**
*
@ -45,6 +46,7 @@ public class SavageLands extends CardImpl {
public SavageLands(UUID ownerId) {
super(ownerId, "Savage Lands", new CardType[]{CardType.LAND}, null);
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.art = "114986_typ_reg_sty_010.jpg";
this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect()));
this.addAbility(new RedManaAbility());

View file

@ -35,6 +35,7 @@ import mage.abilities.common.PutIntoGraveFromBattlefieldTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.cards.CardImpl;
import mage.game.permanent.token.SaprolingToken;
import mage.sets.ShardsOfAlara;
/**
*
@ -46,6 +47,7 @@ public class SproutingThrinax extends CardImpl {
public SproutingThrinax(UUID ownerId) {
super(ownerId, "Sprouting Thrinax", new CardType[]{CardType.CREATURE}, "{B}{R}{G}");
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.color.setBlack(true);
this.color.setRed(true);
this.color.setGreen(true);

View file

@ -36,6 +36,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.BoostSourceWhileControlsEffect;
import mage.cards.CardImpl;
import mage.filter.FilterPermanent;
import mage.sets.ShardsOfAlara;
/**
*
@ -48,6 +49,7 @@ public class WildNacatl extends CardImpl {
public WildNacatl(UUID ownerId) {
super(ownerId, "Wild Nacatl", new CardType[]{CardType.CREATURE}, "{G}");
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.color.setGreen(true);
this.subtype.add("Cat");
this.subtype.add("Warrior");

View file

@ -32,6 +32,7 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.MageInt;
import mage.cards.CardImpl;
import mage.sets.ShardsOfAlara;
/**
*
@ -41,6 +42,7 @@ public class WoollyThoctar extends CardImpl {
public WoollyThoctar(UUID ownerId) {
super(ownerId, "Woolly Thoctar", new CardType[]{CardType.CREATURE}, "{R}{G}{W}");
this.expansionSetId = ShardsOfAlara.getInstance().getId();
this.color.setRed(true);
this.color.setGreen(true);
this.color.setWhite(true);

View file

@ -30,6 +30,7 @@ package mage.sets.tenth;
import java.util.UUID;
import mage.cards.basiclands.Forest;
import mage.sets.Tenth;
/**
*
@ -39,6 +40,7 @@ public class Forest1 extends Forest {
public Forest1(UUID ownerId) {
super(ownerId);
this.expansionSetId = Tenth.getInstance().getId();
this.art = "89160_typ_reg_sty_010.jpg";
}

View file

@ -30,6 +30,7 @@ package mage.sets.tenth;
import java.util.UUID;
import mage.cards.basiclands.Island;
import mage.sets.Tenth;
/**
*
@ -39,6 +40,7 @@ public class Island1 extends Island {
public Island1(UUID ownerId) {
super(ownerId);
this.expansionSetId = Tenth.getInstance().getId();
this.art = "80957_typ_reg_sty_010.jpg";
}

View file

@ -30,6 +30,7 @@ package mage.sets.tenth;
import java.util.UUID;
import mage.cards.basiclands.Mountain;
import mage.sets.Tenth;
/**
*
@ -39,6 +40,7 @@ public class Mountain1 extends Mountain {
public Mountain1(UUID ownerId) {
super(ownerId);
this.expansionSetId = Tenth.getInstance().getId();
this.art = "89159_typ_reg_sty_010.jpg";
}

View file

@ -30,6 +30,7 @@ package mage.sets.tenth;
import java.util.UUID;
import mage.cards.basiclands.Plains;
import mage.sets.Tenth;
/**
*
@ -39,6 +40,7 @@ public class Plains1 extends Plains {
public Plains1(UUID ownerId) {
super(ownerId);
this.expansionSetId = Tenth.getInstance().getId();
this.art = "80949_typ_reg_sty_010.jpg";
}

View file

@ -30,6 +30,7 @@ package mage.sets.tenth;
import java.util.UUID;
import mage.cards.basiclands.Swamp;
import mage.sets.Tenth;
/**
*
@ -39,6 +40,7 @@ public class Swamp1 extends Swamp {
public Swamp1(UUID ownerId) {
super(ownerId);
this.expansionSetId = Tenth.getInstance().getId();
this.art = "89177_typ_reg_sty_010.jpg";
}

View file

@ -39,6 +39,7 @@ import mage.abilities.keyword.DeathtouchAbility;
import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
import mage.sets.Worldwake;
/**
*
@ -48,6 +49,7 @@ public class BasiliskCollar extends CardImpl {
public BasiliskCollar(UUID ownerId) {
super(ownerId, "Basilisk Collar", new CardType[]{CardType.ARTIFACT}, "{1}");
this.expansionSetId = Worldwake.getInstance().getId();
this.art = "126549_typ_reg_sty_010.jpg";
this.subtype.add("Equipment");
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2)));

View file

@ -0,0 +1,80 @@
/*
* 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.worldwake;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Zone;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldStaticAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCosts;
import mage.abilities.effects.common.BecomesCreatureSourceEOTEffect;
import mage.abilities.effects.common.EntersBattlefieldTappedEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.VigilanceAbility;
import mage.abilities.mana.BlueManaAbility;
import mage.abilities.mana.WhiteManaAbility;
import mage.cards.CardImpl;
import mage.game.permanent.token.Token;
import mage.sets.Worldwake;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class CelestialColonnade extends CardImpl {
public CelestialColonnade(UUID ownerId) {
super(ownerId, "Celestial Colonnade", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Worldwake.getInstance().getId();
this.art = "126518_typ_reg_sty_010.jpg";
this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect()));
this.addAbility(new BlueManaAbility());
this.addAbility(new WhiteManaAbility());
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEOTEffect(new CelestialColonnadeToken()), new ManaCosts("{3}{W}{U}")));
}
}
class CelestialColonnadeToken extends Token {
public CelestialColonnadeToken() {
super("", "4/4 white and blue Elemental creature with flying and vigilance");
cardType.add(CardType.CREATURE);
subtype.add("Elemental");
color.setBlue(true);
color.setWhite(true);
power = new MageInt(4);
toughness = new MageInt(4);
addAbility(FlyingAbility.getInstance());
addAbility(VigilanceAbility.getInstance());
}
}

View file

@ -32,16 +32,18 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Zone;
import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.common.EntersBattlefieldStaticAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCosts;
import mage.abilities.effects.common.AddPlusOneCountersSourceEffect;
import mage.abilities.effects.common.BecomesCreatureSourceEOTEffect;
import mage.abilities.effects.common.EntersBattlefieldTappedEffect;
import mage.abilities.mana.GreenManaAbility;
import mage.abilities.mana.RedManaAbility;
import mage.cards.CardImpl;
import mage.game.permanent.token.Token;
import mage.sets.Worldwake;
/**
*
@ -51,7 +53,9 @@ public class RagingRavine extends CardImpl {
public RagingRavine(UUID ownerId) {
super(ownerId, "Raging Ravine", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Worldwake.getInstance().getId();
this.art = "126537_typ_reg_sty_010.jpg";
this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect()));
this.addAbility(new GreenManaAbility());
this.addAbility(new RedManaAbility());
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEOTEffect(new RagingRavineToken()), new ManaCosts("{2}{R}{G}")));
@ -65,6 +69,8 @@ class RagingRavineToken extends Token {
super("", "3/3 red and green Elemental creature with \"Whenever this creature attacks, put a +1/+1 counter on it.\"");
cardType.add(CardType.CREATURE);
subtype.add("Elemental");
color.setRed(true);
color.setGreen(true);
power = new MageInt(3);
toughness = new MageInt(3);
addAbility(new AttacksTriggeredAbility(new AddPlusOneCountersSourceEffect(1), false));

View file

@ -0,0 +1,62 @@
/*
* 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.worldwake;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.TargetController;
import mage.abilities.common.EntersBattlefieldStaticAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.EntersBattlefieldTappedEffect;
import mage.abilities.effects.common.GainProtectionFromColorTargetEOTEffect;
import mage.abilities.mana.WhiteManaAbility;
import mage.cards.CardImpl;
import mage.choices.ChoiceColor;
import mage.sets.Worldwake;
import mage.target.common.TargetCreaturePermanent;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class SejiriSteppe extends CardImpl {
public SejiriSteppe(UUID ownerId) {
super(ownerId, "Sejiri Steppe", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Worldwake.getInstance().getId();
this.art = "123657_typ_reg_sty_010.jpg";
this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect()));
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new GainProtectionFromColorTargetEOTEffect(), false);
ability.addTarget(new TargetCreaturePermanent(1, TargetController.YOU));
ability.addChoice(new ChoiceColor());
this.addAbility(ability);
this.addAbility(new WhiteManaAbility());
}
}

View file

@ -0,0 +1,78 @@
/*
* 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.worldwake;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Zone;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldStaticAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCosts;
import mage.abilities.effects.common.BecomesCreatureSourceEOTEffect;
import mage.abilities.effects.common.EntersBattlefieldTappedEffect;
import mage.abilities.keyword.ReachAbility;
import mage.abilities.mana.GreenManaAbility;
import mage.abilities.mana.WhiteManaAbility;
import mage.cards.CardImpl;
import mage.game.permanent.token.Token;
import mage.sets.Worldwake;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class StirringWildwood extends CardImpl {
public StirringWildwood(UUID ownerId) {
super(ownerId, "Stirring Wildwood", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Worldwake.getInstance().getId();
this.art = "126541_typ_reg_sty_010.jpg";
this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect()));
this.addAbility(new GreenManaAbility());
this.addAbility(new WhiteManaAbility());
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEOTEffect(new StirringWildwoodToken()), new ManaCosts("{1}{G}{W}")));
}
}
class StirringWildwoodToken extends Token {
public StirringWildwoodToken() {
super("", "3/4 green and white Elemental creature with reach");
cardType.add(CardType.CREATURE);
subtype.add("Elemental");
color.setGreen(true);
color.setWhite(true);
power = new MageInt(3);
toughness = new MageInt(4);
addAbility(ReachAbility.getInstance());
}
}

View file

@ -0,0 +1,79 @@
/*
* 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.worldwake;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Zone;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCosts;
import mage.abilities.effects.common.PlayTargetWithoutPayingManaEffect;
import mage.abilities.effects.common.SearchLibraryRevealPutInHandEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.sets.Worldwake;
import mage.target.common.TargetCardInHand;
import mage.target.common.TargetCardInLibrary;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class StoneforgeMystic extends CardImpl {
private static FilterCard filter = new FilterCard("an Equipment card");
static {
filter.getCardType().add(CardType.ARTIFACT);
filter.getSubtype().add("Equipment");
}
public StoneforgeMystic(UUID ownerId) {
super(ownerId, "Stoneforge Mystic", new CardType[]{CardType.CREATURE}, "{1}{W}");
this.expansionSetId = Worldwake.getInstance().getId();
this.color.setWhite(true);
this.subtype.add("Kor");
this.subtype.add("Artificer");
this.art = "126571_typ_reg_sty_010.jpg";
this.power = new MageInt(1);
this.toughness = new MageInt(2);
TargetCardInLibrary target = new TargetCardInLibrary(1, 1, filter);
this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryRevealPutInHandEffect(target), true));
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PlayTargetWithoutPayingManaEffect(), new ManaCosts("{1}{W}"));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetCardInHand(0, 1, filter));
this.addAbility(ability);
}
}

View file

@ -0,0 +1,99 @@
/*
* 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.worldwake;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Zone;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.CostImpl;
import mage.abilities.costs.Costs;
import mage.abilities.costs.CostsImpl;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl;
import mage.filter.common.FilterLandPermanent;
import mage.game.Game;
import mage.sets.Worldwake;
import mage.target.common.TargetNonBasicLandPermanent;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class TectonicEdge extends CardImpl {
public TectonicEdge(UUID ownerId) {
super(ownerId, "Tectonic Edge", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Worldwake.getInstance().getId();
this.art = "126492_typ_reg_sty_010.jpg";
this.addAbility(new ColorlessManaAbility());
Costs costs = new CostsImpl();
costs.add(new TapSourceCost());
costs.add(new SacrificeSourceCost());
costs.add(new TectonicEdgeCost());
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), costs);
ability.addTarget(new TargetNonBasicLandPermanent());
ability.addManaCost(new GenericManaCost(1));
this.addAbility(ability);
}
}
class TectonicEdgeCost extends CostImpl {
FilterLandPermanent filter = new FilterLandPermanent();
public TectonicEdgeCost() {
this.text = "Activate this ability only if an opponent controls four or more lands";
}
@Override
public boolean canPay(UUID playerId, Game game) {
for (UUID opponentId: game.getOpponents(playerId)) {
filter.getControllerId().clear();
filter.getControllerId().add(opponentId);
if (game.getBattlefield().count(filter) > 3) {
return true;
}
}
return false;
}
@Override
public boolean pay(Game game, boolean noMana) {
this.paid = true;
return paid;
}
}

View file

@ -0,0 +1,98 @@
/*
* 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.zendikar;
import java.util.UUID;
import mage.Constants.CardType;
import mage.abilities.costs.AlternativeCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect;
import mage.cards.CardImpl;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.sets.Zendikar;
import mage.target.common.TargetOpponent;
import mage.watchers.Watcher;
import mage.watchers.WatcherImpl;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class ArchiveTrap extends CardImpl {
public ArchiveTrap(UUID ownerId) {
super(ownerId, "Archive Trap", new CardType[]{CardType.INSTANT}, "{3}{U}{U}");
this.expansionSetId = Zendikar.getInstance().getId();
this.color.setBlue(true);
this.art = "125080_typ_reg_sty_010.jpg";
this.getSpellAbility().addTarget(new TargetOpponent());
this.getSpellAbility().addEffect(new PutLibraryIntoGraveTargetEffect(13));
this.getSpellAbility().addAlternativeCost(new ArchiveTrapAlternativeCost());
this.watchers.add(new ArchiveTrapWatcher(ownerId));
}
}
class ArchiveTrapWatcher extends WatcherImpl {
public ArchiveTrapWatcher(UUID controllerId) {
super(controllerId, "LibrarySearched");
}
@Override
public void watch(GameEvent event, Game game) {
if (event.getType() == EventType.LIBRARY_SEARCHED && game.getOpponents(controllerId).contains(event.getPlayerId()))
condition = true;
}
}
class ArchiveTrapAlternativeCost extends AlternativeCost {
public ArchiveTrapAlternativeCost() {
super("you may pay {0} rather than pay Archive Trap's mana cost");
this.add(new GenericManaCost(0));
}
@Override
public boolean isAvailable(Game game) {
Watcher watcher = game.getState().getWatchers().get("LibrarySearched");
if (watcher != null && watcher.conditionMet())
return true;
return false;
}
@Override
public String getText() {
return "If an opponent searched his or her library this turn, you may pay {0} rather than pay Archive Trap's mana cost";
}
}

View file

@ -39,6 +39,7 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.SearchLibraryPutInPlayEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.sets.Zendikar;
import mage.target.common.TargetCardInLibrary;
/**
@ -49,6 +50,7 @@ public class AridMesa extends CardImpl {
public AridMesa(UUID ownerId) {
super(ownerId, "Arid Mesa", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Zendikar.getInstance().getId();
this.art = "123565_typ_reg_sty_010.jpg";
this.addAbility(new AridMesaAbility());
}

View file

@ -30,7 +30,8 @@ package mage.sets.zendikar;
import java.util.UUID;
import mage.Constants.CardType;
import mage.abilities.effects.common.GainAbilityControlledEOTEffect;
import mage.Constants.Duration;
import mage.abilities.effects.common.GainAbilityControlledEffect;
import mage.abilities.keyword.ProtectionAbility;
import mage.cards.CardImpl;
import mage.choices.ChoiceColor;
@ -38,6 +39,7 @@ import mage.filter.FilterCard;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.sets.Zendikar;
/**
*
@ -47,6 +49,7 @@ public class BraveTheElements extends CardImpl {
public BraveTheElements(UUID ownerId) {
super(ownerId, "Brave the Elements", new CardType[]{CardType.INSTANT}, "{W}");
this.expansionSetId = Zendikar.getInstance().getId();
this.color.setWhite(true);
this.art = "123638_typ_reg_sty_010.jpg";
this.getSpellAbility().addChoice(new ChoiceColor());
@ -55,13 +58,13 @@ public class BraveTheElements extends CardImpl {
}
class BraveTheElementsEffect extends GainAbilityControlledEOTEffect {
class BraveTheElementsEffect extends GainAbilityControlledEffect {
FilterCreaturePermanent filter1 = new FilterCreaturePermanent();
FilterCard filter2 = new FilterCard();
FilterCard filter2;
public BraveTheElementsEffect() {
super(new ProtectionAbility(new FilterCard()));
super(new ProtectionAbility(new FilterCard()), Duration.EndOfTurn);
filter1.setUseColor(true);
filter1.getColor().setWhite(true);
filter2 = (FilterCard)((ProtectionAbility)ability).getFilter();
@ -76,7 +79,7 @@ class BraveTheElementsEffect extends GainAbilityControlledEOTEffect {
filter1.getControllerId().clear();
filter1.getControllerId().add(source.getControllerId());
for (Permanent perm: game.getBattlefield().getActivePermanents(filter1)) {
perm.getAbilities().add(ability);
perm.addAbility(ability);
}
return true;
}

View file

@ -34,6 +34,7 @@ import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
import mage.sets.Zendikar;
import mage.target.common.TargetCreatureOrPlayer;
/**
@ -44,13 +45,14 @@ public class BurstLightning extends CardImpl {
public BurstLightning(UUID ownerId) {
super(ownerId, "Burst Lightning", new CardType[]{CardType.INSTANT}, "{R}");
this.expansionSetId = Zendikar.getInstance().getId();
this.color.setRed(true);
this.art = "123560_typ_reg_sty_010.jpg";
this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
this.getSpellAbility().addEffect(new DamageTargetEffect(2));
KickerAbility ability = new KickerAbility(new DamageTargetEffect(4), true);
ability.getTargets().add(this.getSpellAbility().getTargets().get(0));
ability.getCosts().add(new GenericManaCost(4));
ability.addTarget(this.getSpellAbility().getTargets().get(0));
ability.addManaCost(new GenericManaCost(4));
this.addAbility(ability);
}

View file

@ -36,6 +36,7 @@ import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
import mage.game.permanent.token.Token;
import mage.sets.Zendikar;
/**
*
@ -45,11 +46,12 @@ public class ConquerorsPledge extends CardImpl {
public ConquerorsPledge(UUID ownerId) {
super(ownerId, "Conquerors Pledge", new CardType[]{CardType.SORCERY}, "{2}{W}{W}{W}");
this.expansionSetId = Zendikar.getInstance().getId();
this.color.setWhite(true);
this.art = "123781_typ_reg_sty_010.jpg";
this.getSpellAbility().addEffect(new CreateTokenEffect(new KorSoldierToken(), 6));
KickerAbility ability = new KickerAbility(new CreateTokenEffect(new KorSoldierToken(), 12), true);
ability.getCosts().add(new GenericManaCost(6));
ability.addManaCost(new GenericManaCost(6));
this.addAbility(ability);
}

View file

@ -0,0 +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.zendikar;
import java.util.UUID;
import mage.Constants.CardType;
import mage.abilities.effects.common.DestroyAllEffect;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
import mage.sets.Zendikar;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class DayOfJudgment extends CardImpl {
public DayOfJudgment(UUID ownerId) {
super(ownerId, "Day of Judgment", new CardType[]{CardType.SORCERY}, "{2}{W}{W}");
this.expansionSetId = Zendikar.getInstance().getId();
this.color.setWhite(true);
this.art = "123645_typ_reg_sty_010.jpg";
this.getSpellAbility().addEffect(new DestroyAllEffect(new FilterCreaturePermanent("creatures")));
}
}

View file

@ -36,6 +36,7 @@ import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.game.permanent.token.Token;
import mage.sets.Zendikar;
/**
*
@ -45,6 +46,7 @@ public class EmeriaAngel extends CardImpl {
public EmeriaAngel(UUID ownerId) {
super(ownerId, "Emeria Angel", new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
this.expansionSetId = Zendikar.getInstance().getId();
this.subtype.add("Angel");
this.color.setWhite(true);
this.art = "123678_typ_reg_sty_010.jpg";

View file

@ -39,6 +39,7 @@ import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
import mage.sets.Zendikar;
import mage.target.common.TargetNonBasicLandPermanent;
/**
@ -49,6 +50,7 @@ public class GoblinRuinblaster extends CardImpl {
public GoblinRuinblaster(UUID ownerId) {
super(ownerId, "Goblin Ruinblaster", new CardType[]{CardType.CREATURE}, "{2}{R}");
this.expansionSetId = Zendikar.getInstance().getId();
this.color.setRed(true);
this.subtype.add("Goblin");
this.subtype.add("Shaman");
@ -58,7 +60,7 @@ public class GoblinRuinblaster extends CardImpl {
this.addAbility(HasteAbility.getInstance());
KickerAbility ability = new KickerAbility(new EntersBattlefieldEffect(new DestroyTargetEffect()), false);
ability.getTargets().add(new TargetNonBasicLandPermanent());
ability.getCosts().add(new ColoredManaCost(ColoredManaSymbol.R));
ability.addManaCost(new ColoredManaCost(ColoredManaSymbol.R));
this.addAbility(ability);
}

View file

@ -0,0 +1,55 @@
/*
* 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.zendikar;
import java.util.UUID;
import mage.Constants.CardType;
import mage.abilities.common.EntersBattlefieldStaticAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.EntersBattlefieldTappedEffect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.mana.WhiteManaAbility;
import mage.cards.CardImpl;
import mage.sets.Zendikar;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class KabiraCrossroads extends CardImpl {
public KabiraCrossroads(UUID ownerId) {
super(ownerId, "Kabira Crossroads", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Zendikar.getInstance().getId();
this.art = "126610_typ_reg_sty_010.jpg";
this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect()));
this.addAbility(new EntersBattlefieldTriggeredAbility(new GainLifeEffect(2), false));
this.addAbility(new WhiteManaAbility());
}
}

View file

@ -0,0 +1,60 @@
/*
* 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.zendikar;
import java.util.UUID;
import mage.Constants.CardType;
import mage.MageInt;
import mage.abilities.common.LandfallAbility;
import mage.abilities.effects.common.AddManaOfAnyColorEffect;
import mage.cards.CardImpl;
import mage.choices.ChoiceColor;
import mage.sets.Zendikar;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class LotusCobra extends CardImpl {
public LotusCobra(UUID ownerId) {
super(ownerId, "Lotus Cobra", new CardType[]{CardType.CREATURE}, "{1}{G}");
this.expansionSetId = Zendikar.getInstance().getId();
this.subtype.add("Snake");
this.color.setGreen(true);
this.art = "123641_typ_reg_sty_010.jpg";
this.power = new MageInt(2);
this.toughness = new MageInt(1);
LandfallAbility ability = new LandfallAbility(new AddManaOfAnyColorEffect(1), false);
ability.addChoice(new ChoiceColor());
this.addAbility(ability);
}
}

View file

@ -39,6 +39,7 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.SearchLibraryPutInPlayEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.sets.Zendikar;
import mage.target.common.TargetCardInLibrary;
/**
@ -49,6 +50,7 @@ public class MarshFlats extends CardImpl {
public MarshFlats(UUID ownerId) {
super(ownerId, "Marsh Flats", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Zendikar.getInstance().getId();
this.art = "123707_typ_reg_sty_010.jpg";
this.addAbility(new MarshFlatsAbility());
}

View file

@ -39,6 +39,7 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.SearchLibraryPutInPlayEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.sets.Zendikar;
import mage.target.common.TargetCardInLibrary;
/**
@ -49,6 +50,7 @@ public class MistyRainforest extends CardImpl {
public MistyRainforest(UUID ownerId) {
super(ownerId, "Misty Rainforest", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Zendikar.getInstance().getId();
this.art = "123689_typ_reg_sty_010.jpg";
this.addAbility(new MistyRainforestAbility());
}

View file

@ -43,6 +43,7 @@ import mage.counters.PlusOneCounter;
import mage.filter.FilterPermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.sets.Zendikar;
/**
*
@ -52,6 +53,7 @@ public class OranRiefTheVastwood extends CardImpl {
public OranRiefTheVastwood(UUID ownerId) {
super(ownerId, "Oran-Rief, the Vastwood", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Zendikar.getInstance().getId();
this.art = "123692_typ_reg_sty_010.jpg";
this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect()));
this.addAbility(new GreenManaAbility());
@ -66,6 +68,7 @@ class OranRiefTheVastwoodEffect extends OneShotEffect {
super(Outcome.BoostCreature);
}
@Override
public boolean apply(Game game) {
FilterPermanent filter = new FilterPermanent();
filter.getCardType().add(CardType.CREATURE);

View file

@ -0,0 +1,70 @@
/*
* 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.zendikar;
import java.util.UUID;
import mage.Constants.CardType;
import mage.MageInt;
import mage.abilities.common.LandfallAbility;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.game.permanent.token.Token;
import mage.sets.Zendikar;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class RampagingBaloths extends CardImpl {
public RampagingBaloths(UUID ownerId) {
super(ownerId, "Rampaging Baloths", new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
this.expansionSetId = Zendikar.getInstance().getId();
this.subtype.add("Beast");
this.color.setGreen(true);
this.art = "123726_typ_reg_sty_010.jpg";
this.power = new MageInt(6);
this.toughness = new MageInt(6);
this.addAbility(TrampleAbility.getInstance());
this.addAbility(new LandfallAbility(new CreateTokenEffect(new RampagingBalothsToken()), true));
}
}
class RampagingBalothsToken extends Token {
public RampagingBalothsToken() {
super("Beast", "4/4 green Beast creature token");
cardType.add(CardType.CREATURE);
subtype.add("Beast");
power = new MageInt(4);
toughness = new MageInt(4);
}
}

View file

@ -0,0 +1,74 @@
/*
* 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.zendikar;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Outcome;
import mage.Constants.Zone;
import mage.abilities.ActivatedAbilityImpl;
import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.SearchLibraryPutInPlayEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.sets.Zendikar;
import mage.target.common.TargetCardInLibrary;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class ScaldingTarn extends CardImpl {
public ScaldingTarn(UUID ownerId) {
super(ownerId, "Scalding Tarn", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Zendikar.getInstance().getId();
this.art = "123672_typ_reg_sty_010.jpg";
this.addAbility(new ScaldingTarnAbility());
}
}
class ScaldingTarnAbility extends ActivatedAbilityImpl {
public ScaldingTarnAbility() {
super(Zone.BATTLEFIELD, null);
addCost(new TapSourceCost());
addCost(new PayLifeCost(1));
addCost(new SacrificeSourceCost());
FilterCard filter = new FilterCard("Island or Mountain");
filter.getName().add("Island");
filter.getName().add("Mountain");
TargetCardInLibrary target = new TargetCardInLibrary(filter);
addEffect(new SearchLibraryPutInPlayEffect(target, false, Outcome.PutLandInPlay));
}
}

View file

@ -39,7 +39,7 @@ import mage.filter.common.FilterLandPermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.sets.Zendikar;
/**
*
@ -49,6 +49,7 @@ public class ScuteMob extends CardImpl {
public ScuteMob(UUID ownerId) {
super(ownerId, "Scute Mob", new CardType[]{CardType.CREATURE}, "{G}");
this.expansionSetId = Zendikar.getInstance().getId();
this.color.setGreen(true);
this.subtype.add("Insect");
this.art = "123606_typ_reg_sty_010.jpg";
@ -68,18 +69,19 @@ class ScuteMobAbility extends TriggeredAbilityImpl {
}
@Override
public void handleEvent(GameEvent event, Game game) {
if (event.getType() == EventType.UPKEEP_STEP_PRE) {
Permanent permanent = game.getPermanent(this.sourceId);
if (game.getActivePlayerId().equals(permanent.getControllerId())) {
filter.getControllerId().clear();
filter.getControllerId().add(permanent.getControllerId());
if (game.getBattlefield().count(filter) >= 5)
trigger(game, permanent.getControllerId());
}
public void checkTrigger(GameEvent event, Game game) {
if (event.getType() == EventType.UPKEEP_STEP_PRE && event.getPlayerId().equals(this.controllerId)) {
trigger(game, this.controllerId);
}
}
@Override
public boolean checkIfClause(Game game) {
filter.getControllerId().clear();
filter.getControllerId().add(this.controllerId);
return game.getBattlefield().count(filter) >= 5;
}
@Override
public String getRule() {
return "At the beginning of your upkeep, if you control five or more lands, put four +1/+1 counters on Scute Mob.";

View file

@ -30,10 +30,12 @@ package mage.sets.zendikar;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.MageInt;
import mage.abilities.common.LandfallAbility;
import mage.abilities.effects.common.BoostSourceEOTEffect;
import mage.abilities.effects.common.BoostSourceEffect;
import mage.cards.CardImpl;
import mage.sets.Zendikar;
/**
*
@ -43,13 +45,14 @@ public class SteppeLynx extends CardImpl {
public SteppeLynx(UUID ownerId) {
super(ownerId, "Steppe Lynx", new CardType[]{CardType.CREATURE}, "{W}");
this.expansionSetId = Zendikar.getInstance().getId();
this.subtype.add("Cat");
this.color.setWhite(true);
this.art = "123546_typ_reg_sty_010.jpg";
this.power = new MageInt(0);
this.toughness = new MageInt(1);
this.addAbility(new LandfallAbility(new BoostSourceEOTEffect(2, 2), false));
this.addAbility(new LandfallAbility(new BoostSourceEffect(2, 2, Duration.EndOfTurn), false));
}
}

View file

@ -0,0 +1,64 @@
/*
* 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.zendikar;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Zone;
import mage.abilities.ActivatedAbility;
import mage.abilities.ActivatedAbilityImpl;
import mage.abilities.common.LandfallAbility;
import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.effects.common.AddCountersSourceEffect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.cards.CardImpl;
import mage.sets.Zendikar;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class SunspringExpedition extends CardImpl {
public SunspringExpedition(UUID ownerId) {
super(ownerId, "Sunspring Expedition", new CardType[]{CardType.ENCHANTMENT}, "{W}");
this.expansionSetId = Zendikar.getInstance().getId();
this.color.setWhite(true);
this.art = "123558_typ_reg_sty_010.jpg";
this.addAbility(new LandfallAbility(new AddCountersSourceEffect("quest", 1), true));
ActivatedAbility ability = new ActivatedAbilityImpl(Zone.BATTLEFIELD, new GainLifeEffect(8)) {};
ability.addCost(new RemoveCountersSourceCost("quest", 3));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
}
}

View file

@ -0,0 +1,61 @@
/*
* 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.zendikar;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldStaticAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.BoostTargetEffect;
import mage.abilities.effects.common.EntersBattlefieldTappedEffect;
import mage.abilities.mana.RedManaAbility;
import mage.cards.CardImpl;
import mage.sets.Zendikar;
import mage.target.common.TargetCreaturePermanent;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class TeeteringPeaks extends CardImpl {
public TeeteringPeaks(UUID ownerId) {
super(ownerId, "Teetering Peaks", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Zendikar.getInstance().getId();
this.art = "123557_typ_reg_sty_010.jpg";
this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect()));
Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(2, 0, Duration.EndOfTurn), false);
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
this.addAbility(new RedManaAbility());
}
}

View file

@ -39,6 +39,7 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.SearchLibraryPutInPlayEffect;
import mage.cards.CardImpl;
import mage.filter.FilterCard;
import mage.sets.Zendikar;
import mage.target.common.TargetCardInLibrary;
/**
@ -49,6 +50,7 @@ public class VerdantCatacombs extends CardImpl {
public VerdantCatacombs(UUID ownerId) {
super(ownerId, "Verdant Catacombs", new CardType[]{CardType.LAND}, null);
this.expansionSetId = Zendikar.getInstance().getId();
this.art = "123743_typ_reg_sty_010.jpg";
this.addAbility(new VerdantCatacombsAbility());
}