diff --git a/Mage.Sets/src/mage/cards/a/AssembleTheLegion.java b/Mage.Sets/src/mage/cards/a/AssembleTheLegion.java index d996c592ef6..a1cb98ada51 100644 --- a/Mage.Sets/src/mage/cards/a/AssembleTheLegion.java +++ b/Mage.Sets/src/mage/cards/a/AssembleTheLegion.java @@ -25,7 +25,7 @@ public final class AssembleTheLegion extends CardImpl { // At the beginning of your upkeep, put a muster counter on Assemble the Legion. Then create a 1/1 red and white Soldier creature token with haste for each muster counter on Assemble the Legion. Ability ability = new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.MUSTER.createInstance()), TargetController.YOU, false); - ability.addEffect(new CreateTokenEffect(new SoldierTokenWithHaste(), new CountersSourceCount(CounterType.MUSTER))); + ability.addEffect(new CreateTokenEffect(new SoldierTokenWithHaste(), new CountersSourceCount(CounterType.MUSTER)).concatBy("Then")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BoxingRing.java b/Mage.Sets/src/mage/cards/b/BoxingRing.java index ebc5fa367da..60fe7e037fc 100644 --- a/Mage.Sets/src/mage/cards/b/BoxingRing.java +++ b/Mage.Sets/src/mage/cards/b/BoxingRing.java @@ -16,6 +16,7 @@ import mage.constants.Outcome; import mage.constants.WatcherScope; import mage.constants.Zone; import mage.filter.FilterPermanent; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.ObjectSourcePlayer; import mage.filter.predicate.ObjectSourcePlayerPredicate; @@ -47,7 +48,9 @@ public final class BoxingRing extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{G}"); // Whenever a creature enters the battlefield under your control, it fights up to one target creature you don't control with the same mana value. - Ability ability = new EntersBattlefieldControlledTriggeredAbility(new BoxingRingFightEffect(), filter); + Ability ability = new EntersBattlefieldControlledTriggeredAbility( + new BoxingRingFightEffect(), StaticFilters.FILTER_PERMANENT_A_CREATURE + ); ability.addTarget(new TargetPermanent(0, 1, filter)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/c/CallTheCoppercoats.java b/Mage.Sets/src/mage/cards/c/CallTheCoppercoats.java index 76273b96462..456ab584b5c 100644 --- a/Mage.Sets/src/mage/cards/c/CallTheCoppercoats.java +++ b/Mage.Sets/src/mage/cards/c/CallTheCoppercoats.java @@ -53,7 +53,7 @@ class CallTheCoppercoatsEffect extends OneShotEffect { CallTheCoppercoatsEffect() { super(Outcome.Benefit); - staticText = "Choose any number of target opponents. Create X 1/1 white Human soldier creature tokens, " + + staticText = "Choose any number of target opponents. Create X 1/1 white Human Soldier creature tokens, " + "where X is the number of creatures those opponents control."; } diff --git a/Mage.Sets/src/mage/cards/c/CephalidFacetaker.java b/Mage.Sets/src/mage/cards/c/CephalidFacetaker.java index 93c216b2915..5929e246f0f 100644 --- a/Mage.Sets/src/mage/cards/c/CephalidFacetaker.java +++ b/Mage.Sets/src/mage/cards/c/CephalidFacetaker.java @@ -70,7 +70,7 @@ class CephalidFacetakerEffect extends OneShotEffect { CephalidFacetakerEffect() { super(Outcome.Benefit); staticText = "you may have {this} become a copy of another target creature until end of turn, " + - "except its a 1/4 and has \"This creature can't be blocked.\""; + "except it's 1/4 and has \"This creature can't be blocked.\""; } private CephalidFacetakerEffect(final CephalidFacetakerEffect effect) { diff --git a/Mage.Sets/src/mage/cards/d/DaxosOfMeletis.java b/Mage.Sets/src/mage/cards/d/DaxosOfMeletis.java index 4d4285d40c7..4c28d21acba 100644 --- a/Mage.Sets/src/mage/cards/d/DaxosOfMeletis.java +++ b/Mage.Sets/src/mage/cards/d/DaxosOfMeletis.java @@ -60,7 +60,7 @@ class DaxosOfMeletisEffect extends OneShotEffect { public DaxosOfMeletisEffect() { super(Outcome.PutCreatureInPlay); - this.staticText = "exile the top card of that player's library. You gain life equal to that card's mana value. Until end of turn, you may cast that card and you may spend mana as though it were mana of any color to cast it"; + this.staticText = "exile the top card of that player's library. You gain life equal to that card's mana value. Until end of turn, you may cast that card and you may spend mana as though it were mana of any color to cast that spell"; } public DaxosOfMeletisEffect(final DaxosOfMeletisEffect effect) { diff --git a/Mage.Sets/src/mage/cards/d/DuskDawn.java b/Mage.Sets/src/mage/cards/d/DuskDawn.java index c0929318c0f..9726f1103c9 100644 --- a/Mage.Sets/src/mage/cards/d/DuskDawn.java +++ b/Mage.Sets/src/mage/cards/d/DuskDawn.java @@ -1,21 +1,14 @@ package mage.cards.d; -import java.util.Set; -import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DestroyAllEffect; import mage.abilities.keyword.AftermathAbility; import mage.cards.Card; import mage.cards.CardSetInfo; import mage.cards.SplitCard; -import mage.constants.CardType; -import mage.constants.ComparisonType; -import mage.constants.Outcome; -import mage.constants.SpellAbilityType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterCard; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; @@ -23,9 +16,12 @@ import mage.filter.predicate.mageobject.PowerPredicate; import mage.game.Game; import mage.players.Player; +import java.util.Set; +import java.util.UUID; + public final class DuskDawn extends SplitCard { - private static final FilterCreaturePermanent filterCreatures3orGreater = new FilterCreaturePermanent("creatures with power greater than or equal to 3"); + private static final FilterCreaturePermanent filterCreatures3orGreater = new FilterCreaturePermanent("creatures with power 3 or greater"); static { filterCreatures3orGreater.add(new PowerPredicate(ComparisonType.MORE_THAN, 2)); @@ -36,15 +32,12 @@ public final class DuskDawn extends SplitCard { // Dusk // Destroy all creatures with power 3 or greater. - Effect destroy = new DestroyAllEffect(filterCreatures3orGreater); - destroy.setText("Destroy all creatures with power greater than or equal to 3."); - getLeftHalfCard().getSpellAbility().addEffect(destroy); + getLeftHalfCard().getSpellAbility().addEffect(new DestroyAllEffect(filterCreatures3orGreater)); // Dawn // Return all creature cards with power less than or equal to 2 from your graveyard to your hand. getRightHalfCard().addAbility(new AftermathAbility().setRuleAtTheTop(true)); getRightHalfCard().getSpellAbility().addEffect(new DawnEffect()); - } private DuskDawn(final DuskDawn card) { diff --git a/Mage.Sets/src/mage/cards/g/GreenwardenOfMurasa.java b/Mage.Sets/src/mage/cards/g/GreenwardenOfMurasa.java index 97bfb2e151e..b7e14e50623 100644 --- a/Mage.Sets/src/mage/cards/g/GreenwardenOfMurasa.java +++ b/Mage.Sets/src/mage/cards/g/GreenwardenOfMurasa.java @@ -1,7 +1,5 @@ - package mage.cards.g; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DiesSourceTriggeredAbility; @@ -15,8 +13,9 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.target.common.TargetCardInYourGraveyard; +import java.util.UUID; + /** - * * @author fireshoes */ public final class GreenwardenOfMurasa extends CardImpl { @@ -33,8 +32,9 @@ public final class GreenwardenOfMurasa extends CardImpl { this.addAbility(ability); // When Greenwarden of Murasa dies, you may exile it. If you do, return target card from your graveyard to your hand. - ability = new DiesSourceTriggeredAbility(new DoIfCostPaid(new ReturnFromGraveyardToHandTargetEffect(), new ExileSourceFromGraveCost(), - "Exile {this} and return target card from your graveyard to your hand?", true), false); + ability = new DiesSourceTriggeredAbility(new DoIfCostPaid( + new ReturnFromGraveyardToHandTargetEffect(), new ExileSourceFromGraveCost().setText("exile it") + ), false); ability.addTarget(new TargetCardInYourGraveyard()); this.addAbility(ability); } @@ -47,4 +47,4 @@ public final class GreenwardenOfMurasa extends CardImpl { public GreenwardenOfMurasa copy() { return new GreenwardenOfMurasa(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/g/GrimeGorger.java b/Mage.Sets/src/mage/cards/g/GrimeGorger.java index d6354440be1..899fbd973c4 100644 --- a/Mage.Sets/src/mage/cards/g/GrimeGorger.java +++ b/Mage.Sets/src/mage/cards/g/GrimeGorger.java @@ -55,7 +55,7 @@ class GrimeGorgerEffect extends OneShotEffect { GrimeGorgerEffect() { super(Outcome.Benefit); staticText = "exile up to one card of each card type from defending player's graveyard. " + - "Put a +1/+1 on {this} for each card exiled this way"; + "Put a +1/+1 counter on {this} for each card exiled this way"; } private GrimeGorgerEffect(final GrimeGorgerEffect effect) { diff --git a/Mage.Sets/src/mage/cards/i/IndulgeExcess.java b/Mage.Sets/src/mage/cards/i/IndulgeExcess.java index d2d66f9247a..6ae13ad047c 100644 --- a/Mage.Sets/src/mage/cards/i/IndulgeExcess.java +++ b/Mage.Sets/src/mage/cards/i/IndulgeExcess.java @@ -7,6 +7,7 @@ import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.keyword.AftermathAbility; import mage.cards.CardSetInfo; import mage.cards.SplitCard; import mage.constants.CardType; @@ -44,6 +45,7 @@ public final class IndulgeExcess extends SplitCard { // Excess // Aftermath // Create a Treasure token for each creature you controlled that dealt combat damage to a player this turn. + this.getRightHalfCard().addAbility(new AftermathAbility().setRuleAtTheTop(true)); this.getRightHalfCard().getSpellAbility().addEffect( new CreateTokenEffect(new TreasureToken(), ExcessValue.instance) ); diff --git a/Mage.Sets/src/mage/cards/k/KillerService.java b/Mage.Sets/src/mage/cards/k/KillerService.java index 67a36e251ba..c626a487de6 100644 --- a/Mage.Sets/src/mage/cards/k/KillerService.java +++ b/Mage.Sets/src/mage/cards/k/KillerService.java @@ -34,9 +34,9 @@ public final class KillerService extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}"); // When Killer Service enters the battlefield, create a number of Food tokens equal to the number of opponents you have. - this.addAbility(new EntersBattlefieldTriggeredAbility( - new CreateTokenEffect(new FoodToken(), OpponentsCount.instance) - )); + this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect( + new FoodToken(), OpponentsCount.instance + ).setText("create a number of Food tokens equal to the number of opponents you have"))); // At the beginning of your end step, you may pay {2} and sacrifice a token. If you do, create a 4/4 green Rhino Warrior creature token. this.addAbility(new BeginningOfEndStepTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/l/LifeInsurance.java b/Mage.Sets/src/mage/cards/l/LifeInsurance.java index 0bfc6b131da..aded7dcfd2b 100644 --- a/Mage.Sets/src/mage/cards/l/LifeInsurance.java +++ b/Mage.Sets/src/mage/cards/l/LifeInsurance.java @@ -20,7 +20,7 @@ import java.util.UUID; */ public final class LifeInsurance extends CardImpl { - private static final FilterPermanent filter = new FilterCreaturePermanent("nontoken creature"); + private static final FilterPermanent filter = new FilterCreaturePermanent("a nontoken creature"); static { filter.add(TokenPredicate.FALSE); diff --git a/Mage.Sets/src/mage/cards/l/LifeOfTheParty.java b/Mage.Sets/src/mage/cards/l/LifeOfTheParty.java index 92fc81c5865..059b4abcb22 100644 --- a/Mage.Sets/src/mage/cards/l/LifeOfTheParty.java +++ b/Mage.Sets/src/mage/cards/l/LifeOfTheParty.java @@ -6,6 +6,7 @@ import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.dynamicvalue.common.CreaturesYouControlCount; +import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenCopyTargetEffect; import mage.abilities.effects.common.combat.GoadTargetEffect; @@ -51,7 +52,8 @@ public final class LifeOfTheParty extends CardImpl { // Whenever Life of the Party attacks, it gets +X/+0 until end of turn, where X is the number of creatures you control. this.addAbility(new AttacksTriggeredAbility(new BoostSourceEffect( - CreaturesYouControlCount.instance, CreaturesYouControlCount.instance, Duration.EndOfTurn + CreaturesYouControlCount.instance, StaticValue.get(0), + Duration.EndOfTurn, true, "it" ))); // When Life of the Party enters the battlefield, if it's not a token, each opponent creates a token that's a copy of it. The tokens are goaded for the rest of the game. diff --git a/Mage.Sets/src/mage/cards/o/ObscuraConfluence.java b/Mage.Sets/src/mage/cards/o/ObscuraConfluence.java index f747d9ede3e..dcd33e0d971 100644 --- a/Mage.Sets/src/mage/cards/o/ObscuraConfluence.java +++ b/Mage.Sets/src/mage/cards/o/ObscuraConfluence.java @@ -47,7 +47,7 @@ public final class ObscuraConfluence extends CardImpl { this.getSpellAbility().addMode(new Mode(new ObscuraConfluenceConniveEffect()).addTarget(new TargetCreaturePermanent())); // • Target player returns a creature card from their graveyard to their hand. - this.getSpellAbility().addMode(new Mode(new ObscuraConfluenceConniveEffect()).addTarget(new TargetPlayer())); + this.getSpellAbility().addMode(new Mode(new ObscuraConfluenceReturnEffect()).addTarget(new TargetPlayer())); } private ObscuraConfluence(final ObscuraConfluence card) { @@ -64,7 +64,7 @@ class ObscuraConfluenceConniveEffect extends OneShotEffect { ObscuraConfluenceConniveEffect() { super(Outcome.Benefit); - staticText = "target creature connives (Draw a card, then discard a card. " + + staticText = "target creature connives. (Draw a card, then discard a card. " + "If you discarded a nonland card, put a +1/+1 counter on that creature.)"; } diff --git a/Mage.Sets/src/mage/cards/p/ProtectionRacket.java b/Mage.Sets/src/mage/cards/p/ProtectionRacket.java index ddc55c3562e..a63b49b83d2 100644 --- a/Mage.Sets/src/mage/cards/p/ProtectionRacket.java +++ b/Mage.Sets/src/mage/cards/p/ProtectionRacket.java @@ -47,7 +47,7 @@ class ProtectionRacketEffect extends OneShotEffect { ProtectionRacketEffect() { super(Outcome.Benefit); staticText = "repeat the following process for each opponent in turn order. " + - "Reveal the top card of your library. That player pay pay life equal to that card's mana value. " + + "Reveal the top card of your library. That player may pay life equal to that card's mana value. " + "If they do, exile that card. Otherwise, put it into your hand"; } diff --git a/Mage.Sets/src/mage/cards/s/ScepterOfCelebration.java b/Mage.Sets/src/mage/cards/s/ScepterOfCelebration.java index 92ea6f43269..2f852bc9bc2 100644 --- a/Mage.Sets/src/mage/cards/s/ScepterOfCelebration.java +++ b/Mage.Sets/src/mage/cards/s/ScepterOfCelebration.java @@ -5,7 +5,7 @@ import mage.abilities.common.DealsDamageToAPlayerAttachedTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.SavedDamageValue; import mage.abilities.effects.common.CreateTokenEffect; -import mage.abilities.effects.common.continuous.BoostEnchantedEffect; +import mage.abilities.effects.common.continuous.BoostEquippedEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.TrampleAbility; @@ -29,7 +29,7 @@ public final class ScepterOfCelebration extends CardImpl { this.subtype.add(SubType.EQUIPMENT); // Equipped creature gets +2/+0 and has trample. - Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(2, 0)); + Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 0)); ability.addEffect(new GainAbilityAttachedEffect( TrampleAbility.getInstance(), AttachmentType.EQUIPMENT ).setText("and has trample")); diff --git a/Mage.Sets/src/mage/cards/s/SpellbindingSoprano.java b/Mage.Sets/src/mage/cards/s/SpellbindingSoprano.java index 8bccbf29502..bcf248ac1f1 100644 --- a/Mage.Sets/src/mage/cards/s/SpellbindingSoprano.java +++ b/Mage.Sets/src/mage/cards/s/SpellbindingSoprano.java @@ -8,6 +8,7 @@ import mage.abilities.keyword.EncoreAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.Duration; import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; @@ -19,7 +20,7 @@ import java.util.UUID; */ public final class SpellbindingSoprano extends CardImpl { - private static final FilterCard filter = new FilterCard("Instant and sorcery spells"); + private static final FilterCard filter = new FilterCard("instant and sorcery spells"); static { filter.add(Predicates.or( @@ -37,7 +38,7 @@ public final class SpellbindingSoprano extends CardImpl { this.toughness = new MageInt(2); // Whenever Spellbinding Soprano attacks, instant and sorcery spells you cast this turn cost {1} less to cast. - this.addAbility(new AttacksTriggeredAbility(new SpellsCostReductionControllerEffect(filter, 1))); + this.addAbility(new AttacksTriggeredAbility(new SpellsCostReductionControllerEffect(filter, 1).setDuration(Duration.EndOfTurn))); // Encore {3}{R} this.addAbility(new EncoreAbility(new ManaCostsImpl<>("{3}{R}"))); diff --git a/Mage.Sets/src/mage/cards/v/ViviensStampede.java b/Mage.Sets/src/mage/cards/v/ViviensStampede.java index 940a2e4f0b1..487f23c2d19 100644 --- a/Mage.Sets/src/mage/cards/v/ViviensStampede.java +++ b/Mage.Sets/src/mage/cards/v/ViviensStampede.java @@ -83,6 +83,11 @@ enum ViviensStampedeValue implements DynamicValue { public String getMessage() { return "player who was dealt combat damage this turn"; } + + @Override + public String toString() { + return "1"; + } } class ViviensStampedeWatcher extends Watcher { diff --git a/Mage.Sets/src/mage/cards/v/VorelOfTheHullClade.java b/Mage.Sets/src/mage/cards/v/VorelOfTheHullClade.java index 9596598e9aa..a744d7e09f6 100644 --- a/Mage.Sets/src/mage/cards/v/VorelOfTheHullClade.java +++ b/Mage.Sets/src/mage/cards/v/VorelOfTheHullClade.java @@ -68,7 +68,7 @@ class VorelOfTheHullCladeEffect extends OneShotEffect { public VorelOfTheHullCladeEffect() { super(Outcome.Benefit); - staticText = "For each counter on target artifact, creature, or land, put another of those counters on that permanent"; + staticText = "double the number of each kind of counter on target artifact, creature, or land"; } public VorelOfTheHullCladeEffect(VorelOfTheHullCladeEffect effect) { diff --git a/Mage.Sets/src/mage/cards/w/WorldShaper.java b/Mage.Sets/src/mage/cards/w/WorldShaper.java index e33e53e2899..109acb83ef3 100644 --- a/Mage.Sets/src/mage/cards/w/WorldShaper.java +++ b/Mage.Sets/src/mage/cards/w/WorldShaper.java @@ -53,7 +53,7 @@ class WorldShaperEffect extends OneShotEffect { public WorldShaperEffect() { super(Outcome.PutLandInPlay); - this.staticText = "put all land cards from your graveyard onto the battlefield tapped"; + this.staticText = "return all land cards from your graveyard to the battlefield tapped"; } public WorldShaperEffect(final WorldShaperEffect effect) { diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index 6c61cfa16b1..699b3b9623c 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -62,7 +62,7 @@ public class VerifyCardDataTest { private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class); - private static final String FULL_ABILITIES_CHECK_SET_CODE = "SNC"; // check all abilities and output cards with wrong abilities texts; + private static final String FULL_ABILITIES_CHECK_SET_CODE = "NCC"; // check all abilities and output cards with wrong abilities texts; private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run private static final boolean ONLY_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages diff --git a/Mage/src/main/java/mage/abilities/common/delayed/AtTheBeginOfMainPhaseDelayedTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/delayed/AtTheBeginOfMainPhaseDelayedTriggeredAbility.java index 34a406f8dc2..e311d887b50 100644 --- a/Mage/src/main/java/mage/abilities/common/delayed/AtTheBeginOfMainPhaseDelayedTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/delayed/AtTheBeginOfMainPhaseDelayedTriggeredAbility.java @@ -107,7 +107,7 @@ public class AtTheBeginOfMainPhaseDelayedTriggeredAbility extends DelayedTrigger } @Override - public String getRule() { + public String getTriggerPhrase() { switch (targetController) { case YOU: return "At the beginning of your " + phaseSelection + ", "; diff --git a/Mage/src/main/java/mage/game/permanent/token/Ooze2Token.java b/Mage/src/main/java/mage/game/permanent/token/Ooze2Token.java index a579cd436f1..a7a04ac0640 100644 --- a/Mage/src/main/java/mage/game/permanent/token/Ooze2Token.java +++ b/Mage/src/main/java/mage/game/permanent/token/Ooze2Token.java @@ -14,7 +14,7 @@ import mage.abilities.effects.common.CreateTokenEffect; public final class Ooze2Token extends TokenImpl { public Ooze2Token() { - super("Ooze Token", "2/2 green Ooze creature tokens with \"When this creature is put into a graveyard, create two 1/1 green Ooze creature tokens.\""); + super("Ooze Token", "2/2 green Ooze creature token. It has \"When this creature dies, create two 1/1 green Ooze creature tokens.\""); cardType.add(CardType.CREATURE); subtype.add(SubType.OOZE); color.setGreen(true);