diff --git a/Mage.Sets/src/mage/cards/a/AnyaMercilessAngel.java b/Mage.Sets/src/mage/cards/a/AnyaMercilessAngel.java
index fcd66fa2b2..2accd0b07c 100644
--- a/Mage.Sets/src/mage/cards/a/AnyaMercilessAngel.java
+++ b/Mage.Sets/src/mage/cards/a/AnyaMercilessAngel.java
@@ -1,14 +1,11 @@
-
package mage.cards.a;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.DynamicValue;
-import mage.abilities.dynamicvalue.MultipliedValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
@@ -16,18 +13,22 @@ import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.*;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.SubType;
+import mage.constants.SuperType;
import mage.game.Game;
import mage.players.Player;
+import java.util.UUID;
+
/**
- *
* @author emerald000
*/
public final class AnyaMercilessAngel extends CardImpl {
public AnyaMercilessAngel(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{W}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{W}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.ANGEL);
this.power = new MageInt(4);
@@ -35,21 +36,24 @@ public final class AnyaMercilessAngel extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
-
+
// Anya, Merciless Angel gets +3/+3 for each opponent whose life total is less than half their starting life total.
- DynamicValue dValue = new MultipliedValue(new AnyaMercilessAngelDynamicValue(), 3);
- Effect effect = new BoostSourceEffect(dValue, dValue, Duration.WhileOnBattlefield);
- effect.setText("{this} gets +3/+3 for each opponent whose life total is less than half their starting life total");
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceEffect(dValue, dValue, Duration.WhileOnBattlefield)));
-
+ this.addAbility(new SimpleStaticAbility(new BoostSourceEffect(
+ AnyaMercilessAngelDynamicValue.instance,
+ AnyaMercilessAngelDynamicValue.instance,
+ Duration.WhileOnBattlefield
+ ).setText("{this} gets +3/+3 for each opponent whose life total is less than half their starting life total")));
+
// As long as an opponent's life total is less than half their starting life total, Anya has indestructible.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
- new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
- AnyaMercilessAngelCondition.instance,
- "As long as an opponent's life total is less than half their starting life total, {this} has indestructible")));
+ this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
+ new GainAbilitySourceEffect(
+ IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield
+ ), AnyaMercilessAngelCondition.instance, "As long as an opponent's life total " +
+ "is less than half their starting life total, {this} has indestructible"
+ )));
}
- public AnyaMercilessAngel(final AnyaMercilessAngel card) {
+ private AnyaMercilessAngel(final AnyaMercilessAngel card) {
super(card);
}
@@ -59,27 +63,29 @@ public final class AnyaMercilessAngel extends CardImpl {
}
}
-class AnyaMercilessAngelDynamicValue implements DynamicValue {
+enum AnyaMercilessAngelDynamicValue implements DynamicValue {
+ instance;
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
int opponentCount = 0;
Player controller = game.getPlayer(sourceAbility.getControllerId());
- if (controller != null) {
- int startingLifeTotal = game.getLife();
- for (UUID opponentId : game.getOpponents(controller.getId())) {
- Player opponent = game.getPlayer(opponentId);
- if (opponent != null && opponent.getLife() < startingLifeTotal / 2) {
- opponentCount++;
- }
+ if (controller == null) {
+ return 3 * opponentCount;
+ }
+ int startingLifeTotal = game.getLife();
+ for (UUID opponentId : game.getOpponents(controller.getId())) {
+ Player opponent = game.getPlayer(opponentId);
+ if (opponent != null && opponent.getLife() < startingLifeTotal / 2) {
+ opponentCount++;
}
}
- return opponentCount;
+ return 3 * opponentCount;
}
@Override
public AnyaMercilessAngelDynamicValue copy() {
- return new AnyaMercilessAngelDynamicValue();
+ return instance;
}
@Override
@@ -96,9 +102,10 @@ class AnyaMercilessAngelDynamicValue implements DynamicValue {
enum AnyaMercilessAngelCondition implements Condition {
instance;
+
@Override
public boolean apply(Game game, Ability source) {
- return new AnyaMercilessAngelDynamicValue().calculate(game, source, null) > 0;
+ return AnyaMercilessAngelDynamicValue.instance.calculate(game, source, null) > 0;
}
@Override
diff --git a/Mage.Sets/src/mage/cards/b/BelbesArmor.java b/Mage.Sets/src/mage/cards/b/BelbesArmor.java
index d9cc57f6a2..f3b1409964 100644
--- a/Mage.Sets/src/mage/cards/b/BelbesArmor.java
+++ b/Mage.Sets/src/mage/cards/b/BelbesArmor.java
@@ -1,7 +1,5 @@
-
package mage.cards.b;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
@@ -13,11 +11,11 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.constants.Zone;
import mage.target.common.TargetCreaturePermanent;
+import java.util.UUID;
+
/**
- *
* @author TheElk801
*/
public final class BelbesArmor extends CardImpl {
@@ -26,20 +24,16 @@ public final class BelbesArmor extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
// {X}, {tap}: Target creature gets -X/+X until end of turn.
- Ability ability = new SimpleActivatedAbility(
- Zone.BATTLEFIELD,
- new BoostTargetEffect(
- new MultipliedValue(ManacostVariableValue.instance, -1),
- ManacostVariableValue.instance,
- Duration.EndOfTurn
- ),
- new ManaCostsImpl("{X}"));
+ Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(
+ new MultipliedValue(ManacostVariableValue.instance, -1),
+ ManacostVariableValue.instance, Duration.EndOfTurn
+ ).setText("Target creature gets -X/+X until end of turn"), new ManaCostsImpl("{X}"));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}
- public BelbesArmor(final BelbesArmor card) {
+ private BelbesArmor(final BelbesArmor card) {
super(card);
}
diff --git a/Mage.Sets/src/mage/cards/c/CapitalOffense.java b/Mage.Sets/src/mage/cards/c/CapitalOffense.java
index 56a678cb46..43f2106fb4 100644
--- a/Mage.Sets/src/mage/cards/c/CapitalOffense.java
+++ b/Mage.Sets/src/mage/cards/c/CapitalOffense.java
@@ -1,8 +1,5 @@
-
package mage.cards.c;
-import java.util.List;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.Effect;
@@ -11,15 +8,17 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.repository.CardInfo;
-import mage.constants.CardType;
import mage.cards.repository.CardRepository;
+import mage.constants.CardType;
import mage.constants.Duration;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.common.TargetCreaturePermanent;
+import java.util.List;
+import java.util.UUID;
+
/**
- *
* @author spjspj
*/
public final class CapitalOffense extends CardImpl {
@@ -28,12 +27,15 @@ public final class CapitalOffense extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}{B}");
// target creature gets -x/-x until end of turn, where x is the number of times a capital letter appears in its rules text. (ignore reminder text and flavor text.)
- DynamicValue xValue = new NumberOfCapitalsInTextOfTargetCreatureCount();
- this.getSpellAbility().addEffect(new BoostTargetEffect(xValue, xValue, Duration.EndOfTurn, true));
+ this.getSpellAbility().addEffect(new BoostTargetEffect(
+ capitaloffensecount.instance, capitaloffensecount.instance, Duration.EndOfTurn, true
+ ).setText("target creature gets -x/-x until end of turn, where x is the number of times " +
+ "a capital letter appears in its rules text. (ignore reminder text and flavor text.)"
+ ));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}
- public CapitalOffense(final CapitalOffense card) {
+ private CapitalOffense(final CapitalOffense card) {
super(card);
}
@@ -43,39 +45,43 @@ public final class CapitalOffense extends CardImpl {
}
}
-class NumberOfCapitalsInTextOfTargetCreatureCount implements DynamicValue {
+enum capitaloffensecount implements DynamicValue {
+ instance;
@Override
- public NumberOfCapitalsInTextOfTargetCreatureCount copy() {
- return new NumberOfCapitalsInTextOfTargetCreatureCount();
+ public capitaloffensecount copy() {
+ return instance;
}
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
Permanent permanent = game.getPermanent(sourceAbility.getTargets().get(0).getFirstTarget());
- if (permanent != null) {
- int capitals = 0;
- List cards = CardRepository.instance.findCards(permanent.getName());
+ if (permanent == null) {
+ return 0;
+ }
+ int capitals = 0;
+ List cards = CardRepository.instance.findCards(permanent.getName());
- if (cards != null) {
- for (CardInfo cardInfo : cards) {
- Card dummy = cardInfo != null ? cardInfo.getCard() : null;
- if (dummy != null) {
- for (String line : dummy.getRules()) {
- line = line.replaceAll("(?i)", ""); // Ignoring reminder text in italic
- line = line.replaceAll("\\{this\\}", permanent.getName());
- capitals += line.length() - line.replaceAll("[A-Z]", "").length();
- }
- }
- return -1 * capitals;
- }
+ if (cards == null) {
+ return 0;
+ }
+ for (CardInfo cardInfo : cards) {
+ Card dummy = cardInfo != null ? cardInfo.getCard() : null;
+ if (dummy == null) {
+ return -1 * capitals;
}
+ for (String line : dummy.getRules()) {
+ line = line.replaceAll("(?i)", ""); // Ignoring reminder text in italic
+ line = line.replaceAll("\\{this\\}", permanent.getName());
+ capitals += line.length() - line.replaceAll("[A-Z]", "").length();
+ }
+ return -1 * capitals;
}
return 0;
}
@Override
public String getMessage() {
- return "target creature gets -x/-x until end of turn, where x is the number of times a capital letter appears in its rules text. (ignore reminder text and flavor text.)";
+ return "";
}
}
diff --git a/Mage.Sets/src/mage/cards/j/JandorsRing.java b/Mage.Sets/src/mage/cards/j/JandorsRing.java
index c74ce25a50..13bfcd8a20 100644
--- a/Mage.Sets/src/mage/cards/j/JandorsRing.java
+++ b/Mage.Sets/src/mage/cards/j/JandorsRing.java
@@ -37,8 +37,7 @@ public final class JandorsRing extends CardImpl {
Watcher watcher = new JandorsRingWatcher();
// {2}, {tap}, Discard the last card you drew this turn: Draw a card.
// TODO: discard has to be a cost not a payment during resolution
- Ability ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD,
- new JandorsRingEffect(), new ManaCostsImpl("{2}"), WatchedCardInHandCondition.instance, "Last drawn card still in hand?");
+ Ability ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD, new JandorsRingEffect(), new ManaCostsImpl("{2}"), WatchedCardInHandCondition.instance, "{2}, {T}, Discard the last card you drew this turn: Draw a card.");
ability.addCost(new TapSourceCost());
this.addAbility(ability, watcher);
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/TurnFaceUpTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/TurnFaceUpTargetEffect.java
index e3fbd63110..edcf579fa4 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/TurnFaceUpTargetEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/TurnFaceUpTargetEffect.java
@@ -1,7 +1,5 @@
-
package mage.abilities.effects.common;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.Mode;
import mage.abilities.effects.OneShotEffect;
@@ -9,8 +7,9 @@ import mage.constants.Outcome;
import mage.game.Game;
import mage.game.permanent.Permanent;
+import java.util.UUID;
+
/**
- *
* @author cg5
*/
public class TurnFaceUpTargetEffect extends OneShotEffect {
@@ -42,6 +41,6 @@ public class TurnFaceUpTargetEffect extends OneShotEffect {
@Override
public String getText(Mode mode) {
- return "turn target " + mode.getTargets().toString() + " face-up";
+ return "turn target " + mode.getTargets().get(0).getTargetName() + " face-up";
}
}