diff --git a/Mage.Sets/src/mage/cards/m/MesmerizingBenthid.java b/Mage.Sets/src/mage/cards/m/MesmerizingBenthid.java new file mode 100644 index 00000000000..330da204905 --- /dev/null +++ b/Mage.Sets/src/mage/cards/m/MesmerizingBenthid.java @@ -0,0 +1,56 @@ +package mage.cards.m; + +import mage.MageInt; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; +import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; +import mage.abilities.keyword.HexproofAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.game.permanent.token.MesmerizingBenthidToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class MesmerizingBenthid extends CardImpl { + + private static final FilterPermanent filter = new FilterControlledCreaturePermanent(SubType.ILLUSION); + + public MesmerizingBenthid(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}"); + + this.subtype.add(SubType.OCTOPUS); + this.power = new MageInt(4); + this.toughness = new MageInt(5); + + // When Mesmerizing Benthid enters the battlefield, create two 0/2 blue Illusion creature tokens with "Whenever this creature blocks a creature, that creature doesn't untap during its controller's next untap step." + this.addAbility(new EntersBattlefieldTriggeredAbility( + new CreateTokenEffect(new MesmerizingBenthidToken(), 2) + )); + + // Mesmerizing Benthid has hexproof as long as you control an Illusion. + this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( + new GainAbilitySourceEffect(HexproofAbility.getInstance()), + new PermanentsOnTheBattlefieldCondition(filter), + "{this} has hexproof as long as you control an Illusion." + ))); + } + + private MesmerizingBenthid(final MesmerizingBenthid card) { + super(card); + } + + @Override + public MesmerizingBenthid copy() { + return new MesmerizingBenthid(this); + } +} diff --git a/Mage.Sets/src/mage/sets/RavnicaAllegiance.java b/Mage.Sets/src/mage/sets/RavnicaAllegiance.java index 2348ca9e3a7..f12fcbdbbfe 100644 --- a/Mage.Sets/src/mage/sets/RavnicaAllegiance.java +++ b/Mage.Sets/src/mage/sets/RavnicaAllegiance.java @@ -85,6 +85,7 @@ public final class RavnicaAllegiance extends ExpansionSet { cards.add(new SetCardInfo("Lavinia, Azorius Renegade", 189, Rarity.RARE, mage.cards.l.LaviniaAzoriusRenegade.class)); cards.add(new SetCardInfo("Light Up the Stage", 107, Rarity.UNCOMMON, mage.cards.l.LightUpTheStage.class)); cards.add(new SetCardInfo("Mass Manipulation", 42, Rarity.RARE, mage.cards.m.MassManipulation.class)); + cards.add(new SetCardInfo("Mesmerizing Benthid", 43, Rarity.MYTHIC, mage.cards.m.MesmerizingBenthid.class)); cards.add(new SetCardInfo("Ministrant of Obligation", 16, Rarity.UNCOMMON, mage.cards.m.MinistrantOfObligation.class)); cards.add(new SetCardInfo("Mortify", 192, Rarity.UNCOMMON, mage.cards.m.Mortify.class)); cards.add(new SetCardInfo("Orzhov Guildgate", 252, Rarity.COMMON, mage.cards.o.OrzhovGuildgate.class, NON_FULL_USE_VARIOUS)); diff --git a/Mage/src/main/java/mage/abilities/common/SimpleStaticAbility.java b/Mage/src/main/java/mage/abilities/common/SimpleStaticAbility.java index 3b608a9cdcb..b71bf85dae7 100644 --- a/Mage/src/main/java/mage/abilities/common/SimpleStaticAbility.java +++ b/Mage/src/main/java/mage/abilities/common/SimpleStaticAbility.java @@ -2,16 +2,19 @@ package mage.abilities.common; -import mage.constants.Zone; import mage.abilities.StaticAbility; import mage.abilities.effects.Effect; +import mage.constants.Zone; /** - * * @author BetaSteward_at_googlemail.com */ public class SimpleStaticAbility extends StaticAbility { + public SimpleStaticAbility(Effect effect) { + this(Zone.BATTLEFIELD, effect); + } + public SimpleStaticAbility(Zone zone, Effect effect) { super(zone, effect); } diff --git a/Mage/src/main/java/mage/game/permanent/token/MesmerizingBenthidToken.java b/Mage/src/main/java/mage/game/permanent/token/MesmerizingBenthidToken.java new file mode 100644 index 00000000000..8c23d37635f --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/MesmerizingBenthidToken.java @@ -0,0 +1,36 @@ + +package mage.game.permanent.token; + +import mage.MageInt; +import mage.abilities.common.BlocksTriggeredAbility; +import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect; +import mage.constants.CardType; +import mage.constants.SubType; + +/** + * @author TheElk801 + */ +public final class MesmerizingBenthidToken extends TokenImpl { + + public MesmerizingBenthidToken() { + super("Illusion", "0/2 blue Illusion creature token with \"Whenever this creature blocks a creature, that creature doesn't untap during its controller's next untap step.\""); + cardType.add(CardType.CREATURE); + color.setBlue(true); + + subtype.add(SubType.ILLUSION); + power = new MageInt(0); + toughness = new MageInt(2); + this.addAbility(new BlocksTriggeredAbility( + new DontUntapInControllersNextUntapStepTargetEffect("that creature"), + false, true + )); + } + + private MesmerizingBenthidToken(final MesmerizingBenthidToken token) { + super(token); + } + + public MesmerizingBenthidToken copy() { + return new MesmerizingBenthidToken(this); + } +}