From fd8cb28fc20c67112ac80abb803b2603f41819ef Mon Sep 17 00:00:00 2001 From: xenohedron Date: Tue, 4 Jun 2024 00:55:24 -0400 Subject: [PATCH] update text generation for tokens with abilities to account for new and old phrasing --- .../src/mage/cards/a/AdverseConditions.java | 6 +-- Mage.Sets/src/mage/cards/a/AwakeningZone.java | 5 ++- Mage.Sets/src/mage/cards/b/BirthingHulk.java | 3 +- Mage.Sets/src/mage/cards/b/Blisterpod.java | 4 +- Mage.Sets/src/mage/cards/b/BroodButcher.java | 4 +- Mage.Sets/src/mage/cards/b/BroodMonitor.java | 3 +- Mage.Sets/src/mage/cards/c/CallTheScions.java | 4 +- Mage.Sets/src/mage/cards/c/CarrierThrall.java | 3 +- .../src/mage/cards/c/CatacombSifter.java | 2 +- Mage.Sets/src/mage/cards/c/Corpsehatch.java | 2 +- .../src/mage/cards/d/DanceWithDevils.java | 3 +- .../src/mage/cards/d/DevilsPlayground.java | 3 +- Mage.Sets/src/mage/cards/d/DreadDrone.java | 2 +- Mage.Sets/src/mage/cards/d/DrownerOfHope.java | 3 +- .../src/mage/cards/e/EldraziSkyspawner.java | 3 +- .../src/mage/cards/e/EmrakulsHatcher.java | 3 +- Mage.Sets/src/mage/cards/e/EssenceFeed.java | 3 +- .../src/mage/cards/e/EyelessWatcher.java | 4 +- Mage.Sets/src/mage/cards/f/FromBeyond.java | 3 +- Mage.Sets/src/mage/cards/g/GrowthSpasm.java | 2 +- .../src/mage/cards/i/IncubatorDrone.java | 4 +- .../src/mage/cards/k/KozileksPredator.java | 2 +- Mage.Sets/src/mage/cards/m/MakeMischief.java | 2 +- Mage.Sets/src/mage/cards/m/MitoticSlime.java | 4 +- Mage.Sets/src/mage/cards/n/NestInvader.java | 5 ++- Mage.Sets/src/mage/cards/p/PawnOfUlamog.java | 5 ++- Mage.Sets/src/mage/cards/s/ScionSummoner.java | 3 +- .../src/mage/cards/s/SifterOfSkulls.java | 3 +- .../src/mage/cards/s/SkitteringInvasion.java | 2 +- Mage.Sets/src/mage/cards/s/SpawningBed.java | 3 +- .../src/mage/cards/s/SpawningBreath.java | 4 +- .../src/mage/cards/s/SpawnsireOfUlamog.java | 2 +- Mage.Sets/src/mage/cards/v/VoidAttendant.java | 4 +- Mage.Sets/src/mage/cards/w/WarpingWail.java | 4 +- .../effects/common/CreateTokenEffect.java | 37 ++++++++++++++----- .../permanent/token/EldraziSpawnToken.java | 2 +- ...2Token.java => MitoticSlimeOozeToken.java} | 12 +++--- 37 files changed, 82 insertions(+), 81 deletions(-) rename Mage/src/main/java/mage/game/permanent/token/{Ooze2Token.java => MitoticSlimeOozeToken.java} (59%) diff --git a/Mage.Sets/src/mage/cards/a/AdverseConditions.java b/Mage.Sets/src/mage/cards/a/AdverseConditions.java index a7671592007..92ed3f4747e 100644 --- a/Mage.Sets/src/mage/cards/a/AdverseConditions.java +++ b/Mage.Sets/src/mage/cards/a/AdverseConditions.java @@ -1,8 +1,6 @@ - package mage.cards.a; import java.util.UUID; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect; import mage.abilities.effects.common.TapTargetEffect; @@ -30,9 +28,7 @@ public final class AdverseConditions extends CardImpl { this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2)); this.getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect("Those creatures")); // Create a 1/1 colorless Eldrazi Scion creature token. It has "Sacrifice this creature: Add {C}." - Effect effect = new CreateTokenEffect(new EldraziScionToken()); - effect.setText("create a 1/1 colorless Eldrazi Scion creature token. It has \"Sacrifice this creature: Add {C}.\""); - this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(new CreateTokenEffect(new EldraziScionToken()).withTextOptions(true)); } diff --git a/Mage.Sets/src/mage/cards/a/AwakeningZone.java b/Mage.Sets/src/mage/cards/a/AwakeningZone.java index 7941ff21dca..3aad68a265e 100644 --- a/Mage.Sets/src/mage/cards/a/AwakeningZone.java +++ b/Mage.Sets/src/mage/cards/a/AwakeningZone.java @@ -19,7 +19,10 @@ public final class AwakeningZone extends CardImpl { public AwakeningZone(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}"); - this.addAbility(new BeginningOfUpkeepTriggeredAbility(new CreateTokenEffect(new EldraziSpawnToken()), TargetController.YOU, true)); + + // At the beginning of your upkeep, you may create a 0/1 colorless Eldrazi Spawn creature token. It has “Sacrifice this creature: Add {C}.” + this.addAbility(new BeginningOfUpkeepTriggeredAbility(new CreateTokenEffect( + new EldraziSpawnToken()).withTextOptions(true), TargetController.YOU, true)); } private AwakeningZone(final AwakeningZone card) { diff --git a/Mage.Sets/src/mage/cards/b/BirthingHulk.java b/Mage.Sets/src/mage/cards/b/BirthingHulk.java index b0d55bf30ba..732e107fd8c 100644 --- a/Mage.Sets/src/mage/cards/b/BirthingHulk.java +++ b/Mage.Sets/src/mage/cards/b/BirthingHulk.java @@ -33,8 +33,7 @@ public final class BirthingHulk extends CardImpl { this.addAbility(new DevoidAbility(this.color)); // When Birthing Hulk enters the battlefield, create two 1/1 colorless Eldrazi Scion creature tokens. They have "Sacrifice this creature: Add {C}." - Effect effect = new CreateTokenEffect(new EldraziScionToken(), 2); - effect.setText("create two 1/1 colorless Eldrazi Scion creature tokens. They have \"Sacrifice this creature: Add {C}.\""); + Effect effect = new CreateTokenEffect(new EldraziScionToken(), 2).withTextOptions(true); this.addAbility(new EntersBattlefieldTriggeredAbility(effect, false)); // {1}{C}: Regenerate Birthing Hulk. diff --git a/Mage.Sets/src/mage/cards/b/Blisterpod.java b/Mage.Sets/src/mage/cards/b/Blisterpod.java index e1f14ff77bc..bc8b393799e 100644 --- a/Mage.Sets/src/mage/cards/b/Blisterpod.java +++ b/Mage.Sets/src/mage/cards/b/Blisterpod.java @@ -27,8 +27,8 @@ public final class Blisterpod extends CardImpl { this.addAbility(new DevoidAbility(this.color)); // When Blisterpod dies, create a 1/1 colorless Eldrazi Scion creature token. It has "Sacrifice this creature: Add {C}." - this.addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new EldraziScionToken()) - .setText("create a 1/1 colorless Eldrazi Scion creature token. It has \"Sacrifice this creature: Add {C}.\""), false)); + this.addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect( + new EldraziScionToken()).withTextOptions(true), false)); } private Blisterpod(final Blisterpod card) { diff --git a/Mage.Sets/src/mage/cards/b/BroodButcher.java b/Mage.Sets/src/mage/cards/b/BroodButcher.java index 6e71dae14c2..824f242a64a 100644 --- a/Mage.Sets/src/mage/cards/b/BroodButcher.java +++ b/Mage.Sets/src/mage/cards/b/BroodButcher.java @@ -1,4 +1,3 @@ - package mage.cards.b; import java.util.UUID; @@ -19,7 +18,6 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.StaticFilters; import mage.game.permanent.token.EldraziScionToken; -import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +36,7 @@ public final class BroodButcher extends CardImpl { this.addAbility(new DevoidAbility(this.color)); // When Brood Butcher enters the battlefield, create a 1/1 colorless Eldrazi Scion creature token. It has "Sacrifice this creature: Add {C}." - this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new EldraziScionToken()), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new EldraziScionToken()).withTextOptions(true), false)); // {B}{G}, Sacrifice a creature: Target creature gets -2/-2 until end of turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(-2, -2, Duration.EndOfTurn), new ManaCostsImpl<>("{B}{G}")); diff --git a/Mage.Sets/src/mage/cards/b/BroodMonitor.java b/Mage.Sets/src/mage/cards/b/BroodMonitor.java index bfce6a7dec4..f1ced373116 100644 --- a/Mage.Sets/src/mage/cards/b/BroodMonitor.java +++ b/Mage.Sets/src/mage/cards/b/BroodMonitor.java @@ -28,8 +28,7 @@ public final class BroodMonitor extends CardImpl { // Devoid this.addAbility(new DevoidAbility(this.color)); // When Brood Monitor enters the battlefield, create three 1/1 colorless Eldrazi Scion creature tokens. They have "Sacrifice this creature: Add {C}." - Effect effect = new CreateTokenEffect(new EldraziScionToken(), 3); - effect.setText("create three 1/1 colorless Eldrazi Scion creature tokens. They have \"Sacrifice this creature: Add {C}.\""); + Effect effect = new CreateTokenEffect(new EldraziScionToken(), 3).withTextOptions(true); this.addAbility(new EntersBattlefieldTriggeredAbility(effect, false)); } diff --git a/Mage.Sets/src/mage/cards/c/CallTheScions.java b/Mage.Sets/src/mage/cards/c/CallTheScions.java index 269d09ecd48..a011fdf006f 100644 --- a/Mage.Sets/src/mage/cards/c/CallTheScions.java +++ b/Mage.Sets/src/mage/cards/c/CallTheScions.java @@ -1,4 +1,3 @@ - package mage.cards.c; import java.util.UUID; @@ -23,8 +22,7 @@ public final class CallTheScions extends CardImpl { this.addAbility(new DevoidAbility(this.color)); // Create two 1/1 colorless Eldrazi Scion creature tokens. They have "Sacrifice this creature: add {C}." - Effect effect = new CreateTokenEffect(new EldraziScionToken(), 2); - effect.setText("create two 1/1 colorless Eldrazi Scion creature tokens. They have \"Sacrifice this creature: Add {C}.\""); + Effect effect = new CreateTokenEffect(new EldraziScionToken(), 2).withTextOptions(true); this.getSpellAbility().addEffect(effect); } diff --git a/Mage.Sets/src/mage/cards/c/CarrierThrall.java b/Mage.Sets/src/mage/cards/c/CarrierThrall.java index b78fe316d99..fed9e4866e8 100644 --- a/Mage.Sets/src/mage/cards/c/CarrierThrall.java +++ b/Mage.Sets/src/mage/cards/c/CarrierThrall.java @@ -25,8 +25,7 @@ public final class CarrierThrall extends CardImpl { this.toughness = new MageInt(1); // When Carrier Thrall dies, create a 1/1 colorless Eldrazi Scion creature token. It has "Sacrifice this creature. Add {C}." - Effect effect = new CreateTokenEffect(new EldraziScionToken()); - effect.setText("create a 1/1 colorless Eldrazi Scion creature token. It has \"Sacrifice this creature: Add {C}.\""); + Effect effect = new CreateTokenEffect(new EldraziScionToken()).withTextOptions(true); this.addAbility(new DiesSourceTriggeredAbility(effect, false)); } diff --git a/Mage.Sets/src/mage/cards/c/CatacombSifter.java b/Mage.Sets/src/mage/cards/c/CatacombSifter.java index bbcdbbdc97b..6788d2a69bf 100644 --- a/Mage.Sets/src/mage/cards/c/CatacombSifter.java +++ b/Mage.Sets/src/mage/cards/c/CatacombSifter.java @@ -31,7 +31,7 @@ public final class CatacombSifter extends CardImpl { this.addAbility(new DevoidAbility(this.color)); // When Catacomb Sifter enters the battlefield, create a 1/1 colorless Eldrazi Scion creature token. It has "Sacrifice this creature: Add {C}." - this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new EldraziScionToken()))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new EldraziScionToken()).withTextOptions(true))); // Whenever another creature you control dies, scry 1 this.addAbility(new DiesCreatureTriggeredAbility(new ScryEffect(1), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL)); diff --git a/Mage.Sets/src/mage/cards/c/Corpsehatch.java b/Mage.Sets/src/mage/cards/c/Corpsehatch.java index a9837165b39..254bb590334 100644 --- a/Mage.Sets/src/mage/cards/c/Corpsehatch.java +++ b/Mage.Sets/src/mage/cards/c/Corpsehatch.java @@ -21,7 +21,7 @@ public final class Corpsehatch extends CardImpl { this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addEffect(new CreateTokenEffect(new EldraziSpawnToken(), 2)); + this.getSpellAbility().addEffect(new CreateTokenEffect(new EldraziSpawnToken(), 2).withTextOptions(true)); } private Corpsehatch(final Corpsehatch card) { diff --git a/Mage.Sets/src/mage/cards/d/DanceWithDevils.java b/Mage.Sets/src/mage/cards/d/DanceWithDevils.java index 8b021644d2a..508d8c60611 100644 --- a/Mage.Sets/src/mage/cards/d/DanceWithDevils.java +++ b/Mage.Sets/src/mage/cards/d/DanceWithDevils.java @@ -19,8 +19,7 @@ public final class DanceWithDevils extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}"); // Create two 1/1 red Devil creature tokens. They have "When this creature dies, it deals 1 damage to any target." - Effect effect = new CreateTokenEffect(new DevilToken(), 2); - effect.setText("Create two 1/1 red Devil creature tokens. They have \"When this creature dies, it deals 1 damage to any target.\""); + Effect effect = new CreateTokenEffect(new DevilToken(), 2).withTextOptions(true); this.getSpellAbility().addEffect(effect); } diff --git a/Mage.Sets/src/mage/cards/d/DevilsPlayground.java b/Mage.Sets/src/mage/cards/d/DevilsPlayground.java index 3999b5ce779..597bf6e2606 100644 --- a/Mage.Sets/src/mage/cards/d/DevilsPlayground.java +++ b/Mage.Sets/src/mage/cards/d/DevilsPlayground.java @@ -19,8 +19,7 @@ public final class DevilsPlayground extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}{R}"); // Create four 1/1 red Devil creature tokens. They have "When this creature dies, it deals 1 damage to any target." - Effect effect = new CreateTokenEffect(new DevilToken(), 4); - effect.setText("Create four 1/1 red Devil creature tokens. They have \"When this creature dies, it deals 1 damage to any target.\""); + Effect effect = new CreateTokenEffect(new DevilToken(), 4).withTextOptions(true); this.getSpellAbility().addEffect(effect); } diff --git a/Mage.Sets/src/mage/cards/d/DreadDrone.java b/Mage.Sets/src/mage/cards/d/DreadDrone.java index 00255f13e52..ca204c68774 100644 --- a/Mage.Sets/src/mage/cards/d/DreadDrone.java +++ b/Mage.Sets/src/mage/cards/d/DreadDrone.java @@ -25,7 +25,7 @@ public final class DreadDrone extends CardImpl { this.power = new MageInt(4); this.toughness = new MageInt(1); - this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new EldraziSpawnToken(), 2))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new EldraziSpawnToken(), 2).withTextOptions(true))); } private DreadDrone(final DreadDrone card) { diff --git a/Mage.Sets/src/mage/cards/d/DrownerOfHope.java b/Mage.Sets/src/mage/cards/d/DrownerOfHope.java index d7b00e0c2c2..9b13f55d9b3 100644 --- a/Mage.Sets/src/mage/cards/d/DrownerOfHope.java +++ b/Mage.Sets/src/mage/cards/d/DrownerOfHope.java @@ -45,8 +45,7 @@ public final class DrownerOfHope extends CardImpl { this.addAbility(new DevoidAbility(this.color)); // When Drowner of Hope enters the battlefield, create two 1/1 colorless Eldrazi Scion creature tokens. They have "Sacrifice this creature: Add {C}." - Effect effect = new CreateTokenEffect(new EldraziScionToken(), 2); - effect.setText("create two 1/1 colorless Eldrazi Scion creature tokens. They have \"Sacrifice this creature: Add {C}"); + Effect effect = new CreateTokenEffect(new EldraziScionToken(), 2).withTextOptions(true); this.addAbility(new EntersBattlefieldTriggeredAbility(effect, false)); // Sacrifice an Eldrazi Scion: Tap target creature. diff --git a/Mage.Sets/src/mage/cards/e/EldraziSkyspawner.java b/Mage.Sets/src/mage/cards/e/EldraziSkyspawner.java index b3d1164063b..44c3753fdd2 100644 --- a/Mage.Sets/src/mage/cards/e/EldraziSkyspawner.java +++ b/Mage.Sets/src/mage/cards/e/EldraziSkyspawner.java @@ -32,8 +32,7 @@ public final class EldraziSkyspawner extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // When Eldrazi Skyspawner enters the battlefield, create a 1/1 colorless Eldrazi Scion creature token. It has "Sacrifice this creature: Add {C}." - Effect effect = new CreateTokenEffect(new EldraziScionToken()); - effect.setText("create a 1/1 colorless Eldrazi Scion creature token. It has \"Sacrifice this creature: Add {C}.\""); + Effect effect = new CreateTokenEffect(new EldraziScionToken()).withTextOptions(true); this.addAbility(new EntersBattlefieldTriggeredAbility(effect, false)); } diff --git a/Mage.Sets/src/mage/cards/e/EmrakulsHatcher.java b/Mage.Sets/src/mage/cards/e/EmrakulsHatcher.java index 1c173fab7bc..6ff4bd1b91e 100644 --- a/Mage.Sets/src/mage/cards/e/EmrakulsHatcher.java +++ b/Mage.Sets/src/mage/cards/e/EmrakulsHatcher.java @@ -26,7 +26,8 @@ public final class EmrakulsHatcher extends CardImpl { this.power = new MageInt(3); this.toughness = new MageInt(3); - this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new EldraziSpawnToken(), 3), false)); + // When Emrakul’s Hatcher enters the battlefield, create three 0/1 colorless Eldrazi Spawn creature tokens. They have “Sacrifice this creature: Add {C}.” + this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new EldraziSpawnToken(), 3).withTextOptions(true), false)); } private EmrakulsHatcher(final EmrakulsHatcher card) { diff --git a/Mage.Sets/src/mage/cards/e/EssenceFeed.java b/Mage.Sets/src/mage/cards/e/EssenceFeed.java index 308bf9d5994..218995eddd7 100644 --- a/Mage.Sets/src/mage/cards/e/EssenceFeed.java +++ b/Mage.Sets/src/mage/cards/e/EssenceFeed.java @@ -21,9 +21,10 @@ public final class EssenceFeed extends CardImpl { public EssenceFeed (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{B}"); + // Target player loses 3 life. You gain 3 life and create three 0/1 colorless Eldrazi Spawn creature tokens. They have “Sacrifice this creature: Add {C}.” this.getSpellAbility().addEffect(new LoseLifeTargetEffect(3)); this.getSpellAbility().addEffect(new GainLifeEffect(3)); - this.getSpellAbility().addEffect(new CreateTokenEffect(new EldraziSpawnToken(), 3).concatBy("and")); + this.getSpellAbility().addEffect(new CreateTokenEffect(new EldraziSpawnToken(), 3).withTextOptions(true).concatBy("and")); this.getSpellAbility().addTarget(new TargetPlayer()); } diff --git a/Mage.Sets/src/mage/cards/e/EyelessWatcher.java b/Mage.Sets/src/mage/cards/e/EyelessWatcher.java index 94b6dedb25e..e00dd8946ab 100644 --- a/Mage.Sets/src/mage/cards/e/EyelessWatcher.java +++ b/Mage.Sets/src/mage/cards/e/EyelessWatcher.java @@ -1,4 +1,3 @@ - package mage.cards.e; import java.util.UUID; @@ -29,8 +28,7 @@ public final class EyelessWatcher extends CardImpl { // Devoid this.addAbility(new DevoidAbility(this.color)); // When Eyeless Watcher enters the battlefield, create two 1/1 colorless Eldrazi Scion creature tokens. They have "Sacrifice this creature: Add {C}." - Effect effect = new CreateTokenEffect(new EldraziScionToken(), 2); - effect.setText("create two 1/1 colorless Eldrazi Scion creature tokens. They have \"Sacrifice this creature: Add {C}.\""); + Effect effect = new CreateTokenEffect(new EldraziScionToken(), 2).withTextOptions(true); this.addAbility(new EntersBattlefieldTriggeredAbility(effect, false)); } diff --git a/Mage.Sets/src/mage/cards/f/FromBeyond.java b/Mage.Sets/src/mage/cards/f/FromBeyond.java index aa3a78cc174..1f08f2c0caf 100644 --- a/Mage.Sets/src/mage/cards/f/FromBeyond.java +++ b/Mage.Sets/src/mage/cards/f/FromBeyond.java @@ -39,7 +39,8 @@ public final class FromBeyond extends CardImpl { this.addAbility(new DevoidAbility(this.color)); // At the beginning of your upkeep, create a 1/1 colorless Eldrazi Scion creature token. It has "Sacrifice this creature: Add {C}." - this.addAbility(new BeginningOfUpkeepTriggeredAbility(new CreateTokenEffect(new EldraziScionToken()), TargetController.YOU, false)); + this.addAbility(new BeginningOfUpkeepTriggeredAbility(new CreateTokenEffect( + new EldraziScionToken()).withTextOptions(true), TargetController.YOU, false)); // {1}{G}, Sacrifice From Beyond: Search your library for an Eldrazi card, reveal it, put it into your hand, then shuffle your library. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, diff --git a/Mage.Sets/src/mage/cards/g/GrowthSpasm.java b/Mage.Sets/src/mage/cards/g/GrowthSpasm.java index 6fc18f011ce..6ca5b57424c 100644 --- a/Mage.Sets/src/mage/cards/g/GrowthSpasm.java +++ b/Mage.Sets/src/mage/cards/g/GrowthSpasm.java @@ -24,7 +24,7 @@ public final class GrowthSpasm extends CardImpl { this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true)); // Create a 0/1 colorless Eldrazi Spawn creature token. It has “Sacrifice this creature: Add {C}.” - this.getSpellAbility().addEffect(new CreateTokenEffect(new EldraziSpawnToken())); + this.getSpellAbility().addEffect(new CreateTokenEffect(new EldraziSpawnToken()).withTextOptions(true)); } private GrowthSpasm(final GrowthSpasm card) { diff --git a/Mage.Sets/src/mage/cards/i/IncubatorDrone.java b/Mage.Sets/src/mage/cards/i/IncubatorDrone.java index f8f8794fb5f..7793521b730 100644 --- a/Mage.Sets/src/mage/cards/i/IncubatorDrone.java +++ b/Mage.Sets/src/mage/cards/i/IncubatorDrone.java @@ -1,4 +1,3 @@ - package mage.cards.i; import java.util.UUID; @@ -30,8 +29,7 @@ public final class IncubatorDrone extends CardImpl { this.addAbility(new DevoidAbility(this.color)); // Whenever Incubator Drone enters the battlefield, create a 1/1 colorless Eldrazi Scion creature token. It has "Sacrifice this creature: Add {C}." - Effect effect = new CreateTokenEffect(new EldraziScionToken()); - effect.setText("create a 1/1 colorless Eldrazi Scion creature token. It has \"Sacrifice this creature: Add {C}.\""); + Effect effect = new CreateTokenEffect(new EldraziScionToken()).withTextOptions(true); this.addAbility(new EntersBattlefieldTriggeredAbility(effect, false)); } diff --git a/Mage.Sets/src/mage/cards/k/KozileksPredator.java b/Mage.Sets/src/mage/cards/k/KozileksPredator.java index eb208e03d78..0244dd2ce13 100644 --- a/Mage.Sets/src/mage/cards/k/KozileksPredator.java +++ b/Mage.Sets/src/mage/cards/k/KozileksPredator.java @@ -26,7 +26,7 @@ public final class KozileksPredator extends CardImpl { this.power = new MageInt(3); this.toughness = new MageInt(3); - this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new EldraziSpawnToken(), 2), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new EldraziSpawnToken(), 2).withTextOptions(true), false)); } private KozileksPredator(final KozileksPredator card) { diff --git a/Mage.Sets/src/mage/cards/m/MakeMischief.java b/Mage.Sets/src/mage/cards/m/MakeMischief.java index 9dfa28aaa59..320717a0cb1 100644 --- a/Mage.Sets/src/mage/cards/m/MakeMischief.java +++ b/Mage.Sets/src/mage/cards/m/MakeMischief.java @@ -23,7 +23,7 @@ public final class MakeMischief extends CardImpl { // It has "When this creature dies, it deals 1 damage to any target." this.getSpellAbility().addEffect(new DamageTargetEffect(1)); this.getSpellAbility().addTarget(new TargetAnyTarget()); - this.getSpellAbility().addEffect(new CreateTokenEffect(new DevilToken())); + this.getSpellAbility().addEffect(new CreateTokenEffect(new DevilToken()).withTextOptions(true)); } private MakeMischief(final MakeMischief card) { diff --git a/Mage.Sets/src/mage/cards/m/MitoticSlime.java b/Mage.Sets/src/mage/cards/m/MitoticSlime.java index c1c8c158499..e67178aeb60 100644 --- a/Mage.Sets/src/mage/cards/m/MitoticSlime.java +++ b/Mage.Sets/src/mage/cards/m/MitoticSlime.java @@ -9,7 +9,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.game.permanent.token.Ooze2Token; +import mage.game.permanent.token.MitoticSlimeOozeToken; /** * @@ -24,7 +24,7 @@ public final class MitoticSlime extends CardImpl { this.power = new MageInt(4); this.toughness = new MageInt(4); - this.addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new Ooze2Token(), 2), false)); + this.addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new MitoticSlimeOozeToken(), 2), false)); } private MitoticSlime(final MitoticSlime card) { diff --git a/Mage.Sets/src/mage/cards/n/NestInvader.java b/Mage.Sets/src/mage/cards/n/NestInvader.java index 23d5e2e3548..7aaa989830b 100644 --- a/Mage.Sets/src/mage/cards/n/NestInvader.java +++ b/Mage.Sets/src/mage/cards/n/NestInvader.java @@ -26,7 +26,8 @@ public final class NestInvader extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new EldraziSpawnToken()), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility( + new CreateTokenEffect(new EldraziSpawnToken()).withTextOptions(true), false)); } private NestInvader(final NestInvader card) { @@ -38,4 +39,4 @@ public final class NestInvader extends CardImpl { return new NestInvader(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/p/PawnOfUlamog.java b/Mage.Sets/src/mage/cards/p/PawnOfUlamog.java index 7dc0991721b..8b4acc73d8c 100644 --- a/Mage.Sets/src/mage/cards/p/PawnOfUlamog.java +++ b/Mage.Sets/src/mage/cards/p/PawnOfUlamog.java @@ -36,7 +36,8 @@ public final class PawnOfUlamog extends CardImpl { // Whenever Pawn of Ulamog or another nontoken creature you control dies, you may create a 0/1 colorless // Eldrazi Spawn creature token. It has "Sacrifice this creature: Add {C}." - this.addAbility(new DiesThisOrAnotherCreatureTriggeredAbility(new CreateTokenEffect(new EldraziSpawnToken()), true, filter)); + this.addAbility(new DiesThisOrAnotherCreatureTriggeredAbility( + new CreateTokenEffect(new EldraziSpawnToken()).withTextOptions(true), true, filter)); } private PawnOfUlamog(final PawnOfUlamog card) { @@ -47,4 +48,4 @@ public final class PawnOfUlamog extends CardImpl { public PawnOfUlamog copy() { return new PawnOfUlamog(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/s/ScionSummoner.java b/Mage.Sets/src/mage/cards/s/ScionSummoner.java index 26b8537c9e5..33ae7d955a5 100644 --- a/Mage.Sets/src/mage/cards/s/ScionSummoner.java +++ b/Mage.Sets/src/mage/cards/s/ScionSummoner.java @@ -31,8 +31,7 @@ public final class ScionSummoner extends CardImpl { // When Scion Summoner enters the battlefield, create a 1/1 colorless Eldrazi Scion creature token. // It has "Sacrifice this creature: Add {C}." - Effect effect = new CreateTokenEffect(new EldraziScionToken()); - effect.setText("create a 1/1 colorless Eldrazi Scion creature token. It has \"Sacrifice this creature: Add {C}.\""); + Effect effect = new CreateTokenEffect(new EldraziScionToken()).withTextOptions(true); this.addAbility(new EntersBattlefieldTriggeredAbility(effect, false)); } diff --git a/Mage.Sets/src/mage/cards/s/SifterOfSkulls.java b/Mage.Sets/src/mage/cards/s/SifterOfSkulls.java index 9a0b3750bc6..f539b7819ed 100644 --- a/Mage.Sets/src/mage/cards/s/SifterOfSkulls.java +++ b/Mage.Sets/src/mage/cards/s/SifterOfSkulls.java @@ -41,8 +41,7 @@ public final class SifterOfSkulls extends CardImpl { // Whenever another nontoken creature you control dies, create a 1/1 colorless Eldrazi Scion creature token. // It has "Sacrifice this creature: Add {C}." - Effect effect = new CreateTokenEffect(new EldraziScionToken()); - effect.setText("create a 1/1 colorless Eldrazi Scion creature token. It has \"Sacrifice this creature: Add {C}.\""); + Effect effect = new CreateTokenEffect(new EldraziScionToken()).withTextOptions(true); this.addAbility(new DiesCreatureTriggeredAbility(effect, false, filter)); } diff --git a/Mage.Sets/src/mage/cards/s/SkitteringInvasion.java b/Mage.Sets/src/mage/cards/s/SkitteringInvasion.java index 56e0ca6eac8..dff5d0c7b54 100644 --- a/Mage.Sets/src/mage/cards/s/SkitteringInvasion.java +++ b/Mage.Sets/src/mage/cards/s/SkitteringInvasion.java @@ -19,7 +19,7 @@ public final class SkitteringInvasion extends CardImpl { public SkitteringInvasion (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.SORCERY},"{7}"); this.subtype.add(SubType.ELDRAZI); - this.getSpellAbility().addEffect(new CreateTokenEffect(new EldraziSpawnToken(), 5)); + this.getSpellAbility().addEffect(new CreateTokenEffect(new EldraziSpawnToken(), 5).withTextOptions(true)); } private SkitteringInvasion(final SkitteringInvasion card) { diff --git a/Mage.Sets/src/mage/cards/s/SpawningBed.java b/Mage.Sets/src/mage/cards/s/SpawningBed.java index 491ef6f896b..cae999fecbd 100644 --- a/Mage.Sets/src/mage/cards/s/SpawningBed.java +++ b/Mage.Sets/src/mage/cards/s/SpawningBed.java @@ -1,4 +1,3 @@ - package mage.cards.s; import java.util.UUID; @@ -28,7 +27,7 @@ public final class SpawningBed extends CardImpl { this.addAbility(new ColorlessManaAbility()); // {6}, {T}, Sacrifice Spawning Bed: Create three 1/1 colorless Eldrazi Scion creature tokens. They have "Sacrifice this creature: Add {C}." - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new EldraziScionToken(), 3), new ManaCostsImpl<>("{6}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new EldraziScionToken(), 3).withTextOptions(true), new ManaCostsImpl<>("{6}")); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/SpawningBreath.java b/Mage.Sets/src/mage/cards/s/SpawningBreath.java index 04b0f1dcbaf..c674c6cac9a 100644 --- a/Mage.Sets/src/mage/cards/s/SpawningBreath.java +++ b/Mage.Sets/src/mage/cards/s/SpawningBreath.java @@ -19,10 +19,10 @@ public final class SpawningBreath extends CardImpl { public SpawningBreath(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}"); - + // Spawning Breath deals 1 damage to any target. Create a 0/1 colorless Eldrazi Spawn creature token. It has “Sacrifice this creature: Add {C}.” this.getSpellAbility().addEffect(new DamageTargetEffect(1)); this.getSpellAbility().addTarget(new TargetAnyTarget()); - this.getSpellAbility().addEffect(new CreateTokenEffect(new EldraziSpawnToken())); + this.getSpellAbility().addEffect(new CreateTokenEffect(new EldraziSpawnToken()).withTextOptions(true)); } private SpawningBreath(final SpawningBreath card) { diff --git a/Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java b/Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java index 2abbb5e5ce8..416b861d79d 100644 --- a/Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java +++ b/Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java @@ -41,7 +41,7 @@ public final class SpawnsireOfUlamog extends CardImpl { this.addAbility(new AnnihilatorAbility(1)); // {4}: Create two 0/1 colorless Eldrazi Spawn creature tokens. They have "Sacrifice this creature: Add {C}." - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new EldraziSpawnToken(), 2), new GenericManaCost(4))); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new EldraziSpawnToken(), 2).withTextOptions(true), new GenericManaCost(4))); // {20}: Cast any number of Eldrazi cards you own from outside the game without paying their mana costs. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, diff --git a/Mage.Sets/src/mage/cards/v/VoidAttendant.java b/Mage.Sets/src/mage/cards/v/VoidAttendant.java index e6e001886d7..574c0c873be 100644 --- a/Mage.Sets/src/mage/cards/v/VoidAttendant.java +++ b/Mage.Sets/src/mage/cards/v/VoidAttendant.java @@ -1,4 +1,3 @@ - package mage.cards.v; import java.util.UUID; @@ -34,8 +33,7 @@ public final class VoidAttendant extends CardImpl { this.addAbility(new DevoidAbility(this.color)); // {1}{G}, Put a card an opponent owns from exile into that player's graveyard: Create a 1/1 colorless Eldrazi Scion creature token. It has "Sacrifice this creature: Add {C}." - Effect effect = new CreateTokenEffect(new EldraziScionToken()); - effect.setText("create a 1/1 colorless Eldrazi Scion creature token. It has \"Sacrifice this creature: Add {C}.\""); + Effect effect = new CreateTokenEffect(new EldraziScionToken()).withTextOptions(true); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{1}{G}")); ability.addCost(new ExileOpponentsCardFromExileToGraveyardCost(true)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/w/WarpingWail.java b/Mage.Sets/src/mage/cards/w/WarpingWail.java index c11b0014321..88f62df69ea 100644 --- a/Mage.Sets/src/mage/cards/w/WarpingWail.java +++ b/Mage.Sets/src/mage/cards/w/WarpingWail.java @@ -1,4 +1,3 @@ - package mage.cards.w; import java.util.UUID; @@ -51,8 +50,7 @@ public final class WarpingWail extends CardImpl { this.getSpellAbility().addMode(mode); // Create a 1/1 colorless Eldrazi Scion creature token. It has "Sacrifice this creature: Add {C}." - effect = new CreateTokenEffect(new EldraziScionToken()); - effect.setText("Create a 1/1 colorless Eldrazi Scion creature token. It has \"Sacrifice this creature: Add {C}.\""); + effect = new CreateTokenEffect(new EldraziScionToken()).withTextOptions(true); this.getSpellAbility().addMode(new Mode(effect)); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/CreateTokenEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CreateTokenEffect.java index d15cec34ac5..ae1dc01eea6 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/CreateTokenEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/CreateTokenEffect.java @@ -29,6 +29,7 @@ public class CreateTokenEffect extends OneShotEffect { private final boolean tapped; private final boolean attacking; private String additionalRules; + private boolean oldPhrasing = false; // true for "token. It has " instead of "token with " private List lastAddedTokenIds = new ArrayList<>(); private CounterType counterType; private DynamicValue numberOfCounters; @@ -72,6 +73,7 @@ public class CreateTokenEffect extends OneShotEffect { this.counterType = effect.counterType; this.numberOfCounters = effect.numberOfCounters; this.additionalRules = effect.additionalRules; + this.oldPhrasing = effect.oldPhrasing; } public CreateTokenEffect entersWithCounters(CounterType counterType, DynamicValue numberOfCounters) { @@ -129,33 +131,50 @@ public class CreateTokenEffect extends OneShotEffect { } } + /** + * For adding reminder text to the effect + */ public CreateTokenEffect withAdditionalRules(String additionalRules) { this.additionalRules = additionalRules; setText(); return this; } + /** + * For older cards that use the phrasing "token. It has " rather than "token with ". + */ + public CreateTokenEffect withTextOptions(boolean oldPhrasing) { + this.oldPhrasing = oldPhrasing; + setText(); + return this; + } + private void setText() { - if (token.getDescription().contains(", a legendary")) { - staticText = "create " + token.getDescription(); + String tokenDescription = token.getDescription(); + boolean singular = amount.toString().equals("1"); + if (tokenDescription.contains(", a legendary")) { + staticText = "create " + tokenDescription; return; } - + if (oldPhrasing) { + tokenDescription = tokenDescription.replace("token with \"", + singular ? "token. It has \"" : "tokens. They have \""); + } StringBuilder sb = new StringBuilder("create "); - if (amount.toString().equals("1")) { + if (singular) { if (tapped && !attacking) { sb.append("a tapped "); - sb.append(token.getDescription()); + sb.append(tokenDescription); } else { - sb.append(CardUtil.addArticle(token.getDescription())); + sb.append(CardUtil.addArticle(tokenDescription)); } } else { sb.append(CardUtil.numberToText(amount.toString())).append(' '); if (tapped && !attacking) { sb.append("tapped "); } - sb.append(token.getDescription().replace("token. It has", "tokens. They have")); - if (token.getDescription().endsWith("token")) { + sb.append(tokenDescription); + if (tokenDescription.endsWith("token")) { sb.append("s"); } int tokenLocation = sb.indexOf("token "); @@ -165,7 +184,7 @@ public class CreateTokenEffect extends OneShotEffect { } if (attacking) { - if (amount.toString().equals("1")) { + if (singular) { sb.append(" that's"); } else { sb.append(" that are"); diff --git a/Mage/src/main/java/mage/game/permanent/token/EldraziSpawnToken.java b/Mage/src/main/java/mage/game/permanent/token/EldraziSpawnToken.java index 01a47f352f5..17e31578470 100644 --- a/Mage/src/main/java/mage/game/permanent/token/EldraziSpawnToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/EldraziSpawnToken.java @@ -14,7 +14,7 @@ import mage.constants.Zone; public final class EldraziSpawnToken extends TokenImpl { public EldraziSpawnToken() { - super("Eldrazi Spawn Token", "0/1 colorless Eldrazi Spawn creature token. It has \"Sacrifice this creature: Add {C}.\""); + super("Eldrazi Spawn Token", "0/1 colorless Eldrazi Spawn creature token with \"Sacrifice this creature: Add {C}.\""); cardType.add(CardType.CREATURE); subtype.add(SubType.ELDRAZI); subtype.add(SubType.SPAWN); diff --git a/Mage/src/main/java/mage/game/permanent/token/Ooze2Token.java b/Mage/src/main/java/mage/game/permanent/token/MitoticSlimeOozeToken.java similarity index 59% rename from Mage/src/main/java/mage/game/permanent/token/Ooze2Token.java rename to Mage/src/main/java/mage/game/permanent/token/MitoticSlimeOozeToken.java index f5c52fde2f4..d15956a6f0f 100644 --- a/Mage/src/main/java/mage/game/permanent/token/Ooze2Token.java +++ b/Mage/src/main/java/mage/game/permanent/token/MitoticSlimeOozeToken.java @@ -9,10 +9,10 @@ import mage.constants.SubType; /** * @author spjspj */ -public final class Ooze2Token extends TokenImpl { +public final class MitoticSlimeOozeToken extends TokenImpl { - public Ooze2Token() { - super("Ooze Token", "2/2 green Ooze creature token. It has \"When this creature dies, create two 1/1 green Ooze creature tokens.\""); + public MitoticSlimeOozeToken() { + super("Ooze Token", "2/2 green Ooze creature tokens. They have \"When this creature dies, create two 1/1 green Ooze creature tokens.\""); cardType.add(CardType.CREATURE); subtype.add(SubType.OOZE); color.setGreen(true); @@ -21,11 +21,11 @@ public final class Ooze2Token extends TokenImpl { this.addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new OozeToken(1, 1), 2), false)); } - private Ooze2Token(final Ooze2Token token) { + private MitoticSlimeOozeToken(final MitoticSlimeOozeToken token) { super(token); } - public Ooze2Token copy() { - return new Ooze2Token(this); + public MitoticSlimeOozeToken copy() { + return new MitoticSlimeOozeToken(this); } }