diff --git a/Mage.Sets/src/mage/cards/v/VenserCorpsePuppet.java b/Mage.Sets/src/mage/cards/v/VenserCorpsePuppet.java new file mode 100644 index 0000000000..5bbf9fdb72 --- /dev/null +++ b/Mage.Sets/src/mage/cards/v/VenserCorpsePuppet.java @@ -0,0 +1,86 @@ +package mage.cards.v; + +import java.util.UUID; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.Mode; +import mage.abilities.common.ProliferatedControllerTriggeredAbility; +import mage.abilities.condition.Condition; +import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.constants.ComparisonType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.abilities.keyword.LifelinkAbility; +import mage.abilities.keyword.ToxicAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.NamePredicate; +import mage.game.permanent.token.TheHollowSentinelToken; +import mage.target.TargetPermanent; + +/** + * @author TheElk801 + */ +public final class VenserCorpsePuppet extends CardImpl { + + private static final FilterPermanent filter = + new FilterControlledCreaturePermanent("you don't control a creature named The Hollow Sentinel"); + private static final FilterPermanent filter2 = + new FilterControlledCreaturePermanent("artifact creature you control"); + + static { + filter.add(new NamePredicate("The Hollow Sentinel")); + filter2.add(CardType.ARTIFACT.getPredicate()); + } + + private static final Condition condition + = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0); + + public VenserCorpsePuppet(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{B}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.PHYREXIAN); + this.subtype.add(SubType.ZOMBIE); + this.subtype.add(SubType.WIZARD); + this.power = new MageInt(1); + this.toughness = new MageInt(3); + + // Lifelink + this.addAbility(LifelinkAbility.getInstance()); + + // Toxic 1 + this.addAbility(new ToxicAbility(1)); + + // Whenever you proliferate, choose one -- + // * If you don't control a creature named The Hollow Sentinel, create The Hollow Sentinel, a legendary 3/3 colorless Phyrexian Golem artifact creature token. + Ability ability = new ProliferatedControllerTriggeredAbility( + new ConditionalOneShotEffect(new CreateTokenEffect(new TheHollowSentinelToken()), condition) + ); + + // * Target artifact creature you control gains flying and lifelink until end of turn. + ability.addMode(new Mode(new GainAbilityTargetEffect(FlyingAbility.getInstance()) + .setText("target artifact creature you control gains flying")) + .addEffect(new GainAbilityTargetEffect(LifelinkAbility.getInstance()) + .setText("and lifelink until end of turn")) + .addTarget(new TargetPermanent(filter2))); + this.addAbility(ability); + } + + private VenserCorpsePuppet(final VenserCorpsePuppet card) { + super(card); + } + + @Override + public VenserCorpsePuppet copy() { + return new VenserCorpsePuppet(this); + } +} diff --git a/Mage.Sets/src/mage/sets/PhyrexiaAllWillBeOne.java b/Mage.Sets/src/mage/sets/PhyrexiaAllWillBeOne.java index 747270f0e6..f997b1327b 100644 --- a/Mage.Sets/src/mage/sets/PhyrexiaAllWillBeOne.java +++ b/Mage.Sets/src/mage/sets/PhyrexiaAllWillBeOne.java @@ -51,6 +51,7 @@ public final class PhyrexiaAllWillBeOne extends ExpansionSet { cards.add(new SetCardInfo("Tablet of Compleation", 245, Rarity.RARE, mage.cards.t.TabletOfCompleation.class)); cards.add(new SetCardInfo("The Monumental Facade", 255, Rarity.RARE, mage.cards.t.TheMonumentalFacade.class)); cards.add(new SetCardInfo("Urabrask's Forge", 153, Rarity.RARE, mage.cards.u.UrabrasksForge.class)); + cards.add(new SetCardInfo("Venser, Corpse Puppet", 218, Rarity.RARE, mage.cards.v.VenserCorpsePuppet.class)); cards.add(new SetCardInfo("Vindictive Flamestoker", 154, Rarity.RARE, mage.cards.v.VindictiveFlamestoker.class)); } diff --git a/Mage/src/main/java/mage/game/permanent/token/TheHollowSentinelToken.java b/Mage/src/main/java/mage/game/permanent/token/TheHollowSentinelToken.java new file mode 100644 index 0000000000..36d5dc0632 --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/TheHollowSentinelToken.java @@ -0,0 +1,35 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; + +import java.util.Arrays; + +/** + * @author TheElk801 + */ +public final class TheHollowSentinelToken extends TokenImpl { + + public TheHollowSentinelToken() { + super("The Hollow Sentinel", "The Hollow Sentinel, a legendary 3/3 colorless Phyrexian Golem artifact creature token"); + supertype.add(SuperType.LEGENDARY); + cardType.add(CardType.ARTIFACT); + cardType.add(CardType.CREATURE); + subtype.add(SubType.PHYREXIAN); + subtype.add(SubType.GOLEM); + power = new MageInt(3); + toughness = new MageInt(3); + + availableImageSetCodes = Arrays.asList("ONE"); + } + + public TheHollowSentinelToken(final TheHollowSentinelToken token) { + super(token); + } + + public TheHollowSentinelToken copy() { + return new TheHollowSentinelToken(this); + } +}