diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheOrder.java b/Mage.Sets/src/mage/cards/m/MagusOfTheOrder.java index 2a76e8cbe86..f2c185a3ce2 100644 --- a/Mage.Sets/src/mage/cards/m/MagusOfTheOrder.java +++ b/Mage.Sets/src/mage/cards/m/MagusOfTheOrder.java @@ -17,10 +17,9 @@ import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreatureCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCardInLibrary; -import mage.target.common.TargetControlledPermanent; import java.util.UUID; @@ -55,7 +54,7 @@ public final class MagusOfTheOrder extends CardImpl { ability.addCost(new TapSourceCost()); ability.addCost(new CompositeCost( new SacrificeSourceCost(), new SacrificeTargetCost(filter2), - "sacrifice Magus of the Order and another green creature" + "sacrifice {this} and another green creature" )); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MajesticMyriarch.java b/Mage.Sets/src/mage/cards/m/MajesticMyriarch.java index 872bc34dd09..5cd12311a23 100644 --- a/Mage.Sets/src/mage/cards/m/MajesticMyriarch.java +++ b/Mage.Sets/src/mage/cards/m/MajesticMyriarch.java @@ -2,7 +2,6 @@ package mage.cards.m; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.triggers.BeginningOfCombatTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.MultipliedValue; @@ -12,6 +11,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.SetBasePowerToughnessSourceEffect; import mage.abilities.keyword.*; +import mage.abilities.triggers.BeginningOfCombatTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; @@ -87,7 +87,7 @@ class MajesticMyriarchEffect extends OneShotEffect { MajesticMyriarchEffect() { super(Outcome.BoostCreature); - this.staticText = "if you control a creature with flying, Majestic Myriarch gains flying until end of turn. " + + this.staticText = "if you control a creature with flying, {this} gains flying until end of turn. " + "The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, reach, trample, and vigilance."; } diff --git a/Mage.Sets/src/mage/cards/m/MartyrOfAshes.java b/Mage.Sets/src/mage/cards/m/MartyrOfAshes.java index e62bbc29d17..ed45c5c7c95 100644 --- a/Mage.Sets/src/mage/cards/m/MartyrOfAshes.java +++ b/Mage.Sets/src/mage/cards/m/MartyrOfAshes.java @@ -1,7 +1,6 @@ package mage.cards.m; -import java.util.UUID; import mage.MageInt; import mage.ObjectColor; import mage.abilities.Ability; @@ -17,7 +16,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -25,6 +23,8 @@ import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCardInHand; +import java.util.UUID; + /** * * @author emerald000 @@ -49,7 +49,7 @@ public final class MartyrOfAshes extends CardImpl { // {2}, Reveal X red cards from your hand, Sacrifice Martyr of Ashes: Martyr of Ashes deals X damage to each creature without flying. Effect effect = new DamageAllEffect(RevealTargetFromHandCostCount.instance, filterCreature); - effect.setText("Martyr of Ashes deals X damage to each creature without flying."); + effect.setText("{this} deals X damage to each creature without flying."); Ability ability = new SimpleActivatedAbility(effect, new GenericManaCost(2)); ability.addCost(new RevealTargetFromHandCost(new TargetCardInHand(0, Integer.MAX_VALUE, filterHand))); ability.addCost(new SacrificeSourceCost()); diff --git a/Mage.Sets/src/mage/cards/m/MishrasWarMachine.java b/Mage.Sets/src/mage/cards/m/MishrasWarMachine.java index 38814d489e2..63ecd3d24ee 100644 --- a/Mage.Sets/src/mage/cards/m/MishrasWarMachine.java +++ b/Mage.Sets/src/mage/cards/m/MishrasWarMachine.java @@ -2,10 +2,10 @@ package mage.cards.m; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.costs.common.DiscardCardCost; import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.BandingAbility; +import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -51,7 +51,7 @@ class MishrasWarMachineEffect extends OneShotEffect { MishrasWarMachineEffect() { super(Outcome.Sacrifice); - staticText = "{this} deals 3 damage to you unless you discard a card. If Mishra's War Machine deals damage to you this way, tap it"; + staticText = "{this} deals 3 damage to you unless you discard a card. If {this} deals damage to you this way, tap it"; } private MishrasWarMachineEffect(final MishrasWarMachineEffect effect) { diff --git a/Mage.Sets/src/mage/cards/m/MoggJailer.java b/Mage.Sets/src/mage/cards/m/MoggJailer.java index 455abd71cb0..f8a720ed30e 100644 --- a/Mage.Sets/src/mage/cards/m/MoggJailer.java +++ b/Mage.Sets/src/mage/cards/m/MoggJailer.java @@ -1,7 +1,6 @@ package mage.cards.m; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.Effect; @@ -9,14 +8,15 @@ import mage.abilities.effects.common.combat.CantAttackIfDefenderControlsPermanen import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.ComparisonType; -import mage.constants.Zone; +import mage.constants.SubType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.permanent.TappedPredicate; +import java.util.UUID; + /** * @author BursegSardaukar */ @@ -36,7 +36,7 @@ public final class MoggJailer extends CardImpl { // Mogg Jailer can't attack if defending player controls an untapped creature with power 2 or less. Effect effect = new CantAttackIfDefenderControlsPermanent(filter); - effect.setText("Mogg Jailer can't attack if defending player controls an untapped creature with power 2 or less."); + effect.setText("{this} can't attack if defending player controls an untapped creature with power 2 or less."); this.addAbility(new SimpleStaticAbility(effect)); } diff --git a/Mage.Sets/src/mage/cards/m/MoltenRain.java b/Mage.Sets/src/mage/cards/m/MoltenRain.java index 39b8e3b5a29..bcf60e55094 100644 --- a/Mage.Sets/src/mage/cards/m/MoltenRain.java +++ b/Mage.Sets/src/mage/cards/m/MoltenRain.java @@ -45,7 +45,7 @@ class MoltenRainEffect extends OneShotEffect { MoltenRainEffect() { super(Outcome.Damage); - this.staticText = "If that land was nonbasic, Molten Rain deals 2 damage to the land's controller"; + this.staticText = "If that land was nonbasic, {this} deals 2 damage to the land's controller"; } private MoltenRainEffect(final MoltenRainEffect effect) { diff --git a/Mage.Sets/src/mage/cards/m/MorgueBurst.java b/Mage.Sets/src/mage/cards/m/MorgueBurst.java index 4a0d9e2870e..cfac441a154 100644 --- a/Mage.Sets/src/mage/cards/m/MorgueBurst.java +++ b/Mage.Sets/src/mage/cards/m/MorgueBurst.java @@ -45,7 +45,7 @@ class MorgueBurstEffect extends OneShotEffect { MorgueBurstEffect() { super(Outcome.ReturnToHand); - this.staticText = "Return target creature card from your graveyard to your hand. Morgue Burst deals damage to any target equal to the power of the card returned this way"; + this.staticText = "Return target creature card from your graveyard to your hand. {this} deals damage to any target equal to the power of the card returned this way"; } private MorgueBurstEffect(final MorgueBurstEffect effect) { diff --git a/Mage.Sets/src/mage/cards/m/MulDayaChannelers.java b/Mage.Sets/src/mage/cards/m/MulDayaChannelers.java index 2ad815a2701..ae8ee997ce0 100644 --- a/Mage.Sets/src/mage/cards/m/MulDayaChannelers.java +++ b/Mage.Sets/src/mage/cards/m/MulDayaChannelers.java @@ -1,24 +1,25 @@ package mage.cards.m; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.TopLibraryCardTypeCondition; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.decorator.ConditionalContinuousEffect; -import mage.abilities.effects.mana.AddManaOfAnyColorEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.PlayWithTheTopCardRevealedEffect; +import mage.abilities.effects.mana.AddManaOfAnyColorEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; +import java.util.UUID; + /** * * @author jeffwadsworth @@ -48,7 +49,7 @@ public final class MulDayaChannelers extends CardImpl { SimpleManaAbility manaAbility = new SimpleManaAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(2), new TapSourceCost()); effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(manaAbility, Duration.WhileOnBattlefield), new TopLibraryCardTypeCondition(CardType.LAND), - "As long as the top card of your library is a land card, Mul Daya Channelers has \"{T}: Add two mana of any one color.\""); + "As long as the top card of your library is a land card, {this} has \"{T}: Add two mana of any one color.\""); this.addAbility(new SimpleStaticAbility(effect)); } diff --git a/Mage.Sets/src/mage/cards/m/MuseVessel.java b/Mage.Sets/src/mage/cards/m/MuseVessel.java index fd4dcda2ee6..2d7be46fbbd 100644 --- a/Mage.Sets/src/mage/cards/m/MuseVessel.java +++ b/Mage.Sets/src/mage/cards/m/MuseVessel.java @@ -45,7 +45,7 @@ public final class MuseVessel extends CardImpl { // {1}: Choose a card exiled with Muse Vessel. You may play that card this turn. SimpleActivatedAbility playAbility = new SimpleActivatedAbility(new OneShotNonTargetEffect( new AddContinuousEffectToGame(new PlayFromNotOwnHandZoneTargetEffect(Zone.EXILED, Duration.EndOfTurn)) - .setText("Choose a card exiled with Muse Vessel. You may play that card this turn."), + .setText("Choose a card exiled with {this}. You may play that card this turn."), new TargetCardInExile(StaticFilters.FILTER_CARD), MuseVesselAdjuster.instance ), new ManaCostsImpl<>("{1}")); this.addAbility(playAbility); diff --git a/Mage.Sets/src/mage/cards/m/MycoidShepherd.java b/Mage.Sets/src/mage/cards/m/MycoidShepherd.java index 51f3d1f815b..b996d460869 100644 --- a/Mage.Sets/src/mage/cards/m/MycoidShepherd.java +++ b/Mage.Sets/src/mage/cards/m/MycoidShepherd.java @@ -1,40 +1,42 @@ package mage.cards.m; -import java.util.UUID; import mage.MageInt; -import mage.MageObject; -import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.DiesThisOrAnotherTriggeredAbility; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.ComparisonType; import mage.constants.SubType; -import mage.constants.Zone; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; -import mage.game.events.ZoneChangeEvent; -import mage.game.permanent.Permanent; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.filter.predicate.mageobject.PowerPredicate; + +import java.util.UUID; /** - * * @author jeffwadsworth */ public final class MycoidShepherd extends CardImpl { + private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another creature you control with power 5 or greater"); + + static { + filter.add(AnotherPredicate.instance); + filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 4)); + } public MycoidShepherd(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}{W}"); this.subtype.add(SubType.FUNGUS); - - this.power = new MageInt(5); this.toughness = new MageInt(4); // Whenever Mycoid Shepherd or another creature you control with power 5 or greater dies, you may gain 5 life. - this.addAbility(new MycoidShepherdTriggeredAbility()); - + this.addAbility(new DiesThisOrAnotherTriggeredAbility(new GainLifeEffect(5), true, filter)); + } private MycoidShepherd(final MycoidShepherd card) { @@ -46,55 +48,3 @@ public final class MycoidShepherd extends CardImpl { return new MycoidShepherd(this); } } - -class MycoidShepherdTriggeredAbility extends TriggeredAbilityImpl { - - public MycoidShepherdTriggeredAbility() { - super(Zone.BATTLEFIELD, new GainLifeEffect(5), true); - setLeavesTheBattlefieldTrigger(true); - } - - private MycoidShepherdTriggeredAbility(final MycoidShepherdTriggeredAbility ability) { - super(ability); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.ZONE_CHANGE; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - MageObject lastKnown = game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD); - if (lastKnown == null) { - return false; - } - ZoneChangeEvent zEvent = (ZoneChangeEvent) event; - Permanent permanent = zEvent.getTarget(); - if (permanent == null) { - return false; - } - if (super.getSourceId().equals(event.getTargetId()) - || permanent.getPower().getValue() > 4 - && permanent.isControlledBy(controllerId)) { - Zone after = game.getState().getZone(event.getTargetId()); - return after != null && Zone.GRAVEYARD.match(after); - } - return false; - } - - @Override - public String getRule() { - return "Whenever Mycoid Shepherd or another creature you control with power 5 or greater dies, you may gain 5 life."; - } - - @Override - public MycoidShepherdTriggeredAbility copy() { - return new MycoidShepherdTriggeredAbility(this); - } - - @Override - public boolean isInUseableZone(Game game, MageObject sourceObject, GameEvent event) { - return TriggeredAbilityImpl.isInUseableZoneDiesTrigger(this, sourceObject, event, game); - } -} \ No newline at end of file diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/tdm/TaigamMasterOpportunistTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/tdm/TaigamMasterOpportunistTest.java index 9cda471dcce..dd0358703b5 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/tdm/TaigamMasterOpportunistTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/tdm/TaigamMasterOpportunistTest.java @@ -20,6 +20,7 @@ public class TaigamMasterOpportunistTest extends CardTestPlayerBase { setStrictChooseMode(true); addCard(Zone.BATTLEFIELD, playerA, TAIGAM); + addCard(Zone.BATTLEFIELD, playerA, "Yawgmoth's Bargain"); // Can shuffle to the top of the library, prevent drawing it addCard(Zone.HAND, playerA, ORNITHOPTER); addCard(Zone.HAND, playerA, TWINMAW); addCard(Zone.BATTLEFIELD, playerA, "Plateau", 6); @@ -102,4 +103,4 @@ public class TaigamMasterOpportunistTest extends CardTestPlayerBase { } -} \ No newline at end of file +}