From 1c131dcc950fac4e144533bab77d68a49d0bb886 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Tue, 9 Nov 2021 07:25:01 -0500 Subject: [PATCH] [VOW] Implemented Skull Skaab --- Mage.Sets/src/mage/cards/s/SkullSkaab.java | 85 +++++++++++++++++++ .../src/mage/sets/InnistradCrimsonVow.java | 1 + 2 files changed, 86 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/s/SkullSkaab.java diff --git a/Mage.Sets/src/mage/cards/s/SkullSkaab.java b/Mage.Sets/src/mage/cards/s/SkullSkaab.java new file mode 100644 index 00000000000..2c90bc7a0a7 --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/SkullSkaab.java @@ -0,0 +1,85 @@ +package mage.cards.s; + +import mage.MageInt; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.keyword.ExploitAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.permanent.Permanent; +import mage.game.permanent.PermanentToken; +import mage.game.permanent.token.ZombieToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class SkullSkaab extends CardImpl { + + public SkullSkaab(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{B}"); + + this.subtype.add(SubType.ZOMBIE); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Exploit + this.addAbility(new ExploitAbility()); + + // Whenever a creature you control exploits a nontoken creature, create a 2/2 black Zombie creature token. + this.addAbility(new SkullSkaabTriggeredAbility()); + } + + private SkullSkaab(final SkullSkaab card) { + super(card); + } + + @Override + public SkullSkaab copy() { + return new SkullSkaab(this); + } +} + +class SkullSkaabTriggeredAbility extends TriggeredAbilityImpl { + + SkullSkaabTriggeredAbility() { + super(Zone.BATTLEFIELD, new CreateTokenEffect(new ZombieToken())); + } + + private SkullSkaabTriggeredAbility(final SkullSkaabTriggeredAbility ability) { + super(ability); + } + + @Override + public SkullSkaabTriggeredAbility copy() { + return new SkullSkaabTriggeredAbility(this); + } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.EXPLOITED_CREATURE; + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + Permanent exploiter = game.getPermanentOrLKIBattlefield(event.getSourceId()); + Permanent exploited = game.getPermanentOrLKIBattlefield(event.getTargetId()); + return exploiter != null && exploited != null + && exploiter.isCreature(game) + && exploited.isCreature(game) + && exploiter.isControlledBy(getControllerId()) + && !(exploited instanceof PermanentToken); + } + + @Override + public String getRule() { + return "Whenever a creature you control exploits a nontoken creature, " + + "create a 2/2 black Zombie creature token."; + } +} diff --git a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java index c9f2c4b6dac..4af39081d7f 100644 --- a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java +++ b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java @@ -256,6 +256,7 @@ public final class InnistradCrimsonVow extends ExpansionSet { cards.add(new SetCardInfo("Sigardian Paladin", 247, Rarity.UNCOMMON, mage.cards.s.SigardianPaladin.class)); cards.add(new SetCardInfo("Sinner's Judgment", 12, Rarity.MYTHIC, mage.cards.s.SinnersJudgment.class)); cards.add(new SetCardInfo("Skulking Killer", 130, Rarity.UNCOMMON, mage.cards.s.SkulkingKiller.class)); + cards.add(new SetCardInfo("Skull Skaab", 248, Rarity.UNCOMMON, mage.cards.s.SkullSkaab.class)); cards.add(new SetCardInfo("Skywarp Skaab", 78, Rarity.COMMON, mage.cards.s.SkywarpSkaab.class)); cards.add(new SetCardInfo("Snarling Wolf", 219, Rarity.COMMON, mage.cards.s.SnarlingWolf.class)); cards.add(new SetCardInfo("Sorin the Mirthless", 131, Rarity.MYTHIC, mage.cards.s.SorinTheMirthless.class));