unfinished = Arrays.asList("Water Whip");
+
private static final AvatarTheLastAirbenderEternal instance = new AvatarTheLastAirbenderEternal();
public static AvatarTheLastAirbenderEternal getInstance() {
@@ -21,6 +26,40 @@ public final class AvatarTheLastAirbenderEternal extends ExpansionSet {
this.rotationSet = true;
this.hasBasicLands = false;
+ cards.add(new SetCardInfo("Aang's Defense", 211, Rarity.COMMON, mage.cards.a.AangsDefense.class));
+ cards.add(new SetCardInfo("Aang, Air Nomad", 210, Rarity.RARE, mage.cards.a.AangAirNomad.class));
+ cards.add(new SetCardInfo("Aang, Airbending Master", 74, Rarity.MYTHIC, mage.cards.a.AangAirbendingMaster.class));
+ cards.add(new SetCardInfo("Aardvark Sloth", 212, Rarity.COMMON, mage.cards.a.AardvarkSloth.class));
+ cards.add(new SetCardInfo("Allied Teamwork", 213, Rarity.RARE, mage.cards.a.AlliedTeamwork.class));
+ cards.add(new SetCardInfo("Appa, Aang's Companion", 214, Rarity.UNCOMMON, mage.cards.a.AppaAangsCompanion.class));
+ cards.add(new SetCardInfo("Bumi, Eclectic Earthbender", 248, Rarity.RARE, mage.cards.b.BumiEclecticEarthbender.class));
+ cards.add(new SetCardInfo("Capital Guard", 234, Rarity.COMMON, mage.cards.c.CapitalGuard.class));
+ cards.add(new SetCardInfo("Deny Entry", 222, Rarity.COMMON, mage.cards.d.DenyEntry.class));
+ cards.add(new SetCardInfo("Dragon Moose", 235, Rarity.COMMON, mage.cards.d.DragonMoose.class));
+ cards.add(new SetCardInfo("Eel-Hounds", 250, Rarity.UNCOMMON, mage.cards.e.EelHounds.class));
+ cards.add(new SetCardInfo("Elephant-Rat", 228, Rarity.COMMON, mage.cards.e.ElephantRat.class));
+ cards.add(new SetCardInfo("Explore", 259, Rarity.COMMON, mage.cards.e.Explore.class));
+ cards.add(new SetCardInfo("Explosive Shot", 236, Rarity.COMMON, mage.cards.e.ExplosiveShot.class));
+ cards.add(new SetCardInfo("Feed the Swarm", 257, Rarity.COMMON, mage.cards.f.FeedTheSwarm.class));
+ cards.add(new SetCardInfo("Fire Nation Ambushers", 229, Rarity.COMMON, mage.cards.f.FireNationAmbushers.class));
+ cards.add(new SetCardInfo("Fire Nation Soldier", 238, Rarity.COMMON, mage.cards.f.FireNationSoldier.class));
+ cards.add(new SetCardInfo("Force of Negation", 13, Rarity.MYTHIC, mage.cards.f.ForceOfNegation.class));
cards.add(new SetCardInfo("Katara, Waterbending Master", 93, Rarity.MYTHIC, mage.cards.k.KataraWaterbendingMaster.class));
+ cards.add(new SetCardInfo("Run Amok", 258, Rarity.COMMON, mage.cards.r.RunAmok.class));
+ cards.add(new SetCardInfo("The Cabbage Merchant", 134, Rarity.RARE, mage.cards.t.TheCabbageMerchant.class));
+ cards.add(new SetCardInfo("The Great Henge", 41, Rarity.MYTHIC, mage.cards.t.TheGreatHenge.class));
+ cards.add(new SetCardInfo("The Terror of Serpent's Pass", 225, Rarity.RARE, mage.cards.t.TheTerrorOfSerpentsPass.class));
+ cards.add(new SetCardInfo("Thriving Bluff", 260, Rarity.COMMON, mage.cards.t.ThrivingBluff.class));
+ cards.add(new SetCardInfo("Thriving Grove", 261, Rarity.COMMON, mage.cards.t.ThrivingGrove.class));
+ cards.add(new SetCardInfo("Thriving Heath", 262, Rarity.COMMON, mage.cards.t.ThrivingHeath.class));
+ cards.add(new SetCardInfo("Thriving Isle", 263, Rarity.COMMON, mage.cards.t.ThrivingIsle.class));
+ cards.add(new SetCardInfo("Thriving Moor", 264, Rarity.COMMON, mage.cards.t.ThrivingMoor.class));
+ cards.add(new SetCardInfo("Tundra Wall", 220, Rarity.COMMON, mage.cards.t.TundraWall.class));
+ cards.add(new SetCardInfo("Water Whip", 227, Rarity.RARE, mage.cards.w.WaterWhip.class));
+ cards.add(new SetCardInfo("Wolf Cove Villager", 221, Rarity.COMMON, mage.cards.w.WolfCoveVillager.class));
+ cards.add(new SetCardInfo("Zhao, the Seething Flame", 245, Rarity.UNCOMMON, mage.cards.z.ZhaoTheSeethingFlame.class));
+ cards.add(new SetCardInfo("Zuko's Offense", 247, Rarity.COMMON, mage.cards.z.ZukosOffense.class));
+
+ cards.removeIf(setCardInfo -> unfinished.contains(setCardInfo.getName()));
}
}
diff --git a/Mage.Sets/src/mage/sets/Renaissance.java b/Mage.Sets/src/mage/sets/Renaissance.java
new file mode 100644
index 00000000000..52fdb54e148
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/Renaissance.java
@@ -0,0 +1,152 @@
+package mage.sets;
+
+import mage.cards.ExpansionSet;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ * German and French versions of Renaissance
+ *
+ * https://scryfall.com/sets/ren
+ * https://mtg.wiki/page/Renaissance
+ *
+ * @author JayDi85
+ */
+public final class Renaissance extends ExpansionSet {
+
+ private static final Renaissance instance = new Renaissance();
+
+ public static Renaissance getInstance() {
+ return instance;
+ }
+
+ private Renaissance() {
+ super("Renaissance", "REN", ExpansionSet.buildDate(1995, 8, 1), SetType.SUPPLEMENTAL);
+ this.hasBasicLands = true;
+
+ this.enableCollectorBooster(Integer.MAX_VALUE, 0, 6, 2, 0);
+
+ cards.add(new SetCardInfo("Abomination", 46, Rarity.UNCOMMON, mage.cards.a.Abomination.class, RETRO_ART));
+ cards.add(new SetCardInfo("Alabaster Potion", 2, Rarity.COMMON, mage.cards.a.AlabasterPotion.class, RETRO_ART));
+ cards.add(new SetCardInfo("Ali Baba", 71, Rarity.UNCOMMON, mage.cards.a.AliBaba.class, RETRO_ART));
+ cards.add(new SetCardInfo("Amrou Kithkin", 3, Rarity.COMMON, mage.cards.a.AmrouKithkin.class, RETRO_ART));
+ cards.add(new SetCardInfo("Amulet of Kroog", 99, Rarity.COMMON, mage.cards.a.AmuletOfKroog.class, RETRO_ART));
+ cards.add(new SetCardInfo("Angry Mob", 4, Rarity.UNCOMMON, mage.cards.a.AngryMob.class, RETRO_ART));
+ cards.add(new SetCardInfo("Apprentice Wizard", 23, Rarity.UNCOMMON, mage.cards.a.ApprenticeWizard.class, RETRO_ART));
+ cards.add(new SetCardInfo("Ashes to Ashes", 47, Rarity.COMMON, mage.cards.a.AshesToAshes.class, RETRO_ART));
+ cards.add(new SetCardInfo("Ashnod's Battle Gear", 104, Rarity.UNCOMMON, mage.cards.a.AshnodsBattleGear.class, RETRO_ART));
+ cards.add(new SetCardInfo("Backfire", 24, Rarity.UNCOMMON, mage.cards.b.Backfire.class, RETRO_ART));
+ cards.add(new SetCardInfo("Ball Lightning", 73, Rarity.UNCOMMON, mage.cards.b.BallLightning.class, RETRO_ART));
+ cards.add(new SetCardInfo("Battering Ram", 107, Rarity.COMMON, mage.cards.b.BatteringRam.class, RETRO_ART));
+ cards.add(new SetCardInfo("Bird Maiden", 74, Rarity.COMMON, mage.cards.b.BirdMaiden.class, RETRO_ART));
+ cards.add(new SetCardInfo("Black Mana Battery", 108, Rarity.UNCOMMON, mage.cards.b.BlackManaBattery.class, RETRO_ART));
+ cards.add(new SetCardInfo("Blight", 48, Rarity.UNCOMMON, mage.cards.b.Blight.class, RETRO_ART));
+ cards.add(new SetCardInfo("Blood Lust", 75, Rarity.UNCOMMON, mage.cards.b.BloodLust.class, RETRO_ART));
+ cards.add(new SetCardInfo("Blue Mana Battery", 112, Rarity.UNCOMMON, mage.cards.b.BlueManaBattery.class, RETRO_ART));
+ cards.add(new SetCardInfo("Bog Imp", 49, Rarity.COMMON, mage.cards.b.BogImp.class, RETRO_ART));
+ cards.add(new SetCardInfo("Brainwash", 6, Rarity.COMMON, mage.cards.b.Brainwash.class, RETRO_ART));
+ //cards.add(new SetCardInfo("Bronze Tablet", 115, Rarity.UNCOMMON, mage.cards.b.BronzeTablet.class, RETRO_ART));
+ cards.add(new SetCardInfo("Brothers of Fire", 76, Rarity.UNCOMMON, mage.cards.b.BrothersOfFire.class, RETRO_ART));
+ cards.add(new SetCardInfo("Carnivorous Plant", 117, Rarity.COMMON, mage.cards.c.CarnivorousPlant.class, RETRO_ART));
+ cards.add(new SetCardInfo("Carrion Ants", 51, Rarity.UNCOMMON, mage.cards.c.CarrionAnts.class, RETRO_ART));
+ cards.add(new SetCardInfo("Cave People", 78, Rarity.UNCOMMON, mage.cards.c.CavePeople.class, RETRO_ART));
+ cards.add(new SetCardInfo("Circle of Protection: Artifacts", 7, Rarity.UNCOMMON, mage.cards.c.CircleOfProtectionArtifacts.class, RETRO_ART));
+ cards.add(new SetCardInfo("Clay Statue", 120, Rarity.COMMON, mage.cards.c.ClayStatue.class, RETRO_ART));
+ cards.add(new SetCardInfo("Clockwork Avian", 122, Rarity.UNCOMMON, mage.cards.c.ClockworkAvian.class, RETRO_ART));
+ cards.add(new SetCardInfo("Colossus of Sardia", 123, Rarity.UNCOMMON, mage.cards.c.ColossusOfSardia.class, RETRO_ART));
+ cards.add(new SetCardInfo("Coral Helm", 124, Rarity.UNCOMMON, mage.cards.c.CoralHelm.class, RETRO_ART));
+ cards.add(new SetCardInfo("Cosmic Horror", 52, Rarity.UNCOMMON, mage.cards.c.CosmicHorror.class, RETRO_ART));
+ cards.add(new SetCardInfo("Crimson Manticore", 80, Rarity.UNCOMMON, mage.cards.c.CrimsonManticore.class, RETRO_ART));
+ cards.add(new SetCardInfo("Cursed Rack", 126, Rarity.COMMON, mage.cards.c.CursedRack.class, RETRO_ART));
+ cards.add(new SetCardInfo("Cyclopean Mummy", 54, Rarity.COMMON, mage.cards.c.CyclopeanMummy.class, RETRO_ART));
+ cards.add(new SetCardInfo("Detonate", 83, Rarity.UNCOMMON, mage.cards.d.Detonate.class, RETRO_ART));
+ cards.add(new SetCardInfo("Diabolic Machine", 129, Rarity.UNCOMMON, mage.cards.d.DiabolicMachine.class, RETRO_ART));
+ cards.add(new SetCardInfo("Divine Transformation", 8, Rarity.UNCOMMON, mage.cards.d.DivineTransformation.class, RETRO_ART));
+ cards.add(new SetCardInfo("Durkwood Boars", 131, Rarity.COMMON, mage.cards.d.DurkwoodBoars.class, RETRO_ART));
+ cards.add(new SetCardInfo("Elder Land Wurm", 9, Rarity.UNCOMMON, mage.cards.e.ElderLandWurm.class, RETRO_ART));
+ cards.add(new SetCardInfo("Elven Riders", 133, Rarity.UNCOMMON, mage.cards.e.ElvenRiders.class, RETRO_ART));
+ cards.add(new SetCardInfo("Energy Tap", 28, Rarity.COMMON, mage.cards.e.EnergyTap.class, RETRO_ART));
+ cards.add(new SetCardInfo("Erosion", 29, Rarity.COMMON, mage.cards.e.Erosion.class, RETRO_ART));
+ cards.add(new SetCardInfo("Eternal Warrior", 84, Rarity.UNCOMMON, mage.cards.e.EternalWarrior.class, RETRO_ART));
+ cards.add(new SetCardInfo("Fellwar Stone", 136, Rarity.UNCOMMON, mage.cards.f.FellwarStone.class, RETRO_ART));
+ cards.add(new SetCardInfo("Fissure", 85, Rarity.COMMON, mage.cards.f.Fissure.class, RETRO_ART));
+ cards.add(new SetCardInfo("Flood", 30, Rarity.UNCOMMON, mage.cards.f.Flood.class, RETRO_ART));
+ cards.add(new SetCardInfo("Fortified Area", 11, Rarity.UNCOMMON, mage.cards.f.FortifiedArea.class, RETRO_ART));
+ cards.add(new SetCardInfo("Gaseous Form", 32, Rarity.COMMON, mage.cards.g.GaseousForm.class, RETRO_ART));
+ cards.add(new SetCardInfo("Ghost Ship", 33, Rarity.COMMON, mage.cards.g.GhostShip.class, RETRO_ART));
+ cards.add(new SetCardInfo("Giant Strength", 86, Rarity.COMMON, mage.cards.g.GiantStrength.class, RETRO_ART));
+ cards.add(new SetCardInfo("Giant Tortoise", 34, Rarity.COMMON, mage.cards.g.GiantTortoise.class, RETRO_ART));
+ cards.add(new SetCardInfo("Goblin Rock Sled", 87, Rarity.COMMON, mage.cards.g.GoblinRockSled.class, RETRO_ART));
+ cards.add(new SetCardInfo("Grapeshot Catapult", 143, Rarity.COMMON, mage.cards.g.GrapeshotCatapult.class, RETRO_ART));
+ cards.add(new SetCardInfo("Greed", 56, Rarity.UNCOMMON, mage.cards.g.Greed.class, RETRO_ART));
+ cards.add(new SetCardInfo("Green Mana Battery", 145, Rarity.UNCOMMON, mage.cards.g.GreenManaBattery.class, RETRO_ART));
+ cards.add(new SetCardInfo("Hurr Jackal", 88, Rarity.COMMON, mage.cards.h.HurrJackal.class, RETRO_ART));
+ cards.add(new SetCardInfo("Immolation", 89, Rarity.COMMON, mage.cards.i.Immolation.class, RETRO_ART));
+ cards.add(new SetCardInfo("Inferno", 90, Rarity.UNCOMMON, mage.cards.i.Inferno.class, RETRO_ART));
+ cards.add(new SetCardInfo("Ironclaw Orcs", 91, Rarity.COMMON, mage.cards.i.IronclawOrcs.class, RETRO_ART));
+ cards.add(new SetCardInfo("Junun Efreet", 57, Rarity.UNCOMMON, mage.cards.j.JununEfreet.class, RETRO_ART));
+ cards.add(new SetCardInfo("Killer Bees", 146, Rarity.UNCOMMON, mage.cards.k.KillerBees.class, RETRO_ART));
+ cards.add(new SetCardInfo("Kismet", 12, Rarity.UNCOMMON, mage.cards.k.Kismet.class, RETRO_ART));
+ cards.add(new SetCardInfo("Land Leeches", 147, Rarity.COMMON, mage.cards.l.LandLeeches.class, RETRO_ART));
+ cards.add(new SetCardInfo("Land Tax", 13, Rarity.UNCOMMON, mage.cards.l.LandTax.class, RETRO_ART));
+ cards.add(new SetCardInfo("Leviathan", 36, Rarity.UNCOMMON, mage.cards.l.Leviathan.class, RETRO_ART));
+ cards.add(new SetCardInfo("Lost Soul", 58, Rarity.COMMON, mage.cards.l.LostSoul.class, RETRO_ART));
+ cards.add(new SetCardInfo("Mana Clash", 92, Rarity.UNCOMMON, mage.cards.m.ManaClash.class, RETRO_ART));
+ cards.add(new SetCardInfo("Marsh Gas", 59, Rarity.COMMON, mage.cards.m.MarshGas.class, RETRO_ART));
+ cards.add(new SetCardInfo("Marsh Viper", 149, Rarity.COMMON, mage.cards.m.MarshViper.class, RETRO_ART));
+ cards.add(new SetCardInfo("Mind Bomb", 37, Rarity.UNCOMMON, mage.cards.m.MindBomb.class, RETRO_ART));
+ cards.add(new SetCardInfo("Mishra's Factory", 187, Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class, RETRO_ART));
+ cards.add(new SetCardInfo("Morale", 15, Rarity.COMMON, mage.cards.m.Morale.class, RETRO_ART));
+ cards.add(new SetCardInfo("Murk Dwellers", 62, Rarity.COMMON, mage.cards.m.MurkDwellers.class, RETRO_ART));
+ cards.add(new SetCardInfo("Nafs Asp", 151, Rarity.COMMON, mage.cards.n.NafsAsp.class, RETRO_ART));
+ cards.add(new SetCardInfo("Oasis", 188, Rarity.UNCOMMON, mage.cards.o.Oasis.class, RETRO_ART));
+ cards.add(new SetCardInfo("Osai Vultures", 16, Rarity.COMMON, mage.cards.o.OsaiVultures.class, RETRO_ART));
+ cards.add(new SetCardInfo("Piety", 17, Rarity.COMMON, mage.cards.p.Piety.class, RETRO_ART));
+ cards.add(new SetCardInfo("Pikemen", 18, Rarity.COMMON, mage.cards.p.Pikemen.class, RETRO_ART));
+ cards.add(new SetCardInfo("Pit Scorpion", 63, Rarity.COMMON, mage.cards.p.PitScorpion.class, RETRO_ART));
+ cards.add(new SetCardInfo("Pradesh Gypsies", 152, Rarity.UNCOMMON, mage.cards.p.PradeshGypsies.class, RETRO_ART));
+ cards.add(new SetCardInfo("Psionic Entity", 38, Rarity.UNCOMMON, mage.cards.p.PsionicEntity.class, RETRO_ART));
+ cards.add(new SetCardInfo("Pyrotechnics", 93, Rarity.COMMON, mage.cards.p.Pyrotechnics.class, RETRO_ART));
+ cards.add(new SetCardInfo("Radjan Spirit", 153, Rarity.UNCOMMON, mage.cards.r.RadjanSpirit.class, RETRO_ART));
+ cards.add(new SetCardInfo("Rag Man", 64, Rarity.UNCOMMON, mage.cards.r.RagMan.class, RETRO_ART));
+ //cards.add(new SetCardInfo("Rebirth", 154, Rarity.UNCOMMON, mage.cards.r.Rebirth.class, RETRO_ART));
+ cards.add(new SetCardInfo("Red Mana Battery", 155, Rarity.UNCOMMON, mage.cards.r.RedManaBattery.class, RETRO_ART));
+ cards.add(new SetCardInfo("Relic Bind", 39, Rarity.UNCOMMON, mage.cards.r.RelicBind.class, RETRO_ART));
+ cards.add(new SetCardInfo("Sandstorm", 156, Rarity.COMMON, mage.cards.s.Sandstorm.class, RETRO_ART));
+ cards.add(new SetCardInfo("Seeker", 19, Rarity.UNCOMMON, mage.cards.s.Seeker.class, RETRO_ART));
+ cards.add(new SetCardInfo("Segovian Leviathan", 40, Rarity.UNCOMMON, mage.cards.s.SegovianLeviathan.class, RETRO_ART));
+ cards.add(new SetCardInfo("Shapeshifter", 157, Rarity.UNCOMMON, mage.cards.s.Shapeshifter.class, RETRO_ART));
+ cards.add(new SetCardInfo("Sindbad", 41, Rarity.UNCOMMON, mage.cards.s.Sindbad.class, RETRO_ART));
+ cards.add(new SetCardInfo("Sisters of the Flame", 94, Rarity.UNCOMMON, mage.cards.s.SistersOfTheFlame.class, RETRO_ART));
+ cards.add(new SetCardInfo("Spirit Link", 20, Rarity.UNCOMMON, mage.cards.s.SpiritLink.class, RETRO_ART));
+ cards.add(new SetCardInfo("Spirit Shackle", 65, Rarity.COMMON, mage.cards.s.SpiritShackle.class, RETRO_ART));
+ cards.add(new SetCardInfo("Strip Mine", 189, Rarity.UNCOMMON, mage.cards.s.StripMine.class, RETRO_ART));
+ cards.add(new SetCardInfo("Sunken City", 42, Rarity.COMMON, mage.cards.s.SunkenCity.class, RETRO_ART));
+ cards.add(new SetCardInfo("Sylvan Library", 158, Rarity.UNCOMMON, mage.cards.s.SylvanLibrary.class, RETRO_ART));
+ cards.add(new SetCardInfo("Tawnos's Wand", 159, Rarity.UNCOMMON, mage.cards.t.TawnossWand.class, RETRO_ART));
+ cards.add(new SetCardInfo("Tawnos's Weaponry", 160, Rarity.UNCOMMON, mage.cards.t.TawnossWeaponry.class, RETRO_ART));
+ //cards.add(new SetCardInfo("Tempest Efreet", 95, Rarity.UNCOMMON, mage.cards.t.TempestEfreet.class, RETRO_ART));
+ cards.add(new SetCardInfo("Tetravus", 161, Rarity.UNCOMMON, mage.cards.t.Tetravus.class, RETRO_ART));
+ cards.add(new SetCardInfo("The Brute", 96, Rarity.COMMON, mage.cards.t.TheBrute.class, RETRO_ART));
+ cards.add(new SetCardInfo("Time Elemental", 43, Rarity.UNCOMMON, mage.cards.t.TimeElemental.class, RETRO_ART));
+ cards.add(new SetCardInfo("Triskelion", 162, Rarity.UNCOMMON, mage.cards.t.Triskelion.class, RETRO_ART));
+ cards.add(new SetCardInfo("Tundra Wolves", 21, Rarity.COMMON, mage.cards.t.TundraWolves.class, RETRO_ART));
+ cards.add(new SetCardInfo("Twiddle", 44, Rarity.COMMON, mage.cards.t.Twiddle.class, RETRO_ART));
+ cards.add(new SetCardInfo("Uncle Istvan", 66, Rarity.UNCOMMON, mage.cards.u.UncleIstvan.class, RETRO_ART));
+ cards.add(new SetCardInfo("Untamed Wilds", 163, Rarity.UNCOMMON, mage.cards.u.UntamedWilds.class, RETRO_ART));
+ cards.add(new SetCardInfo("Urza's Avenger", 164, Rarity.UNCOMMON, mage.cards.u.UrzasAvenger.class, RETRO_ART));
+ cards.add(new SetCardInfo("Vampire Bats", 67, Rarity.COMMON, mage.cards.v.VampireBats.class, RETRO_ART));
+ cards.add(new SetCardInfo("Venom", 165, Rarity.COMMON, mage.cards.v.Venom.class, RETRO_ART));
+ cards.add(new SetCardInfo("Visions", 22, Rarity.UNCOMMON, mage.cards.v.Visions.class, RETRO_ART));
+ cards.add(new SetCardInfo("Wall of Dust", 97, Rarity.UNCOMMON, mage.cards.w.WallOfDust.class, RETRO_ART));
+ cards.add(new SetCardInfo("Wall of Spears", 166, Rarity.UNCOMMON, mage.cards.w.WallOfSpears.class, RETRO_ART));
+ cards.add(new SetCardInfo("Whirling Dervish", 167, Rarity.UNCOMMON, mage.cards.w.WhirlingDervish.class, RETRO_ART));
+ cards.add(new SetCardInfo("White Mana Battery", 168, Rarity.UNCOMMON, mage.cards.w.WhiteManaBattery.class, RETRO_ART));
+ cards.add(new SetCardInfo("Winds of Change", 98, Rarity.UNCOMMON, mage.cards.w.WindsOfChange.class, RETRO_ART));
+ cards.add(new SetCardInfo("Winter Blast", 169, Rarity.UNCOMMON, mage.cards.w.WinterBlast.class, RETRO_ART));
+ cards.add(new SetCardInfo("Word of Binding", 68, Rarity.COMMON, mage.cards.w.WordOfBinding.class, RETRO_ART));
+ cards.add(new SetCardInfo("Xenic Poltergeist", 69, Rarity.UNCOMMON, mage.cards.x.XenicPoltergeist.class, RETRO_ART));
+ cards.add(new SetCardInfo("Yotian Soldier", 170, Rarity.COMMON, mage.cards.y.YotianSoldier.class, RETRO_ART));
+ cards.add(new SetCardInfo("Zephyr Falcon", 45, Rarity.COMMON, mage.cards.z.ZephyrFalcon.class, RETRO_ART));
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/Rinascimento.java b/Mage.Sets/src/mage/sets/Rinascimento.java
new file mode 100644
index 00000000000..8822934f707
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/Rinascimento.java
@@ -0,0 +1,99 @@
+package mage.sets;
+
+import mage.cards.ExpansionSet;
+import mage.constants.Rarity;
+import mage.constants.SetType;
+
+/**
+ * Italian version of Renaissance
+ *
+ * https://scryfall.com/sets/rin
+ * https://mtg.wiki/page/Renaissance
+ *
+ * @author JayDi85
+ */
+public final class Rinascimento extends ExpansionSet {
+
+ private static final Rinascimento instance = new Rinascimento();
+
+ public static Rinascimento getInstance() {
+ return instance;
+ }
+
+ private Rinascimento() {
+ super("Rinascimento", "RIN", ExpansionSet.buildDate(1995, 8, 1), SetType.SUPPLEMENTAL);
+ this.hasBasicLands = true;
+
+ this.enableCollectorBooster(Integer.MAX_VALUE, 0, 6, 2, 0);
+
+ cards.add(new SetCardInfo("Abu Ja'far", 1, Rarity.UNCOMMON, mage.cards.a.AbuJafar.class, RETRO_ART));
+ cards.add(new SetCardInfo("Aladdin", 70, Rarity.UNCOMMON, mage.cards.a.Aladdin.class, RETRO_ART));
+ cards.add(new SetCardInfo("Ali Baba", 71, Rarity.UNCOMMON, mage.cards.a.AliBaba.class, RETRO_ART));
+ cards.add(new SetCardInfo("Amulet of Kroog", 99, Rarity.COMMON, mage.cards.a.AmuletOfKroog.class, RETRO_ART));
+ cards.add(new SetCardInfo("Argothian Pixies", 100, Rarity.COMMON, mage.cards.a.ArgothianPixies.class, RETRO_ART));
+ cards.add(new SetCardInfo("Ashnod's Altar", 101, Rarity.UNCOMMON, mage.cards.a.AshnodsAltar.class, RETRO_ART));
+ cards.add(new SetCardInfo("Ashnod's Battle Gear", 102, Rarity.UNCOMMON, mage.cards.a.AshnodsBattleGear.class, RETRO_ART));
+ cards.add(new SetCardInfo("Ashnod's Transmogrant", 103, Rarity.UNCOMMON, mage.cards.a.AshnodsTransmogrant.class, RETRO_ART));
+ cards.add(new SetCardInfo("Battering Ram", 105, Rarity.COMMON, mage.cards.b.BatteringRam.class, RETRO_ART));
+ cards.add(new SetCardInfo("Bird Maiden", 72, Rarity.COMMON, mage.cards.b.BirdMaiden.class, RETRO_ART));
+ //cards.add(new SetCardInfo("Bronze Tablet", 106, Rarity.UNCOMMON, mage.cards.b.BronzeTablet.class, RETRO_ART));
+ cards.add(new SetCardInfo("Circle of Protection: Artifacts", 5, Rarity.UNCOMMON, mage.cards.c.CircleOfProtectionArtifacts.class, RETRO_ART));
+ cards.add(new SetCardInfo("City of Brass", 171, Rarity.UNCOMMON, mage.cards.c.CityOfBrass.class, RETRO_ART));
+ cards.add(new SetCardInfo("Clay Statue", 109, Rarity.COMMON, mage.cards.c.ClayStatue.class, RETRO_ART));
+ cards.add(new SetCardInfo("Clockwork Avian", 110, Rarity.UNCOMMON, mage.cards.c.ClockworkAvian.class, RETRO_ART));
+ cards.add(new SetCardInfo("Colossus of Sardia", 111, Rarity.UNCOMMON, mage.cards.c.ColossusOfSardia.class, RETRO_ART));
+ cards.add(new SetCardInfo("Coral Helm", 113, Rarity.UNCOMMON, mage.cards.c.CoralHelm.class, RETRO_ART));
+ cards.add(new SetCardInfo("Cuombajj Witches", 50, Rarity.COMMON, mage.cards.c.CuombajjWitches.class, RETRO_ART));
+ cards.add(new SetCardInfo("Cursed Rack", 114, Rarity.COMMON, mage.cards.c.CursedRack.class, RETRO_ART));
+ cards.add(new SetCardInfo("Cyclone", 116, Rarity.UNCOMMON, mage.cards.c.Cyclone.class, RETRO_ART));
+ cards.add(new SetCardInfo("Dandan", 25, Rarity.COMMON, mage.cards.d.Dandan.class, RETRO_ART));
+ cards.add(new SetCardInfo("Detonate", 77, Rarity.UNCOMMON, mage.cards.d.Detonate.class, RETRO_ART));
+ cards.add(new SetCardInfo("Erhnam Djinn", 118, Rarity.UNCOMMON, mage.cards.e.ErhnamDjinn.class, RETRO_ART));
+ cards.add(new SetCardInfo("Feldon's Cane", 119, Rarity.COMMON, mage.cards.f.FeldonsCane.class, RETRO_ART));
+ cards.add(new SetCardInfo("Fishliver Oil", 26, Rarity.COMMON, mage.cards.f.FishliverOil.class, RETRO_ART));
+ cards.add(new SetCardInfo("Ghazban Ogre", 121, Rarity.COMMON, mage.cards.g.GhazbanOgre.class, RETRO_ART));
+ cards.add(new SetCardInfo("Giant Tortoise", 27, Rarity.COMMON, mage.cards.g.GiantTortoise.class, RETRO_ART));
+ cards.add(new SetCardInfo("Goblin Artisans", 79, Rarity.UNCOMMON, mage.cards.g.GoblinArtisans.class, RETRO_ART));
+ cards.add(new SetCardInfo("Grapeshot Catapult", 125, Rarity.COMMON, mage.cards.g.GrapeshotCatapult.class, RETRO_ART));
+ cards.add(new SetCardInfo("Hasran Ogress", 53, Rarity.COMMON, mage.cards.h.HasranOgress.class, RETRO_ART));
+ cards.add(new SetCardInfo("Hurr Jackal", 81, Rarity.COMMON, mage.cards.h.HurrJackal.class, RETRO_ART));
+ cards.add(new SetCardInfo("Ironclaw Orcs", 82, Rarity.COMMON, mage.cards.i.IronclawOrcs.class, RETRO_ART));
+ cards.add(new SetCardInfo("Jalum Tome", 127, Rarity.UNCOMMON, mage.cards.j.JalumTome.class, RETRO_ART));
+ //cards.add(new SetCardInfo("Jeweled Bird", 128, Rarity.UNCOMMON, mage.cards.j.JeweledBird.class, RETRO_ART));
+ cards.add(new SetCardInfo("Junun Efreet", 55, Rarity.UNCOMMON, mage.cards.j.JununEfreet.class, RETRO_ART));
+ cards.add(new SetCardInfo("Metamorphosis", 130, Rarity.COMMON, mage.cards.m.Metamorphosis.class, RETRO_ART));
+ cards.add(new SetCardInfo("Mishra's Factory", 172, Rarity.UNCOMMON, mage.cards.m.MishrasFactory.class, RETRO_ART));
+ cards.add(new SetCardInfo("Nafs Asp", 132, Rarity.COMMON, mage.cards.n.NafsAsp.class, RETRO_ART));
+ cards.add(new SetCardInfo("Oasis", 173, Rarity.UNCOMMON, mage.cards.o.Oasis.class, RETRO_ART));
+ cards.add(new SetCardInfo("Obelisk of Undoing", 134, Rarity.UNCOMMON, mage.cards.o.ObeliskOfUndoing.class, RETRO_ART));
+ cards.add(new SetCardInfo("Rakalite", 135, Rarity.UNCOMMON, mage.cards.r.Rakalite.class, RETRO_ART));
+ cards.add(new SetCardInfo("Repentant Blacksmith", 10, Rarity.UNCOMMON, mage.cards.r.RepentantBlacksmith.class, RETRO_ART));
+ cards.add(new SetCardInfo("Sandstorm", 137, Rarity.COMMON, mage.cards.s.Sandstorm.class, RETRO_ART));
+ cards.add(new SetCardInfo("Shapeshifter", 138, Rarity.UNCOMMON, mage.cards.s.Shapeshifter.class, RETRO_ART));
+ cards.add(new SetCardInfo("Sindbad", 31, Rarity.UNCOMMON, mage.cards.s.Sindbad.class, RETRO_ART));
+ cards.add(new SetCardInfo("Strip Mine", 174, Rarity.UNCOMMON, mage.cards.s.StripMine.class, RETRO_ART));
+ cards.add(new SetCardInfo("Tawnos's Wand", 139, Rarity.UNCOMMON, mage.cards.t.TawnossWand.class, RETRO_ART));
+ cards.add(new SetCardInfo("Tawnos's Weaponry", 140, Rarity.UNCOMMON, mage.cards.t.TawnossWeaponry.class, RETRO_ART));
+ cards.add(new SetCardInfo("Tetravus", 141, Rarity.UNCOMMON, mage.cards.t.Tetravus.class, RETRO_ART));
+ cards.add(new SetCardInfo("Triskelion", 142, Rarity.UNCOMMON, mage.cards.t.Triskelion.class, RETRO_ART));
+ cards.add(new SetCardInfo("Twiddle", 35, Rarity.COMMON, mage.cards.t.Twiddle.class, RETRO_ART));
+ cards.add(new SetCardInfo("Urza's Avenger", 144, Rarity.UNCOMMON, mage.cards.u.UrzasAvenger.class, RETRO_ART));
+ cards.add(new SetCardInfo("Urza's Mine", 175, Rarity.COMMON, mage.cards.u.UrzasMine.class, RETRO_ART_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Mine", 176, Rarity.COMMON, mage.cards.u.UrzasMine.class, RETRO_ART_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Mine", 177, Rarity.COMMON, mage.cards.u.UrzasMine.class, RETRO_ART_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Mine", 178, Rarity.COMMON, mage.cards.u.UrzasMine.class, RETRO_ART_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Power Plant", 179, Rarity.COMMON, mage.cards.u.UrzasPowerPlant.class, RETRO_ART_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Power Plant", 180, Rarity.COMMON, mage.cards.u.UrzasPowerPlant.class, RETRO_ART_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Power Plant", 181, Rarity.COMMON, mage.cards.u.UrzasPowerPlant.class, RETRO_ART_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Power Plant", 182, Rarity.COMMON, mage.cards.u.UrzasPowerPlant.class, RETRO_ART_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Tower", 183, Rarity.COMMON, mage.cards.u.UrzasTower.class, RETRO_ART_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Tower", 184, Rarity.COMMON, mage.cards.u.UrzasTower.class, RETRO_ART_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Tower", 185, Rarity.COMMON, mage.cards.u.UrzasTower.class, RETRO_ART_USE_VARIOUS));
+ cards.add(new SetCardInfo("Urza's Tower", 186, Rarity.COMMON, mage.cards.u.UrzasTower.class, RETRO_ART_USE_VARIOUS));
+ cards.add(new SetCardInfo("Wall of Spears", 148, Rarity.UNCOMMON, mage.cards.w.WallOfSpears.class, RETRO_ART));
+ cards.add(new SetCardInfo("War Elephant", 14, Rarity.COMMON, mage.cards.w.WarElephant.class, RETRO_ART));
+ cards.add(new SetCardInfo("Xenic Poltergeist", 60, Rarity.UNCOMMON, mage.cards.x.XenicPoltergeist.class, RETRO_ART));
+ cards.add(new SetCardInfo("Yawgmoth Demon", 61, Rarity.UNCOMMON, mage.cards.y.YawgmothDemon.class, RETRO_ART));
+ cards.add(new SetCardInfo("Yotian Soldier", 150, Rarity.COMMON, mage.cards.y.YotianSoldier.class, RETRO_ART));
+ }
+}
diff --git a/Mage.Tests/src/test/java/org/mage/test/AI/basic/SimulationPerformanceAITest.java b/Mage.Tests/src/test/java/org/mage/test/AI/basic/SimulationPerformanceAITest.java
index b0fd1385fc5..268335e360b 100644
--- a/Mage.Tests/src/test/java/org/mage/test/AI/basic/SimulationPerformanceAITest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/AI/basic/SimulationPerformanceAITest.java
@@ -216,6 +216,7 @@ public class SimulationPerformanceAITest extends CardTestPlayerBaseAI {
}
@Test
+ @Ignore // TODO: enable and fix random error with too many sim nodes (depends on machine performance?)
public void test_ElderDeepFiend_TooManyUpToChoices() {
// bug: game freeze with 100% CPU usage
// https://github.com/magefree/mage/issues/9518
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/TransformTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/TransformTest.java
index ad94dfaed49..04417cc619c 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/TransformTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/TransformTest.java
@@ -1,6 +1,5 @@
package org.mage.test.cards.abilities.keywords;
-import mage.cards.s.SpringOfEternalPeace;
import mage.constants.CardType;
import mage.constants.PhaseStep;
import mage.constants.Zone;
@@ -384,7 +383,6 @@ public class TransformTest extends CardTestPlayerBase {
assertPowerToughness(playerA, "Huntmaster of the Fells", 2, 2);
assertTappedCount("Plains", true, 2);
assertTappedCount("Wastes", true, 1);
-
}
@Test
@@ -413,8 +411,32 @@ public class TransformTest extends CardTestPlayerBase {
assertPermanentCount(playerA, "Ravager of the Fells", 0);
assertPermanentCount(playerA, "Huntmaster of the Fells", 1);
assertPowerToughness(playerA, "Huntmaster of the Fells", 2, 2);
+ }
+ @Test
+ public void testWildsongHowlerTrigger() {
+ // The only Daybound/Nightbound card with a Transforms trigger on the back side
+ removeAllCardsFromLibrary(playerA);
+ addCard(Zone.HAND, playerA, "Howlpack Piper", 2); // Creature {2}{R}{G}
+ addCard(Zone.LIBRARY, playerA, "Silvercoat Lion", 50);
+ addCard(Zone.BATTLEFIELD, playerA, "Forest", 4);
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Howlpack Piper");
+ setChoice(playerA, true); //Transform trigger
+ addTarget(playerA, "Silvercoat Lion");
+
+ castSpell(3, PhaseStep.PRECOMBAT_MAIN, playerA, "Howlpack Piper");
+ setChoice(playerA, true); //ETB trigger
+ addTarget(playerA, "Silvercoat Lion");
+ setStopAt(3, PhaseStep.POSTCOMBAT_MAIN);
+ setStrictChooseMode(true);
+
+ execute();
+
+ assertPermanentCount(playerA, "Wildsong Howler", 2);
+ assertPermanentCount(playerA, "Howlpack Piper", 0); // They should be both transformed
+ assertHandCount(playerA, "Silvercoat Lion", 3);
+ assertHandCount(playerA, 3); //The two Silvercoat Lions from triggers and 1 from natural card draw
}
/**
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/tdm/MistriseVillageTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/tdm/MistriseVillageTest.java
index 98c2cbee505..a636b0be12e 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/single/tdm/MistriseVillageTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/tdm/MistriseVillageTest.java
@@ -8,10 +8,41 @@ import org.mage.test.serverside.base.CardTestPlayerBase;
public class MistriseVillageTest extends CardTestPlayerBase {
+ /*
+ Mistrise Village
+ Land
+ This land enters tapped unless you control a Mountain or a Forest.
+ {T}: Add {U}.
+ {U}, {T}: The next spell you cast this turn can’t be countered.
+ */
private static final String MISTRISE = "Mistrise Village";
- private static final String COUNTER = "Counterspell";
- private static final String CUB = "Bear Cub";
- private static final String BEARS = "Balduvian Bears";
+ private static final String COUNTERSPELL = "Counterspell";
+ private static final String BEAR_CUB = "Bear Cub";
+ private static final String BALDUVIAN_BEARS = "Balduvian Bears";
+ /*
+ Force of Negation
+ {1}{U}{U}
+ Instant
+ If it’s not your turn, you may exile a blue card from your hand rather than pay this spell’s mana cost.
+ Counter target noncreature spell. If that spell is countered this way, exile it instead of putting it into its owner’s graveyard.
+ */
+ public static final String FORCE_OF_NEGATION = "Force of Negation";
+ /*
+ Narset, Parter of Veils
+ {1}{U}{U}
+ Legendary Planeswalker — Narset
+ Each opponent can’t draw more than one card each turn.
+ −2: Look at the top four cards of your library. You may reveal a noncreature, nonland card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
+ */
+ public static final String NARSET_PARTER_OF_VEILS = "Narset, Parter of Veils";
+ /*
+ Aether Spellbomb
+ {1}
+ Artifact
+ {U}, Sacrifice this artifact: Return target creature to its owner’s hand.
+ {1}, Sacrifice this artifact: Draw a card.
+ */
+ public static final String AETHER_SPELLBOMB = "Aether Spellbomb";
@Test
public void testCounter() {
@@ -21,22 +52,166 @@ public class MistriseVillageTest extends CardTestPlayerBase {
addCard(Zone.BATTLEFIELD, playerA, "Island");
addCard(Zone.BATTLEFIELD, playerA, "Forest", 4);
addCard(Zone.BATTLEFIELD, playerB, "Island", 4);
- addCard(Zone.HAND, playerB, COUNTER, 2);
- addCard(Zone.HAND, playerA, CUB);
- addCard(Zone.HAND, playerA, BEARS);
+ addCard(Zone.HAND, playerB, COUNTERSPELL, 2);
+ addCard(Zone.HAND, playerA, BEAR_CUB);
+ addCard(Zone.HAND, playerA, BALDUVIAN_BEARS);
- activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{U}, {T}");
+ activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{U}, {T}"); // Activate mistrise
waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN, playerA);
- castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, CUB, true);
- castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, COUNTER, CUB, CUB);
- castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, BEARS, true);
- castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, COUNTER, BEARS, BEARS);
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, BEAR_CUB, true);
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, COUNTERSPELL, BEAR_CUB, BEAR_CUB);
+ castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, BALDUVIAN_BEARS, true);
+ castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, COUNTERSPELL, BALDUVIAN_BEARS, BALDUVIAN_BEARS);
setStopAt(1, PhaseStep.END_TURN);
execute();
- assertPermanentCount(playerA, CUB, 1);
- assertGraveyardCount(playerA, BEARS, 1);
- assertGraveyardCount(playerB, COUNTER, 2);
+ assertPermanentCount(playerA, BEAR_CUB, 1);
+ assertGraveyardCount(playerA, BALDUVIAN_BEARS, 1);
+ assertGraveyardCount(playerB, COUNTERSPELL, 2);
}
-}
\ No newline at end of file
+
+ @Test
+ public void testCastCounterAfterCastingSpell() {
+ setStrictChooseMode(true);
+ skipInitShuffling();
+
+ addCard(Zone.BATTLEFIELD, playerA, MISTRISE);
+ addCard(Zone.BATTLEFIELD, playerA, "Island", 8);
+ addCard(Zone.HAND, playerA, NARSET_PARTER_OF_VEILS);
+ addCard(Zone.HAND, playerA, AETHER_SPELLBOMB);
+ addCard(Zone.BATTLEFIELD, playerB, "Island", 3);
+ addCard(Zone.HAND, playerB, FORCE_OF_NEGATION);
+ addCard(Zone.LIBRARY, playerA, "Stock Up");
+
+ activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{U}, {T}"); // Activate mistrise
+ waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN, playerA);
+
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, NARSET_PARTER_OF_VEILS);
+ waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN, playerA);
+
+ activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "-2: "); // Narset ability
+ setChoice(playerA, true);
+ addTarget(playerA, "Stock Up");
+
+ castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Stock Up");
+ castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, FORCE_OF_NEGATION, "Stock Up");
+
+ waitStackResolved(1, PhaseStep.POSTCOMBAT_MAIN, playerA);
+ castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, AETHER_SPELLBOMB);
+ setStopAt(1, PhaseStep.END_TURN);
+ execute();
+
+ assertPermanentCount(playerA, NARSET_PARTER_OF_VEILS, 1);
+ assertPermanentCount(playerA, AETHER_SPELLBOMB, 1);
+ assertGraveyardCount(playerB, FORCE_OF_NEGATION, 1);
+ assertExileCount(playerA, "Stock Up", 1);
+ }
+
+ @Test
+ public void testMultipleMistrise() {
+ setStrictChooseMode(true);
+ skipInitShuffling();
+
+ addCard(Zone.BATTLEFIELD, playerA, MISTRISE,2);
+ addCard(Zone.BATTLEFIELD, playerA, "Island", 8);
+ addCard(Zone.HAND, playerA, NARSET_PARTER_OF_VEILS);
+ addCard(Zone.BATTLEFIELD, playerB, "Island", 6);
+ addCard(Zone.HAND, playerB, FORCE_OF_NEGATION, 2);
+ addCard(Zone.LIBRARY, playerA, AETHER_SPELLBOMB);
+
+ activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{U}, {T}"); // Activate mistrise
+ activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{U}, {T}"); // Activate mistrise
+ waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN, 2);
+
+
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, NARSET_PARTER_OF_VEILS);
+ checkPlayableAbility("cast force", 1, PhaseStep.PRECOMBAT_MAIN, playerB, "Cast Force", true);
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, FORCE_OF_NEGATION, NARSET_PARTER_OF_VEILS); // Fail to counter
+ setChoice(playerB, "Cast with no alternative cost");
+ waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN, playerA);
+
+ activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "-2: "); // Narset ability
+ setChoice(playerA, true);
+ addTarget(playerA, AETHER_SPELLBOMB);
+
+ castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, AETHER_SPELLBOMB);
+ castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, FORCE_OF_NEGATION, AETHER_SPELLBOMB); // Successful counter
+ setStopAt(2, PhaseStep.END_TURN);
+ execute();
+
+ assertPermanentCount(playerA, NARSET_PARTER_OF_VEILS, 1);
+ assertGraveyardCount(playerB, FORCE_OF_NEGATION, 2);
+ assertExileCount(playerA, AETHER_SPELLBOMB, 1);
+ }
+
+ @Test
+ public void testMultipleMistriseNotConsecutive() {
+ setStrictChooseMode(true);
+ skipInitShuffling();
+
+ addCard(Zone.BATTLEFIELD, playerA, MISTRISE,2);
+ addCard(Zone.BATTLEFIELD, playerA, "Island", 8);
+ addCard(Zone.HAND, playerA, NARSET_PARTER_OF_VEILS);
+ addCard(Zone.BATTLEFIELD, playerB, "Island", 6);
+ addCard(Zone.HAND, playerB, FORCE_OF_NEGATION, 2);
+ addCard(Zone.LIBRARY, playerA, AETHER_SPELLBOMB);
+
+ activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{U}, {T}"); // Activate mistrise
+ waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN, 1);
+
+
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, NARSET_PARTER_OF_VEILS);
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, FORCE_OF_NEGATION, NARSET_PARTER_OF_VEILS); // Fail to counter
+ setChoice(playerB, "Cast with no alternative cost");
+ waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN, playerA);
+
+ activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "-2: "); // Narset ability
+ setChoice(playerA, true);
+ addTarget(playerA, AETHER_SPELLBOMB);
+
+ activateAbility(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "{U}, {T}"); // Activate mistrise
+ waitStackResolved(1, PhaseStep.POSTCOMBAT_MAIN, 1);
+ castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, AETHER_SPELLBOMB);
+ castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, FORCE_OF_NEGATION, AETHER_SPELLBOMB); // Successful counter
+ setStopAt(1, PhaseStep.END_TURN);
+ execute();
+
+ assertPermanentCount(playerA, NARSET_PARTER_OF_VEILS, 1);
+ assertGraveyardCount(playerB, FORCE_OF_NEGATION, 2);
+ assertPermanentCount(playerA, AETHER_SPELLBOMB, 1);
+ }
+
+ @Test
+ public void testCastingMultipleSpells() {
+ setStrictChooseMode(true);
+ skipInitShuffling();
+
+ addCard(Zone.BATTLEFIELD, playerA, MISTRISE,2);
+ addCard(Zone.BATTLEFIELD, playerA, "Island", 13);
+ addCard(Zone.HAND, playerA, NARSET_PARTER_OF_VEILS);
+ addCard(Zone.HAND, playerA, "Hieroglyphic Illumination");
+ addCard(Zone.BATTLEFIELD, playerB, "Island", 6);
+ addCard(Zone.HAND, playerB, FORCE_OF_NEGATION, 2);
+ addCard(Zone.LIBRARY, playerA, AETHER_SPELLBOMB);
+
+ activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{U}, {T}"); // Activate mistrise
+ waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN, 2);
+
+
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, NARSET_PARTER_OF_VEILS);
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Hieroglyphic Illumination");
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, FORCE_OF_NEGATION, NARSET_PARTER_OF_VEILS); // Fail to counter
+ setChoice(playerB, "Cast with no alternative cost");
+ waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN, playerA);
+
+ castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, AETHER_SPELLBOMB);
+ castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, FORCE_OF_NEGATION, AETHER_SPELLBOMB); // Successful counter
+ setStopAt(2, PhaseStep.END_TURN);
+ execute();
+
+ assertPermanentCount(playerA, NARSET_PARTER_OF_VEILS, 1);
+ assertGraveyardCount(playerB, FORCE_OF_NEGATION, 2);
+ assertExileCount(playerA, AETHER_SPELLBOMB, 1);
+ }
+}
diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
index 67dba8ac8c8..d205547d0a7 100644
--- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
+++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
@@ -1018,9 +1018,6 @@ public class VerifyCardDataTest {
// CHECK: unknown set or wrong name
for (ExpansionSet set : sets) {
- if ("TLE".equals(set.getCode())) { // temporary
- continue;
- }
if (set.getSetType().equals(SetType.CUSTOM_SET)) {
// skip unofficial sets like Star Wars
continue;
@@ -1124,6 +1121,7 @@ public class VerifyCardDataTest {
Set implementedSets = sets.stream().map(ExpansionSet::getCode).collect(Collectors.toSet());
MtgJsonService.sets().values().forEach(jsonSet -> {
if (jsonSet.booster != null && !jsonSet.booster.isEmpty() && !implementedSets.contains(jsonSet.code)) {
+ // how-to fix: it's miss promo sets with boosters, so just add/generate it in most use cases
errorsList.add(String.format("Error: missing set implementation (important for draft format) - %s - %s - boosters: %s",
jsonSet.code,
jsonSet.name,
@@ -2081,7 +2079,6 @@ public class VerifyCardDataTest {
}
}
}
-
private void checkSubtypes(Card card, MtgJsonCard ref) {
if (skipListHaveName(SKIP_LIST_SUBTYPE, card.getExpansionSetCode(), card.getName())) {
return;
diff --git a/Mage/src/main/java/mage/abilities/common/OneOrMoreLeaveWithoutDyingTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/OneOrMoreLeaveWithoutDyingTriggeredAbility.java
new file mode 100644
index 00000000000..cad44fa1bf2
--- /dev/null
+++ b/Mage/src/main/java/mage/abilities/common/OneOrMoreLeaveWithoutDyingTriggeredAbility.java
@@ -0,0 +1,52 @@
+package mage.abilities.common;
+
+import mage.abilities.BatchTriggeredAbility;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.effects.Effect;
+import mage.constants.Zone;
+import mage.filter.FilterPermanent;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.ZoneChangeBatchEvent;
+import mage.game.events.ZoneChangeEvent;
+
+/**
+ * @author TheElk801
+ */
+public class OneOrMoreLeaveWithoutDyingTriggeredAbility extends TriggeredAbilityImpl implements BatchTriggeredAbility {
+
+ private final FilterPermanent filter;
+
+ public OneOrMoreLeaveWithoutDyingTriggeredAbility(Effect effect, FilterPermanent filter) {
+ super(Zone.BATTLEFIELD, effect);
+ this.filter = filter;
+ setTriggerPhrase("Whenever one or more " + filter.getMessage() + " leave the battlefield without dying, ");
+ }
+
+ private OneOrMoreLeaveWithoutDyingTriggeredAbility(final OneOrMoreLeaveWithoutDyingTriggeredAbility ability) {
+ super(ability);
+ this.filter = ability.filter;
+ }
+
+ @Override
+ public OneOrMoreLeaveWithoutDyingTriggeredAbility copy() {
+ return new OneOrMoreLeaveWithoutDyingTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.ZONE_CHANGE_BATCH;
+ }
+
+ @Override
+ public boolean checkEvent(ZoneChangeEvent event, Game game) {
+ return Zone.BATTLEFIELD.match(event.getFromZone())
+ && !Zone.GRAVEYARD.match(event.getToZone())
+ && filter.match(event.getTarget(), getControllerId(), this, game);
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ return !getFilteredEvents((ZoneChangeBatchEvent) event, game).isEmpty();
+ }
+}
diff --git a/Mage/src/main/java/mage/abilities/common/TransformIntoSourceTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/TransformIntoSourceTriggeredAbility.java
index c1908819867..28005a50453 100644
--- a/Mage/src/main/java/mage/abilities/common/TransformIntoSourceTriggeredAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/TransformIntoSourceTriggeredAbility.java
@@ -5,7 +5,6 @@ import mage.abilities.effects.Effect;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
-import mage.game.permanent.Permanent;
/**
* @author TheElk801
@@ -41,10 +40,6 @@ public class TransformIntoSourceTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
- if (!event.getTargetId().equals(this.getSourceId())) {
- return false;
- }
- Permanent permanent = getSourcePermanentIfItStillExists(game);
- return permanent != null && permanent.isTransformed();
+ return event.getTargetId().equals(this.getSourceId());
}
}
diff --git a/Mage/src/main/java/mage/abilities/common/TransformsOrEntersTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/TransformsOrEntersTriggeredAbility.java
index 43635f5246c..41bb07e832b 100644
--- a/Mage/src/main/java/mage/abilities/common/TransformsOrEntersTriggeredAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/TransformsOrEntersTriggeredAbility.java
@@ -5,13 +5,11 @@ import mage.abilities.effects.Effect;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
-import mage.game.permanent.Permanent;
/**
* @author TheElk801
*/
public class TransformsOrEntersTriggeredAbility extends TriggeredAbilityImpl {
-
public TransformsOrEntersTriggeredAbility(Effect effect, boolean optional) {
super(Zone.BATTLEFIELD, effect, optional);
setTriggerPhrase("Whenever this creature enters or transforms into {this}, ");
@@ -34,16 +32,6 @@ public class TransformsOrEntersTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
- if (!event.getTargetId().equals(this.getSourceId())) {
- return false;
- }
- switch (event.getType()) {
- case TRANSFORMED:
- Permanent permanent = getSourcePermanentIfItStillExists(game);
- return permanent != null && !permanent.isTransformed();
- case ENTERS_THE_BATTLEFIELD:
- return true;
- }
- return false;
+ return event.getTargetId().equals(this.getSourceId());
}
}
diff --git a/Mage/src/main/java/mage/abilities/costs/common/WaterbendCost.java b/Mage/src/main/java/mage/abilities/costs/common/WaterbendCost.java
new file mode 100644
index 00000000000..e1ea59d094a
--- /dev/null
+++ b/Mage/src/main/java/mage/abilities/costs/common/WaterbendCost.java
@@ -0,0 +1,44 @@
+package mage.abilities.costs.common;
+
+import mage.abilities.Ability;
+import mage.abilities.costs.Cost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.game.Game;
+
+import java.util.UUID;
+
+/**
+ * TODO: Implement properly
+ *
+ * @author TheElk801
+ */
+public class WaterbendCost extends ManaCostsImpl {
+
+ public WaterbendCost(int amount) {
+ this("{" + amount + '}');
+ }
+
+ public WaterbendCost(String mana) {
+ super("");
+ this.text = "waterbend " + mana;
+ }
+
+ private WaterbendCost(final WaterbendCost cost) {
+ super(cost);
+ }
+
+ @Override
+ public WaterbendCost copy() {
+ return new WaterbendCost(this);
+ }
+
+ @Override
+ public boolean canPay(Ability ability, Ability source, UUID controllerId, Game game) {
+ return false;
+ }
+
+ @Override
+ public boolean pay(Ability ability, Game game, Ability source, UUID controllerId, boolean noMana, Cost costToPay) {
+ return false;
+ }
+}
diff --git a/Mage/src/main/java/mage/abilities/costs/mana/ManaCostsImpl.java b/Mage/src/main/java/mage/abilities/costs/mana/ManaCostsImpl.java
index 70ba8044ff5..566934b34c7 100644
--- a/Mage/src/main/java/mage/abilities/costs/mana/ManaCostsImpl.java
+++ b/Mage/src/main/java/mage/abilities/costs/mana/ManaCostsImpl.java
@@ -10,7 +10,6 @@ import mage.constants.ColoredManaSymbol;
import mage.constants.ManaType;
import mage.constants.Outcome;
import mage.filter.Filter;
-import mage.filter.FilterMana;
import mage.game.Game;
import mage.players.ManaPool;
import mage.players.Player;
@@ -43,7 +42,7 @@ public class ManaCostsImpl extends ArrayList implements M
load(mana);
}
- private ManaCostsImpl(final ManaCostsImpl costs) {
+ protected ManaCostsImpl(final ManaCostsImpl costs) {
this.id = costs.id;
this.text = costs.text;
this.ensureCapacity(costs.size());
diff --git a/Mage/src/main/java/mage/abilities/effects/common/CantBeCounteredSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CantBeCounteredSourceEffect.java
index 4d9f3514c6f..dde43e653e3 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/CantBeCounteredSourceEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/CantBeCounteredSourceEffect.java
@@ -9,7 +9,6 @@ import mage.constants.Duration;
import mage.constants.Outcome;
import mage.game.Game;
import mage.game.events.GameEvent;
-import mage.game.events.GameEvent.EventType;
import mage.game.stack.Spell;
import mage.game.stack.StackObject;
@@ -34,7 +33,7 @@ public class CantBeCounteredSourceEffect extends ContinuousRuleModifyingEffectIm
@Override
public String getInfoMessage(Ability source, GameEvent event, Game game) {
- StackObject stackObject = game.getStack().getStackObject(event.getTargetId());
+ StackObject stackObject = game.getStack().getStackObject(event.getSourceId());
MageObject sourceObject = game.getObject(source);
if (stackObject != null && sourceObject != null) {
return sourceObject.getLogName() + " can't be countered by " + stackObject.getName();
diff --git a/Mage/src/main/java/mage/abilities/effects/keyword/EarthbendTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/keyword/EarthbendTargetEffect.java
index 7ec45c93c3a..9982a5dc7fc 100644
--- a/Mage/src/main/java/mage/abilities/effects/keyword/EarthbendTargetEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/keyword/EarthbendTargetEffect.java
@@ -11,6 +11,7 @@ import mage.abilities.keyword.HasteAbility;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
+import mage.counters.CounterType;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
@@ -52,6 +53,7 @@ public class EarthbendTargetEffect extends OneShotEffect {
.withAbility(HasteAbility.getInstance()),
false, true, Duration.Custom
), source);
+ permanent.addCounters(CounterType.P1P1.createInstance(amount), source, game);
game.addDelayedTriggeredAbility(new EarthbendingDelayedTriggeredAbility(permanent, game), source);
game.fireEvent(GameEvent.getEvent(
GameEvent.EventType.EARTHBENDED, permanent.getId(),
diff --git a/Mage/src/main/java/mage/abilities/keyword/WaterbendAbility.java b/Mage/src/main/java/mage/abilities/keyword/WaterbendAbility.java
deleted file mode 100644
index f955cbcda41..00000000000
--- a/Mage/src/main/java/mage/abilities/keyword/WaterbendAbility.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package mage.abilities.keyword;
-
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.Cost;
-import mage.abilities.effects.Effect;
-import mage.constants.Zone;
-import mage.util.CardUtil;
-
-/**
- * TODO: Implement properly
- *
- * @author TheElk801
- */
-public class WaterbendAbility extends SimpleActivatedAbility {
-
- public WaterbendAbility(Effect effect, Cost cost) {
- this(Zone.BATTLEFIELD, effect, cost);
- }
-
- public WaterbendAbility(Zone zone, Effect effect, Cost cost) {
- super(zone, effect, cost);
- }
-
- private WaterbendAbility(final WaterbendAbility ability) {
- super(ability);
- }
-
- @Override
- public WaterbendAbility copy() {
- return new WaterbendAbility(this);
- }
-
- @Override
- public String getRule() {
- return "Waterbend " + CardUtil.getTextWithFirstCharUpperCase(super.getRule());
- }
-}
diff --git a/Mage/src/main/java/mage/counters/CounterType.java b/Mage/src/main/java/mage/counters/CounterType.java
index 6cd4529ef60..62104d11a95 100644
--- a/Mage/src/main/java/mage/counters/CounterType.java
+++ b/Mage/src/main/java/mage/counters/CounterType.java
@@ -87,6 +87,7 @@ public enum CounterType {
FETCH("fetch"),
FILIBUSTER("filibuster"),
FINALITY("finality"),
+ FIRE("fire"),
FIRST_STRIKE("first strike"),
FLAME("flame"),
FLOOD("flood"),
diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java
index 22e9caa2ea1..748c56a2dec 100644
--- a/Mage/src/main/java/mage/filter/StaticFilters.java
+++ b/Mage/src/main/java/mage/filter/StaticFilters.java
@@ -1197,6 +1197,13 @@ public final class StaticFilters {
FILTER_CONTROLLED_CREATURE_P1P1.setLockedFilter(true);
}
+ public static final FilterControlledCreaturePermanent FILTER_CONTROLLED_CREATURES_P1P1 = new FilterControlledCreaturePermanent("creatures you control with a +1/+1 counter on it");
+
+ static {
+ FILTER_CONTROLLED_CREATURES_P1P1.add(CounterType.P1P1.getPredicate());
+ FILTER_CONTROLLED_CREATURES_P1P1.setLockedFilter(true);
+ }
+
public static final FilterControlledCreaturePermanent FILTER_EACH_CONTROLLED_CREATURE_P1P1 = new FilterControlledCreaturePermanent("each creature you control with a +1/+1 counter on it");
static {
diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt
index fc2b028b622..902175316da 100644
--- a/Utils/mtg-cards-data.txt
+++ b/Utils/mtg-cards-data.txt
@@ -59719,26 +59719,91 @@ Twilight Mire|Edge of Eternities Commander|189|R||Land|||{T}: Add {C}.${B/G}, {T
Viridescent Bog|Edge of Eternities Commander|190|R||Land|||{1}, {T}: Add {B}{G}.|
Wastes|Edge of Eternities Commander|191|C||Basic Land|||{T}: Add {C}.|
Aang's Journey|Avatar: The Last Airbender|1|C|{2}|Sorcery - Lesson|||Kicker {2}$Search your library for a basic land card. If this spell was kicked, instead search your library for a basic land card and a Shrine card. Reveal those cards, put them into your hand, then shuffle.$You gain 2 life.|
+Aang, the Last Airbender|Avatar: The Last Airbender|4|U|{3}{W}|Legendary Creature - Human Avatar Ally|3|2|Flying$When Aang enters, airbend up to one other target nonland permanent.$Whenever you cast a Lesson spell, Aang gains lifelink until end of turn.|
Aang's Iceberg|Avatar: The Last Airbender|5|R|{2}{W}|Enchantment|||Flash$When this enchantment enters, exile up to one other target nonland permanent until this enchantment leaves the battlefield.$Waterbend {3}: Sacrifice this enchantment. If you do, scry 2.|
+Airbending Lesson|Avatar: The Last Airbender|8|C|{2}{W}|Instant - Lesson|||Airbend target nonland permanent.$Draw a card.|
Appa, Steadfast Guardian|Avatar: The Last Airbender|10|M|{2}{W}{W}|Legendary Creature - Bison Ally|3|4|Flash$Flying$When Appa enters, airbend any number of other target nonland permanents you control.$Whenever you cast a spell from exile, create a 1/1 white Ally creature token.|
Avatar Enthusiasts|Avatar: The Last Airbender|11|C|{2}{W}|Creature - Human Peasant Ally|2|2|Whenever another Ally you control enters, put a +1/+1 counter on this creature.|
+Glider Kids|Avatar: The Last Airbender|21|C|{2}{W}|Creature - Human Pilot Ally|2|3|Flying$When this creature enters, scry 1.|
+Jeong Jeong's Deserters|Avatar: The Last Airbender|25|C|{1}{W}|Creature - Human Rebel Ally|1|2|When this creature enters, put a +1/+1 counter on target creature.|
+Master Piandao|Avatar: The Last Airbender|28|U|{4}{W}|Legendary Creature - Human Warrior Ally|4|4|First strike$Whenever Master Piandao attacks, look at the top four cards of your library. You may reveal an Ally, Equipment, or Lesson card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.|
Momo, Friendly Flier|Avatar: The Last Airbender|29|R|{W}|Legendary Creature - Lemur Bat Ally|1|1|Flying$The first non-Lemur creature spell with flying you cast during each of your turns costs {1} less to cast.$Whenever another creature you control with flying enters, Momo gets +1/+1 until end of turn.|
+Path to Redemption|Avatar: The Last Airbender|31|C|{1}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature can't attack or block.${5}, Sacrifice this Aura: Exile enchanted creature. Create a 1/1 white Ally creature token. Activate only during your turn.|
+Rabaroo Troop|Avatar: The Last Airbender|32|C|{3}{W}{W}|Creature - Rabbit Kangaroo|3|5|Landfall -- Whenever a land you control enters, this creature gains flying until end of turn and you gain 1 life.$Plainscycling {2}|
+Razor Rings|Avatar: The Last Airbender|33|C|{1}{W}|Instant|||Razor Rings deals 4 damage to target attacking or blocking creature. You gain life equal to the excess damage dealt this way.|
Southern Air Temple|Avatar: The Last Airbender|36|U|{3}{W}|Legendary Enchantment - Shrine|||When Southern Air Temple enters, put X +1/+1 counters on each creature you control, where X is the number of Shrines you control.$Whenever another Shrine you control enters, put a +1/+1 counter on each creature you control.|
+First-Time Flyer|Avatar: The Last Airbender|49|C|{1}{U}|Creature - Human Pilot Ally|1|2|Flying$This creature gets +1/+1 as long as there's a Lesson card in your graveyard.|
+Flexible Waterbender|Avatar: The Last Airbender|50|C|{3}{U}|Creature - Human Warrior Ally|2|5|Vigilance$Waterbend {3}: This creature has base power and toughness 5/2 until end of turn.|
+Geyser Leaper|Avatar: The Last Airbender|52|C|{4}{U}|Creature - Human Warrior Ally|4|3|Flying$Waterbend {4}: Draw a card, then discard a card.|
+Giant Koi|Avatar: The Last Airbender|53|C|{4}{U}{U}|Creature - Fish|5|7|Waterbend {3}: This creature can't be blocked this turn.$Islandcycling {2}|
+Iguana Parrot|Avatar: The Last Airbender|56|C|{2}{U}|Creature - Lizard Bird Pirate|2|2|Flying, vigilance$Prowess|
+It'll Quench Ya!|Avatar: The Last Airbender|58|C|{1}{U}|Instant - Lesson|||Counter target spell unless its controller pays 2.|
+Katara, Bending Prodigy|Avatar: The Last Airbender|59|U|{2}{U}|Legendary Creature - Human Warrior Ally|2|3|At the beginning of your end step, if Katara is tapped, put a +1/+1 counter on her.$Waterbend {6}: Draw a card.|
+Master Pakku|Avatar: The Last Airbender|63|U|{1}{U}|Legendary Creature - Human Advisor Ally|1|3|Prowess$Whenever Master Pakku becomes tapped, target player mills X cards, where X is the number of Lesson cards in your graveyard.|
+Otter-Penguin|Avatar: The Last Airbender|67|C|{1}{U}|Creature - Otter Bird|2|1|Whenever you draw your second card each turn, this creature gets +1/+2 until end of turn and can't be blocked this turn.|
+Rowdy Snowballers|Avatar: The Last Airbender|68|C|{2}{U}|Creature - Human Peasant Ally|2|2|When this creature enters, tap target creature an opponent controls and put a stun counter on it.|
+Serpent of the Pass|Avatar: The Last Airbender|70|U|{5}{U}{U}|Creature - Serpent|6|5|If there are three or more Lesson cards in your graveyard, you may cast this spell as though it had flash.$This spell costs {1} less to cast for each noncreature, nonland card in your graveyard.|
Sokka's Haiku|Avatar: The Last Airbender|71|U|{3}{U}{U}|Instant - Lesson|||Counter target spell.$Draw a card, then mill three cards.$Untap target land.|
+Waterbending Lesson|Avatar: The Last Airbender|80|C|{3}{U}|Sorcery - Lesson|||Draw three cards. Then discard a card unless you waterbend {2}.|
+Watery Grasp|Avatar: The Last Airbender|82|C|{U}|Enchantment - Aura|||Enchant creature$Enchanted creature doesn't untap during its controller's untap step.$Waterbend {5}: Enchanted creature's owner shuffles it into their library.|
Yue, the Moon Spirit|Avatar: The Last Airbender|83|R|{3}{U}|Legendary Creature - Spirit Ally|3|3|Flying, vigilance$Waterbend {5}, {T}: You may cast a noncreature spell from your hand without paying its mana cost.|
+Azula Always Lies|Avatar: The Last Airbender|84|C|{1}{B}|Instant - Lesson|||Choose one or both --$* Target creature gets -1/-1 until end of turn.$* Put a +1/+1 counter on target creature.|
+Beetle-Headed Merchants|Avatar: The Last Airbender|86|C|{4}{B}|Creature - Human Citizen|5|4|Whenever this creature attacks, you may sacrifice another creature or artifact. If you do, draw a card and put a +1/+1 counter on this creature.|
+Buzzard-Wasp Colony|Avatar: The Last Airbender|88|U|{3}{B}|Creature - Bird Insect|2|2|Flying$When this creature enters, you may sacrifice an artifact or creature. If you do, draw a card.$Whenever another creature you control dies, if it had counters on it, put its counters on this creature.|
+Cat-Gator|Avatar: The Last Airbender|91|U|{6}{B}|Creature - Fish Crocodile|3|2|Lifelink$When this creature enters, it deals damage equal to the number of Swamps you control to any target.|
+Corrupt Court Official|Avatar: The Last Airbender|92|C|{1}{B}|Creature - Human Advisor|1|1|When this creature enters, target opponent discards a card.|
+Dai Li Indoctrination|Avatar: The Last Airbender|93|C|{1}{B}|Sorcery - Lesson|||Choose one --$* Target opponent reveals their hand. You choose a nonland permanent card from it. That player discards that card.$* Earthbend 2.|
+Epic Downfall|Avatar: The Last Airbender|96|U|{1}{B}|Sorcery|||Exile target creature with mana value 3 or greater.|
+Fire Nation Engineer|Avatar: The Last Airbender|99|U|{2}{B}|Creature - Human Artificer|2|3|Raid -- At the beginning of your end step, if you attacked this turn, put a +1/+1 counter on another target creature or Vehicle you control.|
+Heartless Act|Avatar: The Last Airbender|103|U|{1}{B}|Instant|||Choose one --$* Destroy target creature with no counters on it.$* Remove up to three counters from target creature.|
+Hog-Monkey|Avatar: The Last Airbender|104|C|{2}{B}|Creature - Boar Monkey|3|2|At the beginning of combat on your turn, target creature you control with a +1/+1 counter on it gains menace until end of turn.$Exhaust -- {5}: Put two +1/+1 counters on this creature.|
+Merchant of Many Hats|Avatar: The Last Airbender|110|C|{1}{B}|Creature - Human Peasant Ally|2|2|{2}{B}: Return this card from your graveyard to your hand.|
+Ozai's Cruelty|Avatar: The Last Airbender|113|U|{2}{B}|Sorcery - Lesson|||Ozai's Cruelty deals 2 damage to target player. That player discards two cards.|
The Rise of Sozin|Avatar: The Last Airbender|117|M|{4}{B}{B}|Enchantment - Saga|||(As this Saga enters and after your draw step, add a lore counter.)$I -- Destroy all creatures.$II -- Choose a card name. Search target opponent's graveyard, hand, and library for up to four cards with that name and exile them. Then that player shuffles.$III -- Exile this Saga, then return it to the battlefield transformed under your control.|
Fire Lord Sozin|Avatar: The Last Airbender|117|M||Legendary Creature - Human Noble|5|5|Menace, firebending 3$Whenever Fire Lord Sozin deals combat damage to a player, you may pay {X}. When you do, put any number of target creature cards with total mana value X or less from that player's graveyard onto the battlefield under your control.|
+Deserter's Disciple|Avatar: The Last Airbender|131|C|{1}{R}|Creature - Human Rebel Ally|2|2|{T}: Another target creature you control with power 2 or less can't be blocked this turn.|
Fated Firepower|Avatar: The Last Airbender|132|M|{X}{R}{R}{R}|Enchantment|||Flash$This enchantment enters with X fire counters on it.$If a source you control would deal damage to an opponent or a permanent an opponent controls, it deals that much damage plus an amount of damage equal to the number of fire counters on this enchantment instead.|
Fire Nation Attacks|Avatar: The Last Airbender|133|U|{4}{R}|Instant|||Create two 2/2 red Soldier creature tokens with firebending 1.$Flashback {8}{R}|
+Fire Sages|Avatar: The Last Airbender|136|U|{1}{R}|Creature - Human Cleric|2|2|Firebending 1${1}{R}{R}: Put a +1/+1 counter on this creature.|
+How to Start a Riot|Avatar: The Last Airbender|140|C|{2}{R}|Instant - Lesson|||Target creature gains menace until end of turn.$Creatures target player controls get +2/+0 until end of turn.|
+Lightning Strike|Avatar: The Last Airbender|146|C|{1}{R}|Instant|||Lightning Strike deals 3 damage to any target.|
+Mongoose Lizard|Avatar: The Last Airbender|148|C|{4}{R}{R}|Creature - Mongoose Lizard|5|6|Menace$When this creature enters, it deals 1 damage to any target.$Mountaincycling {2}|
Redirect Lightning|Avatar: The Last Airbender|151|R|{R}|Instant - Lesson|||As an additional cost to cast this spell, pay 5 life or pay {2}.$Change the target of target spell or ability with a single target.|
+Rough Rhino Cavalry|Avatar: The Last Airbender|152|C|{4}{R}|Creature - Human Mercenary|5|5|Firebending 2$Exhaust -- {8}: Put two +1/+1 counters on this creature. It gains trample until end of turn.|
+Yuyan Archers|Avatar: The Last Airbender|161|C|{1}{R}|Creature - Human Archer|3|1|Reach$When this creature enters, you may discard a card. If you do, draw a card.|
+Zuko, Exiled Prince|Avatar: The Last Airbender|163|U|{3}{R}|Legendary Creature - Human Noble|4|3|Firebending 3${3}: Exile the top card of your library. You may play that card this turn.|
+Badgermole|Avatar: The Last Airbender|166|C|{4}{G}|Creature - Badger Mole|4|4|When this creature enters, earthbend 2.$Creatures you control with +1/+1 counters on them have trample.|
+Earth Rumble|Avatar: The Last Airbender|174|U|{3}{G}|Sorcery|||Earthbend 2. When you do, up to one target creature you control fights target creature an opponent controls.|
Earthbending Lesson|Avatar: The Last Airbender|176|C|{3}{G}|Sorcery - Lesson|||Earthbend 4.|
+Flopsie, Bumi's Buddy|Avatar: The Last Airbender|179|U|{4}{G}{G}|Legendary Creature - Ape Goat|4|4|When Flopsie enters, put a +1/+1 counter on each creature you control.$Each creature you control with power 4 or greater can't be blocked by more than one creature.|
+Haru, Hidden Talent|Avatar: The Last Airbender|182|U|{1}{G}|Legendary Creature - Human Peasant Ally|1|1|Whenever another Ally you control enters, earthbend 1.|
+Ostrich-Horse|Avatar: The Last Airbender|188|C|{2}{G}|Creature - Bird Horse|3|1|When this creature enters, mill three cards. You may put a land card from among them into your hand. If you don't, put a +1/+1 counter on this creature.|
+Pillar Launch|Avatar: The Last Airbender|189|C|{G}|Instant|||Target creature gets +2/+2 and gains reach until end of turn. Untap it.|
+Raucous Audience|Avatar: The Last Airbender|190|C|{1}{G}|Creature - Human Citizen|2|1|{T}: Add {G}. If you control a creature with power 4 or greater, add {G}{G} instead.|
+Rebellious Captives|Avatar: The Last Airbender|191|C|{1}{G}|Creature - Human Peasant Ally|2|2|Exhaust -- {G}: Put two +1/+1 counters on this creature, then earthbend 2.|
+Rocky Rebuke|Avatar: The Last Airbender|193|C|{1}{G}|Instant|||Target creature you control deals damage equal to its power to target creature an opponent controls.|
+Saber-Tooth Moose-Lion|Avatar: The Last Airbender|194|C|{4}{G}{G}|Creature - Elk Cat|7|7|Reach$Forestcycling {2}|
+Toph, the Blind Bandit|Avatar: The Last Airbender|198|U|{2}{G}|Legendary Creature - Human Warrior Ally|*|3|When Toph enters, earthbend 2.$Toph's power is equal to the number of +1/+1 counters on lands you control.|
+Turtle-Duck|Avatar: The Last Airbender|200|C|{G}|Creature - Turtle Bird|0|4|{3}: Until end of turn, this creature has base power 4 and gains trample.|
+Abandon Attachments|Avatar: The Last Airbender|205|C|{1}{U/R}|Instant - Lesson|||You may discard a card. If you do, draw two cards.|
Avatar Aang|Avatar: The Last Airbender|207|M|{R}{G}{W}{U}|Legendary Creature - Human Avatar Ally|4|4|Flying, firebending 2$Whenever you waterbend, earthbend, firebend, or airbend, draw a card. Then if you've done all four this turn, transform Avatar Aang.|
Aang, Master of Elements|Avatar: The Last Airbender|207|M||Legendary Creature - Avatar Ally|6|6|Flying$Spells you cast cost {W}{U}{B}{R}{G} less to cast.$At the beginning of each upkeep, you may transform Aang, Master of Elements. If you do, you gain 4 life, draw four cards, put four +1/+1 counters on him, and he deals 4 damage to each opponent.|
+Cat-Owl|Avatar: The Last Airbender|212|C|{3}{W/U}|Creature - Cat Bird|3|3|Flying$Whenever this creature attacks, untap target artifact or creature.|
+Earth Kingdom Soldier|Avatar: The Last Airbender|216|C|{4}{G/W}|Creature - Human Soldier|3|4|Vigilance$When this creature enters, put a +1/+1 counter on each of up to two target creatures you control.|
+Earth Village Ruffians|Avatar: The Last Airbender|219|C|{2}{B/G}|Creature - Human Soldier Rogue|3|1|When this creature dies, earthbend 2.|
Fire Lord Zuko|Avatar: The Last Airbender|221|R|{R}{W}{B}|Legendary Creature - Human Noble Ally|2|4|Firebending X, where X is Fire Lord Zuko's power.$Whenever you cast a spell from exile and whenever a permanent you control enters from exile, put a +1/+1 counter on each creature you control.|
+Hei Bai, Spirit of Balance|Avatar: The Last Airbender|225|U|{2}{W/B}{W/B}|Legendary Creature - Bear Spirit|3|3|Whenever Hei Bai enters or attacks, you may sacrifice another creature or artifact. If you do, put two +1/+1 counters on Hei Bai.$When Hei Bai leaves the battlefield, put its counters on target creature you control.|
Katara, the Fearless|Avatar: The Last Airbender|230|R|{G}{W}{U}|Legendary Creature - Human Warrior Ally|3|3|If a triggered ability of an Ally you control triggers, that ability triggers an additional time.|
Katara, Water Tribe's Hope|Avatar: The Last Airbender|231|R|{2}{W}{U}{U}|Legendary Creature - Human Warrior Ally|3|3|Vigilance$When Katara enters, create a 1/1 white Ally creature token.$Waterbend {X}: Creatures you control have base power and toughness X/X until end of turn. X can't be 0. Activate only during your turn.|
+Long Feng, Grand Secretariat|Avatar: The Last Airbender|233|U|{1}{B/G}{B/G}|Legendary Creature - Human Advisor|2|3|Whenever another creature you control or a land you control is put into a graveyard from the battlefield, put a +1/+1 counter on target creature you control.|
+Pretending Poxbearers|Avatar: The Last Airbender|237|C|{1}{W/B}|Creature - Human Citizen Ally|2|1|When this creature dies, create a 1/1 white Ally creature token.|
Sokka, Bold Boomeranger|Avatar: The Last Airbender|240|R|{U}{R}|Legendary Creature - Human Warrior Ally|1|1|When Sokka enters, discard up to two cards, then draw that many cards.$Whenever you cast an artifact or Lesson spell, put a +1/+1 counter on Sokka.|
+Sokka, Lateral Strategist|Avatar: The Last Airbender|241|U|{1}{W/U}{W/U}|Legendary Creature - Human Warrior Ally|2|4|Vigilance$Whenever Sokka and at least one other creature attack, draw a card.|
+Suki, Kyoshi Warrior|Avatar: The Last Airbender|243|U|{2}{G/W}{G/W}|Legendary Creature - Human Warrior Ally|*|4|Suki's power is equal to the number of creatures you control.$Whenever Suki attacks, create a 1/1 white Ally creature token that's tapped and attacking.|
Toph, the First Metalbender|Avatar: The Last Airbender|247|R|{1}{R}{G}{W}|Legendary Creature - Human Warrior Ally|3|3|Nontoken artifacts you control are lands in addition to their other types.$At the beginning of your end step, earthbend 2.|
+Vindictive Warden|Avatar: The Last Airbender|249|C|{2}{B/R}|Creature - Human Soldier|2|3|Menace$Firebending 1${3}: This creature deals 1 damage to each opponent.|
+Barrels of Blasting Jelly|Avatar: The Last Airbender|254|C|{1}|Artifact|||{1}: Add one mana of any color. Activate only once each turn.${5}, {T}, Sacrifice this artifact: It deals 5 damage to target creature.|
+Bender's Waterskin|Avatar: The Last Airbender|255|C|{3}|Artifact|||Untap this artifact during each other player's untap step.${T}: Add one mana of any color.|
Plains|Avatar: The Last Airbender|287|C||Basic Land - Plains|||({T}: Add {W}.)|
Island|Avatar: The Last Airbender|288|C||Basic Land - Island|||({T}: Add {U}.)|
Swamp|Avatar: The Last Airbender|289|C||Basic Land - Swamp|||({T}: Add {B}.)|
@@ -59865,7 +59930,64 @@ Miles Morales|Marvel's Spider-Man|234|M|{1}{G}|Legendary Creature - Human Citize
Ultimate Spider-Man|Marvel's Spider-Man|234|M|{3}{R}{G}{W}|Legendary Creature - Spider Human Hero|4|3|First strike, haste$Camouflage -- {2}: Put a +1/+1 counter on Ultimate Spider-Man. He gains hexproof and becomes colorless until end of turn.$Whenever you attack, double the number of each kind of counter on each Spider and legendary creature you control.|
Anti-Venom, Horrifying Healer|Marvel's Spider-Man|244|M|{W}{W}{W}{W}{W}|Legendary Creature - Symbiote Hero|5|5|When Anti-Venom enters, if he was cast, return target creature card from your graveyard to the battlefield.$If damage would be dealt to Anti-Venom, prevent that damage and put that many +1/+1 counters on him.|
Iron Spider, Stark Upgrade|Marvel's Spider-Man|279|R|{3}|Legendary Artifact Creature - Spider Hero|2|3|Vigilance${T}: Put a +1/+1 counter on each artifact creature and/or Vehicle you control.${2}, Remove two +1/+1 counters from among artifacts you control: Draw a card.|
+Force of Negation|Avatar: The Last Airbender Eternal|13|M|{1}{U}{U}|Instant|||If it's not your turn, you may exile a blue card from your hand rather than pay this spell's mana cost.$Counter target noncreature spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard.|
+The Great Henge|Avatar: The Last Airbender Eternal|41|M|{7}{G}{G}|Legendary Artifact|||This spell costs {X} less to cast, where X is the greatest power among creatures you control.${T}: Add {G}{G}. You gain 2 life.$Whenever a nontoken creature you control enters, put a +1/+1 counter on it and draw a card.|
Aang, Airbending Master|Avatar: The Last Airbender Eternal|74|M|{4}{W}|Legendary Creature - Human Avatar Ally|4|4|When Aang enters, airbend another target creature.$Whenever one or more creatures you control leave the battlefield without dying, you get an experience counter.$At the beginning of your upkeep, create a 1/1 white Ally creature token for each experience counter you have.|
Katara, Waterbending Master|Avatar: The Last Airbender Eternal|93|M|{1}{U}|Legendary Creature - Human Warrior Ally|1|3|Whenever you cast a spell during an opponent's turn, you get an experience counter.$Whenever Katara attacks, you may draw a card for each experience counter you have. If you do, discard a card.|
Fire Lord Ozai|Avatar: The Last Airbender Eternal|104|M|{3}{B}|Legendary Creature - Human Noble|4|4|Whenever Fire Lord Ozai attacks, you may sacrifice another creature. If you do, add an amount of {R} equal to the sacrificed creature's power. Until end of combat, you don't lose this mana as steps end.${6}: Exile the top card of each opponent's library. Until end of turn, you may play one of those cards without paying its mana cost.|
The Cabbage Merchant|Avatar: The Last Airbender Eternal|134|R|{2}{G}|Legendary Creature - Human Citizen|2|2|Whenever an opponent casts a noncreature spell, create a Food token.$Whenever a creature deals combat damage to you, sacrifice a Food token.$Tap two untapped Foods you control: Add one mana of any color.|
+Aang, Air Nomad|Avatar: The Last Airbender Eternal|210|R|{3}{W}{W}|Legendary Creature - Human Avatar Ally|5|4|Flying$Vigilance$Other creatures you control have vigilance.|
+Aang's Defense|Avatar: The Last Airbender Eternal|211|C|{W}|Instant|||Target blocking creature you control gets +2/+2 until end of turn.$Draw a card.|
+Aardvark Sloth|Avatar: The Last Airbender Eternal|212|C|{3}{W}|Creature - Sloth Beast|3|3|Lifelink|
+Allied Teamwork|Avatar: The Last Airbender Eternal|213|R|{2}{W}|Enchantment|||When this enchantment enters, create a 1/1 white Ally creature token.$Allies you control get +1/+1.|
+Appa, Aang's Companion|Avatar: The Last Airbender Eternal|214|U|{3}{W}|Legendary Creature - Bison Ally|2|4|Flying$Whenever Appa attacks, another target attacking creature without flying gains flying until until end of turn.|
+Katara, Heroic Healer|Avatar: The Last Airbender Eternal|215|U|{4}{W}|Legendary Creature - Human Warrior Ally|2|3|Lifelink$When Katara enters, put a +1/+1 counter on each other creature you control.|
+Kyoshi Warrior Guard|Avatar: The Last Airbender Eternal|216|C|{1}{W}|Creature - Human Warrior Ally|2|3||
+Momo, Rambunctious Rascal|Avatar: The Last Airbender Eternal|217|U|{2}{W}|Legendary Creature - Lemur Bat Ally|1|1|Flying$When Momo enters, he deals 4 damage to target tapped creature an opponent controls.|
+Sledding Otter-Penguin|Avatar: The Last Airbender Eternal|218|C|{2}{W}|Creature - Otter Bird|2|3|{3}: Put a +1/+1 counter on this creature.|
+Sokka, Wolf Cove's Protector|Avatar: The Last Airbender Eternal|219|U|{2}{W}|Legendary Creature - Human Warrior Ally|3|3|Vigilance|
+Tundra Wall|Avatar: The Last Airbender Eternal|220|C|{1}{W}|Creature - Wall|0|4|Defender|
+Wolf Cove Villager|Avatar: The Last Airbender Eternal|221|C|{W}|Creature - Human Peasant|2|2|This creature enters tapped.|
+Deny Entry|Avatar: The Last Airbender Eternal|222|C|{2}{U}|Instant|||Counter target creature spell. Draw a card, then discard a card.|
+Flying Dolphin-Fish|Avatar: The Last Airbender Eternal|223|C|{1}{U}|Creature - Whale Fish|1|3|Flying|
+Lost in the Spirit World|Avatar: The Last Airbender Eternal|224|U|{2}{U}|Sorcery|||Return up to one target creature to its owner's hand. Create a 1/1 colorless Spirit creature token with "This token can't block or be blocked by non-Spirit creatures."|
+The Terror of Serpent's Pass|Avatar: The Last Airbender Eternal|225|R|{5}{U}{U}|Legendary Creature - Serpent|8|8|Hexproof|
+Turtle-Seals|Avatar: The Last Airbender Eternal|226|C|{3}{U}|Creature - Turtle Seal|2|4|Vigilance|
+Water Whip|Avatar: The Last Airbender Eternal|227|R|{U}{U}|Sorcery - Lesson|||As an additional cost to cast this spell, waterbend {5}.$Return up to two target creatures to their owners' hands. Draw two cards.|
+Elephant-Rat|Avatar: The Last Airbender Eternal|228|C|{1}{B}|Creature - Elephant Rat|1|3|Menace|
+Fire Nation Ambushers|Avatar: The Last Airbender Eternal|229|C|{2}{B}|Creature - Human Soldier|3|2|Flash|
+Fire Nation Sentinels|Avatar: The Last Airbender Eternal|230|R|{3}{B}{B}|Creature - Human Soldier|4|4|Whenever a nontoken creature an opponent controls dies, put a +1/+1 counter on each creature you control.|
+Gilacorn|Avatar: The Last Airbender Eternal|231|C|{B}|Creature - Lizard|1|1|Deathtouch|
+Lion Vulture|Avatar: The Last Airbender Eternal|232|R|{3}{B}|Creature - Cat Bird|2|2|Flying$At the beginning of your end step, if an opponent lost life this turn, put a +1/+1 counter on this creature and draw a card.|
+Purple Pentapus|Avatar: The Last Airbender Eternal|233|C|{B}|Creature - Octopus Starfish|1|1|When this creature enters, surveil 1.${2}{B}, Tap an untapped creature you control: Return this card from your graveyard to the battlefield tapped.|
+Capital Guard|Avatar: The Last Airbender Eternal|234|C|{1}{R}|Creature - Human Soldier|2|2||
+Dragon Moose|Avatar: The Last Airbender Eternal|235|C|{3}{R}|Creature - Dragon Elk|3|3|Haste|
+Explosive Shot|Avatar: The Last Airbender Eternal|236|C|{1}{R}|Sorcery|||Explosive Shot deals 4 damage to target creature.|
+Fire Nation Archers|Avatar: The Last Airbender Eternal|237|R|{3}{R}|Creature - Human Archer|3|4|Reach${5}: This creature deals 2 damage to each opponent. Create a 2/2 red Soldier creature token.|
+Fire Nation Soldier|Avatar: The Last Airbender Eternal|238|C|{2}{R}|Creature - Human Soldier|3|2|Haste|
+Fire Nation's Conquest|Avatar: The Last Airbender Eternal|239|U|{2}{R}|Enchantment|||Creatures you control get +1/+0.|
+Iroh, Firebending Instructor|Avatar: The Last Airbender Eternal|240|U|{2}{R}|Legendary Creature - Human Noble Ally|2|2|Whenever Iroh attacks, attacking creatures get +1/+1 until end of turn.|
+Komodo Rhino|Avatar: The Last Airbender Eternal|241|C|{3}{R}|Creature - Lizard Rhino|5|2|Trample|
+Loyal Fire Sage|Avatar: The Last Airbender Eternal|242|U|{2}{R}|Creature - Human Cleric Ally|3|3|Firebending 1${5}: Create a 1/1 white Ally creature token.|
+Roku's Mastery|Avatar: The Last Airbender Eternal|243|U|{X}{R}{R}|Instant|||Roku's Mastery deals X damage to target creature. If X is 4 or greater, scry 2.|
+Warship Scout|Avatar: The Last Airbender Eternal|244|C|{R}|Creature - Human Scout|2|1||
+Zhao, the Seething Flame|Avatar: The Last Airbender Eternal|245|U|{4}{R}|Legendary Creature - Human Soldier|5|5|Menace|
+Zuko, Avatar Hunter|Avatar: The Last Airbender Eternal|246|R|{3}{R}{R}|Legendary Creature - Human Noble|4|5|Reach$Whenever you cast a red spell, create a 2/2 red Soldier creature token.|
+Zuko's Offense|Avatar: The Last Airbender Eternal|247|C|{R}|Sorcery|||Zuko's Offense deals 2 damage to any target.|
+Bumi, Eclectic Earthbender|Avatar: The Last Airbender Eternal|248|R|{3}{G}{G}|Legendary Creature - Human Noble Ally|4|4|When Bumi enters, earthbend 1.$Whenever Bumi attacks, put two +1/+1 counters on each land creature you control.|
+Earthbending Student|Avatar: The Last Airbender Eternal|249|U|{2}{G}|Creature - Human Warrior Ally|1|3|When this creature enters, earthbend 2.$Land creatures you control have vigilance.|
+Eel-Hounds|Avatar: The Last Airbender Eternal|250|U|{3}{G}|Creature - Fish Dog|4|2|Trample$Whenever this creature attacks, another target creature you control gets +2/+2 and gains trample until end of turn.|
+Frog-Squirrels|Avatar: The Last Airbender Eternal|251|C|{1}{G}|Creature - Frog Squirrel|2|2|Reach|
+Hippo-Cows|Avatar: The Last Airbender Eternal|252|C|{4}{G}|Creature - Hippo Ox|5|4|Trample|
+Match the Odds|Avatar: The Last Airbender Eternal|253|U|{2}{G}|Sorcery - Lesson|||Create a 1/1 white Ally creature token. Put a +1/+1 counter on it for each creature your opponents control.|
+Seismic Tutelage|Avatar: The Last Airbender Eternal|254|R|{3}{G}|Enchantment - Aura|||Enchant creature$When this Aura enters, put a +1/+1 counter on enchanted creature.$Whenever enchanted creature attacks, double the number of +1/+1 counters on it.|
+Hog-Monkey Rampage|Avatar: The Last Airbender Eternal|255|U|{1}{R/G}|Instant|||Choose target creature you control and target creature an opponent controls. Put a +1/+1 counter on the creature you control if it has power 4 or greater. Then those creatures fight each other.|
+Mechanical Glider|Avatar: The Last Airbender Eternal|256|C|{1}|Artifact - Equipment|||When this Equipment enters, attach it to target creature you control.$Equipped creature has flying.$Equip {2}|
+Feed the Swarm|Avatar: The Last Airbender Eternal|257|C|{1}{B}|Sorcery|||Destroy target creature or enchantment an opponent controls. You lose life equal to that permanent's mana value.|
+Run Amok|Avatar: The Last Airbender Eternal|258|C|{1}{R}|Instant|||Target attacking creature gets +3/+3 and gains trample until end of turn.|
+Explore|Avatar: The Last Airbender Eternal|259|C|{1}{G}|Sorcery|||You may play an additional land this turn.$Draw a card.|
+Thriving Bluff|Avatar: The Last Airbender Eternal|260|C||Land|||This land enters tapped. As it enters, choose a color other than red.${T}: Add {R} or one mana of the chosen color.|
+Thriving Grove|Avatar: The Last Airbender Eternal|261|C||Land|||This land enters tapped. As it enters, choose a color other than green.${T}: Add {G} or one mana of the chosen color.|
+Thriving Heath|Avatar: The Last Airbender Eternal|262|C||Land|||This land enters tapped. As it enters, choose a color other than white.${T}: Add {W} or one mana of the chosen color.|
+Thriving Isle|Avatar: The Last Airbender Eternal|263|C||Land|||This land enters tapped. As it enters, choose a color other than blue.${T}: Add {U} or one mana of the chosen color.|
+Thriving Moor|Avatar: The Last Airbender Eternal|264|C||Land|||This land enters tapped. As it enters, choose a color other than black.${T}: Add {B} or one mana of the chosen color.|