From 256dc94c809ee9e96a111da781d0b3621c7025a2 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Thu, 10 May 2018 13:41:05 +0400 Subject: [PATCH] * Fixed 10 cards with "all permanents becomes" effect that it revoke colors instead doesn't change that; * Affected cards: Jolrael, Empress of Beasts, Life // Death, Living Lands, Living Plane, Natural Affinity, Natural Emergence, Nature's Revolt, Rude Awakening, Sylvan Awakening, Thelonite Druid --- .../mage/cards/j/JolraelEmpressOfBeasts.java | 2 +- Mage.Sets/src/mage/cards/l/LifeDeath.java | 2 +- Mage.Sets/src/mage/cards/l/LivingLands.java | 2 +- Mage.Sets/src/mage/cards/l/LivingPlane.java | 2 +- .../src/mage/cards/n/NaturalAffinity.java | 2 +- .../src/mage/cards/n/NaturalEmergence.java | 27 +++++-------------- Mage.Sets/src/mage/cards/n/NaturesRevolt.java | 2 +- Mage.Sets/src/mage/cards/r/RudeAwakening.java | 2 +- .../src/mage/cards/s/SylvanAwakening.java | 3 ++- .../src/mage/cards/t/TheloniteDruid.java | 2 +- .../continuous/BecomesCreatureAllEffect.java | 23 +++++++++++++--- 11 files changed, 35 insertions(+), 34 deletions(-) diff --git a/Mage.Sets/src/mage/cards/j/JolraelEmpressOfBeasts.java b/Mage.Sets/src/mage/cards/j/JolraelEmpressOfBeasts.java index fbc5958cd4a..e87ed17bfc1 100644 --- a/Mage.Sets/src/mage/cards/j/JolraelEmpressOfBeasts.java +++ b/Mage.Sets/src/mage/cards/j/JolraelEmpressOfBeasts.java @@ -105,7 +105,7 @@ class JolraelEmpressOfBeastsEffect extends OneShotEffect { if (targetPlayer != null) { FilterPermanent filter = new FilterLandPermanent(); filter.add(new ControllerIdPredicate(targetPlayer.getId())); - game.addEffect(new BecomesCreatureAllEffect(new CreatureToken(3, 3), "lands", filter, Duration.EndOfTurn), source); + game.addEffect(new BecomesCreatureAllEffect(new CreatureToken(3, 3), "lands", filter, Duration.EndOfTurn, false), source); return true; } return false; diff --git a/Mage.Sets/src/mage/cards/l/LifeDeath.java b/Mage.Sets/src/mage/cards/l/LifeDeath.java index 12555e30b0e..09ac7fd7104 100644 --- a/Mage.Sets/src/mage/cards/l/LifeDeath.java +++ b/Mage.Sets/src/mage/cards/l/LifeDeath.java @@ -62,7 +62,7 @@ public class LifeDeath extends SplitCard { // Life // All lands you control become 1/1 creatures until end of turn. They're still lands. getLeftHalfCard().getSpellAbility().addEffect(new BecomesCreatureAllEffect(new CreatureToken(1, 1), "lands", - new FilterControlledLandPermanent("lands you control"), Duration.EndOfTurn)); + new FilterControlledLandPermanent("lands you control"), Duration.EndOfTurn, false)); // Death // Return target creature card from your graveyard to the battlefield. You lose life equal to its converted mana cost. diff --git a/Mage.Sets/src/mage/cards/l/LivingLands.java b/Mage.Sets/src/mage/cards/l/LivingLands.java index 6c4d52f64ae..cad2c48b2f5 100644 --- a/Mage.Sets/src/mage/cards/l/LivingLands.java +++ b/Mage.Sets/src/mage/cards/l/LivingLands.java @@ -58,7 +58,7 @@ public class LivingLands extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}"); // All Forests are 1/1 creatures that are still lands. - ContinuousEffect effect = new BecomesCreatureAllEffect(new CreatureToken(1, 1), "lands", filter, Duration.WhileOnBattlefield); + ContinuousEffect effect = new BecomesCreatureAllEffect(new CreatureToken(1, 1), "lands", filter, Duration.WhileOnBattlefield, false); effect.getDependencyTypes().add(DependencyType.BecomeForest); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/cards/l/LivingPlane.java b/Mage.Sets/src/mage/cards/l/LivingPlane.java index a35d681a0e0..6eb10ce1cdd 100644 --- a/Mage.Sets/src/mage/cards/l/LivingPlane.java +++ b/Mage.Sets/src/mage/cards/l/LivingPlane.java @@ -53,7 +53,7 @@ public class LivingPlane extends CardImpl { this.addSuperType(SuperType.WORLD); // All lands are 1/1 creatures that are still lands. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesCreatureAllEffect(new CreatureToken(1, 1), "lands", StaticFilters.FILTER_LANDS, Duration.WhileOnBattlefield))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesCreatureAllEffect(new CreatureToken(1, 1), "lands", StaticFilters.FILTER_LANDS, Duration.WhileOnBattlefield, false))); } public LivingPlane(final LivingPlane card) { diff --git a/Mage.Sets/src/mage/cards/n/NaturalAffinity.java b/Mage.Sets/src/mage/cards/n/NaturalAffinity.java index 1f021b3f9fc..54f15726540 100644 --- a/Mage.Sets/src/mage/cards/n/NaturalAffinity.java +++ b/Mage.Sets/src/mage/cards/n/NaturalAffinity.java @@ -53,7 +53,7 @@ public class NaturalAffinity extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}"); // All lands become 2/2 creatures until end of turn. They're still lands. - this.getSpellAbility().addEffect(new BecomesCreatureAllEffect(new CreatureToken(2, 2), "lands", StaticFilters.FILTER_LANDS, Duration.EndOfTurn)); + this.getSpellAbility().addEffect(new BecomesCreatureAllEffect(new CreatureToken(2, 2), "lands", StaticFilters.FILTER_LANDS, Duration.EndOfTurn, false)); } public NaturalAffinity(final NaturalAffinity card) { diff --git a/Mage.Sets/src/mage/cards/n/NaturalEmergence.java b/Mage.Sets/src/mage/cards/n/NaturalEmergence.java index ecb5fcd5a0c..691a110888c 100644 --- a/Mage.Sets/src/mage/cards/n/NaturalEmergence.java +++ b/Mage.Sets/src/mage/cards/n/NaturalEmergence.java @@ -47,6 +47,7 @@ import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.permanent.token.TokenImpl; import mage.game.permanent.token.Token; +import mage.game.permanent.token.custom.CreatureToken; /** * @@ -68,9 +69,11 @@ public class NaturalEmergence extends CardImpl { Effect effect = new ReturnToHandChosenControlledPermanentEffect(filter); effect.setText("return a red or green enchantment you control to its owner's hand"); this.addAbility(new EntersBattlefieldTriggeredAbility(effect, false)); + // Lands you control are 2/2 creatures with first strike. They're still lands. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesCreatureAllEffect(new NaturalEmergenceToken(), - "lands", new FilterControlledLandPermanent("lands you control"), Duration.WhileOnBattlefield))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesCreatureAllEffect( + new CreatureToken(2, 2, "2/2 creatures with first strike").withAbility(FirstStrikeAbility.getInstance()), + "lands", new FilterControlledLandPermanent("lands you control"), Duration.WhileOnBattlefield, false))); } public NaturalEmergence(final NaturalEmergence card) { @@ -81,22 +84,4 @@ public class NaturalEmergence extends CardImpl { public NaturalEmergence copy() { return new NaturalEmergence(this); } -} - -class NaturalEmergenceToken extends TokenImpl { - - public NaturalEmergenceToken() { - super("Land", "2/2 creatures with first strike"); - cardType.add(CardType.CREATURE); - power = new MageInt(2); - toughness = new MageInt(2); - this.addAbility(FirstStrikeAbility.getInstance()); - } - public NaturalEmergenceToken(final NaturalEmergenceToken token) { - super(token); - } - - public NaturalEmergenceToken copy() { - return new NaturalEmergenceToken(this); - } -} +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/n/NaturesRevolt.java b/Mage.Sets/src/mage/cards/n/NaturesRevolt.java index a9445feb0a3..8520a39f4ad 100644 --- a/Mage.Sets/src/mage/cards/n/NaturesRevolt.java +++ b/Mage.Sets/src/mage/cards/n/NaturesRevolt.java @@ -53,7 +53,7 @@ public class NaturesRevolt extends CardImpl { // All lands are 2/2 creatures that are still lands. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesCreatureAllEffect(new CreatureToken(2, 2), - "lands", new FilterLandPermanent(), Duration.WhileOnBattlefield))); + "lands", new FilterLandPermanent(), Duration.WhileOnBattlefield, false))); } public NaturesRevolt(final NaturesRevolt card) { diff --git a/Mage.Sets/src/mage/cards/r/RudeAwakening.java b/Mage.Sets/src/mage/cards/r/RudeAwakening.java index 1b21de2ffb4..8a3c0dda106 100644 --- a/Mage.Sets/src/mage/cards/r/RudeAwakening.java +++ b/Mage.Sets/src/mage/cards/r/RudeAwakening.java @@ -58,7 +58,7 @@ public class RudeAwakening extends CardImpl { this.getSpellAbility().addEffect(new UntapAllLandsControllerEffect()); // or until end of turn, lands you control become 2/2 creatures that are still lands. Mode mode = new Mode(); - mode.getEffects().add(new BecomesCreatureAllEffect(new CreatureToken(2, 2), "lands", new FilterControlledLandPermanent("lands you control"), Duration.EndOfTurn)); + mode.getEffects().add(new BecomesCreatureAllEffect(new CreatureToken(2, 2), "lands", new FilterControlledLandPermanent("lands you control"), Duration.EndOfTurn, false)); this.getSpellAbility().getModes().addMode(mode); // Entwine {2}{G} diff --git a/Mage.Sets/src/mage/cards/s/SylvanAwakening.java b/Mage.Sets/src/mage/cards/s/SylvanAwakening.java index fdd30fdd2d4..cdecc5c2f5d 100644 --- a/Mage.Sets/src/mage/cards/s/SylvanAwakening.java +++ b/Mage.Sets/src/mage/cards/s/SylvanAwakening.java @@ -55,7 +55,8 @@ public class SylvanAwakening extends CardImpl { new SylvanAwakeningToken(), "lands", new FilterControlledLandPermanent("all lands you control"), - Duration.UntilYourNextTurn) + Duration.UntilYourNextTurn, + false) ); } diff --git a/Mage.Sets/src/mage/cards/t/TheloniteDruid.java b/Mage.Sets/src/mage/cards/t/TheloniteDruid.java index 01f8b0c052d..31accefe2f4 100644 --- a/Mage.Sets/src/mage/cards/t/TheloniteDruid.java +++ b/Mage.Sets/src/mage/cards/t/TheloniteDruid.java @@ -68,7 +68,7 @@ public class TheloniteDruid extends CardImpl { this.toughness = new MageInt(1); // {1}{G}, {tap}, Sacrifice a creature: Forests you control become 2/3 creatures until end of turn. They're still lands. - ContinuousEffect effect = new BecomesCreatureAllEffect(new CreatureToken(2, 3), "Forests", filter, Duration.EndOfTurn); + ContinuousEffect effect = new BecomesCreatureAllEffect(new CreatureToken(2, 3), "Forests", filter, Duration.EndOfTurn, false); effect.getDependencyTypes().add(DependencyType.BecomeForest); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureAllEffect.java index 9eb451177d1..acafb0666af 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureAllEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureAllEffect.java @@ -54,19 +54,22 @@ public class BecomesCreatureAllEffect extends ContinuousEffectImpl { protected Token token; protected String type; private final FilterPermanent filter; + private boolean loseColor = true; - public BecomesCreatureAllEffect(Token token, String type, FilterPermanent filter, Duration duration) { + public BecomesCreatureAllEffect(Token token, String type, FilterPermanent filter, Duration duration, boolean loseColor) { super(duration, Outcome.BecomeCreature); this.token = token; this.type = type; this.filter = filter; + this.loseColor = loseColor; } public BecomesCreatureAllEffect(final BecomesCreatureAllEffect effect) { super(effect); - token = effect.token.copy(); - type = effect.type; + this.token = effect.token.copy(); + this.type = effect.type; this.filter = effect.filter.copy(); + this.loseColor = effect.loseColor; } @Override @@ -94,6 +97,7 @@ public class BecomesCreatureAllEffect extends ContinuousEffectImpl { } else { affectedPermanents = new HashSet<>(game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)); } + for(Permanent permanent : affectedPermanents) { if (permanent != null) { switch (layer) { @@ -114,13 +118,22 @@ public class BecomesCreatureAllEffect extends ContinuousEffectImpl { } } break; + case ColorChangingEffects_5: if (sublayer == SubLayer.NA) { + if (this.loseColor) { + permanent.getColor(game).setBlack(false); + permanent.getColor(game).setGreen(false); + permanent.getColor(game).setBlue(false); + permanent.getColor(game).setWhite(false); + permanent.getColor(game).setRed(false); + } if (token.getColor(game).hasColor()) { - permanent.getColor(game).setColor(token.getColor(game)); + permanent.getColor(game).addColor(token.getColor(game)); } } break; + case AbilityAddingRemovingEffects_6: if (sublayer == SubLayer.NA) { if (!token.getAbilities().isEmpty()) { @@ -130,6 +143,7 @@ public class BecomesCreatureAllEffect extends ContinuousEffectImpl { } } break; + case PTChangingEffects_7: if (sublayer == SubLayer.SetPT_7b) { int power = token.getPower().getValue(); @@ -139,6 +153,7 @@ public class BecomesCreatureAllEffect extends ContinuousEffectImpl { permanent.getToughness().setValue(toughness); } } + break; } } }