diff --git a/Mage.Sets/src/mage/cards/g/GutTrueSoulZealot.java b/Mage.Sets/src/mage/cards/g/GutTrueSoulZealot.java new file mode 100644 index 00000000000..d2a17818484 --- /dev/null +++ b/Mage.Sets/src/mage/cards/g/GutTrueSoulZealot.java @@ -0,0 +1,77 @@ +package mage.cards.g; + +import mage.MageInt; +import mage.MageObject; +import mage.abilities.common.AttacksWithCreaturesTriggeredAbility; +import mage.abilities.common.ChooseABackgroundAbility; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.DoIfCostPaid; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.ObjectSourcePlayer; +import mage.filter.predicate.ObjectSourcePlayerPredicate; +import mage.game.Game; +import mage.game.permanent.token.Skeleton41Token; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class GutTrueSoulZealot extends CardImpl { + + private static final FilterControlledPermanent filter + = new FilterControlledPermanent("another creature or an artifact"); + + static { + filter.add(GutTrueSoulZealotPredicate.instance); + } + + public GutTrueSoulZealot(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.GOBLIN); + this.subtype.add(SubType.SHAMAN); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Whenever you attack, you may sacrifice another creature or an artifact. If you do, create a 4/1 black Skeleton creature token with menace that's tapped and attacking. + this.addAbility(new AttacksWithCreaturesTriggeredAbility(new DoIfCostPaid( + new CreateTokenEffect( + new Skeleton41Token(), 1, true, true + ), new SacrificeTargetCost(filter) + ), 1)); + + // Choose a Background + this.addAbility(ChooseABackgroundAbility.getInstance()); + } + + private GutTrueSoulZealot(final GutTrueSoulZealot card) { + super(card); + } + + @Override + public GutTrueSoulZealot copy() { + return new GutTrueSoulZealot(this); + } +} + +enum GutTrueSoulZealotPredicate implements ObjectSourcePlayerPredicate { + instance; + + @Override + public boolean apply(ObjectSourcePlayer input, Game game) { + MageObject obj = input.getObject(); + if (obj.getId().equals(input.getSourceId())) { + return obj.isArtifact(game); + } + return obj.isArtifact(game) + || obj.isCreature(game); + } +} diff --git a/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java b/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java index 35aca884c07..5c99d2dc4ea 100644 --- a/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java +++ b/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java @@ -84,6 +84,7 @@ public final class CommanderLegendsBattleForBaldursGate extends ExpansionSet { cards.add(new SetCardInfo("Geode Golem", 316, Rarity.UNCOMMON, mage.cards.g.GeodeGolem.class)); cards.add(new SetCardInfo("Goggles of Night", 74, Rarity.COMMON, mage.cards.g.GogglesOfNight.class)); cards.add(new SetCardInfo("Gorion, Wise Mentor", 276, Rarity.RARE, mage.cards.g.GorionWiseMentor.class)); + cards.add(new SetCardInfo("Gut, True Soul Zealot", 180, Rarity.UNCOMMON, mage.cards.g.GutTrueSoulZealot.class)); cards.add(new SetCardInfo("Hammers of Moradin", 25, Rarity.UNCOMMON, mage.cards.h.HammersOfMoradin.class)); cards.add(new SetCardInfo("Imoen, Mystic Trickster", 77, Rarity.UNCOMMON, mage.cards.i.ImoenMysticTrickster.class)); cards.add(new SetCardInfo("Irenicus's Vile Duplication", 78, Rarity.UNCOMMON, mage.cards.i.IrenicussVileDuplication.class)); diff --git a/Mage/src/main/java/mage/game/command/dungeons/UndercityDungeon.java b/Mage/src/main/java/mage/game/command/dungeons/UndercityDungeon.java index 29b3d6cbc35..c155d46a9a2 100644 --- a/Mage/src/main/java/mage/game/command/dungeons/UndercityDungeon.java +++ b/Mage/src/main/java/mage/game/command/dungeons/UndercityDungeon.java @@ -23,7 +23,7 @@ import mage.game.command.Dungeon; import mage.game.command.DungeonRoom; import mage.game.permanent.Permanent; import mage.game.permanent.token.TreasureToken; -import mage.game.permanent.token.UndercitySkeletonToken; +import mage.game.permanent.token.Skeleton41Token; import mage.players.Player; import mage.target.TargetPlayer; import mage.target.common.TargetCardInLibrary; @@ -65,7 +65,7 @@ public class UndercityDungeon extends Dungeon { DungeonRoom archives = new DungeonRoom("Archives", new DrawCardSourceControllerEffect(1)); - DungeonRoom catacombs = new DungeonRoom("Catacombs", new CreateTokenEffect(new UndercitySkeletonToken())); + DungeonRoom catacombs = new DungeonRoom("Catacombs", new CreateTokenEffect(new Skeleton41Token())); DungeonRoom throneOfTheDeadThree = new DungeonRoom("Throne of the Dead Three", new ThroneOfTheDeadThreeEffect()); diff --git a/Mage/src/main/java/mage/game/permanent/token/UndercitySkeletonToken.java b/Mage/src/main/java/mage/game/permanent/token/Skeleton41Token.java similarity index 70% rename from Mage/src/main/java/mage/game/permanent/token/UndercitySkeletonToken.java rename to Mage/src/main/java/mage/game/permanent/token/Skeleton41Token.java index 3ea1b141afe..7bcba40da21 100644 --- a/Mage/src/main/java/mage/game/permanent/token/UndercitySkeletonToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/Skeleton41Token.java @@ -10,9 +10,9 @@ import java.util.Arrays; /** * @author TheElk801 */ -public final class UndercitySkeletonToken extends TokenImpl { +public final class Skeleton41Token extends TokenImpl { - public UndercitySkeletonToken() { + public Skeleton41Token() { super("Skeleton Token", "4/1 black Skeleton creature token with menace"); cardType.add(CardType.CREATURE); this.subtype.add(SubType.SKELETON); @@ -25,11 +25,11 @@ public final class UndercitySkeletonToken extends TokenImpl { availableImageSetCodes = Arrays.asList("CLB"); } - public UndercitySkeletonToken(final UndercitySkeletonToken token) { + public Skeleton41Token(final Skeleton41Token token) { super(token); } - public UndercitySkeletonToken copy() { - return new UndercitySkeletonToken(this); + public Skeleton41Token copy() { + return new Skeleton41Token(this); } }