From f189bd77a04422e0e61f683f25bd3ea24e1cd15f Mon Sep 17 00:00:00 2001 From: jmharmon <37360760+jmharmon@users.noreply.github.com> Date: Wed, 4 Sep 2019 20:19:30 -0700 Subject: [PATCH 1/4] Remove custom token wording from code --- Mage/src/main/java/mage/game/permanent/token/FoodToken.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage/src/main/java/mage/game/permanent/token/FoodToken.java b/Mage/src/main/java/mage/game/permanent/token/FoodToken.java index 1d539aa2443..a51f0403e59 100644 --- a/Mage/src/main/java/mage/game/permanent/token/FoodToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/FoodToken.java @@ -1,4 +1,4 @@ -package mage.game.permanent.token.custom; +package mage.game.permanent.token; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; From 37cb9986192c1aa59a43dc1b19bdc386725c542d Mon Sep 17 00:00:00 2001 From: jmharmon <37360760+jmharmon@users.noreply.github.com> Date: Wed, 4 Sep 2019 23:01:52 -0700 Subject: [PATCH 2/4] Fixed activated ability --- .../src/mage/cards/w/WishfulMerfolk.java | 63 ++++++++++++++----- 1 file changed, 47 insertions(+), 16 deletions(-) diff --git a/Mage.Sets/src/mage/cards/w/WishfulMerfolk.java b/Mage.Sets/src/mage/cards/w/WishfulMerfolk.java index 4d7c663d70c..09ce7ad9110 100644 --- a/Mage.Sets/src/mage/cards/w/WishfulMerfolk.java +++ b/Mage.Sets/src/mage/cards/w/WishfulMerfolk.java @@ -1,14 +1,16 @@ package mage.cards.w; import mage.MageInt; +import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect; +import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.keyword.DefenderAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; -import mage.game.permanent.token.TokenImpl; +import mage.game.Game; +import mage.game.permanent.Permanent; import java.util.UUID; @@ -30,8 +32,7 @@ public final class WishfulMerfolk extends CardImpl { this.addAbility(DefenderAbility.getInstance()); // {1}{U}: Wishful Merfolk loses defender and becomes a Human until end of turn. - //this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new WishfulMerfolkEffect(), new ManaCostsImpl("{1}{U}"))); - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new WishfulMerfolkToken(), "", Duration.EndOfTurn), new ManaCostsImpl("{1}{U}"))); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new WishfulMerfolkEffect(), new ManaCostsImpl("{1}{U}"))); } public WishfulMerfolk(final WishfulMerfolk card) { @@ -44,22 +45,52 @@ public final class WishfulMerfolk extends CardImpl { } } -class WishfulMerfolkToken extends TokenImpl { +class WishfulMerfolkEffect extends ContinuousEffectImpl { - public WishfulMerfolkToken() { - super("Wishful Merfolk", ""); - this.cardType.add(CardType.CREATURE); - this.subtype.add(SubType.HUMAN); - this.color.setBlue(true); - this.power = new MageInt(3); - this.toughness = new MageInt(2); + public WishfulMerfolkEffect() { + super(Duration.EndOfTurn, Outcome.AddAbility); + staticText = "{this} loses defender and becomes a Human until end of turn"; } - public WishfulMerfolkToken(final WishfulMerfolkToken token) { - super(token); + public WishfulMerfolkEffect(final WishfulMerfolkEffect effect) { + super(effect); } - public WishfulMerfolkToken copy() { - return new WishfulMerfolkToken(this); + @Override + public WishfulMerfolkEffect copy() { + return new WishfulMerfolkEffect(this); + } + + @Override + public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) { + Permanent permanent = game.getPermanent(source.getSourceId()); + if (permanent != null) { + switch (layer) { + case AbilityAddingRemovingEffects_6: + if (sublayer == SubLayer.NA) { + permanent.getAbilities().removeIf(entry -> entry.getId().equals(DefenderAbility.getInstance().getId())); + } + break; + case TypeChangingEffects_4: + if (permanent.getSubtype(game).contains(SubType.MERFOLK)) { + permanent.getSubtype(game).clear(); + permanent.getSubtype(game).add(SubType.HUMAN); + } + break; + } + return true; + } + return false; + } + + @Override + public boolean apply(Game game, Ability source) { + return false; + } + + @Override + public boolean hasLayer(Layer layer) { + return layer == Layer.AbilityAddingRemovingEffects_6 + || layer == Layer.TypeChangingEffects_4; } } From 6158fdf50bea2d73e6fb2dee316857d3587d43a0 Mon Sep 17 00:00:00 2001 From: jmharmon <37360760+jmharmon@users.noreply.github.com> Date: Wed, 4 Sep 2019 23:05:38 -0700 Subject: [PATCH 3/4] Fixed not having the boost and giving haste The code for this needs to be like Avacyn's Collar, Blight Sickle, Kitesail, and Viridian Claw. --- Mage.Sets/src/mage/cards/c/CrystalSlipper.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Mage.Sets/src/mage/cards/c/CrystalSlipper.java b/Mage.Sets/src/mage/cards/c/CrystalSlipper.java index 9c1cc98df4a..1657466a6ad 100644 --- a/Mage.Sets/src/mage/cards/c/CrystalSlipper.java +++ b/Mage.Sets/src/mage/cards/c/CrystalSlipper.java @@ -27,10 +27,8 @@ public final class CrystalSlipper extends CardImpl { this.subtype.add(SubType.EQUIPMENT); // Equipped creature gets +1/+0 and has haste. - Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(1, 0)); - ability.addEffect(new GainAbilityAttachedEffect( - HasteAbility.getInstance(), AttachmentType.EQUIPMENT).setText("and has haste") - ); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(1, 0))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(HasteAbility.getInstance(), AttachmentType.EQUIPMENT))); // Equip {1} this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(1))); From 2931b10daf6e084aca168578d801547847cdec10 Mon Sep 17 00:00:00 2001 From: jmharmon <37360760+jmharmon@users.noreply.github.com> Date: Thu, 5 Sep 2019 12:17:29 -0700 Subject: [PATCH 4/4] Revert back to fixed text --- Mage.Sets/src/mage/cards/c/CrystalSlipper.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Mage.Sets/src/mage/cards/c/CrystalSlipper.java b/Mage.Sets/src/mage/cards/c/CrystalSlipper.java index 1657466a6ad..c17e1b2753e 100644 --- a/Mage.Sets/src/mage/cards/c/CrystalSlipper.java +++ b/Mage.Sets/src/mage/cards/c/CrystalSlipper.java @@ -27,8 +27,11 @@ public final class CrystalSlipper extends CardImpl { this.subtype.add(SubType.EQUIPMENT); // Equipped creature gets +1/+0 and has haste. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(1, 0))); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(HasteAbility.getInstance(), AttachmentType.EQUIPMENT))); + Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(1, 0)); + ability.addEffect(new GainAbilityAttachedEffect( + HasteAbility.getInstance(), AttachmentType.EQUIPMENT).setText("and has haste") + ); + this.addAbility(ability); // Equip {1} this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(1)));