From 85712e241ae1009f4c494755f71fb4509dd9a906 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Tue, 17 May 2022 20:33:44 -0400 Subject: [PATCH] [CLB] Implemented Baldur's Gate --- Mage.Sets/src/mage/cards/b/BaldursGate.java | 64 +++++++++++++++++++ .../CommanderLegendsBattleForBaldursGate.java | 1 + Utils/mtg-cards-data.txt | 1 + 3 files changed, 66 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/b/BaldursGate.java diff --git a/Mage.Sets/src/mage/cards/b/BaldursGate.java b/Mage.Sets/src/mage/cards/b/BaldursGate.java new file mode 100644 index 0000000000..f7b59b2791 --- /dev/null +++ b/Mage.Sets/src/mage/cards/b/BaldursGate.java @@ -0,0 +1,64 @@ +package mage.cards.b; + +import mage.Mana; +import mage.abilities.Ability; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.hint.Hint; +import mage.abilities.hint.ValueHint; +import mage.abilities.mana.ColorlessManaAbility; +import mage.abilities.mana.DynamicManaAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.AnotherPredicate; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class BaldursGate extends CardImpl { + + private static final FilterPermanent filter + = new FilterControlledPermanent(SubType.GATE, "other Gates you control"); + + static { + filter.add(AnotherPredicate.instance); + } + + private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter, null); + private static final Hint hint = new ValueHint("Other Gates you control", xValue); + + public BaldursGate(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.GATE); + + // {T}: Add {C}. + this.addAbility(new ColorlessManaAbility()); + + // {2}, {T}: Add X mana of any one color, where X is the number of other Gates you control. + Ability ability = new DynamicManaAbility( + Mana.AnyMana(1), xValue, new GenericManaCost(2), null, true + ); + ability.addCost(new TapSourceCost()); + this.addAbility(ability.addHint(hint)); + } + + private BaldursGate(final BaldursGate card) { + super(card); + } + + @Override + public BaldursGate copy() { + return new BaldursGate(this); + } +} diff --git a/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java b/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java index fa5c9ec0ac..60dfb2060e 100644 --- a/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java +++ b/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java @@ -22,6 +22,7 @@ public final class CommanderLegendsBattleForBaldursGate extends ExpansionSet { this.hasBoosters = false; // temporary cards.add(new SetCardInfo("Ancient Brass Dragon", 111, Rarity.MYTHIC, mage.cards.a.AncientBrassDragon.class)); + cards.add(new SetCardInfo("Baldur's Gate", 345, Rarity.RARE, mage.cards.b.BaldursGate.class)); cards.add(new SetCardInfo("Bountiful Promenade", 348, Rarity.RARE, mage.cards.b.BountifulPromenade.class)); cards.add(new SetCardInfo("Elder Brain", 125, Rarity.RARE, mage.cards.e.ElderBrain.class)); cards.add(new SetCardInfo("Faceless One", 1, Rarity.COMMON, mage.cards.f.FacelessOne.class)); diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 8a59d6c73a..04a2b45e3c 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -44192,6 +44192,7 @@ Lightning Bolt|Commander Legends: Battle for Baldur's Gate|187|C|{R}|Instant|||L Wand of Wonder|Commander Legends: Battle for Baldur's Gate|204|R|{3}{R}|Artifact|||{4}, {T}: Roll a d20. Each opponent exiles cards from the top of their library until they exile an instant or sorcery card, then shuffles the rest into their library. You may cast up to X instant and/or sorcery spells from among cards exiled this way without paying their mana costs.$1-9 & X is one$10-19 & X is two.$20 & X is three.| Minsc & Boo, Timeless Heroes|Commander Legends: Battle for Baldur's Gate|285|M|{2}{R}{G}|Legendary Planeswalker - Minsc|3|When Minsc & Boo, Timeless Heroes enters the battlefield and at the beginning of your upkeep, you may create Boo, a legendary 1/1 red Hamster creature token with trample and haste.$+1: Put three +1/+1 counters on up to one target creature with trample or haste.$−2: Sacrifice a creature. When you do, Minsc & Boo, Timeless Heroes deals X damage to any target, where X is that creature's power. If the sacrificed creature was a Hamster, draw X cards.$Minsc & Boo, Timeless Heroes can be your commander.| Zevlor, Elturel Exile|Commander Legends: Battle for Baldur's Gate|296|R|{1}{U}{B}{R}|Legendary Creature - Tiefling Warrior|4|2|Haste${2}, {T}: When you next cast an instant or sorcery spell that targets a single opponent or a single permanent an opponent controls this turn, for each other opponent, choose that player or a permanent they control, copy that spell, and the copy targets the chosen permanent.| +Baldur's Gate|Commander Legends: Battle for Baldur's Gate|345|R||Legendary Land - Gate|||{T}: Add {C}.${2}, {T}: Add X mana of any one color, where X is the number of other Gates you control.| Bountiful Promenade|Commander Legends: Battle for Baldur's Gate|348|R||Land|||Bountiful Promenade enters the battlefield tapped unless you have two or more opponents.${T}: Add {G} or {W}.| Luxury Suite|Commander Legends: Battle for Baldur's Gate|355|R||Land|||Luxury Suite enters the battlefield tapped unless you have two or more opponents.${T}: Add {B} or {R}.| Morphic Pool|Commander Legends: Battle for Baldur's Gate|357|R||Land|||Morphic Pool enters the battlefield tapped unless you have two or more opponents.${T}: Add {U} or {B}.|