diff --git a/Mage.Sets/src/mage/cards/n/Nettlecyst.java b/Mage.Sets/src/mage/cards/n/Nettlecyst.java new file mode 100644 index 00000000000..ea283a0a5fd --- /dev/null +++ b/Mage.Sets/src/mage/cards/n/Nettlecyst.java @@ -0,0 +1,61 @@ +package mage.cards.n; + +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.effects.common.continuous.BoostEquippedEffect; +import mage.abilities.hint.Hint; +import mage.abilities.hint.ValueHint; +import mage.abilities.keyword.EquipAbility; +import mage.abilities.keyword.LivingWeaponAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.TargetController; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class Nettlecyst extends CardImpl { + + private static final FilterPermanent filter = new FilterArtifactOrEnchantmentPermanent(); + + static { + filter.add(TargetController.YOU.getControllerPredicate()); + } + + private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter); + private static final Hint hint = new ValueHint("Artifacts and enchantments you control", xValue); + + public Nettlecyst(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}"); + + this.subtype.add(SubType.EQUIPMENT); + + // Living weapon + this.addAbility(new LivingWeaponAbility()); + + // Equipped creature gets +1/+1 for each artifact and/or enchantment you control. + this.addAbility(new SimpleStaticAbility( + new BoostEquippedEffect(xValue, xValue) + .setText("equipped creature gets +1/+1 for each artifact and/or enchantment you control") + ).addHint(hint)); + + // Equip {2} + this.addAbility(new EquipAbility(2)); + } + + private Nettlecyst(final Nettlecyst card) { + super(card); + } + + @Override + public Nettlecyst copy() { + return new Nettlecyst(this); + } +} diff --git a/Mage.Sets/src/mage/sets/ModernHorizons2.java b/Mage.Sets/src/mage/sets/ModernHorizons2.java index f81b5ee539a..4f30c769108 100644 --- a/Mage.Sets/src/mage/sets/ModernHorizons2.java +++ b/Mage.Sets/src/mage/sets/ModernHorizons2.java @@ -109,6 +109,7 @@ public final class ModernHorizons2 extends ExpansionSet { cards.add(new SetCardInfo("Mountain", 487, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Mystic Redaction", 53, Rarity.UNCOMMON, mage.cards.m.MysticRedaction.class)); cards.add(new SetCardInfo("Necromancer's Familiar", 94, Rarity.UNCOMMON, mage.cards.n.NecromancersFamiliar.class)); + cards.add(new SetCardInfo("Nettlecyst", 231, Rarity.RARE, mage.cards.n.Nettlecyst.class)); cards.add(new SetCardInfo("Nevinyrral's Disk", 298, Rarity.RARE, mage.cards.n.NevinyrralsDisk.class)); cards.add(new SetCardInfo("Obsidian Charmaw", 137, Rarity.RARE, mage.cards.o.ObsidianCharmaw.class)); cards.add(new SetCardInfo("Orchard Strider", 169, Rarity.COMMON, mage.cards.o.OrchardStrider.class)); diff --git a/Mage/src/main/java/mage/abilities/keyword/LivingWeaponAbility.java b/Mage/src/main/java/mage/abilities/keyword/LivingWeaponAbility.java index 3ec2ea5bcde..624458a0c84 100644 --- a/Mage/src/main/java/mage/abilities/keyword/LivingWeaponAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/LivingWeaponAbility.java @@ -1,17 +1,13 @@ package mage.abilities.keyword; -import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.effects.common.CreateTokenEffect; -import mage.game.Game; -import mage.game.permanent.Permanent; +import mage.abilities.effects.common.CreateTokenAttachSourceEffect; import mage.game.permanent.token.GermToken; -import mage.players.Player; public class LivingWeaponAbility extends EntersBattlefieldTriggeredAbility { public LivingWeaponAbility() { - super(new LivingWeaponEffect()); + super(new CreateTokenAttachSourceEffect(new GermToken())); } public LivingWeaponAbility(final LivingWeaponAbility ability) { @@ -20,7 +16,8 @@ public class LivingWeaponAbility extends EntersBattlefieldTriggeredAbility { @Override public String getRule() { - return "Living weapon (When this Equipment enters the battlefield, create a 0/0 black Germ creature token, then attach this to it.)"; + return "Living weapon (When this Equipment enters the battlefield, " + + "create a 0/0 black Phyrexian Germ creature token, then attach this to it.)"; } @Override @@ -28,34 +25,3 @@ public class LivingWeaponAbility extends EntersBattlefieldTriggeredAbility { return new LivingWeaponAbility(this); } } - -class LivingWeaponEffect extends CreateTokenEffect { - - LivingWeaponEffect() { - super(new GermToken()); - } - - LivingWeaponEffect(final LivingWeaponEffect effect) { - super(effect); - } - - @Override - public boolean apply(Game game, Ability source) { - Player controller = game.getPlayer(source.getControllerId()); - if (controller != null) { - if (super.apply(game, source)) { - Permanent p = game.getPermanent(this.getLastAddedTokenId()); - if (p != null) { - p.addAttachment(source.getSourceId(), source, game); - return true; - } - } - } - return false; - } - - @Override - public LivingWeaponEffect copy() { - return new LivingWeaponEffect(this); - } -} diff --git a/Mage/src/main/java/mage/game/permanent/token/GermToken.java b/Mage/src/main/java/mage/game/permanent/token/GermToken.java index 7b8ed218af0..c8a15fa9eb4 100644 --- a/Mage/src/main/java/mage/game/permanent/token/GermToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/GermToken.java @@ -1,12 +1,12 @@ - package mage.game.permanent.token; +import mage.MageInt; +import mage.constants.CardType; +import mage.constants.SubType; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import mage.MageInt; -import mage.constants.CardType; -import mage.constants.SubType; /** * @author spjspj @@ -28,11 +28,12 @@ public final class GermToken extends TokenImpl { } public GermToken(String setCode, int tokenType) { - super("Germ", "0/0 black Germ creature token"); + super("Germ", "0/0 black Phyrexian Germ creature token"); availableImageSetCodes = tokenImageSets; setOriginalExpansionSetCode(setCode); cardType.add(CardType.CREATURE); color.setBlack(true); + subtype.add(SubType.PHYREXIAN); subtype.add(SubType.GERM); power = new MageInt(0); toughness = new MageInt(0);