From 75717bc8397f592f1b2b815dc699b5b2544603c9 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Sun, 18 Jan 2026 10:34:17 -0500 Subject: [PATCH] some text fixes around effects which draw cards and lose life --- Mage.Sets/src/mage/cards/a/AcquireTarget.java | 19 ++---- Mage.Sets/src/mage/cards/a/ArcaneDenial.java | 3 +- Mage.Sets/src/mage/cards/a/Armistice.java | 18 ++--- .../src/mage/cards/b/BlackMarketDealer.java | 6 +- Mage.Sets/src/mage/cards/b/BloodPact.java | 2 +- .../src/mage/cards/b/BloodgiftDemon.java | 2 +- Mage.Sets/src/mage/cards/d/DoctorDoom.java | 2 +- Mage.Sets/src/mage/cards/d/DreadPresence.java | 2 +- Mage.Sets/src/mage/cards/e/EyeOfVecna.java | 14 ++-- .../src/mage/cards/f/FaerieMastermind.java | 3 +- Mage.Sets/src/mage/cards/f/FellStinger.java | 2 +- .../mage/cards/f/FirstSphereGargantua.java | 2 +- .../src/mage/cards/f/ForebodingFruit.java | 2 +- .../src/mage/cards/f/FoulmireKnight.java | 2 +- Mage.Sets/src/mage/cards/f/FuneralRites.java | 3 +- .../src/mage/cards/f/FungalShambler.java | 15 ++--- .../src/mage/cards/g/GlintSleeveSiphoner.java | 4 +- .../src/mage/cards/h/HarrowingJourney.java | 8 +-- .../src/mage/cards/h/HenrikaDomnathi.java | 2 +- .../src/mage/cards/i/InsatiableAvarice.java | 2 +- .../mage/cards/k/KothophedSoulHoarder.java | 67 +++---------------- .../src/mage/cards/l/LilianasContract.java | 2 +- Mage.Sets/src/mage/cards/l/LiveFast.java | 19 ++---- .../src/mage/cards/l/LolthSpiderQueen.java | 2 +- .../src/mage/cards/m/MeasureOfWickedness.java | 1 - Mage.Sets/src/mage/cards/m/MoriokReplica.java | 25 +++---- Mage.Sets/src/mage/cards/n/NightsWhisper.java | 9 ++- .../src/mage/cards/n/NivMizzetParun.java | 10 +-- .../src/mage/cards/n/NoviceOccultist.java | 2 +- Mage.Sets/src/mage/cards/p/PainfulLesson.java | 10 +-- Mage.Sets/src/mage/cards/p/PainfulTruths.java | 20 +++--- .../src/mage/cards/p/PhyrexianRager.java | 2 +- .../src/mage/cards/p/PlumbTheForbidden.java | 2 +- .../src/mage/cards/p/PromiseOfPower.java | 18 ++--- .../src/mage/cards/r/RiveteersConfluence.java | 7 +- .../mage/cards/s/SeizanPerverterOfTruth.java | 26 +++---- .../src/mage/cards/s/ShadrixSilverquill.java | 9 ++- .../mage/cards/s/ShanidSleepersScourge.java | 2 +- Mage.Sets/src/mage/cards/s/SignInBlood.java | 12 ++-- .../src/mage/cards/s/SilverquillCommand.java | 2 +- .../src/mage/cards/s/SkeletalScrying.java | 8 +-- .../src/mage/cards/s/SkemfarAvenger.java | 2 +- Mage.Sets/src/mage/cards/s/Slitherwisp.java | 4 +- .../src/mage/cards/s/SuccumbToTemptation.java | 11 ++- .../mage/cards/s/SyrGwynHeroOfAshvale.java | 2 +- .../src/mage/cards/t/TheCouncilOfFour.java | 3 +- Mage.Sets/src/mage/cards/t/ToilTrouble.java | 14 ++-- Mage.Sets/src/mage/cards/u/UndeadAugur.java | 2 +- .../mage/cards/u/UnscrupulousContractor.java | 2 +- .../src/mage/cards/u/UnwillingIngredient.java | 3 +- .../src/mage/cards/v/VaultPlunderer.java | 2 +- .../mage/cards/v/VraskaBetrayalsSting.java | 4 +- Mage.Sets/src/mage/cards/v/VulturousAven.java | 18 ++--- .../src/mage/cards/w/WretchedConfluence.java | 21 ++---- .../src/mage/cards/z/ZukoConflicted.java | 2 +- .../LoseLifeSourceControllerEffect.java | 25 +++++-- .../mage/game/permanent/token/DevilToken.java | 2 +- 57 files changed, 177 insertions(+), 308 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AcquireTarget.java b/Mage.Sets/src/mage/cards/a/AcquireTarget.java index 4df897f8045..391d1a74564 100644 --- a/Mage.Sets/src/mage/cards/a/AcquireTarget.java +++ b/Mage.Sets/src/mage/cards/a/AcquireTarget.java @@ -1,8 +1,6 @@ package mage.cards.a; -import java.util.UUID; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardTargetEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; @@ -14,29 +12,26 @@ import mage.target.TargetPlayer; import mage.target.common.TargetOpponentsCreaturePermanent; import mage.target.targetpointer.SecondTargetPointer; +import java.util.UUID; + /** - * * @author Styxo */ public final class AcquireTarget extends CardImpl { public AcquireTarget(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}"); // Target player draws two cards and loses 2 life. this.getSpellAbility().addTarget(new TargetPlayer()); this.getSpellAbility().addEffect(new DrawCardTargetEffect(2)); - Effect effect = new LoseLifeTargetEffect(2); - effect.setText("and loses 2 life"); - this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(new LoseLifeTargetEffect(2).concatBy("and")); // Put a bounty counter on up to one target creature an opponent controls. - effect = new AddCountersTargetEffect(CounterType.BOUNTY.createInstance()); - effect.setTargetPointer(new SecondTargetPointer()); - effect.setText("Put a bounty counter on up to one target creature an opponent controls."); - this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.BOUNTY.createInstance()) + .setTargetPointer(new SecondTargetPointer()) + .setText("Put a bounty counter on up to one target creature an opponent controls.")); this.getSpellAbility().addTarget(new TargetOpponentsCreaturePermanent(0, 1)); - } private AcquireTarget(final AcquireTarget card) { diff --git a/Mage.Sets/src/mage/cards/a/ArcaneDenial.java b/Mage.Sets/src/mage/cards/a/ArcaneDenial.java index efd142367a3..d6d7fbc6651 100644 --- a/Mage.Sets/src/mage/cards/a/ArcaneDenial.java +++ b/Mage.Sets/src/mage/cards/a/ArcaneDenial.java @@ -35,8 +35,7 @@ public final class ArcaneDenial extends CardImpl { // You draw a card at the beginning of the next turn's upkeep. this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect( new AtTheBeginOfNextUpkeepDelayedTriggeredAbility( - new DrawCardSourceControllerEffect(1) - .setText("you draw a card") + new DrawCardSourceControllerEffect(1, true) ), false).concatBy("
") ); } diff --git a/Mage.Sets/src/mage/cards/a/Armistice.java b/Mage.Sets/src/mage/cards/a/Armistice.java index 1d3a19b1d93..8eb96a39685 100644 --- a/Mage.Sets/src/mage/cards/a/Armistice.java +++ b/Mage.Sets/src/mage/cards/a/Armistice.java @@ -1,39 +1,31 @@ package mage.cards.a; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.GainLifeTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Zone; import mage.target.common.TargetOpponent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class Armistice extends CardImpl { public Armistice(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}"); - + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}"); // {3}{W}{W}: You draw a card and target opponent gains 3 life. - Effect effect = new DrawCardSourceControllerEffect(1); - effect.setText("You draw a card"); - Ability ability = new SimpleActivatedAbility(effect, new ManaCostsImpl<>("{3}{W}{W}")); - effect = new GainLifeTargetEffect(3); - effect.setText("and target opponent gains 3 life"); - ability.addEffect(effect); + Ability ability = new SimpleActivatedAbility(new DrawCardSourceControllerEffect(1, true), new ManaCostsImpl<>("{3}{W}{W}")); + ability.addEffect(new GainLifeTargetEffect(3).concatBy("and")); ability.addTarget(new TargetOpponent()); this.addAbility(ability); - } private Armistice(final Armistice card) { diff --git a/Mage.Sets/src/mage/cards/b/BlackMarketDealer.java b/Mage.Sets/src/mage/cards/b/BlackMarketDealer.java index 828835e7d5a..aa02f869cb6 100644 --- a/Mage.Sets/src/mage/cards/b/BlackMarketDealer.java +++ b/Mage.Sets/src/mage/cards/b/BlackMarketDealer.java @@ -4,7 +4,6 @@ package mage.cards.b; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DiesCreatureTriggeredAbility; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardTargetEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; @@ -23,7 +22,6 @@ import mage.target.common.TargetOpponentsCreaturePermanent; import java.util.UUID; /** - * * @author Styxo */ public final class BlackMarketDealer extends CardImpl { @@ -48,9 +46,7 @@ public final class BlackMarketDealer extends CardImpl { // Bounty — Whenever a creature an opponent controls with a bounty counter on it dies, target player loses 1 life and draws a card. ability = new BountyAbility(new LoseLifeTargetEffect(1)); - Effect effect = new DrawCardTargetEffect(1); - effect.setText("and draws a card"); - ability.addEffect(effect); + ability.addEffect(new DrawCardTargetEffect(1).withTargetDescription("and")); ability.addTarget(new TargetPlayer()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BloodPact.java b/Mage.Sets/src/mage/cards/b/BloodPact.java index d44696cb5f1..6a970179215 100644 --- a/Mage.Sets/src/mage/cards/b/BloodPact.java +++ b/Mage.Sets/src/mage/cards/b/BloodPact.java @@ -19,7 +19,7 @@ public final class BloodPact extends CardImpl { // Target player draws two cards and loses 2 life. this.getSpellAbility().addEffect(new DrawCardTargetEffect(2)); - this.getSpellAbility().addEffect(new LoseLifeTargetEffect(2).setText("and loses 2 life")); + this.getSpellAbility().addEffect(new LoseLifeTargetEffect(2).withTargetDescription("and")); this.getSpellAbility().addTarget(new TargetPlayer()); } diff --git a/Mage.Sets/src/mage/cards/b/BloodgiftDemon.java b/Mage.Sets/src/mage/cards/b/BloodgiftDemon.java index a98599644ed..e568c970d2f 100644 --- a/Mage.Sets/src/mage/cards/b/BloodgiftDemon.java +++ b/Mage.Sets/src/mage/cards/b/BloodgiftDemon.java @@ -30,7 +30,7 @@ public final class BloodgiftDemon extends CardImpl { // At the beginning of your upkeep, target player draws a card and loses 1 life. Ability ability = new BeginningOfUpkeepTriggeredAbility(new DrawCardTargetEffect(1)); - ability.addEffect(new LoseLifeTargetEffect(1).setText("and loses 1 life")); + ability.addEffect(new LoseLifeTargetEffect(1).withTargetDescription("and")); ability.addTarget(new TargetPlayer()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DoctorDoom.java b/Mage.Sets/src/mage/cards/d/DoctorDoom.java index 1006beb5aad..b50c370aee6 100644 --- a/Mage.Sets/src/mage/cards/d/DoctorDoom.java +++ b/Mage.Sets/src/mage/cards/d/DoctorDoom.java @@ -68,7 +68,7 @@ public final class DoctorDoom extends CardImpl { // At the beginning of your end step, you draw a card and lose 1 life. Ability ability = new BeginningOfEndStepTriggeredAbility(new DrawCardSourceControllerEffect(1, true)); - ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); + ability.addEffect(new LoseLifeSourceControllerEffect(1, false).concatBy("and")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DreadPresence.java b/Mage.Sets/src/mage/cards/d/DreadPresence.java index 915655030f6..9ac7c82e511 100644 --- a/Mage.Sets/src/mage/cards/d/DreadPresence.java +++ b/Mage.Sets/src/mage/cards/d/DreadPresence.java @@ -35,7 +35,7 @@ public final class DreadPresence extends CardImpl { // Whenever a Swamp you control enters, choose one --- // • You draw a card and you lose 1 life. Ability ability = new EntersBattlefieldControlledTriggeredAbility( - new DrawCardSourceControllerEffect(1).setText("you draw a card"), filter + new DrawCardSourceControllerEffect(1, true), filter ); ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); diff --git a/Mage.Sets/src/mage/cards/e/EyeOfVecna.java b/Mage.Sets/src/mage/cards/e/EyeOfVecna.java index 3a1aec13464..7785a0dbd52 100644 --- a/Mage.Sets/src/mage/cards/e/EyeOfVecna.java +++ b/Mage.Sets/src/mage/cards/e/EyeOfVecna.java @@ -1,12 +1,12 @@ package mage.cards.e; import mage.abilities.Ability; -import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; +import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -26,19 +26,15 @@ public final class EyeOfVecna extends CardImpl { // When Eye of Vecna enters the battlefield, you draw a card and you lose 2 life. Ability ability = new EntersBattlefieldTriggeredAbility( - new DrawCardSourceControllerEffect(1).setText("you draw a card") + new DrawCardSourceControllerEffect(1, true) ); ability.addEffect(new LoseLifeSourceControllerEffect(2).concatBy("and")); this.addAbility(ability); // At the beginning of your upkeep, you may pay {2}. If you do, you draw a card and you lose 2 life. - this.addAbility(new BeginningOfUpkeepTriggeredAbility( - new DoIfCostPaid( - new DrawCardSourceControllerEffect(1) - .setText("you draw a card"), - new GenericManaCost(2) - ).addEffect(new LoseLifeSourceControllerEffect(2).concatBy("and")) - )); + this.addAbility(new BeginningOfUpkeepTriggeredAbility(new DoIfCostPaid( + new DrawCardSourceControllerEffect(1, true), new GenericManaCost(2) + ).addEffect(new LoseLifeSourceControllerEffect(2).concatBy("and")))); } private EyeOfVecna(final EyeOfVecna card) { diff --git a/Mage.Sets/src/mage/cards/f/FaerieMastermind.java b/Mage.Sets/src/mage/cards/f/FaerieMastermind.java index 62cdac26bd8..5fdfdb809e9 100644 --- a/Mage.Sets/src/mage/cards/f/FaerieMastermind.java +++ b/Mage.Sets/src/mage/cards/f/FaerieMastermind.java @@ -33,8 +33,7 @@ public class FaerieMastermind extends CardImpl { //Whenever an opponent draws their second card each turn, you draw a card. this.addAbility(new DrawNthCardTriggeredAbility( - new DrawCardSourceControllerEffect(1) - .setText("you draw a card"), + new DrawCardSourceControllerEffect(1, true), false, TargetController.OPPONENT, 2 )); diff --git a/Mage.Sets/src/mage/cards/f/FellStinger.java b/Mage.Sets/src/mage/cards/f/FellStinger.java index 8a9e4fdb051..a13c7b69e80 100644 --- a/Mage.Sets/src/mage/cards/f/FellStinger.java +++ b/Mage.Sets/src/mage/cards/f/FellStinger.java @@ -36,7 +36,7 @@ public final class FellStinger extends CardImpl { // When Fell Stinger exploits a creature, target player draws two cards and loses 2 life. Ability ability = new ExploitCreatureTriggeredAbility(new DrawCardTargetEffect(2)); - ability.addEffect(new LoseLifeTargetEffect(2).setText("and loses 2 life")); + ability.addEffect(new LoseLifeTargetEffect(2).withTargetDescription("and")); ability.addTarget(new TargetPlayer()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FirstSphereGargantua.java b/Mage.Sets/src/mage/cards/f/FirstSphereGargantua.java index a58301d0172..b7f045cac74 100644 --- a/Mage.Sets/src/mage/cards/f/FirstSphereGargantua.java +++ b/Mage.Sets/src/mage/cards/f/FirstSphereGargantua.java @@ -29,7 +29,7 @@ public final class FirstSphereGargantua extends CardImpl { // When First-Sphere Gargantua enters the battlefield, you draw a card and you lose 1 life. Ability ability = new EntersBattlefieldTriggeredAbility( - new DrawCardSourceControllerEffect(1).setText("you draw a card") + new DrawCardSourceControllerEffect(1, true) ); ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/f/ForebodingFruit.java b/Mage.Sets/src/mage/cards/f/ForebodingFruit.java index 506fa270887..41c9cc1bfa7 100644 --- a/Mage.Sets/src/mage/cards/f/ForebodingFruit.java +++ b/Mage.Sets/src/mage/cards/f/ForebodingFruit.java @@ -23,7 +23,7 @@ public final class ForebodingFruit extends CardImpl { // Target player draws two cards and loses 2 life. this.getSpellAbility().addEffect(new DrawCardTargetEffect(2)); - this.getSpellAbility().addEffect(new LoseLifeTargetEffect(2).setText("and loses 2 life")); + this.getSpellAbility().addEffect(new LoseLifeTargetEffect(2).withTargetDescription("and")); this.getSpellAbility().addTarget(new TargetPlayer()); // Adamant — If at least three black mana was spent to cast this spell, create a Food token. diff --git a/Mage.Sets/src/mage/cards/f/FoulmireKnight.java b/Mage.Sets/src/mage/cards/f/FoulmireKnight.java index 11df26d2c4f..34ade587b09 100644 --- a/Mage.Sets/src/mage/cards/f/FoulmireKnight.java +++ b/Mage.Sets/src/mage/cards/f/FoulmireKnight.java @@ -29,7 +29,7 @@ public final class FoulmireKnight extends AdventureCard { // Profane Insight // You draw a card and you lose 1 life. - this.getSpellCard().getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).setText("You draw a card")); + this.getSpellCard().getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1, true)); this.getSpellCard().getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); this.finalizeAdventure(); diff --git a/Mage.Sets/src/mage/cards/f/FuneralRites.java b/Mage.Sets/src/mage/cards/f/FuneralRites.java index 7c12689b3a0..50e5095e97f 100644 --- a/Mage.Sets/src/mage/cards/f/FuneralRites.java +++ b/Mage.Sets/src/mage/cards/f/FuneralRites.java @@ -18,8 +18,7 @@ public final class FuneralRites extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}"); // You draw two cards, lose 2 life, and put the top two cards of your library into your graveyard - this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2) - .setText("You draw two cards")); + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2, true)); this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(2) .setText(", lose 2 life")); this.getSpellAbility().addEffect(new MillCardsControllerEffect(2) diff --git a/Mage.Sets/src/mage/cards/f/FungalShambler.java b/Mage.Sets/src/mage/cards/f/FungalShambler.java index 6a501fb5c27..d89d27ce857 100644 --- a/Mage.Sets/src/mage/cards/f/FungalShambler.java +++ b/Mage.Sets/src/mage/cards/f/FungalShambler.java @@ -1,11 +1,8 @@ - package mage.cards.f; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DealsDamageToOpponentTriggeredAbility; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.discard.DiscardTargetEffect; import mage.abilities.keyword.TrampleAbility; @@ -14,8 +11,9 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; +import java.util.UUID; + /** - * * @author LoneFox */ public final class FungalShambler extends CardImpl { @@ -29,13 +27,10 @@ public final class FungalShambler extends CardImpl { // Trample this.addAbility(TrampleAbility.getInstance()); + // Whenever Fungal Shambler deals damage to an opponent, you draw a card and that opponent discards a card. - Effect effect = new DrawCardSourceControllerEffect(1); - effect.setText("you draw a card"); - Ability ability = new DealsDamageToOpponentTriggeredAbility(effect, false, false, true); - effect = new DiscardTargetEffect(1); - effect.setText("and that opponent discards a card"); - ability.addEffect(effect); + Ability ability = new DealsDamageToOpponentTriggeredAbility(new DrawCardSourceControllerEffect(1), false, false, true); + ability.addEffect(new DiscardTargetEffect(1).setText("and that opponent discards a card")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GlintSleeveSiphoner.java b/Mage.Sets/src/mage/cards/g/GlintSleeveSiphoner.java index e258dd17008..165d00f4276 100644 --- a/Mage.Sets/src/mage/cards/g/GlintSleeveSiphoner.java +++ b/Mage.Sets/src/mage/cards/g/GlintSleeveSiphoner.java @@ -1,7 +1,6 @@ package mage.cards.g; import mage.MageInt; -import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.EntersBattlefieldOrAttacksSourceTriggeredAbility; import mage.abilities.costs.common.PayEnergyCost; import mage.abilities.effects.common.DoIfCostPaid; @@ -9,6 +8,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect; import mage.abilities.keyword.MenaceAbility; +import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -37,7 +37,7 @@ public final class GlintSleeveSiphoner extends CardImpl { // At the beginning of your upkeep, you may pay {E}{E}. If you do, draw a card and you lose 1 life. this.addAbility(new BeginningOfUpkeepTriggeredAbility(new DoIfCostPaid( - new DrawCardSourceControllerEffect(1).setText("you draw a card"), new PayEnergyCost(2) + new DrawCardSourceControllerEffect(1, true), new PayEnergyCost(2) ).addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")))); } diff --git a/Mage.Sets/src/mage/cards/h/HarrowingJourney.java b/Mage.Sets/src/mage/cards/h/HarrowingJourney.java index 1775707ee30..c8b2cd87bc1 100644 --- a/Mage.Sets/src/mage/cards/h/HarrowingJourney.java +++ b/Mage.Sets/src/mage/cards/h/HarrowingJourney.java @@ -1,6 +1,5 @@ package mage.cards.h; -import java.util.UUID; import mage.abilities.effects.common.DrawCardTargetEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.cards.CardImpl; @@ -8,18 +7,19 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.target.TargetPlayer; +import java.util.UUID; + /** - * * @author Loki */ public final class HarrowingJourney extends CardImpl { public HarrowingJourney(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}"); // Target player draws three cards and loses 3 life. this.getSpellAbility().addEffect(new DrawCardTargetEffect(3)); - this.getSpellAbility().addEffect(new LoseLifeTargetEffect(3).setText("and loses 3 life")); + this.getSpellAbility().addEffect(new LoseLifeTargetEffect(3).withTargetDescription("and")); this.getSpellAbility().addTarget(new TargetPlayer()); } diff --git a/Mage.Sets/src/mage/cards/h/HenrikaDomnathi.java b/Mage.Sets/src/mage/cards/h/HenrikaDomnathi.java index c85473cec50..45e6667b3ba 100644 --- a/Mage.Sets/src/mage/cards/h/HenrikaDomnathi.java +++ b/Mage.Sets/src/mage/cards/h/HenrikaDomnathi.java @@ -60,7 +60,7 @@ public final class HenrikaDomnathi extends TransformingDoubleFacedCard { ability.getModes().setLimitUsageByOnce(false); // • You draw a card and you lose 1 life. - Mode mode = new Mode(new DrawCardSourceControllerEffect(1).setText("you draw a card")); + Mode mode = new Mode(new DrawCardSourceControllerEffect(1)); mode.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); mode.setModeTag("draw and lose life"); ability.addMode(mode); diff --git a/Mage.Sets/src/mage/cards/i/InsatiableAvarice.java b/Mage.Sets/src/mage/cards/i/InsatiableAvarice.java index 8c404e52275..d5ad02e7d0d 100644 --- a/Mage.Sets/src/mage/cards/i/InsatiableAvarice.java +++ b/Mage.Sets/src/mage/cards/i/InsatiableAvarice.java @@ -32,7 +32,7 @@ public final class InsatiableAvarice extends CardImpl { // + {B}{B} -- Target player draws three cards and loses 3 life. this.getSpellAbility().addMode(new Mode(new DrawCardTargetEffect(3)) - .addEffect(new LoseLifeTargetEffect(3).setText("and loses 3 life")) + .addEffect(new LoseLifeTargetEffect(3).withTargetDescription("and")) .addTarget(new TargetPlayer()) .withCost(new ManaCostsImpl<>("{B}{B}"))); } diff --git a/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java b/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java index 7f6491db3fe..8821beaf800 100644 --- a/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java +++ b/Mage.Sets/src/mage/cards/k/KothophedSoulHoarder.java @@ -1,31 +1,19 @@ - package mage.cards.k; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.ZoneChangeAllTriggeredAbility; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.abilities.keyword.FlyingAbility; -import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.SuperType; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.ZoneChangeEvent; -import mage.players.Player; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class KothophedSoulHoarder extends CardImpl { @@ -37,7 +25,7 @@ public final class KothophedSoulHoarder extends CardImpl { } public KothophedSoulHoarder(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}"); this.supertype.add(SuperType.LEGENDARY); this.subtype.add(SubType.DEMON); this.power = new MageInt(6); @@ -47,13 +35,13 @@ public final class KothophedSoulHoarder extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Whenever a permanent owned by another player is put into the graveyard from the battlefield, you draw one card and lose 1 life. - Effect effect = new DrawCardSourceControllerEffect(1); - effect.setText("you draw a card"); - Ability ability = new ZoneChangeAllTriggeredAbility(Zone.BATTLEFIELD, Zone.BATTLEFIELD, Zone.GRAVEYARD, effect, filter, - "Whenever a permanent owned by another player is put into a graveyard from the battlefield, ", false); - effect = new LoseLifeSourceControllerEffect(1); - effect.setText("and you lose 1 life"); - ability.addEffect(effect); + Ability ability = new ZoneChangeAllTriggeredAbility( + Zone.BATTLEFIELD, Zone.BATTLEFIELD, Zone.GRAVEYARD, + new DrawCardSourceControllerEffect(1, true), + filter, "Whenever a permanent owned by another player " + + "is put into a graveyard from the battlefield, ", false + ); + ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); this.addAbility(ability); } @@ -66,36 +54,3 @@ public final class KothophedSoulHoarder extends CardImpl { return new KothophedSoulHoarder(this); } } - -class KothophedSoulHoarderTriggeredAbility extends TriggeredAbilityImpl { - - public KothophedSoulHoarderTriggeredAbility(Effect effect) { - super(Zone.BATTLEFIELD, effect); - setTriggerPhrase("Whenever a creature leaves an opponent's graveyard, "); - } - - private KothophedSoulHoarderTriggeredAbility(final KothophedSoulHoarderTriggeredAbility ability) { - super(ability); - } - - @Override - public KothophedSoulHoarderTriggeredAbility copy() { - return new KothophedSoulHoarderTriggeredAbility(this); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.ZONE_CHANGE; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - ZoneChangeEvent zEvent = (ZoneChangeEvent) event; - if (zEvent.getToZone() == Zone.GRAVEYARD && zEvent.getFromZone() == Zone.BATTLEFIELD) { - Card card = game.getCard(zEvent.getTargetId()); - Player controller = game.getPlayer(getControllerId()); - return card != null && controller != null && controller.hasOpponent(card.getOwnerId(), game); - } - return false; - } -} diff --git a/Mage.Sets/src/mage/cards/l/LilianasContract.java b/Mage.Sets/src/mage/cards/l/LilianasContract.java index be8b6ba2e5e..93afd0344a8 100644 --- a/Mage.Sets/src/mage/cards/l/LilianasContract.java +++ b/Mage.Sets/src/mage/cards/l/LilianasContract.java @@ -28,7 +28,7 @@ public final class LilianasContract extends CardImpl { // When Liliana's Contract enters the battlefield, you draw four cards and you lose 4 life. Ability ability = new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(4, true)); - ability.addEffect(new LoseLifeSourceControllerEffect(4).setText("and you lose 4 life")); + ability.addEffect(new LoseLifeSourceControllerEffect(4).concatBy("and")); this.addAbility(ability); // At the beginning of your upkeep, if you control four or more Demons with different names, you win the game. diff --git a/Mage.Sets/src/mage/cards/l/LiveFast.java b/Mage.Sets/src/mage/cards/l/LiveFast.java index 28270b8bb7e..292e5df0498 100644 --- a/Mage.Sets/src/mage/cards/l/LiveFast.java +++ b/Mage.Sets/src/mage/cards/l/LiveFast.java @@ -1,8 +1,6 @@ package mage.cards.l; -import java.util.UUID; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect; @@ -10,25 +8,20 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import java.util.UUID; + /** - * * @author fireshoes */ public final class LiveFast extends CardImpl { public LiveFast(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}"); // You draw two cards, lose 2 life, and get {E}{E}. - Effect effect = new DrawCardSourceControllerEffect(2); - effect.setText("You draw two cards"); - getSpellAbility().addEffect(effect); - effect = new LoseLifeSourceControllerEffect(2); - effect.setText(", lose 2 life"); - getSpellAbility().addEffect(effect); - effect = new GetEnergyCountersControllerEffect(2); - effect.setText(", and get {E}{E} (two energy counters)."); - getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2, true)); + this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(2).setText(", lose 2 life")); + this.getSpellAbility().addEffect(new GetEnergyCountersControllerEffect(2).setText(", and get {E}{E} (two energy counters).")); } private LiveFast(final LiveFast card) { diff --git a/Mage.Sets/src/mage/cards/l/LolthSpiderQueen.java b/Mage.Sets/src/mage/cards/l/LolthSpiderQueen.java index 9646e03e6cd..e79468de16c 100644 --- a/Mage.Sets/src/mage/cards/l/LolthSpiderQueen.java +++ b/Mage.Sets/src/mage/cards/l/LolthSpiderQueen.java @@ -39,7 +39,7 @@ public final class LolthSpiderQueen extends CardImpl { )); // 0: You draw a card and you lose 1 life. - Ability ability = new LoyaltyAbility(new DrawCardSourceControllerEffect(1).setText("you draw a card"), 0); + Ability ability = new LoyaltyAbility(new DrawCardSourceControllerEffect(1, true), 0); ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/m/MeasureOfWickedness.java b/Mage.Sets/src/mage/cards/m/MeasureOfWickedness.java index 8021e47408f..ef56a4cafcb 100644 --- a/Mage.Sets/src/mage/cards/m/MeasureOfWickedness.java +++ b/Mage.Sets/src/mage/cards/m/MeasureOfWickedness.java @@ -36,7 +36,6 @@ public final class MeasureOfWickedness extends CardImpl { // At the beginning of your end step, sacrifice Measure of Wickedness and you lose 8 life. Ability ability = new BeginningOfEndStepTriggeredAbility(TargetController.YOU, new SacrificeSourceEffect(), false, null); Effect effect = new LoseLifeSourceControllerEffect(8); - effect.setText("and you lose 8 life"); ability.addEffect(effect); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/m/MoriokReplica.java b/Mage.Sets/src/mage/cards/m/MoriokReplica.java index 0bbd7b7f5da..b9a18be2f22 100644 --- a/Mage.Sets/src/mage/cards/m/MoriokReplica.java +++ b/Mage.Sets/src/mage/cards/m/MoriokReplica.java @@ -1,42 +1,36 @@ - - package mage.cards.m; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.Zone; + +import java.util.UUID; /** - * * @author Loki */ public final class MoriokReplica extends CardImpl { - public MoriokReplica (UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}"); + public MoriokReplica(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}"); this.subtype.add(SubType.WARRIOR); this.power = new MageInt(2); this.toughness = new MageInt(2); - + // {1}{B}, Sacrifice Moriok Replica: You draw two cards and you lose 2 life. - Effect effect = new DrawCardSourceControllerEffect(2); - effect.setText("You draw two cards"); - Ability ability = new SimpleActivatedAbility(effect, new ManaCostsImpl<>("{1}{B}")); - effect = new LoseLifeSourceControllerEffect(2); - effect.setText("and you lose 2 life"); + Ability ability = new SimpleActivatedAbility( + new DrawCardSourceControllerEffect(2, true), new ManaCostsImpl<>("{1}{B}") + ); ability.addCost(new SacrificeSourceCost()); - ability.addEffect(effect); + ability.addEffect(new LoseLifeSourceControllerEffect(2).concatBy("and")); this.addAbility(ability); } @@ -48,5 +42,4 @@ public final class MoriokReplica extends CardImpl { public MoriokReplica copy() { return new MoriokReplica(this); } - } diff --git a/Mage.Sets/src/mage/cards/n/NightsWhisper.java b/Mage.Sets/src/mage/cards/n/NightsWhisper.java index 3bbcb8b6dc3..64a0e7648e8 100644 --- a/Mage.Sets/src/mage/cards/n/NightsWhisper.java +++ b/Mage.Sets/src/mage/cards/n/NightsWhisper.java @@ -1,26 +1,25 @@ package mage.cards.n; -import java.util.UUID; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import java.util.UUID; + /** - * * @author jonubuu */ public final class NightsWhisper extends CardImpl { public NightsWhisper(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}"); - + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}"); // You draw two cards and you lose 2 life. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2, true)); - this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(2).concatBy("and")); + this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(2, false).concatBy("and")); } private NightsWhisper(final NightsWhisper card) { diff --git a/Mage.Sets/src/mage/cards/n/NivMizzetParun.java b/Mage.Sets/src/mage/cards/n/NivMizzetParun.java index c693f75898a..36b717bc6be 100644 --- a/Mage.Sets/src/mage/cards/n/NivMizzetParun.java +++ b/Mage.Sets/src/mage/cards/n/NivMizzetParun.java @@ -1,6 +1,5 @@ package mage.cards.n; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.CantBeCounteredSourceAbility; @@ -8,17 +7,18 @@ import mage.abilities.common.DrawCardControllerTriggeredAbility; import mage.abilities.common.SpellCastAllTriggeredAbility; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; -import mage.constants.SubType; -import mage.constants.SuperType; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; import mage.filter.StaticFilters; import mage.target.common.TargetAnyTarget; +import java.util.UUID; + /** - * * @author TheElk801 */ public final class NivMizzetParun extends CardImpl { @@ -47,7 +47,7 @@ public final class NivMizzetParun extends CardImpl { // Whenever a player casts an instant or sorcery spell, you draw a card. this.addAbility(new SpellCastAllTriggeredAbility( - new DrawCardSourceControllerEffect(1).setText("you draw a card"), + new DrawCardSourceControllerEffect(1, true), StaticFilters.FILTER_SPELL_AN_INSTANT_OR_SORCERY, false )); } diff --git a/Mage.Sets/src/mage/cards/n/NoviceOccultist.java b/Mage.Sets/src/mage/cards/n/NoviceOccultist.java index 67ee4ae8510..f42ecfbb98c 100644 --- a/Mage.Sets/src/mage/cards/n/NoviceOccultist.java +++ b/Mage.Sets/src/mage/cards/n/NoviceOccultist.java @@ -27,7 +27,7 @@ public final class NoviceOccultist extends CardImpl { // When Novice Occultist dies, you draw a card and you lose 1 life. Ability ability = new DiesSourceTriggeredAbility( - new DrawCardSourceControllerEffect(1).setText("you draw a card") + new DrawCardSourceControllerEffect(1, true) ); ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/p/PainfulLesson.java b/Mage.Sets/src/mage/cards/p/PainfulLesson.java index 198b90aa2cc..57dcda87adb 100644 --- a/Mage.Sets/src/mage/cards/p/PainfulLesson.java +++ b/Mage.Sets/src/mage/cards/p/PainfulLesson.java @@ -1,8 +1,5 @@ - package mage.cards.p; -import java.util.UUID; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardTargetEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.cards.CardImpl; @@ -10,8 +7,9 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.target.TargetPlayer; +import java.util.UUID; + /** - * * @author fireshoes */ public final class PainfulLesson extends CardImpl { @@ -22,9 +20,7 @@ public final class PainfulLesson extends CardImpl { // Target player draws two cards and loses 2 life. this.getSpellAbility().addTarget(new TargetPlayer()); this.getSpellAbility().addEffect(new DrawCardTargetEffect(2)); - Effect effect = new LoseLifeTargetEffect(2); - effect.setText("and loses 2 life"); - this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(new LoseLifeTargetEffect(2).withTargetDescription("and")); } private PainfulLesson(final PainfulLesson card) { diff --git a/Mage.Sets/src/mage/cards/p/PainfulTruths.java b/Mage.Sets/src/mage/cards/p/PainfulTruths.java index 9064c4f8d8a..acdb5a1a199 100644 --- a/Mage.Sets/src/mage/cards/p/PainfulTruths.java +++ b/Mage.Sets/src/mage/cards/p/PainfulTruths.java @@ -1,9 +1,6 @@ - package mage.cards.p; -import java.util.UUID; import mage.abilities.dynamicvalue.common.ColorsOfManaSpentToCastCount; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.cards.CardImpl; @@ -11,23 +8,22 @@ import mage.cards.CardSetInfo; import mage.constants.AbilityWord; import mage.constants.CardType; +import java.util.UUID; + /** - * * @author fireshoes */ public final class PainfulTruths extends CardImpl { public PainfulTruths(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}"); // Converge — You draw X cards and lose X life, where X is the number of colors of mana spent to cast Painful Truths. - getSpellAbility().setAbilityWord(AbilityWord.CONVERGE); - Effect effect = new DrawCardSourceControllerEffect(ColorsOfManaSpentToCastCount.getInstance()); - effect.setText("You draw X cards"); - getSpellAbility().addEffect(effect); - effect = new LoseLifeSourceControllerEffect(ColorsOfManaSpentToCastCount.getInstance()); - effect.setText("and you lose X life, where X is the number of colors of mana spent to cast this spell"); - getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(ColorsOfManaSpentToCastCount.getInstance()) + .setText("you draw X cards")); + this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(ColorsOfManaSpentToCastCount.getInstance()) + .setText("and lose X life, where X is the number of colors of mana spent to cast this spell")); + this.getSpellAbility().setAbilityWord(AbilityWord.CONVERGE); } private PainfulTruths(final PainfulTruths card) { diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianRager.java b/Mage.Sets/src/mage/cards/p/PhyrexianRager.java index a3e6ad0e9a0..7e86fdec400 100644 --- a/Mage.Sets/src/mage/cards/p/PhyrexianRager.java +++ b/Mage.Sets/src/mage/cards/p/PhyrexianRager.java @@ -25,7 +25,7 @@ public final class PhyrexianRager extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); Ability ability = new EntersBattlefieldTriggeredAbility( - new DrawCardSourceControllerEffect(1).setText("you draw a card"), false + new DrawCardSourceControllerEffect(1, true), false ); ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/p/PlumbTheForbidden.java b/Mage.Sets/src/mage/cards/p/PlumbTheForbidden.java index 32d7e32de69..1e17a26edeb 100644 --- a/Mage.Sets/src/mage/cards/p/PlumbTheForbidden.java +++ b/Mage.Sets/src/mage/cards/p/PlumbTheForbidden.java @@ -28,7 +28,7 @@ public final class PlumbTheForbidden extends CardImpl { this.getSpellAbility().addCost(new PlumbTheForbiddenCost()); // You draw a card and you lose 1 life. - this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).setText("you draw a card")); + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1, true)); this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); } diff --git a/Mage.Sets/src/mage/cards/p/PromiseOfPower.java b/Mage.Sets/src/mage/cards/p/PromiseOfPower.java index baf58f0def8..0d995fb340a 100644 --- a/Mage.Sets/src/mage/cards/p/PromiseOfPower.java +++ b/Mage.Sets/src/mage/cards/p/PromiseOfPower.java @@ -2,9 +2,7 @@ package mage.cards.p; import mage.abilities.Ability; import mage.abilities.Mode; -import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.abilities.keyword.EntwineAbility; @@ -31,16 +29,11 @@ public final class PromiseOfPower extends CardImpl { this.getSpellAbility().getModes().setMaxModes(1); // - You draw five cards and you lose 5 life. - Effect effect = new DrawCardSourceControllerEffect(5); - effect.setText("You draw five cards"); - this.getSpellAbility().addEffect(effect); - effect = new LoseLifeSourceControllerEffect(5); - effect.setText("and you lose 5 life"); - this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(5, true)); + this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(5).concatBy("and")); // - Create an X/X black Demon creature token with flying, where X is the number of cards in your hand. - Mode mode = new Mode(new PromiseOfPowerEffect()); - this.getSpellAbility().getModes().addMode(mode); + this.getSpellAbility().getModes().addMode(new Mode(new PromiseOfPowerEffect())); // Entwine {4} this.addAbility(new EntwineAbility("{4}")); @@ -70,10 +63,7 @@ class PromiseOfPowerEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - if (controller != null) { - return new CreateTokenEffect(new DemonFlyingToken(controller.getHand().size())).apply(game, source); - } - return false; + return controller != null && new DemonFlyingToken(controller.getHand().size()).putOntoBattlefield(1, game, source); } @Override diff --git a/Mage.Sets/src/mage/cards/r/RiveteersConfluence.java b/Mage.Sets/src/mage/cards/r/RiveteersConfluence.java index a275504214a..eca685132e3 100644 --- a/Mage.Sets/src/mage/cards/r/RiveteersConfluence.java +++ b/Mage.Sets/src/mage/cards/r/RiveteersConfluence.java @@ -1,7 +1,10 @@ package mage.cards.r; import mage.abilities.Mode; -import mage.abilities.effects.common.*; +import mage.abilities.effects.common.DamageAllEffect; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.LoseLifeSourceControllerEffect; +import mage.abilities.effects.common.PutCardFromHandOrGraveyardOntoBattlefieldEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -32,7 +35,7 @@ public class RiveteersConfluence extends CardImpl { this.getSpellAbility().getModes().setMayChooseSameModeMoreThanOnce(true); //• You draw a card and you lose 1 life. - this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).setText("you draw a card")); + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1, true)); this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); //• Riveteers Confluence deals 1 damage to each creature and planeswalker you don’t control. diff --git a/Mage.Sets/src/mage/cards/s/SeizanPerverterOfTruth.java b/Mage.Sets/src/mage/cards/s/SeizanPerverterOfTruth.java index 8f02ce75e01..3206245ee7e 100644 --- a/Mage.Sets/src/mage/cards/s/SeizanPerverterOfTruth.java +++ b/Mage.Sets/src/mage/cards/s/SeizanPerverterOfTruth.java @@ -1,14 +1,10 @@ - - package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardTargetEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; +import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -16,30 +12,26 @@ import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.TargetController; +import java.util.UUID; + /** - * * @author Loki */ public final class SeizanPerverterOfTruth extends CardImpl { - public SeizanPerverterOfTruth (UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}"); + public SeizanPerverterOfTruth(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}"); this.supertype.add(SuperType.LEGENDARY); this.subtype.add(SubType.DEMON); this.subtype.add(SubType.SPIRIT); this.power = new MageInt(6); this.toughness = new MageInt(5); - - // At the beginning of each player's upkeep, that player loses 2 life and draws two cards. - Effect effect = new LoseLifeTargetEffect(2); - effect.setText("that player loses 2 life"); - Ability ability = new BeginningOfUpkeepTriggeredAbility(TargetController.EACH_PLAYER, effect, false); - effect = new DrawCardTargetEffect(2); - effect.setText("and draws two cards"); - ability.addEffect(effect); - this.addAbility(ability); + // At the beginning of each player's upkeep, that player loses 2 life and draws two cards. + Ability ability = new BeginningOfUpkeepTriggeredAbility(TargetController.EACH_PLAYER, new LoseLifeTargetEffect(2), false); + ability.addEffect(new DrawCardTargetEffect(2).withTargetDescription("and")); + this.addAbility(ability); } private SeizanPerverterOfTruth(final SeizanPerverterOfTruth card) { diff --git a/Mage.Sets/src/mage/cards/s/ShadrixSilverquill.java b/Mage.Sets/src/mage/cards/s/ShadrixSilverquill.java index 1d4d3e793a6..a0bba8b25f3 100644 --- a/Mage.Sets/src/mage/cards/s/ShadrixSilverquill.java +++ b/Mage.Sets/src/mage/cards/s/ShadrixSilverquill.java @@ -3,16 +3,19 @@ package mage.cards.s; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.Mode; -import mage.abilities.triggers.BeginningOfCombatTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenTargetEffect; import mage.abilities.effects.common.DrawCardTargetEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.keyword.DoubleStrikeAbility; import mage.abilities.keyword.FlyingAbility; +import mage.abilities.triggers.BeginningOfCombatTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.SubType; +import mage.constants.SuperType; import mage.counters.CounterType; import mage.filter.FilterPlayer; import mage.filter.StaticFilters; @@ -68,7 +71,7 @@ public final class ShadrixSilverquill extends CardImpl { // • Target player draws a card and loses 1 life. ability.addMode(new Mode(new DrawCardTargetEffect(1)) - .addEffect(new LoseLifeTargetEffect(1).setText("and loses 1 life")) + .addEffect(new LoseLifeTargetEffect(1).withTargetDescription("and")) .addTarget(new TargetPlayer(filter2).setTargetTag(2).withChooseHint("to draw a card and lose 1 life"))); // • Target player puts a +1/+1 counter on each creature they control. diff --git a/Mage.Sets/src/mage/cards/s/ShanidSleepersScourge.java b/Mage.Sets/src/mage/cards/s/ShanidSleepersScourge.java index 8a96ffea196..1fc9fcd91f8 100644 --- a/Mage.Sets/src/mage/cards/s/ShanidSleepersScourge.java +++ b/Mage.Sets/src/mage/cards/s/ShanidSleepersScourge.java @@ -56,7 +56,7 @@ public final class ShanidSleepersScourge extends CardImpl { true))); // Whenever you play a legendary land or cast a legendary spell, you draw a card and you lose 1 life. Ability ability = new OrTriggeredAbility(Zone.BATTLEFIELD, - new DrawCardSourceControllerEffect(1).setText("you draw a card"), false, + new DrawCardSourceControllerEffect(1, true), false, "Whenever you play a legendary land or cast a legendary spell, ", new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, null, legendaryLandFilter, true), new SpellCastControllerTriggeredAbility(null, legendarySpellFilter, false) diff --git a/Mage.Sets/src/mage/cards/s/SignInBlood.java b/Mage.Sets/src/mage/cards/s/SignInBlood.java index c71629261ac..526647b4952 100644 --- a/Mage.Sets/src/mage/cards/s/SignInBlood.java +++ b/Mage.Sets/src/mage/cards/s/SignInBlood.java @@ -2,8 +2,6 @@ package mage.cards.s; -import java.util.UUID; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardTargetEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.cards.CardImpl; @@ -11,22 +9,20 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.target.TargetPlayer; +import java.util.UUID; + /** - * * @author BetaSteward_at_googlemail.com */ public final class SignInBlood extends CardImpl { public SignInBlood(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{B}"); - + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}{B}"); // Target player draws two cards and loses 2 life. this.getSpellAbility().addTarget(new TargetPlayer()); this.getSpellAbility().addEffect(new DrawCardTargetEffect(2)); - Effect effect = new LoseLifeTargetEffect(2); - effect.setText("and loses 2 life"); - this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(new LoseLifeTargetEffect(2).withTargetDescription("and")); } private SignInBlood(final SignInBlood card) { diff --git a/Mage.Sets/src/mage/cards/s/SilverquillCommand.java b/Mage.Sets/src/mage/cards/s/SilverquillCommand.java index 4543da487ee..45ef60efd4d 100644 --- a/Mage.Sets/src/mage/cards/s/SilverquillCommand.java +++ b/Mage.Sets/src/mage/cards/s/SilverquillCommand.java @@ -59,7 +59,7 @@ public final class SilverquillCommand extends CardImpl { // • Target player draws a card and loses 1 life. mode = new Mode(new DrawCardTargetEffect(1)); - mode.addEffect(new LoseLifeTargetEffect(1).setText("and loses 1 life")); + mode.addEffect(new LoseLifeTargetEffect(1).withTargetDescription("and")); mode.addTarget(new TargetPlayer()); this.getSpellAbility().addMode(mode); diff --git a/Mage.Sets/src/mage/cards/s/SkeletalScrying.java b/Mage.Sets/src/mage/cards/s/SkeletalScrying.java index 9ea156bbf0b..45e01e98a68 100644 --- a/Mage.Sets/src/mage/cards/s/SkeletalScrying.java +++ b/Mage.Sets/src/mage/cards/s/SkeletalScrying.java @@ -39,12 +39,8 @@ public final class SkeletalScrying extends CardImpl { this.getSpellAbility().setCostAdjuster(SkeletalScryingAdjuster.instance); // You draw X cards and you lose X life. - this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect( - GetXValue.instance - ).setText("you draw X cards")); - this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect( - GetXValue.instance - ).concatBy("and")); + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(GetXValue.instance, true)); + this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(GetXValue.instance).concatBy("and")); } private SkeletalScrying(final SkeletalScrying card) { diff --git a/Mage.Sets/src/mage/cards/s/SkemfarAvenger.java b/Mage.Sets/src/mage/cards/s/SkemfarAvenger.java index 05c048cd6cc..2d40bfdef61 100644 --- a/Mage.Sets/src/mage/cards/s/SkemfarAvenger.java +++ b/Mage.Sets/src/mage/cards/s/SkemfarAvenger.java @@ -44,7 +44,7 @@ public final class SkemfarAvenger extends CardImpl { // Whenever another nontoken Elf or Berserker you control dies, you draw a card and you lose 1 life. Ability ability = new DiesCreatureTriggeredAbility( - new DrawCardSourceControllerEffect(1).setText("you draw a card"), false, filter + new DrawCardSourceControllerEffect(1, true), false, filter ); ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/Slitherwisp.java b/Mage.Sets/src/mage/cards/s/Slitherwisp.java index d1dc58327aa..bb4df3f94aa 100644 --- a/Mage.Sets/src/mage/cards/s/Slitherwisp.java +++ b/Mage.Sets/src/mage/cards/s/Slitherwisp.java @@ -41,9 +41,7 @@ public final class Slitherwisp extends CardImpl { // Whenever you cast another spell with flash, you draw a card and each opponent loses 1 life. Ability ability = new SpellCastControllerTriggeredAbility( - new DrawCardSourceControllerEffect(1) - .setText("you draw a card"), - filter, false + new DrawCardSourceControllerEffect(1, true), filter, false ); ability.addEffect(new LoseLifeOpponentsEffect(1).concatBy("and")); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/SuccumbToTemptation.java b/Mage.Sets/src/mage/cards/s/SuccumbToTemptation.java index 1bc3d402ae8..3b45ddff671 100644 --- a/Mage.Sets/src/mage/cards/s/SuccumbToTemptation.java +++ b/Mage.Sets/src/mage/cards/s/SuccumbToTemptation.java @@ -1,27 +1,24 @@ package mage.cards.s; -import java.util.UUID; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class SuccumbToTemptation extends CardImpl { public SuccumbToTemptation(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}{B}"); // You draw two cards and you lose 2 life. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2, true)); - Effect effect = new LoseLifeSourceControllerEffect(2); - effect.setText("and you lose 2 life"); - this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(2).concatBy("and")); } private SuccumbToTemptation(final SuccumbToTemptation card) { diff --git a/Mage.Sets/src/mage/cards/s/SyrGwynHeroOfAshvale.java b/Mage.Sets/src/mage/cards/s/SyrGwynHeroOfAshvale.java index 6680746e72c..195c9c1c459 100644 --- a/Mage.Sets/src/mage/cards/s/SyrGwynHeroOfAshvale.java +++ b/Mage.Sets/src/mage/cards/s/SyrGwynHeroOfAshvale.java @@ -53,7 +53,7 @@ public final class SyrGwynHeroOfAshvale extends CardImpl { // Whenever an equipped creature you control attacks, you draw a card and you lose 1 life. Ability ability = new AttacksCreatureYouControlTriggeredAbility( - new DrawCardSourceControllerEffect(1).setText("you draw a card"), false, filter + new DrawCardSourceControllerEffect(1, true), false, filter ); ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/t/TheCouncilOfFour.java b/Mage.Sets/src/mage/cards/t/TheCouncilOfFour.java index 0005c82831c..428c1d17c14 100644 --- a/Mage.Sets/src/mage/cards/t/TheCouncilOfFour.java +++ b/Mage.Sets/src/mage/cards/t/TheCouncilOfFour.java @@ -31,8 +31,7 @@ public final class TheCouncilOfFour extends CardImpl { // Whenever a player draws their second card during their turn, you draw a card. this.addAbility(new DrawNthCardTriggeredAbility( - new DrawCardSourceControllerEffect(1) - .setText("you draw a card"), + new DrawCardSourceControllerEffect(1, true), false, TargetController.ACTIVE, 2 )); diff --git a/Mage.Sets/src/mage/cards/t/ToilTrouble.java b/Mage.Sets/src/mage/cards/t/ToilTrouble.java index e904bbcffe7..cde66322ded 100644 --- a/Mage.Sets/src/mage/cards/t/ToilTrouble.java +++ b/Mage.Sets/src/mage/cards/t/ToilTrouble.java @@ -1,7 +1,6 @@ package mage.cards.t; import mage.abilities.dynamicvalue.common.CardsInTargetHandCount; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DrawCardTargetEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; @@ -20,17 +19,14 @@ public final class ToilTrouble extends SplitCard { // Toil // Target player draws two cards and loses 2 life. - getLeftHalfCard().getSpellAbility().addTarget(new TargetPlayer().withChooseHint("to draw two cards and lose 2 life")); - getLeftHalfCard().getSpellAbility().addEffect(new DrawCardTargetEffect(2)); - getLeftHalfCard().getSpellAbility().addEffect(new LoseLifeTargetEffect(2).setText("and loses 2 life")); + this.getLeftHalfCard().getSpellAbility().addTarget(new TargetPlayer().withChooseHint("to draw two cards and lose 2 life")); + this.getLeftHalfCard().getSpellAbility().addEffect(new DrawCardTargetEffect(2)); + this.getLeftHalfCard().getSpellAbility().addEffect(new LoseLifeTargetEffect(2).withTargetDescription("and")); // Trouble // Trouble deals damage to target player equal to the number of cards in that player's hand. - Effect effect = new DamageTargetEffect(CardsInTargetHandCount.instance); - effect.setText("{this} deals damage to target player equal to the number of cards in that player's hand"); - getRightHalfCard().getSpellAbility().addEffect(effect); - getRightHalfCard().getSpellAbility().addTarget(new TargetPlayer().withChooseHint("to deal damage to")); - + this.getRightHalfCard().getSpellAbility().addEffect(new DamageTargetEffect(CardsInTargetHandCount.instance).setText("{this} deals damage to target player equal to the number of cards in that player's hand")); + this.getRightHalfCard().getSpellAbility().addTarget(new TargetPlayer().withChooseHint("to deal damage to")); } private ToilTrouble(final ToilTrouble card) { diff --git a/Mage.Sets/src/mage/cards/u/UndeadAugur.java b/Mage.Sets/src/mage/cards/u/UndeadAugur.java index 0a14cfaf167..5466329b124 100644 --- a/Mage.Sets/src/mage/cards/u/UndeadAugur.java +++ b/Mage.Sets/src/mage/cards/u/UndeadAugur.java @@ -36,7 +36,7 @@ public final class UndeadAugur extends CardImpl { // Whenever Undead Augur or another Zombie you control dies, you draw a card and you lose 1 life. Ability ability = new DiesThisOrAnotherTriggeredAbility( - new DrawCardSourceControllerEffect(1).setText("you draw a card"), false, filter + new DrawCardSourceControllerEffect(1, true), false, filter ); ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/u/UnscrupulousContractor.java b/Mage.Sets/src/mage/cards/u/UnscrupulousContractor.java index 990f8461acb..a9278914d4f 100644 --- a/Mage.Sets/src/mage/cards/u/UnscrupulousContractor.java +++ b/Mage.Sets/src/mage/cards/u/UnscrupulousContractor.java @@ -32,7 +32,7 @@ public final class UnscrupulousContractor extends CardImpl { // When Unscrupulous Contractor enters the battlefield, you may sacrifice a creature. When you do, target player draws two cards and loses 2 life. ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(new DrawCardTargetEffect(2), false); - ability.addEffect(new LoseLifeTargetEffect(2).setText("and loses 2 life")); + ability.addEffect(new LoseLifeTargetEffect(2).withTargetDescription("and")); ability.addTarget(new TargetPlayer()); this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid( ability, new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE), diff --git a/Mage.Sets/src/mage/cards/u/UnwillingIngredient.java b/Mage.Sets/src/mage/cards/u/UnwillingIngredient.java index 26c0be437a0..e8fa354f167 100644 --- a/Mage.Sets/src/mage/cards/u/UnwillingIngredient.java +++ b/Mage.Sets/src/mage/cards/u/UnwillingIngredient.java @@ -34,8 +34,7 @@ public final class UnwillingIngredient extends CardImpl { // {2}{B}, Exile Unwilling Ingredient from your graveyard: You draw a card and you lose 1 life. Ability ability = new SimpleActivatedAbility( Zone.GRAVEYARD, - new DrawCardSourceControllerEffect(1) - .setText("you draw a card"), + new DrawCardSourceControllerEffect(1, true), new ManaCostsImpl<>("{2}{B}") ); ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); diff --git a/Mage.Sets/src/mage/cards/v/VaultPlunderer.java b/Mage.Sets/src/mage/cards/v/VaultPlunderer.java index 25d96b4c814..a62236b99e5 100644 --- a/Mage.Sets/src/mage/cards/v/VaultPlunderer.java +++ b/Mage.Sets/src/mage/cards/v/VaultPlunderer.java @@ -28,7 +28,7 @@ public final class VaultPlunderer extends CardImpl { // When Vault Plunderer enters the battlefield, target player draws a card and loses 1 life. Ability ability = new EntersBattlefieldTriggeredAbility(new DrawCardTargetEffect(1)); - ability.addEffect(new LoseLifeTargetEffect(1).setText("and loses 1 life")); + ability.addEffect(new LoseLifeTargetEffect(1).withTargetDescription("and")); ability.addTarget(new TargetPlayer()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/v/VraskaBetrayalsSting.java b/Mage.Sets/src/mage/cards/v/VraskaBetrayalsSting.java index 6210ec146ef..9243008f40d 100644 --- a/Mage.Sets/src/mage/cards/v/VraskaBetrayalsSting.java +++ b/Mage.Sets/src/mage/cards/v/VraskaBetrayalsSting.java @@ -36,8 +36,8 @@ public final class VraskaBetrayalsSting extends CardImpl { this.addAbility(CompleatedAbility.getInstance()); // 0: You draw a card and you lose 1 life. Proliferate. - Ability ability = new LoyaltyAbility(new DrawCardSourceControllerEffect(1).setText("You draw a card"), 0); - ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and")); + Ability ability = new LoyaltyAbility(new DrawCardSourceControllerEffect(1, true), 0); + ability.addEffect(new LoseLifeSourceControllerEffect(1, false).concatBy("and")); ability.addEffect(new ProliferateEffect(false)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/v/VulturousAven.java b/Mage.Sets/src/mage/cards/v/VulturousAven.java index 0bfa598aea8..11b6dea4cf1 100644 --- a/Mage.Sets/src/mage/cards/v/VulturousAven.java +++ b/Mage.Sets/src/mage/cards/v/VulturousAven.java @@ -1,11 +1,8 @@ - package mage.cards.v; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.ExploitCreatureTriggeredAbility; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.abilities.keyword.ExploitAbility; @@ -15,14 +12,15 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class VulturousAven extends CardImpl { public VulturousAven(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); this.subtype.add(SubType.BIRD); this.subtype.add(SubType.SHAMAN); this.power = new MageInt(2); @@ -30,17 +28,13 @@ public final class VulturousAven extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); - + // Exploit this.addAbility(new ExploitAbility()); // When Vulturous Aven exploits a creature, you draw two cards and you lose 2 life. - Effect effect = new DrawCardSourceControllerEffect(2); - effect.setText("you draw two cards"); - Ability ability = new ExploitCreatureTriggeredAbility(effect, false); - effect = new LoseLifeSourceControllerEffect(2); - effect.setText("and you lose 2 life"); - ability.addEffect(effect); + Ability ability = new ExploitCreatureTriggeredAbility(new DrawCardSourceControllerEffect(2, true), false); + ability.addEffect(new LoseLifeSourceControllerEffect(2).concatBy("and")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WretchedConfluence.java b/Mage.Sets/src/mage/cards/w/WretchedConfluence.java index 822b18e3e83..10dab9dc034 100644 --- a/Mage.Sets/src/mage/cards/w/WretchedConfluence.java +++ b/Mage.Sets/src/mage/cards/w/WretchedConfluence.java @@ -1,9 +1,6 @@ - package mage.cards.w; -import java.util.UUID; import mage.abilities.Mode; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardTargetEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; @@ -11,14 +8,14 @@ import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Duration; import mage.filter.StaticFilters; import mage.target.TargetPlayer; import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author fireshoes */ public final class WretchedConfluence extends CardImpl { @@ -32,21 +29,17 @@ public final class WretchedConfluence extends CardImpl { this.getSpellAbility().getModes().setMayChooseSameModeMoreThanOnce(true); // - Target player draws a card and loses 1 life; - Effect effect = new LoseLifeTargetEffect(1); - effect.setText("and loses 1 life"); this.getSpellAbility().addEffect(new DrawCardTargetEffect(1)); - this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(new LoseLifeTargetEffect(1).withTargetDescription("and")); this.getSpellAbility().addTarget(new TargetPlayer()); // Target creature gets -2/-2 until end of turn; - Mode mode = new Mode(new BoostTargetEffect(-2, -2, Duration.EndOfTurn)); - mode.addTarget(new TargetCreaturePermanent()); - this.getSpellAbility().getModes().addMode(mode); + this.getSpellAbility().getModes().addMode(new Mode(new BoostTargetEffect(-2, -2)) + .addTarget(new TargetCreaturePermanent())); // Return target creature card from your graveyard to your hand. - mode = new Mode(new ReturnFromGraveyardToHandTargetEffect()); - mode.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD)); - this.getSpellAbility().getModes().addMode(mode); + this.getSpellAbility().getModes().addMode(new Mode(new ReturnFromGraveyardToHandTargetEffect()) + .addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD))); } private WretchedConfluence(final WretchedConfluence card) { diff --git a/Mage.Sets/src/mage/cards/z/ZukoConflicted.java b/Mage.Sets/src/mage/cards/z/ZukoConflicted.java index 9d528c62fdc..42c7b6e7cb2 100644 --- a/Mage.Sets/src/mage/cards/z/ZukoConflicted.java +++ b/Mage.Sets/src/mage/cards/z/ZukoConflicted.java @@ -50,7 +50,7 @@ public final class ZukoConflicted extends CardImpl { // * Add {R}. ability.addMode(new Mode(new BasicManaEffect(Mana.RedMana(1)).setText("add")) - .addEffect(new LoseLifeSourceControllerEffect(2).setText("{R}"))); + .addEffect(new LoseLifeSourceControllerEffect(2).setText(" {R}"))); // * Exile Zuko, then return him to the battlefield under an opponent's control. ability.addMode(new Mode(new ZukoConflictedEffect()) diff --git a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeSourceControllerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeSourceControllerEffect.java index b3e54ac0a94..d38e0cc6fc1 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeSourceControllerEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeSourceControllerEffect.java @@ -1,12 +1,10 @@ - - package mage.abilities.effects.common; -import mage.constants.Outcome; import mage.abilities.Ability; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.OneShotEffect; +import mage.constants.Outcome; import mage.game.Game; import mage.players.Player; @@ -18,13 +16,21 @@ public class LoseLifeSourceControllerEffect extends OneShotEffect { protected DynamicValue amount; public LoseLifeSourceControllerEffect(int amount) { - this(StaticValue.get(amount)); + this(amount, true); + } + + public LoseLifeSourceControllerEffect(int amount, boolean youLose) { + this(StaticValue.get(amount), youLose); } public LoseLifeSourceControllerEffect(DynamicValue amount) { + this(amount, true); + } + + public LoseLifeSourceControllerEffect(DynamicValue amount, boolean youLose) { super(Outcome.LoseLife); this.amount = amount; - setText(); + setText(youLose); } protected LoseLifeSourceControllerEffect(final LoseLifeSourceControllerEffect effect) { @@ -47,9 +53,14 @@ public class LoseLifeSourceControllerEffect extends OneShotEffect { return false; } - private void setText() { + private void setText(boolean youLose) { StringBuilder sb = new StringBuilder(); - sb.append("you lose ").append(amount.toString()).append(" life"); + if (youLose) { + sb.append("you "); + } + sb.append("lose "); + sb.append(amount.toString()); + sb.append(" life"); String message = amount.getMessage(); if (!message.isEmpty()) { sb.append(" for each "); diff --git a/Mage/src/main/java/mage/game/permanent/token/DevilToken.java b/Mage/src/main/java/mage/game/permanent/token/DevilToken.java index 48a2c2b8632..7d49ad7eaa8 100644 --- a/Mage/src/main/java/mage/game/permanent/token/DevilToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/DevilToken.java @@ -15,7 +15,7 @@ import mage.target.common.TargetAnyTarget; public final class DevilToken extends TokenImpl { public DevilToken() { - super("Devil Token", "1/1 red Devil creature token with \"When this creature dies, it deals 1 damage to any target.\""); + super("Devil Token", "1/1 red Devil creature token with \"When this token dies, it deals 1 damage to any target.\""); cardType.add(CardType.CREATURE); subtype.add(SubType.DEVIL); color.setRed(true);