diff --git a/Mage.Sets/src/mage/cards/v/VraskaGolgariQueen.java b/Mage.Sets/src/mage/cards/v/VraskaGolgariQueen.java new file mode 100644 index 0000000000..9f3646cdb0 --- /dev/null +++ b/Mage.Sets/src/mage/cards/v/VraskaGolgariQueen.java @@ -0,0 +1,78 @@ +package mage.cards.v; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.LoyaltyAbility; +import mage.abilities.common.PlanswalkerEntersWithLoyalityCountersAbility; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.effects.common.DoIfCostPaid; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.GainLifeEffect; +import mage.abilities.effects.common.GetEmblemEffect; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.ComparisonType; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.common.FilterNonlandPermanent; +import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; +import mage.filter.predicate.permanent.AnotherPredicate; +import mage.game.command.emblems.VraskaGolgariQueenEmblem; +import mage.target.TargetPermanent; +import mage.target.common.TargetControlledPermanent; + +/** + * + * @author TheElk801 + */ +public final class VraskaGolgariQueen extends CardImpl { + + private static final FilterControlledPermanent filter1 + = new FilterControlledPermanent("another permanent"); + private static final FilterPermanent filter2 + = new FilterNonlandPermanent("nonland permanent with converted mana cost 3 or less"); + + static { + filter1.add(new AnotherPredicate()); + filter2.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 4)); + } + + public VraskaGolgariQueen(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{B}{G}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.VRASKA); + this.addAbility(new PlanswalkerEntersWithLoyalityCountersAbility(4)); + + // +2: You may sacrifice another permanent. If you do, you gain 1 life and draw a card. + DoIfCostPaid effect = new DoIfCostPaid( + new GainLifeEffect(1), + new SacrificeTargetCost(new TargetControlledPermanent(filter1)) + ); + effect.addEffect(new DrawCardSourceControllerEffect(1)); + this.addAbility(new LoyaltyAbility(effect, 2)); + + // -3: Destroy target nonland permanent with converted mana cost 3 or less. + Ability ability = new LoyaltyAbility(new DestroyTargetEffect()); + ability.addTarget(new TargetPermanent(filter2)); + this.addAbility(ability); + + // -9: You get an emblem with "Whenever a creature you control deals combat damage to a player, that player loses the game." + this.addAbility(new LoyaltyAbility( + new GetEmblemEffect(new VraskaGolgariQueenEmblem()), -9 + )); + } + + public VraskaGolgariQueen(final VraskaGolgariQueen card) { + super(card); + } + + @Override + public VraskaGolgariQueen copy() { + return new VraskaGolgariQueen(this); + } +} diff --git a/Mage.Sets/src/mage/sets/GuildsOfRavnica.java b/Mage.Sets/src/mage/sets/GuildsOfRavnica.java index 0d02607c00..977121bb58 100644 --- a/Mage.Sets/src/mage/sets/GuildsOfRavnica.java +++ b/Mage.Sets/src/mage/sets/GuildsOfRavnica.java @@ -116,6 +116,7 @@ public final class GuildsOfRavnica extends ExpansionSet { cards.add(new SetCardInfo("Unexplained Disappearance", 56, Rarity.COMMON, mage.cards.u.UnexplainedDisappearance.class)); cards.add(new SetCardInfo("Vivid Revival", 148, Rarity.RARE, mage.cards.v.VividRevival.class)); cards.add(new SetCardInfo("Vraska's Stoneglare", 272, Rarity.RARE, mage.cards.v.VraskasStoneglare.class)); + cards.add(new SetCardInfo("Vraska, Golgari Queen", 213, Rarity.MYTHIC, mage.cards.v.VraskaGolgariQueen.class)); cards.add(new SetCardInfo("Vraska, Regal Gorgon", 269, Rarity.MYTHIC, mage.cards.v.VraskaRegalGorgon.class)); cards.add(new SetCardInfo("Wary Okapi", 149, Rarity.COMMON, mage.cards.w.WaryOkapi.class)); cards.add(new SetCardInfo("Watery Grave", 259, Rarity.RARE, mage.cards.w.WateryGrave.class)); diff --git a/Mage/src/main/java/mage/game/command/emblems/VraskaGolgariQueenEmblem.java b/Mage/src/main/java/mage/game/command/emblems/VraskaGolgariQueenEmblem.java new file mode 100644 index 0000000000..5e97b8c745 --- /dev/null +++ b/Mage/src/main/java/mage/game/command/emblems/VraskaGolgariQueenEmblem.java @@ -0,0 +1,25 @@ +package mage.game.command.emblems; + +import mage.abilities.common.DealsDamageToAPlayerAllTriggeredAbility; +import mage.abilities.effects.common.LoseGameTargetPlayerEffect; +import mage.constants.SetTargetPointer; +import mage.filter.StaticFilters; +import mage.game.command.Emblem; + +/** + * + * @author TheElk801 + */ +public class VraskaGolgariQueenEmblem extends Emblem { + + // -9: You get an emblem with "Whenever a creature you control deals combat damage to a player, that player loses the game." + public VraskaGolgariQueenEmblem() { + this.setName("Emblem Vraska"); + this.setExpansionSetCodeForImage("GRN"); + this.getAbilities().add(new DealsDamageToAPlayerAllTriggeredAbility( + new LoseGameTargetPlayerEffect(), + StaticFilters.FILTER_CONTROLLED_A_CREATURE, + false, SetTargetPointer.NONE, true + )); + } +}