From c0be640c4a571539a5fdb7677502ef05189bd72d Mon Sep 17 00:00:00 2001 From: spjspj Date: Fri, 25 Nov 2016 20:56:24 +1100 Subject: [PATCH 1/4] spjspj - Implement Australian 7pt Highlander --- .../src/mage/deck/AusHighlander.java | 179 ++++++++++++++++++ .../src/mage/deck/Commander.java | 3 +- Mage.Server/config/config.xml | 1 + .../src/mage/cards/e/EyeOfSingularity.java | 5 +- 4 files changed, 184 insertions(+), 4 deletions(-) create mode 100644 Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/AusHighlander.java diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/AusHighlander.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/AusHighlander.java new file mode 100644 index 0000000000..7aa707894c --- /dev/null +++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/AusHighlander.java @@ -0,0 +1,179 @@ +/* + * Copyright 2011 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.deck; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import mage.cards.Card; +import mage.cards.ExpansionSet; +import mage.cards.Sets; +import mage.cards.decks.Constructed; +import mage.cards.decks.Deck; +import mage.constants.CardType; +import mage.constants.SetType; +import mage.util.CardUtil; + +/** + * + * @author spjspj + */ +public class AusHighlander extends Constructed { + + public AusHighlander() { + this("Australian Highlander"); + for (ExpansionSet set : Sets.getInstance().values()) { + if (set.getSetType() != SetType.CUSTOM_SET) { + setCodes.add(set.getCode()); + } + } + } + + public AusHighlander(String name) { + super(name); + } + + @Override + public boolean validate(Deck deck) { + boolean valid = true; + + if (deck.getCards().size() != 60) { + invalid.put("Deck", "Must contain 60 singleton cards: has " + (deck.getCards().size()) + " cards"); + valid = false; + } + if (deck.getSideboard().size() > 15) { + invalid.put("Sideboard", "Must contain at most 15 singleton cards: has " + (deck.getSideboard().size()) + " cards"); + valid = false; + } + + List basicLandNames = new ArrayList<>(Arrays.asList("Forest", "Island", "Mountain", "Swamp", "Plains", "Wastes", + "Snow-Covered Forest", "Snow-Covered Island", "Snow-Covered Mountain", "Snow-Covered Swamp", "Snow-Covered Plains")); + Map counts = new HashMap<>(); + countCards(counts, deck.getCards()); + countCards(counts, deck.getSideboard()); + for (Map.Entry entry : counts.entrySet()) { + if (entry.getValue() > 1) { + if (!basicLandNames.contains(entry.getKey()) && !entry.getKey().equals("Relentless Rats") && !entry.getKey().equals("Shadowborn Apostle")) { + invalid.put(entry.getKey(), "Too many: " + entry.getValue()); + valid = false; + } + } + } + + int totalPoints = 0; + for (Map.Entry entry : counts.entrySet()) { + String cn = entry.getKey(); + + if (cn.equals("Balance") + || cn.equals("Birthing Pod") + || cn.equals("Crop Rotation") + || cn.equals("Dark Petition") + || cn.equals("Dig Through Time") + || cn.equals("Enlightened Tutor") + || cn.equals("Fastbond") + || cn.equals("Flash") + || cn.equals("Force of Will") + || cn.equals("Gifts Ungiven") + || cn.equals("Green Sun's Zenith") + || cn.equals("Hermit Druid") + || cn.equals("Intuition") + || cn.equals("Jace, the Mind Sculptor") + || cn.equals("Karakas") + || cn.equals("Lim-Dul's Vault") + || cn.equals("Mana Drain") + || cn.equals("Mana Vault") + || cn.equals("Memory Jar") + || cn.equals("Merchant Scroll") + || cn.equals("Mishra's Workshop") + || cn.equals("Muddle the Mixture") + || cn.equals("Natural Order") + || cn.equals("Oath of Druids") + || cn.equals("Personal Tutor") + || cn.equals("Protean Hulk") + || cn.equals("Snapcaster Mage") + || cn.equals("Steelshaper's Gift") + || cn.equals("Stoneforge Mystic") + || cn.equals("Survival of the Fittest") + || cn.equals("Tainted Pact") + || cn.equals("Time Spiral") + || cn.equals("Timetwister") + || cn.equals("Treasure Cruise") + || cn.equals("True-Name Nemesis") + || cn.equals("Umezawa's Jitte") + || cn.equals("Wasteland") + || cn.equals("Wheel of Fortune") + || cn.equals("Worldly Tutor") + || cn.equals("Yawgmoth's Bargain")) { + totalPoints += 1; + invalid.put(cn, "1 point"); + } + + if (cn.equals("Channel") + || cn.equals("Library of Alexandria") + || cn.equals("Mana Crypt") + || cn.equals("Mind Twist") + || cn.equals("Mox Emerald") + || cn.equals("Mox Jet") + || cn.equals("Mox Pearl") + || cn.equals("Mox Ruby") + || cn.equals("Mox Sapphire") + || cn.equals("Mystical Tutor") + || cn.equals("Skullclamp") + || cn.equals("Strip Mine") + || cn.equals("Tolarian Academy")) { + totalPoints += 2; + invalid.put(cn, "2 points"); + } + + if (cn.equals("Demonic Tutor") + || cn.equals("Imperial Seal") + || cn.equals("Sol Ring") + || cn.equals("Time Vault") + || cn.equals("Time Walk") + || cn.equals("Tinker") + || cn.equals("Vampiric Tutor") + || cn.equals("Yawgmoth's Will")) { + totalPoints += 3; + invalid.put(cn, "3 points"); + } + + if (cn.equals("Ancestral Recall") + || cn.equals("Black Lotus")) { + totalPoints += 4; + invalid.put(cn, "4 points"); + } + } + if (totalPoints > 7) { + invalid.put("Total points too high", "Your calculated point total was " + totalPoints); + valid = false; + } + return valid; + } +} diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Commander.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Commander.java index a99fcf75bd..261aafb75b 100644 --- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Commander.java +++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Commander.java @@ -387,6 +387,7 @@ public class Commander extends Constructed { || cn.equals("bane of progress") || cn.equals("basalt monolith") || cn.equals("blightsteel collossus") + || cn.equals("blood moon") || cn.equals("braids, cabal minion") || cn.equals("cabal coffers") || cn.equals("captain sisay") @@ -451,7 +452,7 @@ public class Commander extends Constructed { || cn.equals("vorinclex, voice of hunger") || cn.equals("winter orb") || cn.equals("zur the enchanter")) { - thisMaxPower = Math.max(thisMaxPower, 4); + thisMaxPower = Math.max(thisMaxPower, 5); } // Parts of infinite combos diff --git a/Mage.Server/config/config.xml b/Mage.Server/config/config.xml index 3d9c810900..6f249ddd28 100644 --- a/Mage.Server/config/config.xml +++ b/Mage.Server/config/config.xml @@ -130,6 +130,7 @@ + diff --git a/Mage.Sets/src/mage/cards/e/EyeOfSingularity.java b/Mage.Sets/src/mage/cards/e/EyeOfSingularity.java index 1d056e3435..c79782be60 100644 --- a/Mage.Sets/src/mage/cards/e/EyeOfSingularity.java +++ b/Mage.Sets/src/mage/cards/e/EyeOfSingularity.java @@ -182,9 +182,8 @@ class EyeOfSingularityTriggeredEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { HashMap toDestroy = new HashMap<>(); - Permanent etbPermanent = game.getPermanent(getTargetPointer().getFirst(game, source)); - UUID targetId = source.getEffects().get(0).getTargetPointer().getFirst(game, source); - + Permanent etbPermanent = game.getPermanentOrLKIBattlefield(getTargetPointer().getFirst(game, source)); + if (etbPermanent == null) { return false; } From 7a6ea5575c02d3dbc90e85d379d0041155fbf67a Mon Sep 17 00:00:00 2001 From: Styxo Date: Fri, 25 Nov 2016 15:14:56 +0100 Subject: [PATCH 2/4] Fixed that Fumigate was destroying creatures with regeneration shield --- Mage.Sets/src/mage/cards/f/Fumigate.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage.Sets/src/mage/cards/f/Fumigate.java b/Mage.Sets/src/mage/cards/f/Fumigate.java index 7fe692121e..92e6d2dbbd 100644 --- a/Mage.Sets/src/mage/cards/f/Fumigate.java +++ b/Mage.Sets/src/mage/cards/f/Fumigate.java @@ -84,7 +84,7 @@ class FumigateEffect extends OneShotEffect { if (controller != null) { int destroyedCreature = 0; for(Permanent creature: game.getState().getBattlefield().getActivePermanents(new FilterCreaturePermanent(), controller.getId(), game)) { - if (creature.destroy(source.getSourceId(), game, true)) { + if (creature.destroy(source.getSourceId(), game, false)) { destroyedCreature++; } } From 79abf8a2396339ce5f367ca4e6a91066fd7221a0 Mon Sep 17 00:00:00 2001 From: Styxo Date: Fri, 25 Nov 2016 15:15:26 +0100 Subject: [PATCH 3/4] Added Planar Overlay --- Mage.Sets/src/mage/cards/p/PlanarOverlay.java | 114 +++++ Mage.Sets/src/mage/sets/Planeshift.java | 389 +++++++++--------- 2 files changed, 309 insertions(+), 194 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/p/PlanarOverlay.java diff --git a/Mage.Sets/src/mage/cards/p/PlanarOverlay.java b/Mage.Sets/src/mage/cards/p/PlanarOverlay.java new file mode 100644 index 0000000000..c52593e50f --- /dev/null +++ b/Mage.Sets/src/mage/cards/p/PlanarOverlay.java @@ -0,0 +1,114 @@ +/* + * 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.cards.p; + +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.TargetController; +import mage.constants.Zone; +import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.filter.predicate.permanent.ControllerPredicate; +import mage.game.Game; +import mage.players.Player; +import mage.target.Target; +import mage.target.common.TargetLandPermanent; + +/** + * + * @author Styxo + */ +public class PlanarOverlay extends CardImpl { + + public PlanarOverlay(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}"); + + // Each player chooses a land he or she controls of each basic land type. Return those lands to their owners' hands. + this.getSpellAbility().addEffect(new PlanarOverlayEffect()); + } + + public PlanarOverlay(final PlanarOverlay card) { + super(card); + } + + @Override + public PlanarOverlay copy() { + return new PlanarOverlay(this); + } +} + +class PlanarOverlayEffect extends OneShotEffect { + + public PlanarOverlayEffect() { + super(Outcome.ReturnToHand); + this.staticText = "Each player chooses a land he or she controls of each basic land type. Return those lands to their owners' hands"; + } + + public PlanarOverlayEffect(final PlanarOverlayEffect effect) { + super(effect); + } + + @Override + public PlanarOverlayEffect copy() { + return new PlanarOverlayEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + Set lands = new HashSet<>(); + for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { + Player player = game.getPlayer(playerId); + if (player != null) { + for (String landName : new String[]{"Plains", "Island", "Mountain", "Swamp", "Forest"}) { + FilterLandPermanent filter = new FilterLandPermanent(landName + " to return to hand"); + filter.add(new SubtypePredicate(landName)); + filter.add(new ControllerPredicate(TargetController.YOU)); + Target target = new TargetLandPermanent(1, 1, filter, true); + if (target.canChoose(source.getSourceId(), player.getId(), game)) { + player.chooseTarget(outcome, target, source, game); + lands.add(game.getPermanent(target.getFirstTarget())); + } + } + } + } + controller.moveCards(lands, Zone.HAND, source, game); + return true; + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/Planeshift.java b/Mage.Sets/src/mage/sets/Planeshift.java index 56e6538f05..1a74d9519a 100644 --- a/Mage.Sets/src/mage/sets/Planeshift.java +++ b/Mage.Sets/src/mage/sets/Planeshift.java @@ -1,195 +1,196 @@ -/* - * 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 mage.cards.e.ErtaiTheCorrupted; -import mage.cards.s.SkyshipWeatherlight; -import mage.cards.t.TahngarthTalruumHero; -import mage.constants.SetType; -import mage.cards.ExpansionSet; -import mage.constants.Rarity; -import mage.cards.CardGraphicInfo; - -/** - * - * @author North - */ -public class Planeshift extends ExpansionSet { - - private static final Planeshift fINSTANCE = new Planeshift(); - - public static Planeshift getInstance() { - return fINSTANCE; - } - - private Planeshift() { - super("Planeshift", "PLS", ExpansionSet.buildDate(2001, 1, 5), SetType.EXPANSION); - this.blockName = "Invasion"; - this.parentSet = Invasion.getInstance(); - this.hasBasicLands = false; - this.hasBoosters = true; - this.numBoosterLands = 0; - this.numBoosterCommon = 11; - this.numBoosterUncommon = 3; - this.numBoosterRare = 1; - this.ratioBoosterMythic = 0; - cards.add(new SetCardInfo("Allied Strategies", 20, Rarity.UNCOMMON, mage.cards.a.AlliedStrategies.class)); - cards.add(new SetCardInfo("Alpha Kavu", 77, Rarity.UNCOMMON, mage.cards.a.AlphaKavu.class)); - cards.add(new SetCardInfo("Ancient Spider", 96, Rarity.RARE, mage.cards.a.AncientSpider.class)); - cards.add(new SetCardInfo("Arctic Merfolk", 21, Rarity.COMMON, mage.cards.a.ArcticMerfolk.class)); - cards.add(new SetCardInfo("Aura Blast", 1, Rarity.COMMON, mage.cards.a.AuraBlast.class)); - cards.add(new SetCardInfo("Aurora Griffin", 2, Rarity.COMMON, mage.cards.a.AuroraGriffin.class)); - cards.add(new SetCardInfo("Bog Down", 39, Rarity.COMMON, mage.cards.b.BogDown.class)); - cards.add(new SetCardInfo("Caldera Kavu", 58, Rarity.COMMON, mage.cards.c.CalderaKavu.class)); - cards.add(new SetCardInfo("Cavern Harpy", 97, Rarity.COMMON, mage.cards.c.CavernHarpy.class)); - cards.add(new SetCardInfo("Cloud Cover", 98, Rarity.RARE, mage.cards.c.CloudCover.class)); - cards.add(new SetCardInfo("Confound", 22, Rarity.COMMON, mage.cards.c.Confound.class)); - cards.add(new SetCardInfo("Crosis's Catacombs", 136, Rarity.UNCOMMON, mage.cards.c.CrosissCatacombs.class)); - cards.add(new SetCardInfo("Crosis's Charm", 99, Rarity.UNCOMMON, mage.cards.c.CrosissCharm.class)); - cards.add(new SetCardInfo("Darigaaz's Caldera", 137, Rarity.UNCOMMON, mage.cards.d.DarigaazsCaldera.class)); - cards.add(new SetCardInfo("Darigaaz's Charm", 100, Rarity.UNCOMMON, mage.cards.d.DarigaazsCharm.class)); - cards.add(new SetCardInfo("Daring Leap", 101, Rarity.COMMON, mage.cards.d.DaringLeap.class)); - cards.add(new SetCardInfo("Deadapult", 59, Rarity.RARE, mage.cards.d.Deadapult.class)); - cards.add(new SetCardInfo("Death Bomb", 41, Rarity.COMMON, mage.cards.d.DeathBomb.class)); - cards.add(new SetCardInfo("Destructive Flow", 102, Rarity.RARE, mage.cards.d.DestructiveFlow.class)); - cards.add(new SetCardInfo("Diabolic Intent", 42, Rarity.RARE, mage.cards.d.DiabolicIntent.class)); - cards.add(new SetCardInfo("Disciple of Kangee", 3, Rarity.COMMON, mage.cards.d.DiscipleOfKangee.class)); - cards.add(new SetCardInfo("Doomsday Specter", 103, Rarity.RARE, mage.cards.d.DoomsdaySpecter.class)); - cards.add(new SetCardInfo("Draco", 131, Rarity.RARE, mage.cards.d.Draco.class)); - cards.add(new SetCardInfo("Dralnu's Pet", 23, Rarity.RARE, mage.cards.d.DralnusPet.class)); - cards.add(new SetCardInfo("Dromar's Cavern", 138, Rarity.UNCOMMON, mage.cards.d.DromarsCavern.class)); - cards.add(new SetCardInfo("Dromar's Charm", 105, Rarity.UNCOMMON, mage.cards.d.DromarsCharm.class)); - cards.add(new SetCardInfo("Eladamri's Call", 106, Rarity.RARE, mage.cards.e.EladamrisCall.class)); - cards.add(new SetCardInfo("Ertai's Trickery", 24, Rarity.UNCOMMON, mage.cards.e.ErtaisTrickery.class)); - cards.add(new SetCardInfo("Ertai, the Corrupted", "107a", Rarity.RARE, ErtaiTheCorrupted.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Ertai, the Corrupted", "107b", Rarity.RARE, ErtaiTheCorrupted.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Escape Routes", 25, Rarity.COMMON, mage.cards.e.EscapeRoutes.class)); - cards.add(new SetCardInfo("Exotic Disease", 43, Rarity.UNCOMMON, mage.cards.e.ExoticDisease.class)); - cards.add(new SetCardInfo("Falling Timber", 79, Rarity.COMMON, mage.cards.f.FallingTimber.class)); - cards.add(new SetCardInfo("Flametongue Kavu", 60, Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class)); - cards.add(new SetCardInfo("Fleetfoot Panther", 108, Rarity.UNCOMMON, mage.cards.f.FleetfootPanther.class)); - cards.add(new SetCardInfo("Forsaken City", 139, Rarity.RARE, mage.cards.f.ForsakenCity.class)); - cards.add(new SetCardInfo("Gaea's Herald", 80, Rarity.RARE, mage.cards.g.GaeasHerald.class)); - cards.add(new SetCardInfo("Gaea's Might", 81, Rarity.COMMON, mage.cards.g.GaeasMight.class)); - cards.add(new SetCardInfo("Gainsay", 26, Rarity.UNCOMMON, mage.cards.g.Gainsay.class)); - cards.add(new SetCardInfo("Gerrard's Command", 109, Rarity.COMMON, mage.cards.g.GerrardsCommand.class)); - cards.add(new SetCardInfo("Hobble", 7, Rarity.COMMON, mage.cards.h.Hobble.class)); - cards.add(new SetCardInfo("Honorable Scout", 8, Rarity.COMMON, mage.cards.h.HonorableScout.class)); - cards.add(new SetCardInfo("Horned Kavu", 110, Rarity.COMMON, mage.cards.h.HornedKavu.class)); - cards.add(new SetCardInfo("Hull Breach", 111, Rarity.COMMON, mage.cards.h.HullBreach.class)); - cards.add(new SetCardInfo("Hunting Drake", 27, Rarity.COMMON, mage.cards.h.HuntingDrake.class)); - cards.add(new SetCardInfo("Implode", 62, Rarity.UNCOMMON, mage.cards.i.Implode.class)); - cards.add(new SetCardInfo("Insolence", 63, Rarity.COMMON, mage.cards.i.Insolence.class)); - cards.add(new SetCardInfo("Kavu Recluse", 64, Rarity.COMMON, mage.cards.k.KavuRecluse.class)); - cards.add(new SetCardInfo("Keldon Mantle", 65, Rarity.COMMON, mage.cards.k.KeldonMantle.class)); - cards.add(new SetCardInfo("Lashknife Barrier", 9, Rarity.UNCOMMON, mage.cards.l.LashknifeBarrier.class)); - cards.add(new SetCardInfo("Lava Zombie", 113, Rarity.COMMON, mage.cards.l.LavaZombie.class)); - cards.add(new SetCardInfo("Lord of the Undead", 44, Rarity.RARE, mage.cards.l.LordOfTheUndead.class)); - cards.add(new SetCardInfo("Maggot Carrier", 45, Rarity.COMMON, mage.cards.m.MaggotCarrier.class)); - cards.add(new SetCardInfo("Magma Burst", 66, Rarity.COMMON, mage.cards.m.MagmaBurst.class)); - cards.add(new SetCardInfo("Magnigoth Treefolk", 82, Rarity.RARE, mage.cards.m.MagnigothTreefolk.class)); - cards.add(new SetCardInfo("Malicious Advice", 114, Rarity.COMMON, mage.cards.m.MaliciousAdvice.class)); - cards.add(new SetCardInfo("Mana Cylix", 132, Rarity.UNCOMMON, mage.cards.m.ManaCylix.class)); - cards.add(new SetCardInfo("March of Souls", 10, Rarity.RARE, mage.cards.m.MarchOfSouls.class)); - cards.add(new SetCardInfo("Marsh Crocodile", 115, Rarity.UNCOMMON, mage.cards.m.MarshCrocodile.class)); - cards.add(new SetCardInfo("Meddling Mage", 116, Rarity.RARE, mage.cards.m.MeddlingMage.class)); - cards.add(new SetCardInfo("Meteor Crater", 140, Rarity.RARE, mage.cards.m.MeteorCrater.class)); - cards.add(new SetCardInfo("Mire Kavu", 67, Rarity.COMMON, mage.cards.m.MireKavu.class)); - cards.add(new SetCardInfo("Mogg Jailer", 68, Rarity.UNCOMMON, mage.cards.m.MoggJailer.class)); - cards.add(new SetCardInfo("Mogg Sentry", 69, Rarity.RARE, mage.cards.m.MoggSentry.class)); - cards.add(new SetCardInfo("Morgue Toad", 46, Rarity.COMMON, mage.cards.m.MorgueToad.class)); - cards.add(new SetCardInfo("Multani's Harmony", 84, Rarity.UNCOMMON, mage.cards.m.MultanisHarmony.class)); - cards.add(new SetCardInfo("Natural Emergence", 117, Rarity.RARE, mage.cards.n.NaturalEmergence.class)); - cards.add(new SetCardInfo("Nemata, Grove Guardian", 85, Rarity.RARE, mage.cards.n.NemataGroveGuardian.class)); - cards.add(new SetCardInfo("Nightscape Battlemage", 47, Rarity.UNCOMMON, mage.cards.n.NightscapeBattlemage.class)); - cards.add(new SetCardInfo("Nightscape Familiar", 48, Rarity.COMMON, mage.cards.n.NightscapeFamiliar.class)); - cards.add(new SetCardInfo("Orim's Chant", 11, Rarity.RARE, mage.cards.o.OrimsChant.class)); - cards.add(new SetCardInfo("Phyrexian Bloodstock", 50, Rarity.COMMON, mage.cards.p.PhyrexianBloodstock.class)); - cards.add(new SetCardInfo("Phyrexian Scuta", 51, Rarity.RARE, mage.cards.p.PhyrexianScuta.class)); - cards.add(new SetCardInfo("Phyrexian Tyranny", 118, Rarity.RARE, mage.cards.p.PhyrexianTyranny.class)); - cards.add(new SetCardInfo("Planeswalker's Favor", 86, Rarity.RARE, mage.cards.p.PlaneswalkersFavor.class)); - cards.add(new SetCardInfo("Planeswalker's Fury", 70, Rarity.RARE, mage.cards.p.PlaneswalkersFury.class)); - cards.add(new SetCardInfo("Planeswalker's Mirth", 12, Rarity.RARE, mage.cards.p.PlaneswalkersMirth.class)); - cards.add(new SetCardInfo("Planeswalker's Scorn", 52, Rarity.RARE, mage.cards.p.PlaneswalkersScorn.class)); - cards.add(new SetCardInfo("Pollen Remedy", 13, Rarity.COMMON, mage.cards.p.PollenRemedy.class)); - cards.add(new SetCardInfo("Primal Growth", 87, Rarity.COMMON, mage.cards.p.PrimalGrowth.class)); - cards.add(new SetCardInfo("Pygmy Kavu", 88, Rarity.COMMON, mage.cards.p.PygmyKavu.class)); - cards.add(new SetCardInfo("Questing Phelddagrif", 119, Rarity.RARE, mage.cards.q.QuestingPhelddagrif.class)); - cards.add(new SetCardInfo("Quirion Dryad", 89, Rarity.RARE, mage.cards.q.QuirionDryad.class)); - cards.add(new SetCardInfo("Quirion Explorer", 90, Rarity.COMMON, mage.cards.q.QuirionExplorer.class)); - cards.add(new SetCardInfo("Radiant Kavu", 120, Rarity.RARE, mage.cards.r.RadiantKavu.class)); - cards.add(new SetCardInfo("Razing Snidd", 121, Rarity.UNCOMMON, mage.cards.r.RazingSnidd.class)); - cards.add(new SetCardInfo("Rith's Charm", 122, Rarity.UNCOMMON, mage.cards.r.RithsCharm.class)); - cards.add(new SetCardInfo("Rith's Grove", 141, Rarity.UNCOMMON, mage.cards.r.RithsGrove.class)); - cards.add(new SetCardInfo("Root Greevil", 91, Rarity.COMMON, mage.cards.r.RootGreevil.class)); - cards.add(new SetCardInfo("Rushing River", 30, Rarity.COMMON, mage.cards.r.RushingRiver.class)); - cards.add(new SetCardInfo("Samite Elder", 14, Rarity.RARE, mage.cards.s.SamiteElder.class)); - cards.add(new SetCardInfo("Samite Pilgrim", 15, Rarity.COMMON, mage.cards.s.SamitePilgrim.class)); - cards.add(new SetCardInfo("Sawtooth Loon", 123, Rarity.UNCOMMON, mage.cards.s.SawtoothLoon.class)); - cards.add(new SetCardInfo("Sea Snidd", 31, Rarity.COMMON, mage.cards.s.SeaSnidd.class)); - cards.add(new SetCardInfo("Shifting Sky", 32, Rarity.UNCOMMON, mage.cards.s.ShiftingSky.class)); - cards.add(new SetCardInfo("Shivan Wurm", 124, Rarity.RARE, mage.cards.s.ShivanWurm.class)); - cards.add(new SetCardInfo("Shriek of Dread", 53, Rarity.COMMON, mage.cards.s.ShriekOfDread.class)); - cards.add(new SetCardInfo("Silver Drake", 125, Rarity.COMMON, mage.cards.s.SilverDrake.class)); - cards.add(new SetCardInfo("Singe", 71, Rarity.COMMON, mage.cards.s.Singe.class)); - cards.add(new SetCardInfo("Sinister Strength", 54, Rarity.COMMON, mage.cards.s.SinisterStrength.class)); - cards.add(new SetCardInfo("Sisay's Ingenuity", 33, Rarity.COMMON, mage.cards.s.SisaysIngenuity.class)); - cards.add(new SetCardInfo("Skyship Weatherlight", "133a", Rarity.RARE, SkyshipWeatherlight.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Skyship Weatherlight", "133b", Rarity.RARE, SkyshipWeatherlight.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Skyshroud Blessing", 92, Rarity.UNCOMMON, mage.cards.s.SkyshroudBlessing.class)); - cards.add(new SetCardInfo("Slay", 55, Rarity.UNCOMMON, mage.cards.s.Slay.class)); - cards.add(new SetCardInfo("Sleeping Potion", 34, Rarity.COMMON, mage.cards.s.SleepingPotion.class)); - cards.add(new SetCardInfo("Slingshot Goblin", 72, Rarity.COMMON, mage.cards.s.SlingshotGoblin.class)); - cards.add(new SetCardInfo("Sparkcaster", 126, Rarity.UNCOMMON, mage.cards.s.Sparkcaster.class)); - cards.add(new SetCardInfo("Star Compass", 134, Rarity.UNCOMMON, mage.cards.s.StarCompass.class)); - cards.add(new SetCardInfo("Steel Leaf Paladin", 127, Rarity.COMMON, mage.cards.s.SteelLeafPaladin.class)); - cards.add(new SetCardInfo("Stone Kavu", 93, Rarity.COMMON, mage.cards.s.StoneKavu.class)); - cards.add(new SetCardInfo("Stormscape Battlemage", 35, Rarity.UNCOMMON, mage.cards.s.StormscapeBattlemage.class)); - cards.add(new SetCardInfo("Stormscape Familiar", 36, Rarity.COMMON, mage.cards.s.StormscapeFamiliar.class)); - cards.add(new SetCardInfo("Strafe", 73, Rarity.UNCOMMON, mage.cards.s.Strafe.class)); - cards.add(new SetCardInfo("Stratadon", 135, Rarity.UNCOMMON, mage.cards.s.Stratadon.class)); - cards.add(new SetCardInfo("Sunken Hope", 37, Rarity.RARE, mage.cards.s.SunkenHope.class)); - cards.add(new SetCardInfo("Sunscape Battlemage", 16, Rarity.UNCOMMON, mage.cards.s.SunscapeBattlemage.class)); - cards.add(new SetCardInfo("Sunscape Familiar", 17, Rarity.COMMON, mage.cards.s.SunscapeFamiliar.class)); - cards.add(new SetCardInfo("Tahngarth, Talruum Hero", "74a", Rarity.RARE, TahngarthTalruumHero.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Tahngarth, Talruum Hero", "74b", Rarity.RARE, TahngarthTalruumHero.class, new CardGraphicInfo(null, true))); - cards.add(new SetCardInfo("Terminal Moraine", 142, Rarity.UNCOMMON, mage.cards.t.TerminalMoraine.class)); - cards.add(new SetCardInfo("Terminate", 128, Rarity.COMMON, mage.cards.t.Terminate.class)); - cards.add(new SetCardInfo("Thornscape Battlemage", 94, Rarity.UNCOMMON, mage.cards.t.ThornscapeBattlemage.class)); - cards.add(new SetCardInfo("Thornscape Familiar", 95, Rarity.COMMON, mage.cards.t.ThornscapeFamiliar.class)); - cards.add(new SetCardInfo("Thunderscape Battlemage", 75, Rarity.UNCOMMON, mage.cards.t.ThunderscapeBattlemage.class)); - cards.add(new SetCardInfo("Thunderscape Familiar", 76, Rarity.COMMON, mage.cards.t.ThunderscapeFamiliar.class)); - cards.add(new SetCardInfo("Treva's Charm", 129, Rarity.UNCOMMON, mage.cards.t.TrevasCharm.class)); - cards.add(new SetCardInfo("Treva's Ruins", 143, Rarity.UNCOMMON, mage.cards.t.TrevasRuins.class)); - cards.add(new SetCardInfo("Urza's Guilt", 130, Rarity.RARE, mage.cards.u.UrzasGuilt.class)); - cards.add(new SetCardInfo("Voice of All", 19, Rarity.UNCOMMON, mage.cards.v.VoiceOfAll.class)); - cards.add(new SetCardInfo("Volcano Imp", 56, Rarity.COMMON, mage.cards.v.VolcanoImp.class)); - cards.add(new SetCardInfo("Warped Devotion", 57, Rarity.UNCOMMON, mage.cards.w.WarpedDevotion.class)); - cards.add(new SetCardInfo("Waterspout Elemental", 38, Rarity.RARE, mage.cards.w.WaterspoutElemental.class)); - } +/* + * 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 mage.cards.e.ErtaiTheCorrupted; +import mage.cards.s.SkyshipWeatherlight; +import mage.cards.t.TahngarthTalruumHero; +import mage.constants.SetType; +import mage.cards.ExpansionSet; +import mage.constants.Rarity; +import mage.cards.CardGraphicInfo; + +/** + * + * @author North + */ +public class Planeshift extends ExpansionSet { + + private static final Planeshift fINSTANCE = new Planeshift(); + + public static Planeshift getInstance() { + return fINSTANCE; + } + + private Planeshift() { + super("Planeshift", "PLS", ExpansionSet.buildDate(2001, 1, 5), SetType.EXPANSION); + this.blockName = "Invasion"; + this.parentSet = Invasion.getInstance(); + this.hasBasicLands = false; + this.hasBoosters = true; + this.numBoosterLands = 0; + this.numBoosterCommon = 11; + this.numBoosterUncommon = 3; + this.numBoosterRare = 1; + this.ratioBoosterMythic = 0; + cards.add(new SetCardInfo("Allied Strategies", 20, Rarity.UNCOMMON, mage.cards.a.AlliedStrategies.class)); + cards.add(new SetCardInfo("Alpha Kavu", 77, Rarity.UNCOMMON, mage.cards.a.AlphaKavu.class)); + cards.add(new SetCardInfo("Ancient Spider", 96, Rarity.RARE, mage.cards.a.AncientSpider.class)); + cards.add(new SetCardInfo("Arctic Merfolk", 21, Rarity.COMMON, mage.cards.a.ArcticMerfolk.class)); + cards.add(new SetCardInfo("Aura Blast", 1, Rarity.COMMON, mage.cards.a.AuraBlast.class)); + cards.add(new SetCardInfo("Aurora Griffin", 2, Rarity.COMMON, mage.cards.a.AuroraGriffin.class)); + cards.add(new SetCardInfo("Bog Down", 39, Rarity.COMMON, mage.cards.b.BogDown.class)); + cards.add(new SetCardInfo("Caldera Kavu", 58, Rarity.COMMON, mage.cards.c.CalderaKavu.class)); + cards.add(new SetCardInfo("Cavern Harpy", 97, Rarity.COMMON, mage.cards.c.CavernHarpy.class)); + cards.add(new SetCardInfo("Cloud Cover", 98, Rarity.RARE, mage.cards.c.CloudCover.class)); + cards.add(new SetCardInfo("Confound", 22, Rarity.COMMON, mage.cards.c.Confound.class)); + cards.add(new SetCardInfo("Crosis's Catacombs", 136, Rarity.UNCOMMON, mage.cards.c.CrosissCatacombs.class)); + cards.add(new SetCardInfo("Crosis's Charm", 99, Rarity.UNCOMMON, mage.cards.c.CrosissCharm.class)); + cards.add(new SetCardInfo("Darigaaz's Caldera", 137, Rarity.UNCOMMON, mage.cards.d.DarigaazsCaldera.class)); + cards.add(new SetCardInfo("Darigaaz's Charm", 100, Rarity.UNCOMMON, mage.cards.d.DarigaazsCharm.class)); + cards.add(new SetCardInfo("Daring Leap", 101, Rarity.COMMON, mage.cards.d.DaringLeap.class)); + cards.add(new SetCardInfo("Deadapult", 59, Rarity.RARE, mage.cards.d.Deadapult.class)); + cards.add(new SetCardInfo("Death Bomb", 41, Rarity.COMMON, mage.cards.d.DeathBomb.class)); + cards.add(new SetCardInfo("Destructive Flow", 102, Rarity.RARE, mage.cards.d.DestructiveFlow.class)); + cards.add(new SetCardInfo("Diabolic Intent", 42, Rarity.RARE, mage.cards.d.DiabolicIntent.class)); + cards.add(new SetCardInfo("Disciple of Kangee", 3, Rarity.COMMON, mage.cards.d.DiscipleOfKangee.class)); + cards.add(new SetCardInfo("Doomsday Specter", 103, Rarity.RARE, mage.cards.d.DoomsdaySpecter.class)); + cards.add(new SetCardInfo("Draco", 131, Rarity.RARE, mage.cards.d.Draco.class)); + cards.add(new SetCardInfo("Dralnu's Pet", 23, Rarity.RARE, mage.cards.d.DralnusPet.class)); + cards.add(new SetCardInfo("Dromar's Cavern", 138, Rarity.UNCOMMON, mage.cards.d.DromarsCavern.class)); + cards.add(new SetCardInfo("Dromar's Charm", 105, Rarity.UNCOMMON, mage.cards.d.DromarsCharm.class)); + cards.add(new SetCardInfo("Eladamri's Call", 106, Rarity.RARE, mage.cards.e.EladamrisCall.class)); + cards.add(new SetCardInfo("Ertai's Trickery", 24, Rarity.UNCOMMON, mage.cards.e.ErtaisTrickery.class)); + cards.add(new SetCardInfo("Ertai, the Corrupted", "107a", Rarity.RARE, ErtaiTheCorrupted.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Ertai, the Corrupted", "107b", Rarity.RARE, ErtaiTheCorrupted.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Escape Routes", 25, Rarity.COMMON, mage.cards.e.EscapeRoutes.class)); + cards.add(new SetCardInfo("Exotic Disease", 43, Rarity.UNCOMMON, mage.cards.e.ExoticDisease.class)); + cards.add(new SetCardInfo("Falling Timber", 79, Rarity.COMMON, mage.cards.f.FallingTimber.class)); + cards.add(new SetCardInfo("Flametongue Kavu", 60, Rarity.UNCOMMON, mage.cards.f.FlametongueKavu.class)); + cards.add(new SetCardInfo("Fleetfoot Panther", 108, Rarity.UNCOMMON, mage.cards.f.FleetfootPanther.class)); + cards.add(new SetCardInfo("Forsaken City", 139, Rarity.RARE, mage.cards.f.ForsakenCity.class)); + cards.add(new SetCardInfo("Gaea's Herald", 80, Rarity.RARE, mage.cards.g.GaeasHerald.class)); + cards.add(new SetCardInfo("Gaea's Might", 81, Rarity.COMMON, mage.cards.g.GaeasMight.class)); + cards.add(new SetCardInfo("Gainsay", 26, Rarity.UNCOMMON, mage.cards.g.Gainsay.class)); + cards.add(new SetCardInfo("Gerrard's Command", 109, Rarity.COMMON, mage.cards.g.GerrardsCommand.class)); + cards.add(new SetCardInfo("Hobble", 7, Rarity.COMMON, mage.cards.h.Hobble.class)); + cards.add(new SetCardInfo("Honorable Scout", 8, Rarity.COMMON, mage.cards.h.HonorableScout.class)); + cards.add(new SetCardInfo("Horned Kavu", 110, Rarity.COMMON, mage.cards.h.HornedKavu.class)); + cards.add(new SetCardInfo("Hull Breach", 111, Rarity.COMMON, mage.cards.h.HullBreach.class)); + cards.add(new SetCardInfo("Hunting Drake", 27, Rarity.COMMON, mage.cards.h.HuntingDrake.class)); + cards.add(new SetCardInfo("Implode", 62, Rarity.UNCOMMON, mage.cards.i.Implode.class)); + cards.add(new SetCardInfo("Insolence", 63, Rarity.COMMON, mage.cards.i.Insolence.class)); + cards.add(new SetCardInfo("Kavu Recluse", 64, Rarity.COMMON, mage.cards.k.KavuRecluse.class)); + cards.add(new SetCardInfo("Keldon Mantle", 65, Rarity.COMMON, mage.cards.k.KeldonMantle.class)); + cards.add(new SetCardInfo("Lashknife Barrier", 9, Rarity.UNCOMMON, mage.cards.l.LashknifeBarrier.class)); + cards.add(new SetCardInfo("Lava Zombie", 113, Rarity.COMMON, mage.cards.l.LavaZombie.class)); + cards.add(new SetCardInfo("Lord of the Undead", 44, Rarity.RARE, mage.cards.l.LordOfTheUndead.class)); + cards.add(new SetCardInfo("Maggot Carrier", 45, Rarity.COMMON, mage.cards.m.MaggotCarrier.class)); + cards.add(new SetCardInfo("Magma Burst", 66, Rarity.COMMON, mage.cards.m.MagmaBurst.class)); + cards.add(new SetCardInfo("Magnigoth Treefolk", 82, Rarity.RARE, mage.cards.m.MagnigothTreefolk.class)); + cards.add(new SetCardInfo("Malicious Advice", 114, Rarity.COMMON, mage.cards.m.MaliciousAdvice.class)); + cards.add(new SetCardInfo("Mana Cylix", 132, Rarity.UNCOMMON, mage.cards.m.ManaCylix.class)); + cards.add(new SetCardInfo("March of Souls", 10, Rarity.RARE, mage.cards.m.MarchOfSouls.class)); + cards.add(new SetCardInfo("Marsh Crocodile", 115, Rarity.UNCOMMON, mage.cards.m.MarshCrocodile.class)); + cards.add(new SetCardInfo("Meddling Mage", 116, Rarity.RARE, mage.cards.m.MeddlingMage.class)); + cards.add(new SetCardInfo("Meteor Crater", 140, Rarity.RARE, mage.cards.m.MeteorCrater.class)); + cards.add(new SetCardInfo("Mire Kavu", 67, Rarity.COMMON, mage.cards.m.MireKavu.class)); + cards.add(new SetCardInfo("Mogg Jailer", 68, Rarity.UNCOMMON, mage.cards.m.MoggJailer.class)); + cards.add(new SetCardInfo("Mogg Sentry", 69, Rarity.RARE, mage.cards.m.MoggSentry.class)); + cards.add(new SetCardInfo("Morgue Toad", 46, Rarity.COMMON, mage.cards.m.MorgueToad.class)); + cards.add(new SetCardInfo("Multani's Harmony", 84, Rarity.UNCOMMON, mage.cards.m.MultanisHarmony.class)); + cards.add(new SetCardInfo("Natural Emergence", 117, Rarity.RARE, mage.cards.n.NaturalEmergence.class)); + cards.add(new SetCardInfo("Nemata, Grove Guardian", 85, Rarity.RARE, mage.cards.n.NemataGroveGuardian.class)); + cards.add(new SetCardInfo("Nightscape Battlemage", 47, Rarity.UNCOMMON, mage.cards.n.NightscapeBattlemage.class)); + cards.add(new SetCardInfo("Nightscape Familiar", 48, Rarity.COMMON, mage.cards.n.NightscapeFamiliar.class)); + cards.add(new SetCardInfo("Orim's Chant", 11, Rarity.RARE, mage.cards.o.OrimsChant.class)); + cards.add(new SetCardInfo("Phyrexian Bloodstock", 50, Rarity.COMMON, mage.cards.p.PhyrexianBloodstock.class)); + cards.add(new SetCardInfo("Phyrexian Scuta", 51, Rarity.RARE, mage.cards.p.PhyrexianScuta.class)); + cards.add(new SetCardInfo("Phyrexian Tyranny", 118, Rarity.RARE, mage.cards.p.PhyrexianTyranny.class)); + cards.add(new SetCardInfo("Planar Overlay", 28, Rarity.RARE, mage.cards.p.PlanarOverlay.class)); + cards.add(new SetCardInfo("Planeswalker's Favor", 86, Rarity.RARE, mage.cards.p.PlaneswalkersFavor.class)); + cards.add(new SetCardInfo("Planeswalker's Fury", 70, Rarity.RARE, mage.cards.p.PlaneswalkersFury.class)); + cards.add(new SetCardInfo("Planeswalker's Mirth", 12, Rarity.RARE, mage.cards.p.PlaneswalkersMirth.class)); + cards.add(new SetCardInfo("Planeswalker's Scorn", 52, Rarity.RARE, mage.cards.p.PlaneswalkersScorn.class)); + cards.add(new SetCardInfo("Pollen Remedy", 13, Rarity.COMMON, mage.cards.p.PollenRemedy.class)); + cards.add(new SetCardInfo("Primal Growth", 87, Rarity.COMMON, mage.cards.p.PrimalGrowth.class)); + cards.add(new SetCardInfo("Pygmy Kavu", 88, Rarity.COMMON, mage.cards.p.PygmyKavu.class)); + cards.add(new SetCardInfo("Questing Phelddagrif", 119, Rarity.RARE, mage.cards.q.QuestingPhelddagrif.class)); + cards.add(new SetCardInfo("Quirion Dryad", 89, Rarity.RARE, mage.cards.q.QuirionDryad.class)); + cards.add(new SetCardInfo("Quirion Explorer", 90, Rarity.COMMON, mage.cards.q.QuirionExplorer.class)); + cards.add(new SetCardInfo("Radiant Kavu", 120, Rarity.RARE, mage.cards.r.RadiantKavu.class)); + cards.add(new SetCardInfo("Razing Snidd", 121, Rarity.UNCOMMON, mage.cards.r.RazingSnidd.class)); + cards.add(new SetCardInfo("Rith's Charm", 122, Rarity.UNCOMMON, mage.cards.r.RithsCharm.class)); + cards.add(new SetCardInfo("Rith's Grove", 141, Rarity.UNCOMMON, mage.cards.r.RithsGrove.class)); + cards.add(new SetCardInfo("Root Greevil", 91, Rarity.COMMON, mage.cards.r.RootGreevil.class)); + cards.add(new SetCardInfo("Rushing River", 30, Rarity.COMMON, mage.cards.r.RushingRiver.class)); + cards.add(new SetCardInfo("Samite Elder", 14, Rarity.RARE, mage.cards.s.SamiteElder.class)); + cards.add(new SetCardInfo("Samite Pilgrim", 15, Rarity.COMMON, mage.cards.s.SamitePilgrim.class)); + cards.add(new SetCardInfo("Sawtooth Loon", 123, Rarity.UNCOMMON, mage.cards.s.SawtoothLoon.class)); + cards.add(new SetCardInfo("Sea Snidd", 31, Rarity.COMMON, mage.cards.s.SeaSnidd.class)); + cards.add(new SetCardInfo("Shifting Sky", 32, Rarity.UNCOMMON, mage.cards.s.ShiftingSky.class)); + cards.add(new SetCardInfo("Shivan Wurm", 124, Rarity.RARE, mage.cards.s.ShivanWurm.class)); + cards.add(new SetCardInfo("Shriek of Dread", 53, Rarity.COMMON, mage.cards.s.ShriekOfDread.class)); + cards.add(new SetCardInfo("Silver Drake", 125, Rarity.COMMON, mage.cards.s.SilverDrake.class)); + cards.add(new SetCardInfo("Singe", 71, Rarity.COMMON, mage.cards.s.Singe.class)); + cards.add(new SetCardInfo("Sinister Strength", 54, Rarity.COMMON, mage.cards.s.SinisterStrength.class)); + cards.add(new SetCardInfo("Sisay's Ingenuity", 33, Rarity.COMMON, mage.cards.s.SisaysIngenuity.class)); + cards.add(new SetCardInfo("Skyship Weatherlight", "133a", Rarity.RARE, SkyshipWeatherlight.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Skyship Weatherlight", "133b", Rarity.RARE, SkyshipWeatherlight.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Skyshroud Blessing", 92, Rarity.UNCOMMON, mage.cards.s.SkyshroudBlessing.class)); + cards.add(new SetCardInfo("Slay", 55, Rarity.UNCOMMON, mage.cards.s.Slay.class)); + cards.add(new SetCardInfo("Sleeping Potion", 34, Rarity.COMMON, mage.cards.s.SleepingPotion.class)); + cards.add(new SetCardInfo("Slingshot Goblin", 72, Rarity.COMMON, mage.cards.s.SlingshotGoblin.class)); + cards.add(new SetCardInfo("Sparkcaster", 126, Rarity.UNCOMMON, mage.cards.s.Sparkcaster.class)); + cards.add(new SetCardInfo("Star Compass", 134, Rarity.UNCOMMON, mage.cards.s.StarCompass.class)); + cards.add(new SetCardInfo("Steel Leaf Paladin", 127, Rarity.COMMON, mage.cards.s.SteelLeafPaladin.class)); + cards.add(new SetCardInfo("Stone Kavu", 93, Rarity.COMMON, mage.cards.s.StoneKavu.class)); + cards.add(new SetCardInfo("Stormscape Battlemage", 35, Rarity.UNCOMMON, mage.cards.s.StormscapeBattlemage.class)); + cards.add(new SetCardInfo("Stormscape Familiar", 36, Rarity.COMMON, mage.cards.s.StormscapeFamiliar.class)); + cards.add(new SetCardInfo("Strafe", 73, Rarity.UNCOMMON, mage.cards.s.Strafe.class)); + cards.add(new SetCardInfo("Stratadon", 135, Rarity.UNCOMMON, mage.cards.s.Stratadon.class)); + cards.add(new SetCardInfo("Sunken Hope", 37, Rarity.RARE, mage.cards.s.SunkenHope.class)); + cards.add(new SetCardInfo("Sunscape Battlemage", 16, Rarity.UNCOMMON, mage.cards.s.SunscapeBattlemage.class)); + cards.add(new SetCardInfo("Sunscape Familiar", 17, Rarity.COMMON, mage.cards.s.SunscapeFamiliar.class)); + cards.add(new SetCardInfo("Tahngarth, Talruum Hero", "74a", Rarity.RARE, TahngarthTalruumHero.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Tahngarth, Talruum Hero", "74b", Rarity.RARE, TahngarthTalruumHero.class, new CardGraphicInfo(null, true))); + cards.add(new SetCardInfo("Terminal Moraine", 142, Rarity.UNCOMMON, mage.cards.t.TerminalMoraine.class)); + cards.add(new SetCardInfo("Terminate", 128, Rarity.COMMON, mage.cards.t.Terminate.class)); + cards.add(new SetCardInfo("Thornscape Battlemage", 94, Rarity.UNCOMMON, mage.cards.t.ThornscapeBattlemage.class)); + cards.add(new SetCardInfo("Thornscape Familiar", 95, Rarity.COMMON, mage.cards.t.ThornscapeFamiliar.class)); + cards.add(new SetCardInfo("Thunderscape Battlemage", 75, Rarity.UNCOMMON, mage.cards.t.ThunderscapeBattlemage.class)); + cards.add(new SetCardInfo("Thunderscape Familiar", 76, Rarity.COMMON, mage.cards.t.ThunderscapeFamiliar.class)); + cards.add(new SetCardInfo("Treva's Charm", 129, Rarity.UNCOMMON, mage.cards.t.TrevasCharm.class)); + cards.add(new SetCardInfo("Treva's Ruins", 143, Rarity.UNCOMMON, mage.cards.t.TrevasRuins.class)); + cards.add(new SetCardInfo("Urza's Guilt", 130, Rarity.RARE, mage.cards.u.UrzasGuilt.class)); + cards.add(new SetCardInfo("Voice of All", 19, Rarity.UNCOMMON, mage.cards.v.VoiceOfAll.class)); + cards.add(new SetCardInfo("Volcano Imp", 56, Rarity.COMMON, mage.cards.v.VolcanoImp.class)); + cards.add(new SetCardInfo("Warped Devotion", 57, Rarity.UNCOMMON, mage.cards.w.WarpedDevotion.class)); + cards.add(new SetCardInfo("Waterspout Elemental", 38, Rarity.RARE, mage.cards.w.WaterspoutElemental.class)); + } } \ No newline at end of file From 159d06477de30e6a0a694ebb4e040a4db24fdc60 Mon Sep 17 00:00:00 2001 From: spjspj Date: Sat, 26 Nov 2016 09:40:05 +1100 Subject: [PATCH 4/4] spjspj - Implement Australian 7pt Highlander --- Mage.Server/release/config/config.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/Mage.Server/release/config/config.xml b/Mage.Server/release/config/config.xml index 257c20bc2b..35123a13dd 100644 --- a/Mage.Server/release/config/config.xml +++ b/Mage.Server/release/config/config.xml @@ -127,6 +127,7 @@ +