diff --git a/Mage.Client/src/main/resources/card-pictures-tok.txt b/Mage.Client/src/main/resources/card-pictures-tok.txt index 8be311a0573..b61765bcc87 100644 --- a/Mage.Client/src/main/resources/card-pictures-tok.txt +++ b/Mage.Client/src/main/resources/card-pictures-tok.txt @@ -139,7 +139,7 @@ |Generate|TOK:10E|Goblin|||GoblinToken| |Generate|TOK:10E|Insect|||WaspToken| |Generate|TOK:10E|Saproling|||SaprolingToken| -|Generate|TOK:10E|Skeleton|||SkeletonToken| +|Generate|TOK:10E|Skeleton|||SkeletonRegenerateToken| |Generate|TOK:10E|Soldier|||SoldierToken| |Generate|TOK:10E|Zombie|||ZombieToken| |Generate|TOK:2ED|Insect|||WaspToken| @@ -211,7 +211,7 @@ |Generate|TOK:ALA|Homunculus|||HomunculusToken| |Generate|TOK:ALA|Ooze|||MysticGenesisOozeToken| |Generate|TOK:ALA|Saproling|||SaprolingToken| -|Generate|TOK:ALA|Skeleton|||SkeletonToken| +|Generate|TOK:ALA|Skeleton|||SkeletonRegenerateToken| |Generate|TOK:ALA|Soldier|||SoldierToken| |Generate|TOK:ALA|Thopter|||ThopterToken| |Generate|TOK:ALA|Zombie|||ZombieToken| @@ -700,7 +700,7 @@ |Generate|TOK:H17|Dragon|||DragonTokenGold| |Generate|TOK:HML|Plant Wall|||KelpToken| |Generate|TOK:HML|Serf|||SerfToken| -|Generate|TOK:HML|Skeleton|||SkeletonToken| +|Generate|TOK:HML|Skeleton|||SkeletonRegenerateToken| |Generate|TOK:HOP|Goblin|||GoblinToken| |Generate|TOK:HOP|Insect|||InsectToken| |Generate|TOK:HOP|Pentavite|||PentaviteToken| @@ -1157,7 +1157,7 @@ |Generate|TOK:TSP|Wurm|||WurmCallingWurmToken| |Generate|TOK:UDS|Goblin|||GoblinToken| |Generate|TOK:ULG|Ape|||PongifyApeToken| -|Generate|TOK:ULG|Skeleton|||SkeletonToken| +|Generate|TOK:ULG|Skeleton|||SkeletonRegenerateToken| |Generate|TOK:ULG|Squirrel|||SquirrelToken| |Generate|TOK:UNH|Ape|||PongifyApeToken| |Generate|TOK:UNH|Goblin|||GoblinToken| diff --git a/Mage.Sets/src/mage/cards/d/DeathPriestOfMyrkul.java b/Mage.Sets/src/mage/cards/d/DeathPriestOfMyrkul.java new file mode 100644 index 00000000000..11222e13aef --- /dev/null +++ b/Mage.Sets/src/mage/cards/d/DeathPriestOfMyrkul.java @@ -0,0 +1,66 @@ +package mage.cards.d; + +import mage.MageInt; +import mage.abilities.common.BeginningOfEndStepTriggeredAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.common.CompletedDungeonCondition; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.DoIfCostPaid; +import mage.abilities.effects.common.continuous.BoostControlledEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.game.permanent.token.SkeletonToken; +import mage.watchers.common.CompletedDungeonWatcher; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class DeathPriestOfMyrkul extends CardImpl { + + private static final FilterCreaturePermanent filter + = new FilterCreaturePermanent("Skeletons, Vampires, and Zombies"); + + static { + filter.add(Predicates.or( + SubType.SKELETON.getPredicate(), + SubType.VAMPIRE.getPredicate(), + SubType.ZOMBIE.getPredicate() + )); + } + + public DeathPriestOfMyrkul(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}"); + + this.subtype.add(SubType.TIEFLING); + this.subtype.add(SubType.CLERIC); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Skeletons, Vampires, and Zombies you control get +1/+1. + this.addAbility(new SimpleStaticAbility(new BoostControlledEffect( + 1, 1, Duration.WhileOnBattlefield, filter, false + ))); + + // At the beginning of your end step, if a creature died this turn, you may pay {1}. If you do, create a 1/1 black Skeleton creature token. + this.addAbility(new BeginningOfEndStepTriggeredAbility( + Zone.BATTLEFIELD, + new DoIfCostPaid(new CreateTokenEffect(new SkeletonToken()), new GenericManaCost(1)), + TargetController.YOU, CompletedDungeonCondition.instance, false + ).addHint(CompletedDungeonCondition.getHint()), new CompletedDungeonWatcher()); + } + + private DeathPriestOfMyrkul(final DeathPriestOfMyrkul card) { + super(card); + } + + @Override + public DeathPriestOfMyrkul copy() { + return new DeathPriestOfMyrkul(this); + } +} diff --git a/Mage.Sets/src/mage/cards/d/DrudgeSpell.java b/Mage.Sets/src/mage/cards/d/DrudgeSpell.java index 018f312581d..2d37ed140e7 100644 --- a/Mage.Sets/src/mage/cards/d/DrudgeSpell.java +++ b/Mage.Sets/src/mage/cards/d/DrudgeSpell.java @@ -18,7 +18,7 @@ import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.permanent.TokenPredicate; -import mage.game.permanent.token.SkeletonToken; +import mage.game.permanent.token.SkeletonRegenerateToken; import mage.target.common.TargetCardInYourGraveyard; /** @@ -38,7 +38,7 @@ public final class DrudgeSpell extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}{B}"); // {B}, Exile two creature cards from your graveyard: Create a 1/1 black Skeleton creature token. It has "{B}: Regenerate this creature." - Effect effect = new CreateTokenEffect(new SkeletonToken()); + Effect effect = new CreateTokenEffect(new SkeletonRegenerateToken()); effect.setText("create a 1/1 black Skeleton creature token. It has \"{B}: Regenerate this creature.\""); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{B}")); ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(2, 2, new FilterCreatureCard("creature cards from your graveyard")))); diff --git a/Mage.Sets/src/mage/cards/s/Skeletonize.java b/Mage.Sets/src/mage/cards/s/Skeletonize.java index 4f3ade3bb16..f66442515da 100644 --- a/Mage.Sets/src/mage/cards/s/Skeletonize.java +++ b/Mage.Sets/src/mage/cards/s/Skeletonize.java @@ -16,7 +16,7 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; import mage.game.events.ZoneChangeEvent; -import mage.game.permanent.token.SkeletonToken; +import mage.game.permanent.token.SkeletonRegenerateToken; import mage.target.common.TargetCreaturePermanent; import mage.watchers.common.DamagedByWatcher; @@ -74,7 +74,7 @@ class SkeletonizeEffect extends OneShotEffect { class SkeletonizeDelayedTriggeredAbility extends DelayedTriggeredAbility { public SkeletonizeDelayedTriggeredAbility() { - super(new CreateTokenEffect(new SkeletonToken()), Duration.EndOfTurn); + super(new CreateTokenEffect(new SkeletonRegenerateToken()), Duration.EndOfTurn); } public SkeletonizeDelayedTriggeredAbility(final SkeletonizeDelayedTriggeredAbility ability) { diff --git a/Mage.Sets/src/mage/cards/s/SpawningPool.java b/Mage.Sets/src/mage/cards/s/SpawningPool.java index 70e47e769d5..01bb4fe5e36 100644 --- a/Mage.Sets/src/mage/cards/s/SpawningPool.java +++ b/Mage.Sets/src/mage/cards/s/SpawningPool.java @@ -10,7 +10,7 @@ import mage.abilities.mana.BlackManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; -import mage.game.permanent.token.SkeletonToken; +import mage.game.permanent.token.SkeletonRegenerateToken; /** * @@ -22,7 +22,7 @@ public final class SpawningPool extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.LAND},""); this.addAbility(new EntersBattlefieldTappedAbility()); this.addAbility(new BlackManaAbility()); - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new SkeletonToken(), "land", Duration.EndOfTurn), new ManaCostsImpl("{1}{B}"))); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new SkeletonRegenerateToken(), "land", Duration.EndOfTurn), new ManaCostsImpl("{1}{B}"))); } private SpawningPool(final SpawningPool card) { diff --git a/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java b/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java index b936e804dc2..d205cf8e99b 100644 --- a/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java +++ b/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java @@ -47,6 +47,7 @@ public final class AdventuresInTheForgottenRealms extends ExpansionSet { cards.add(new SetCardInfo("Cloister Gargoyle", 7, Rarity.UNCOMMON, mage.cards.c.CloisterGargoyle.class)); cards.add(new SetCardInfo("Contact Other Plane", 52, Rarity.COMMON, mage.cards.c.ContactOtherPlane.class)); cards.add(new SetCardInfo("Dawnbringer Cleric", 9, Rarity.COMMON, mage.cards.d.DawnbringerCleric.class)); + cards.add(new SetCardInfo("Death-Priest of Myrkul", 95, Rarity.UNCOMMON, mage.cards.d.DeathPriestOfMyrkul.class)); cards.add(new SetCardInfo("Delver's Torch", 10, Rarity.COMMON, mage.cards.d.DelversTorch.class)); cards.add(new SetCardInfo("Demogorgon's Clutches", 96, Rarity.UNCOMMON, mage.cards.d.DemogorgonsClutches.class)); cards.add(new SetCardInfo("Den of the Bugbear", 254, Rarity.RARE, mage.cards.d.DenOfTheBugbear.class)); diff --git a/Mage/src/main/java/mage/game/command/dungeons/DungeonOfTheMadMage.java b/Mage/src/main/java/mage/game/command/dungeons/DungeonOfTheMadMage.java index e5eec102938..55cfb0bc4e1 100644 --- a/Mage/src/main/java/mage/game/command/dungeons/DungeonOfTheMadMage.java +++ b/Mage/src/main/java/mage/game/command/dungeons/DungeonOfTheMadMage.java @@ -17,7 +17,7 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.command.Dungeon; import mage.game.command.DungeonRoom; -import mage.game.permanent.token.SkeletonToken2; +import mage.game.permanent.token.SkeletonToken; import mage.game.permanent.token.TreasureToken; import mage.players.Player; import mage.target.common.TargetCardInHand; @@ -55,7 +55,7 @@ public class DungeonOfTheMadMage extends Dungeon { // (5b) Muiral's Graveyard — Create two 1/1 black Skeleton creature tokens. (→ 6) DungeonRoom muiralsGraveyard = new DungeonRoom( - "Muiral's Graveyard", new CreateTokenEffect(new SkeletonToken2(), 2) + "Muiral's Graveyard", new CreateTokenEffect(new SkeletonToken(), 2) ); // (6) Deep Mines — Scry 3. (→ 7) diff --git a/Mage/src/main/java/mage/game/permanent/token/SkeletonRegenerateToken.java b/Mage/src/main/java/mage/game/permanent/token/SkeletonRegenerateToken.java new file mode 100644 index 00000000000..997691918d7 --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/SkeletonRegenerateToken.java @@ -0,0 +1,31 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ColoredManaCost; +import mage.abilities.effects.common.RegenerateSourceEffect; +import mage.constants.CardType; +import mage.constants.ColoredManaSymbol; +import mage.constants.SubType; +import mage.constants.Zone; + +public final class SkeletonRegenerateToken extends TokenImpl { + + public SkeletonRegenerateToken() { + super("Skeleton", "1/1 black Skeleton creature token with \"{B}: Regenerate this creature\""); + cardType.add(CardType.CREATURE); + this.subtype.add(SubType.SKELETON); + color.setBlack(true); + power = new MageInt(1); + toughness = new MageInt(1); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ColoredManaCost(ColoredManaSymbol.B))); + } + + public SkeletonRegenerateToken(final SkeletonRegenerateToken token) { + super(token); + } + + public SkeletonRegenerateToken copy() { + return new SkeletonRegenerateToken(this); + } +} diff --git a/Mage/src/main/java/mage/game/permanent/token/SkeletonToken.java b/Mage/src/main/java/mage/game/permanent/token/SkeletonToken.java index 734c3a99dd3..1b140d65ede 100644 --- a/Mage/src/main/java/mage/game/permanent/token/SkeletonToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/SkeletonToken.java @@ -1,24 +1,21 @@ package mage.game.permanent.token; import mage.MageInt; -import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.costs.mana.ColoredManaCost; -import mage.abilities.effects.common.RegenerateSourceEffect; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.ColoredManaSymbol; -import mage.constants.Zone; +/** + * @author TheElk801 + */ public final class SkeletonToken extends TokenImpl { public SkeletonToken() { - super("Skeleton", "1/1 black Skeleton creature token with \"{B}: Regenerate this creature\""); + super("Skeleton", "1/1 black Skeleton creature token"); cardType.add(CardType.CREATURE); this.subtype.add(SubType.SKELETON); color.setBlack(true); power = new MageInt(1); toughness = new MageInt(1); - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ColoredManaCost(ColoredManaSymbol.B))); } public SkeletonToken(final SkeletonToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/SkeletonToken2.java b/Mage/src/main/java/mage/game/permanent/token/SkeletonToken2.java deleted file mode 100644 index d1f324204d8..00000000000 --- a/Mage/src/main/java/mage/game/permanent/token/SkeletonToken2.java +++ /dev/null @@ -1,28 +0,0 @@ -package mage.game.permanent.token; - -import mage.MageInt; -import mage.constants.CardType; -import mage.constants.SubType; - -/** - * @author TheElk801 - */ -public final class SkeletonToken2 extends TokenImpl { - - public SkeletonToken2() { - super("Skeleton", "1/1 black Skeleton creature token"); - cardType.add(CardType.CREATURE); - this.subtype.add(SubType.SKELETON); - color.setBlack(true); - power = new MageInt(1); - toughness = new MageInt(1); - } - - public SkeletonToken2(final SkeletonToken2 token) { - super(token); - } - - public SkeletonToken2 copy() { - return new SkeletonToken2(this); - } -}