From 28513e2bc6e6aa00f4a5c1bda6b272ef37578818 Mon Sep 17 00:00:00 2001 From: Daniel Bomar Date: Thu, 7 Jan 2021 18:14:35 -0600 Subject: [PATCH] [KHM] Implemented Snow Dual Lands (#7342) --- Mage.Sets/src/mage/cards/a/AlpineMeadow.java | 43 +++++++++++++++++++ .../src/mage/cards/a/ArcticTreeline.java | 43 +++++++++++++++++++ .../src/mage/cards/g/GlacialFloodplain.java | 43 +++++++++++++++++++ .../src/mage/cards/h/HighlandForest.java | 43 +++++++++++++++++++ Mage.Sets/src/mage/cards/i/IceTunnel.java | 43 +++++++++++++++++++ Mage.Sets/src/mage/cards/r/RimewoodFalls.java | 43 +++++++++++++++++++ .../src/mage/cards/s/SnowfieldSinkhole.java | 43 +++++++++++++++++++ Mage.Sets/src/mage/cards/s/SulfurousMine.java | 43 +++++++++++++++++++ Mage.Sets/src/mage/cards/v/VolatileFjord.java | 43 +++++++++++++++++++ Mage.Sets/src/mage/cards/w/WoodlandChasm.java | 43 +++++++++++++++++++ Mage.Sets/src/mage/sets/Kaldheim.java | 10 +++++ Utils/mtg-cards-data.txt | 10 +++++ 12 files changed, 450 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/a/AlpineMeadow.java create mode 100644 Mage.Sets/src/mage/cards/a/ArcticTreeline.java create mode 100644 Mage.Sets/src/mage/cards/g/GlacialFloodplain.java create mode 100644 Mage.Sets/src/mage/cards/h/HighlandForest.java create mode 100644 Mage.Sets/src/mage/cards/i/IceTunnel.java create mode 100644 Mage.Sets/src/mage/cards/r/RimewoodFalls.java create mode 100644 Mage.Sets/src/mage/cards/s/SnowfieldSinkhole.java create mode 100644 Mage.Sets/src/mage/cards/s/SulfurousMine.java create mode 100644 Mage.Sets/src/mage/cards/v/VolatileFjord.java create mode 100644 Mage.Sets/src/mage/cards/w/WoodlandChasm.java diff --git a/Mage.Sets/src/mage/cards/a/AlpineMeadow.java b/Mage.Sets/src/mage/cards/a/AlpineMeadow.java new file mode 100644 index 0000000000..5de56221c7 --- /dev/null +++ b/Mage.Sets/src/mage/cards/a/AlpineMeadow.java @@ -0,0 +1,43 @@ +package mage.cards.a; + +import java.util.UUID; + +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.mana.RedManaAbility; +import mage.abilities.mana.WhiteManaAbility; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; + +/** + * + * @author weirddan455 + */ +public final class AlpineMeadow extends CardImpl { + + public AlpineMeadow(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + this.addSuperType(SuperType.SNOW); + this.subtype.add(SubType.MOUNTAIN); + this.subtype.add(SubType.PLAINS); + + // {tap}: Add {R} or {W}. + this.addAbility(new RedManaAbility()); + this.addAbility(new WhiteManaAbility()); + + // Alpine Meadow enters the battlefield tapped. + this.addAbility(new EntersBattlefieldTappedAbility()); + } + + private AlpineMeadow(final AlpineMeadow card) { + super(card); + } + + @Override + public AlpineMeadow copy() { + return new AlpineMeadow(this); + } +} diff --git a/Mage.Sets/src/mage/cards/a/ArcticTreeline.java b/Mage.Sets/src/mage/cards/a/ArcticTreeline.java new file mode 100644 index 0000000000..dfb0e032f7 --- /dev/null +++ b/Mage.Sets/src/mage/cards/a/ArcticTreeline.java @@ -0,0 +1,43 @@ +package mage.cards.a; + +import java.util.UUID; + +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.mana.GreenManaAbility; +import mage.abilities.mana.WhiteManaAbility; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; + +/** + * + * @author weirddan455 + */ +public final class ArcticTreeline extends CardImpl { + + public ArcticTreeline(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + this.addSuperType(SuperType.SNOW); + this.subtype.add(SubType.FOREST); + this.subtype.add(SubType.PLAINS); + + // {tap}: Add {G} or {W}. + this.addAbility(new GreenManaAbility()); + this.addAbility(new WhiteManaAbility()); + + // Arctic Treeline enters the battlefield tapped. + this.addAbility(new EntersBattlefieldTappedAbility()); + } + + private ArcticTreeline(final ArcticTreeline card) { + super(card); + } + + @Override + public ArcticTreeline copy() { + return new ArcticTreeline(this); + } +} diff --git a/Mage.Sets/src/mage/cards/g/GlacialFloodplain.java b/Mage.Sets/src/mage/cards/g/GlacialFloodplain.java new file mode 100644 index 0000000000..ba08b92f4b --- /dev/null +++ b/Mage.Sets/src/mage/cards/g/GlacialFloodplain.java @@ -0,0 +1,43 @@ +package mage.cards.g; + +import java.util.UUID; + +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.mana.BlueManaAbility; +import mage.abilities.mana.WhiteManaAbility; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; + +/** + * + * @author weirddan455 + */ +public final class GlacialFloodplain extends CardImpl { + + public GlacialFloodplain(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + this.addSuperType(SuperType.SNOW); + this.subtype.add(SubType.PLAINS); + this.subtype.add(SubType.ISLAND); + + // {tap}: Add {W} or {U}. + this.addAbility(new WhiteManaAbility()); + this.addAbility(new BlueManaAbility()); + + // Glacial Floodplain enters the battlefield tapped. + this.addAbility(new EntersBattlefieldTappedAbility()); + } + + private GlacialFloodplain(final GlacialFloodplain card) { + super(card); + } + + @Override + public GlacialFloodplain copy() { + return new GlacialFloodplain(this); + } +} diff --git a/Mage.Sets/src/mage/cards/h/HighlandForest.java b/Mage.Sets/src/mage/cards/h/HighlandForest.java new file mode 100644 index 0000000000..4db4ca8c08 --- /dev/null +++ b/Mage.Sets/src/mage/cards/h/HighlandForest.java @@ -0,0 +1,43 @@ +package mage.cards.h; + +import java.util.UUID; + +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.mana.GreenManaAbility; +import mage.abilities.mana.RedManaAbility; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; + +/** + * + * @author weirddan455 + */ +public final class HighlandForest extends CardImpl { + + public HighlandForest(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + this.addSuperType(SuperType.SNOW); + this.subtype.add(SubType.MOUNTAIN); + this.subtype.add(SubType.FOREST); + + // {tap}: Add {R} or {G}. + this.addAbility(new RedManaAbility()); + this.addAbility(new GreenManaAbility()); + + // Highland Forest enters the battlefield tapped. + this.addAbility(new EntersBattlefieldTappedAbility()); + } + + private HighlandForest(final HighlandForest card) { + super(card); + } + + @Override + public HighlandForest copy() { + return new HighlandForest(this); + } +} diff --git a/Mage.Sets/src/mage/cards/i/IceTunnel.java b/Mage.Sets/src/mage/cards/i/IceTunnel.java new file mode 100644 index 0000000000..05e57fcb9d --- /dev/null +++ b/Mage.Sets/src/mage/cards/i/IceTunnel.java @@ -0,0 +1,43 @@ +package mage.cards.i; + +import java.util.UUID; + +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.mana.BlackManaAbility; +import mage.abilities.mana.BlueManaAbility; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; + +/** + * + * @author weirddan455 + */ +public final class IceTunnel extends CardImpl { + + public IceTunnel(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + this.addSuperType(SuperType.SNOW); + this.subtype.add(SubType.ISLAND); + this.subtype.add(SubType.SWAMP); + + // {tap}: Add {U} or {B}. + this.addAbility(new BlueManaAbility()); + this.addAbility(new BlackManaAbility()); + + // Ice Tunnel enters the battlefield tapped. + this.addAbility(new EntersBattlefieldTappedAbility()); + } + + private IceTunnel(final IceTunnel card) { + super(card); + } + + @Override + public IceTunnel copy() { + return new IceTunnel(this); + } +} diff --git a/Mage.Sets/src/mage/cards/r/RimewoodFalls.java b/Mage.Sets/src/mage/cards/r/RimewoodFalls.java new file mode 100644 index 0000000000..4e62c343be --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RimewoodFalls.java @@ -0,0 +1,43 @@ +package mage.cards.r; + +import java.util.UUID; + +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.mana.BlueManaAbility; +import mage.abilities.mana.GreenManaAbility; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; + +/** + * + * @author weirddan455 + */ +public final class RimewoodFalls extends CardImpl { + + public RimewoodFalls(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + this.addSuperType(SuperType.SNOW); + this.subtype.add(SubType.FOREST); + this.subtype.add(SubType.ISLAND); + + // {tap}: Add {G} or {U}. + this.addAbility(new GreenManaAbility()); + this.addAbility(new BlueManaAbility()); + + // Rimewood Falls enters the battlefield tapped. + this.addAbility(new EntersBattlefieldTappedAbility()); + } + + private RimewoodFalls(final RimewoodFalls card) { + super(card); + } + + @Override + public RimewoodFalls copy() { + return new RimewoodFalls(this); + } +} diff --git a/Mage.Sets/src/mage/cards/s/SnowfieldSinkhole.java b/Mage.Sets/src/mage/cards/s/SnowfieldSinkhole.java new file mode 100644 index 0000000000..a93f1dde81 --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/SnowfieldSinkhole.java @@ -0,0 +1,43 @@ +package mage.cards.s; + +import java.util.UUID; + +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.mana.BlackManaAbility; +import mage.abilities.mana.WhiteManaAbility; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; + +/** + * + * @author weirddan455 + */ +public final class SnowfieldSinkhole extends CardImpl { + + public SnowfieldSinkhole(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + this.addSuperType(SuperType.SNOW); + this.subtype.add(SubType.PLAINS); + this.subtype.add(SubType.SWAMP); + + // {tap}: Add {W} or {B}. + this.addAbility(new WhiteManaAbility()); + this.addAbility(new BlackManaAbility()); + + // Snowfield Sinkhole enters the battlefield tapped. + this.addAbility(new EntersBattlefieldTappedAbility()); + } + + private SnowfieldSinkhole(final SnowfieldSinkhole card) { + super(card); + } + + @Override + public SnowfieldSinkhole copy() { + return new SnowfieldSinkhole(this); + } +} diff --git a/Mage.Sets/src/mage/cards/s/SulfurousMine.java b/Mage.Sets/src/mage/cards/s/SulfurousMine.java new file mode 100644 index 0000000000..4d779d966d --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/SulfurousMine.java @@ -0,0 +1,43 @@ +package mage.cards.s; + +import java.util.UUID; + +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.mana.BlackManaAbility; +import mage.abilities.mana.RedManaAbility; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; + +/** + * + * @author weirddan455 + */ +public final class SulfurousMine extends CardImpl { + + public SulfurousMine(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + this.addSuperType(SuperType.SNOW); + this.subtype.add(SubType.SWAMP); + this.subtype.add(SubType.MOUNTAIN); + + // {tap}: Add {B} or {R}. + this.addAbility(new BlackManaAbility()); + this.addAbility(new RedManaAbility()); + + // Sulfurous Mine enters the battlefield tapped. + this.addAbility(new EntersBattlefieldTappedAbility()); + } + + private SulfurousMine(final SulfurousMine card) { + super(card); + } + + @Override + public SulfurousMine copy() { + return new SulfurousMine(this); + } +} diff --git a/Mage.Sets/src/mage/cards/v/VolatileFjord.java b/Mage.Sets/src/mage/cards/v/VolatileFjord.java new file mode 100644 index 0000000000..e6d695c29a --- /dev/null +++ b/Mage.Sets/src/mage/cards/v/VolatileFjord.java @@ -0,0 +1,43 @@ +package mage.cards.v; + +import java.util.UUID; + +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.mana.BlueManaAbility; +import mage.abilities.mana.RedManaAbility; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; + +/** + * + * @author weirddan455 + */ +public final class VolatileFjord extends CardImpl { + + public VolatileFjord(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + this.addSuperType(SuperType.SNOW); + this.subtype.add(SubType.ISLAND); + this.subtype.add(SubType.MOUNTAIN); + + // {tap}: Add {U} or {R}. + this.addAbility(new BlueManaAbility()); + this.addAbility(new RedManaAbility()); + + // Volatile Fjord enters the battlefield tapped. + this.addAbility(new EntersBattlefieldTappedAbility()); + } + + private VolatileFjord(final VolatileFjord card) { + super(card); + } + + @Override + public VolatileFjord copy() { + return new VolatileFjord(this); + } +} diff --git a/Mage.Sets/src/mage/cards/w/WoodlandChasm.java b/Mage.Sets/src/mage/cards/w/WoodlandChasm.java new file mode 100644 index 0000000000..9834e9c922 --- /dev/null +++ b/Mage.Sets/src/mage/cards/w/WoodlandChasm.java @@ -0,0 +1,43 @@ +package mage.cards.w; + +import java.util.UUID; + +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.mana.BlackManaAbility; +import mage.abilities.mana.GreenManaAbility; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; + +/** + * + * @author weirddan455 + */ +public final class WoodlandChasm extends CardImpl { + + public WoodlandChasm(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + this.addSuperType(SuperType.SNOW); + this.subtype.add(SubType.SWAMP); + this.subtype.add(SubType.FOREST); + + // {tap}: Add {B} or {G}. + this.addAbility(new BlackManaAbility()); + this.addAbility(new GreenManaAbility()); + + // Woodland Chasm enters the battlefield tapped. + this.addAbility(new EntersBattlefieldTappedAbility()); + } + + private WoodlandChasm(final WoodlandChasm card) { + super(card); + } + + @Override + public WoodlandChasm copy() { + return new WoodlandChasm(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Kaldheim.java b/Mage.Sets/src/mage/sets/Kaldheim.java index b85ae6a24f..4bda97916a 100644 --- a/Mage.Sets/src/mage/sets/Kaldheim.java +++ b/Mage.Sets/src/mage/sets/Kaldheim.java @@ -29,6 +29,8 @@ public final class Kaldheim extends ExpansionSet { this.maxCardNumberInBooster = 285; cards.add(new SetCardInfo("Absorb Identity", 383, Rarity.UNCOMMON, mage.cards.a.AbsorbIdentity.class)); + cards.add(new SetCardInfo("Alpine Meadow", 248, Rarity.COMMON, mage.cards.a.AlpineMeadow.class)); + cards.add(new SetCardInfo("Arctic Treeline", 249, Rarity.COMMON, mage.cards.a.ArcticTreeline.class)); cards.add(new SetCardInfo("Armed and Armored", 379, Rarity.UNCOMMON, mage.cards.a.ArmedAndArmored.class)); cards.add(new SetCardInfo("Barkchannel Pathway", 251, Rarity.RARE, mage.cards.b.BarkchannelPathway.class)); cards.add(new SetCardInfo("Bearded Axe", 388, Rarity.UNCOMMON, mage.cards.b.BeardedAxe.class)); @@ -41,9 +43,12 @@ public final class Kaldheim extends ExpansionSet { cards.add(new SetCardInfo("Fire Giant's Fury", 389, Rarity.UNCOMMON, mage.cards.f.FireGiantsFury.class)); cards.add(new SetCardInfo("Giant's Grasp", 384, Rarity.UNCOMMON, mage.cards.g.GiantsGrasp.class)); cards.add(new SetCardInfo("Gilded Assault Cart", 390, Rarity.UNCOMMON, mage.cards.g.GildedAssaultCart.class)); + cards.add(new SetCardInfo("Glacial Floodplain", 257, Rarity.COMMON, mage.cards.g.GlacialFloodplain.class)); cards.add(new SetCardInfo("Gladewalker Ritualist", 392, Rarity.UNCOMMON, mage.cards.g.GladewalkerRitualist.class)); cards.add(new SetCardInfo("Halvar, God of Battle", 15, Rarity.MYTHIC, mage.cards.h.HalvarGodOfBattle.class)); cards.add(new SetCardInfo("Hengegate Pathway", 260, Rarity.RARE, mage.cards.h.HengegatePathway.class)); + cards.add(new SetCardInfo("Highland Forest", 261, Rarity.COMMON, mage.cards.h.HighlandForest.class)); + cards.add(new SetCardInfo("Ice Tunnel", 262, Rarity.COMMON, mage.cards.i.IceTunnel.class)); cards.add(new SetCardInfo("Invasion of the Giants", 215, Rarity.UNCOMMON, mage.cards.i.InvasionOfTheGiants.class)); cards.add(new SetCardInfo("Kaya the Inexorable", 218, Rarity.MYTHIC, mage.cards.k.KayaTheInexorable.class)); cards.add(new SetCardInfo("Magda, Brazen Outlaw", 142, Rarity.RARE, mage.cards.m.MagdaBrazenOutlaw.class)); @@ -51,15 +56,20 @@ public final class Kaldheim extends ExpansionSet { cards.add(new SetCardInfo("Rampage of the Valkyries", 393, Rarity.UNCOMMON, mage.cards.r.RampageOfTheValkyries.class)); cards.add(new SetCardInfo("Realmwalker", 188, Rarity.RARE, mage.cards.r.Realmwalker.class)); cards.add(new SetCardInfo("Renegade Reaper", 386, Rarity.UNCOMMON, mage.cards.r.RenegadeReaper.class)); + cards.add(new SetCardInfo("Rimewood Falls", 266, Rarity.COMMON, mage.cards.r.RimewoodFalls.class)); cards.add(new SetCardInfo("Sarulf, Realm Eater", 228, Rarity.RARE, mage.cards.s.SarulfRealmEater.class)); cards.add(new SetCardInfo("Showdown of the Skalds", 229, Rarity.RARE, mage.cards.s.ShowdownOfTheSkalds.class)); + cards.add(new SetCardInfo("Snowfield Sinkhole", 269, Rarity.COMMON, mage.cards.s.SnowfieldSinkhole.class)); cards.add(new SetCardInfo("Starnheim Aspirant", 380, Rarity.UNCOMMON, mage.cards.s.StarnheimAspirant.class)); + cards.add(new SetCardInfo("Sulfurous Mine", 270, Rarity.COMMON, mage.cards.s.SulfurousMine.class)); cards.add(new SetCardInfo("Surtland Elementalist", 375, Rarity.RARE, mage.cards.s.SurtlandElementalist.class)); cards.add(new SetCardInfo("Surtland Flinger", 377, Rarity.RARE, mage.cards.s.SurtlandFlinger.class)); cards.add(new SetCardInfo("Thornmantle Striker", 387, Rarity.UNCOMMON, mage.cards.t.ThornmantleStriker.class)); cards.add(new SetCardInfo("Toski, Bearer of Secrets", 197, Rarity.RARE, mage.cards.t.ToskiBearerOfSecrets.class)); cards.add(new SetCardInfo("Valkyrie Harbinger", 374, Rarity.RARE, mage.cards.v.ValkyrieHarbinger.class)); + cards.add(new SetCardInfo("Volatile Fjord", 273, Rarity.COMMON, mage.cards.v.VolatileFjord.class)); cards.add(new SetCardInfo("Warchanter Skald", 381, Rarity.UNCOMMON, mage.cards.w.WarchanterSkald.class)); + cards.add(new SetCardInfo("Woodland Chasm", 274, Rarity.COMMON, mage.cards.w.WoodlandChasm.class)); cards.add(new SetCardInfo("Youthful Valkyrie", 382, Rarity.UNCOMMON, mage.cards.y.YouthfulValkyrie.class)); } } diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 0264d7ca5a..9fccbc5198 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -40029,14 +40029,24 @@ Kaya the Inexorable|Kaldheim|218|M|{3}{W}{B}|Legendary Planeswalker - Kaya|5|+1: Sarulf, Realm Eater|Kaldheim|228|R|{1}{B}{G}|Legendary Creature - Wolf|3|3|Whenever a permanent an opponent controls is put into a graveyard from the battlefield, put a +1/+1 counter on Sarulf, Realm Eater.$At the beginning of your upkeep, if Sarulf has one or more +1/+1 counters on it, you may remove all of them. If you do, exile each other nonland permanent with converted mana cost less than or equal to the number of counters removed this way.| Showdown of the Skalds|Kaldheim|229|R|{2}{R}{W}|Enchantment - Saga|||(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)$I — Exile the top four cards of your library. Until the end of your next turn, you may play those cards.$II, III — Whenever you cast a spell this turn, put a +1/+1 counter on target creature you control.| Pyre of Heroes|Kaldheim|241|R|{2}|Artifact|||{2}, {T}, Sacrifice a creature: Search your library for a creature card that shares a creature type with the sacrificed creature and has converted mana cost equal to 1 plus that creature's converted mana cost. Put that card onto the battlefield, then shuffle your library. Activate this ability only any time you could cast a sorcery.| +Alpine Meadow|Kaldheim|248|C||Snow Land - Mountain Plains|||({tap}: Add {R} or {W}.)$Alpine Meadow enters the battlefield tapped.| +Arctic Treeline|Kaldheim|249|C||Snow Land - Forest Plains|||({tap}: Add {G} or {W}.)$Arctic Treeline enters the battlefield tapped.| Barkchannel Pathway|Kaldheim|251|R||Land|||{T}: Add {G}.| Tidechannel Pathway|Kaldheim|251|R||Land|||{T}: Add {U}.| Blightstep Pathway|Kaldheim|252|R||Land|||{T}: Add {B}.| Searstep Pathway|Kaldheim|252|R||Land|||{T}: Add {R}.| Darkbore Pathway|Kaldheim|254|R||Land|||{T}: Add {B}.| Slitherbore Pathway|Kaldheim|254|R||Land|||{T}: Add {G}.| +Glacial Floodplain|Kaldheim|257|C||Snow Land - Plains Island|||({tap}: Add {W} or {U}.)$Glacial Floodplain enters the battlefield tapped.| Hengegate Pathway|Kaldheim|260|R||Land|||{T}: Add {W}.| Mistgate Pathway|Kaldheim|260|R||Land|||{T}: Add {U}.| +Highland Forest|Kaldheim|261|C||Snow Land - Mountain Forest|||({tap}: Add {R} or {G}.)$Highland Forest enters the battlefield tapped.| +Ice Tunnel|Kaldheim|262|C||Snow Land - Island Swamp|||({tap}: Add {U} or {B}.)$Ice Tunnel enters the battlefield tapped.| +Rimewood Falls|Kaldheim|266|C||Snow Land - Forest Island|||({tap}: Add {G} or {U}.)$Rimewood Falls enters the battlefield tapped.| +Snowfield Sinkhole|Kaldheim|269|C||Snow Land - Plains Swamp|||({tap}: Add {W} or {B}.)$Snowfield Sinkhole enters the battlefield tapped.| +Sulfurous Mine|Kaldheim|270|C||Snow Land - Swamp Mountain|||({tap}: Add {B} or {R}.)$Sulfurous Mine enters the battlefield tapped.| +Volatile Fjord|Kaldheim|273|C||Snow Land - Island Mountain|||({tap}: Add {U} or {R}.)$Volatile Fjord enters the battlefield tapped.| +Woodland Chasm|Kaldheim|274|C||Snow Land - Swamp Forest|||({tap}: Add {B} or {G}.)$Woodland Chasm enters the battlefield tapped.| Valkyrie Harbinger|Kaldheim|374|R|{4}{W}{W}|Creature - Angel Cleric|4|5|Flying, lifelink$At the beginning of each end step, if you gained 4 or more life this turn, create a 4/4 white Angel creature token with flying and vigilance.| Surtland Elementalist|Kaldheim|375|R|{5}{U}{U}|Creature - Giant Wizard|8|8|As an additional cost to cast this spell, reveal a Giant card from your hand or pay {2}.$Whenever Surtland Elementalist attacks, you may cast an instant or sorcery spell from your hand without paying its mana cost.| Cleaving Reaper|Kaldheim|376|R|{3}{B}{B}|Creature - Angel Berserker|5|3|Flying, trample$Pay 3 life: Return Cleaving Reaper from your graveyard to your hand. Activate this ability only if you had an Angel or Berserker enter the battlefield under your control this turn.|