Fix remaining raw unparameterized usages of ManaCostImpl

This commit is contained in:
DeepCrimson 2022-06-16 14:53:44 -07:00
parent 4806626ba0
commit 882afbf8b5
No known key found for this signature in database
GPG key ID: A8083B336CCC2BF9
37 changed files with 84 additions and 76 deletions

View file

@ -153,7 +153,7 @@ public class SimulatedPlayer2 extends ComputerPlayer {
if (newAbility instanceof AbilityImpl) { if (newAbility instanceof AbilityImpl) {
xMultiplier = ((AbilityImpl) newAbility).handleManaXMultiplier(game, xMultiplier); xMultiplier = ((AbilityImpl) newAbility).handleManaXMultiplier(game, xMultiplier);
} }
newAbility.getManaCostsToPay().add(new ManaCostsImpl(new StringBuilder("{").append(xAnnounceValue).append('}').toString())); newAbility.getManaCostsToPay().add(new ManaCostsImpl<>(new StringBuilder("{").append(xAnnounceValue).append('}').toString()));
newAbility.getManaCostsToPay().setX(xAnnounceValue * xMultiplier, xAnnounceValue * xInstancesCount); newAbility.getManaCostsToPay().setX(xAnnounceValue * xMultiplier, xAnnounceValue * xInstancesCount);
if (varCost != null) { if (varCost != null) {
varCost.setPaid(); varCost.setPaid();

View file

@ -73,7 +73,7 @@ public class ConditionalAsThoughTest extends CardTestPlayerBase {
Ability ability = new SimpleActivatedAbility( Ability ability = new SimpleActivatedAbility(
Zone.ALL, Zone.ALL,
new InfoEffect("test"), new InfoEffect("test"),
new ManaCostsImpl("{R}") new ManaCostsImpl<>("{R}")
); );
ability.addTarget(new TargetCardInLibrary()); ability.addTarget(new TargetCardInLibrary());
} }
@ -94,7 +94,7 @@ public class ConditionalAsThoughTest extends CardTestPlayerBase {
0 0
) )
).setText("allow target cast"), ).setText("allow target cast"),
new ManaCostsImpl("{R}") new ManaCostsImpl<>("{R}")
); );
ability.addTarget(new TargetCardInOpponentsGraveyard(StaticFilters.FILTER_CARD)); ability.addTarget(new TargetCardInOpponentsGraveyard(StaticFilters.FILTER_CARD));
addCustomCardWithAbility("play any opponent hand", playerA, ability); addCustomCardWithAbility("play any opponent hand", playerA, ability);

View file

@ -207,7 +207,7 @@ public class SparkDoubleTest extends CardTestPlayerBase {
@Test @Test
public void test_CopyOfSparksCopy_ByAbility() { public void test_CopyOfSparksCopy_ByAbility() {
Ability ability = new SimpleActivatedAbility(new CreateTokenCopyTargetEffect(), new ManaCostsImpl("")); Ability ability = new SimpleActivatedAbility(new CreateTokenCopyTargetEffect(), new ManaCostsImpl<>(""));
ability.addTarget(new TargetPermanent()); ability.addTarget(new TargetPermanent());
addCustomCardWithAbility("copy", playerA, ability); addCustomCardWithAbility("copy", playerA, ability);

View file

@ -171,7 +171,7 @@ public class ManaPoolTest extends CardTestPlayerBase {
public void test_ConditionalMana_OneXSpell() { public void test_ConditionalMana_OneXSpell() {
addCustomCardWithAbility("add 10", playerA, new SimpleActivatedAbility(Zone.ALL, addCustomCardWithAbility("add 10", playerA, new SimpleActivatedAbility(Zone.ALL,
new AddConditionalManaEffect(Mana.RedMana(10), new InstantOrSorcerySpellManaBuilder()), new AddConditionalManaEffect(Mana.RedMana(10), new InstantOrSorcerySpellManaBuilder()),
new ManaCostsImpl(""))); new ManaCostsImpl<>("")));
addCard(Zone.HAND, playerA, "Volcanic Geyser"); // {X}{R}{R} addCard(Zone.HAND, playerA, "Volcanic Geyser"); // {X}{R}{R}
// make mana // make mana
@ -197,7 +197,7 @@ public class ManaPoolTest extends CardTestPlayerBase {
public void test_ConditionalMana_MultipleXSpell() { public void test_ConditionalMana_MultipleXSpell() {
addCustomCardWithAbility("add 10", playerA, new SimpleActivatedAbility(Zone.ALL, addCustomCardWithAbility("add 10", playerA, new SimpleActivatedAbility(Zone.ALL,
new AddConditionalManaEffect(Mana.RedMana(10), new InstantOrSorcerySpellManaBuilder()), new AddConditionalManaEffect(Mana.RedMana(10), new InstantOrSorcerySpellManaBuilder()),
new ManaCostsImpl(""))); new ManaCostsImpl<>("")));
addCard(Zone.HAND, playerA, "Volcanic Geyser", 2); // {X}{R}{R} addCard(Zone.HAND, playerA, "Volcanic Geyser", 2); // {X}{R}{R}
// make mana // make mana
@ -229,7 +229,7 @@ public class ManaPoolTest extends CardTestPlayerBase {
public void test_MultipleMana_OneXAbility() { public void test_MultipleMana_OneXAbility() {
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 4); addCard(Zone.BATTLEFIELD, playerA, "Mountain", 4);
// //
Ability ability = new SimpleActivatedAbility(Zone.ALL, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl("{X}")); Ability ability = new SimpleActivatedAbility(Zone.ALL, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl<>("{X}"));
ability.addTarget(new TargetAnyTarget()); ability.addTarget(new TargetAnyTarget());
addCustomCardWithAbility("damage X", playerA, ability); addCustomCardWithAbility("damage X", playerA, ability);
@ -259,9 +259,9 @@ public class ManaPoolTest extends CardTestPlayerBase {
public void test_ConditionalMana_OneXAbility() { public void test_ConditionalMana_OneXAbility() {
addCustomCardWithAbility("add 10", playerA, new SimpleActivatedAbility(Zone.ALL, addCustomCardWithAbility("add 10", playerA, new SimpleActivatedAbility(Zone.ALL,
new AddConditionalManaEffect(Mana.RedMana(10), new SimpleActivatedAbilityManaBuilder()), new AddConditionalManaEffect(Mana.RedMana(10), new SimpleActivatedAbilityManaBuilder()),
new ManaCostsImpl(""))); new ManaCostsImpl<>("")));
// //
Ability ability = new SimpleActivatedAbility(Zone.ALL, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl("{X}")); Ability ability = new SimpleActivatedAbility(Zone.ALL, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl<>("{X}"));
ability.addTarget(new TargetAnyTarget()); ability.addTarget(new TargetAnyTarget());
addCustomCardWithAbility("damage X", playerA, ability); addCustomCardWithAbility("damage X", playerA, ability);
@ -289,12 +289,12 @@ public class ManaPoolTest extends CardTestPlayerBase {
addCard(Zone.HAND, playerA, "Lightning Bolt"); // {R} addCard(Zone.HAND, playerA, "Lightning Bolt"); // {R}
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 1 + 3 + 1); addCard(Zone.BATTLEFIELD, playerA, "Mountain", 1 + 3 + 1);
// //
Ability ability = new SimpleActivatedAbility(Zone.ALL, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl("")); Ability ability = new SimpleActivatedAbility(Zone.ALL, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl<>(""));
ability.addTarget(new TargetAnyTarget()); ability.addTarget(new TargetAnyTarget());
addCustomCardWithAbility("damage X", playerA, ability); addCustomCardWithAbility("damage X", playerA, ability);
// //
// {X}: Counter target spell // {X}: Counter target spell
ability = new SimpleActivatedAbility(Zone.ALL, new CounterUnlessPaysEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl("{X}")); ability = new SimpleActivatedAbility(Zone.ALL, new CounterUnlessPaysEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl<>("{X}"));
ability.addTarget(new TargetSpell()); ability.addTarget(new TargetSpell());
addCustomCardWithAbility("counter until pay X", playerB, ability); addCustomCardWithAbility("counter until pay X", playerB, ability);
addCard(Zone.BATTLEFIELD, playerB, "Island", 3); addCard(Zone.BATTLEFIELD, playerB, "Island", 3);
@ -336,14 +336,14 @@ public class ManaPoolTest extends CardTestPlayerBase {
// //
addCustomCardWithAbility("add 10", playerA, new SimpleManaAbility(Zone.ALL, addCustomCardWithAbility("add 10", playerA, new SimpleManaAbility(Zone.ALL,
new AddConditionalManaEffect(Mana.RedMana(10), new SimpleActivatedAbilityManaBuilder()), new AddConditionalManaEffect(Mana.RedMana(10), new SimpleActivatedAbilityManaBuilder()),
new ManaCostsImpl(""))); new ManaCostsImpl<>("")));
// //
Ability ability = new SimpleActivatedAbility(Zone.ALL, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl("")); Ability ability = new SimpleActivatedAbility(Zone.ALL, new DamageTargetEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl<>(""));
ability.addTarget(new TargetAnyTarget()); ability.addTarget(new TargetAnyTarget());
addCustomCardWithAbility("damage X", playerA, ability); addCustomCardWithAbility("damage X", playerA, ability);
// //
// {X}: Counter target spell // {X}: Counter target spell
ability = new SimpleActivatedAbility(Zone.ALL, new CounterUnlessPaysEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl("{X}")); ability = new SimpleActivatedAbility(Zone.ALL, new CounterUnlessPaysEffect(ManacostVariableValue.REGULAR), new ManaCostsImpl<>("{X}"));
ability.addTarget(new TargetSpell()); ability.addTarget(new TargetSpell());
addCustomCardWithAbility("counter until pay X", playerB, ability); addCustomCardWithAbility("counter until pay X", playerB, ability);
addCard(Zone.BATTLEFIELD, playerB, "Island", 3); addCard(Zone.BATTLEFIELD, playerB, "Island", 3);

View file

@ -487,7 +487,7 @@ public abstract class MageTestPlayerBase {
* @param damageAmount * @param damageAmount
*/ */
protected void addCustomEffect_TargetDamage(TestPlayer controller, int damageAmount) { protected void addCustomEffect_TargetDamage(TestPlayer controller, int damageAmount) {
Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(damageAmount).setText("target damage " + damageAmount), new ManaCostsImpl("")); Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(damageAmount).setText("target damage " + damageAmount), new ManaCostsImpl<>(""));
ability.addTarget(new TargetAnyTarget()); ability.addTarget(new TargetAnyTarget());
addCustomCardWithAbility( addCustomCardWithAbility(
"target damage " + damageAmount + " for " + controller.getName(), "target damage " + damageAmount + " for " + controller.getName(),
@ -502,7 +502,7 @@ public abstract class MageTestPlayerBase {
* @param controller * @param controller
*/ */
protected void addCustomEffect_DestroyTarget(TestPlayer controller) { protected void addCustomEffect_DestroyTarget(TestPlayer controller) {
Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect().setText("target destroy"), new ManaCostsImpl("")); Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect().setText("target destroy"), new ManaCostsImpl<>(""));
ability.addTarget(new TargetPermanent()); ability.addTarget(new TargetPermanent());
addCustomCardWithAbility( addCustomCardWithAbility(
"target destroy for " + controller.getName(), "target destroy for " + controller.getName(),
@ -518,7 +518,7 @@ public abstract class MageTestPlayerBase {
*/ */
protected void addCustomEffect_ReturnFromAnyToHand(TestPlayer controller) { protected void addCustomEffect_ReturnFromAnyToHand(TestPlayer controller) {
// graveyard // graveyard
Ability ability = new SimpleActivatedAbility(new ReturnFromGraveyardToHandTargetEffect().setText("return from graveyard"), new ManaCostsImpl("")); Ability ability = new SimpleActivatedAbility(new ReturnFromGraveyardToHandTargetEffect().setText("return from graveyard"), new ManaCostsImpl<>(""));
ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD)); ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD));
addCustomCardWithAbility( addCustomCardWithAbility(
"return from graveyard for " + controller.getName(), "return from graveyard for " + controller.getName(),
@ -527,7 +527,7 @@ public abstract class MageTestPlayerBase {
); );
// exile // exile
ability = new SimpleActivatedAbility(new ReturnFromExileEffect(Zone.HAND).setText("return from exile"), new ManaCostsImpl("")); ability = new SimpleActivatedAbility(new ReturnFromExileEffect(Zone.HAND).setText("return from exile"), new ManaCostsImpl<>(""));
ability.addTarget(new TargetCardInExile(StaticFilters.FILTER_CARD)); ability.addTarget(new TargetCardInExile(StaticFilters.FILTER_CARD));
addCustomCardWithAbility( addCustomCardWithAbility(
"return from exile for " + controller.getName(), "return from exile for " + controller.getName(),
@ -536,7 +536,7 @@ public abstract class MageTestPlayerBase {
); );
// library // library
ability = new SimpleActivatedAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD)).setText("return from library"), new ManaCostsImpl("")); ability = new SimpleActivatedAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD)).setText("return from library"), new ManaCostsImpl<>(""));
addCustomCardWithAbility( addCustomCardWithAbility(
"return from library for " + controller.getName(), "return from library for " + controller.getName(),
controller, controller,

View file

@ -626,7 +626,7 @@ public abstract class AbilityImpl implements Ability {
manaString.append('{').append(manaSymbol).append('}'); manaString.append('{').append(manaSymbol).append('}');
} }
} }
manaCostsToPay.add(new ManaCostsImpl(manaString.toString())); manaCostsToPay.add(new ManaCostsImpl<>(manaString.toString()));
manaCostsToPay.setX(xValue * xValueMultiplier, amountMana); manaCostsToPay.setX(xValue * xValueMultiplier, amountMana);
} }
variableManaCost.setPaid(); variableManaCost.setPaid();

View file

@ -19,7 +19,7 @@ public class StriveAbility extends SimpleStaticAbility {
private final String striveCost; private final String striveCost;
public StriveAbility(String manaString) { public StriveAbility(String manaString) {
super(Zone.STACK, new StriveCostIncreasingEffect(new ManaCostsImpl(manaString))); super(Zone.STACK, new StriveCostIncreasingEffect(new ManaCostsImpl<>(manaString)));
setRuleAtTheTop(true); setRuleAtTheTop(true);
this.striveCost = manaString; this.striveCost = manaString;
setAbilityWord(AbilityWord.STRIVE); setAbilityWord(AbilityWord.STRIVE);
@ -67,7 +67,7 @@ class StriveCostIncreasingEffect extends CostModificationEffectImpl {
sb.append(striveCosts.getText()); sb.append(striveCosts.getText());
} }
String finalCost = ManaUtil.condenseManaCostString(sb.toString()); String finalCost = ManaUtil.condenseManaCostString(sb.toString());
abilityToModify.getManaCostsToPay().add(new ManaCostsImpl(finalCost)); abilityToModify.getManaCostsToPay().add(new ManaCostsImpl<>(finalCost));
return true; return true;
} }
} }

View file

@ -1,7 +1,6 @@
package mage.abilities.effects.common.continuous; package mage.abilities.effects.common.continuous;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.condition.common.SourceIsSpellCondition; import mage.abilities.condition.common.SourceIsSpellCondition;
import mage.abilities.costs.AlternativeCostSourceAbility; import mage.abilities.costs.AlternativeCostSourceAbility;
@ -14,13 +13,15 @@ import mage.constants.SubLayer;
import mage.game.Game; import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
* @author JRHerlehy * @author JRHerlehy
* Created on 4/4/18. * Created on 4/4/18.
*/ */
public class WUBRGInsteadEffect extends ContinuousEffectImpl { public class WUBRGInsteadEffect extends ContinuousEffectImpl {
private final AlternativeCostSourceAbility alternativeCastingCostAbility = new AlternativeCostSourceAbility(new ManaCostsImpl("{W}{U}{B}{R}{G}"), SourceIsSpellCondition.instance); private final AlternativeCostSourceAbility alternativeCastingCostAbility = new AlternativeCostSourceAbility(new ManaCostsImpl<>("{W}{U}{B}{R}{G}"), SourceIsSpellCondition.instance);
public WUBRGInsteadEffect() { public WUBRGInsteadEffect() {
super(Duration.WhileOnBattlefield, Outcome.Detriment); super(Duration.WhileOnBattlefield, Outcome.Detriment);

View file

@ -41,13 +41,13 @@ public class EchoEffect extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
if (cost == null) { if (cost == null) {
cost = new ManaCostsImpl(Integer.toString(amount.calculate(game, source, this))); cost = new ManaCostsImpl<>(Integer.toString(amount.calculate(game, source, this)));
} }
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
if (controller != null if (controller != null
&& source.getSourceObjectIfItStillExists(game) != null) { && source.getSourceObjectIfItStillExists(game) != null) {
if (game.getContinuousEffects().asThough(source.getSourceId(), AsThoughEffectType.PAY_0_ECHO, source, source.getControllerId(), game) != null) { if (game.getContinuousEffects().asThough(source.getSourceId(), AsThoughEffectType.PAY_0_ECHO, source, source.getControllerId(), game) != null) {
Cost altCost = new ManaCostsImpl("{0}"); Cost altCost = new ManaCostsImpl<>("{0}");
if (controller.chooseUse(Outcome.Benefit, "Pay {0} instead of the echo cost?", source, game)) { if (controller.chooseUse(Outcome.Benefit, "Pay {0} instead of the echo cost?", source, game)) {
altCost.clearPaid(); altCost.clearPaid();
if (altCost.pay(source, game, source, source.getControllerId(), false, null)) { if (altCost.pay(source, game, source, source.getControllerId(), false, null)) {

View file

@ -1,7 +1,6 @@
package mage.abilities.effects.keyword; package mage.abilities.effects.keyword;
import java.util.Set;
import mage.MageObjectReference; import mage.MageObjectReference;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.costs.mana.ManaCosts; import mage.abilities.costs.mana.ManaCosts;
@ -18,6 +17,8 @@ import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.util.CardUtil; import mage.util.CardUtil;
import java.util.Set;
/** /**
* *
* @author LevelX2 * @author LevelX2
@ -54,7 +55,7 @@ public class ManifestEffect extends OneShotEffect {
if (card.isCreature(game)) { if (card.isCreature(game)) {
manaCosts = card.getSpellAbility() != null ? card.getSpellAbility().getManaCosts() : null; manaCosts = card.getSpellAbility() != null ? card.getSpellAbility().getManaCosts() : null;
if (manaCosts == null) { if (manaCosts == null) {
manaCosts = new ManaCostsImpl("{0}"); manaCosts = new ManaCostsImpl<>("{0}");
} }
} }
MageObjectReference objectReference = new MageObjectReference(card.getId(), card.getZoneChangeCounter(game) + 1, game); MageObjectReference objectReference = new MageObjectReference(card.getId(), card.getZoneChangeCounter(game) + 1, game);

View file

@ -1,7 +1,6 @@
package mage.abilities.effects.keyword; package mage.abilities.effects.keyword;
import java.util.Set;
import mage.MageObjectReference; import mage.MageObjectReference;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.costs.mana.ManaCosts; import mage.abilities.costs.mana.ManaCosts;
@ -18,6 +17,8 @@ import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.util.CardUtil; import mage.util.CardUtil;
import java.util.Set;
/** /**
* *
* @author LevelX2 * @author LevelX2
@ -57,7 +58,7 @@ public class ManifestTargetPlayerEffect extends OneShotEffect {
if (card.isCreature(game)) { if (card.isCreature(game)) {
manaCosts = card.getSpellAbility().getManaCosts(); manaCosts = card.getSpellAbility().getManaCosts();
if (manaCosts == null) { if (manaCosts == null) {
manaCosts = new ManaCostsImpl("{0}"); manaCosts = new ManaCostsImpl<>("{0}");
} }
} }
MageObjectReference objectReference = new MageObjectReference(card.getId(), card.getZoneChangeCounter(game) + 1, game); MageObjectReference objectReference = new MageObjectReference(card.getId(), card.getZoneChangeCounter(game) + 1, game);

View file

@ -13,7 +13,7 @@ import mage.constants.Zone;
public class AdaptAbility extends ActivatedAbilityImpl { public class AdaptAbility extends ActivatedAbilityImpl {
public AdaptAbility(int adaptNumber, String manaCost) { public AdaptAbility(int adaptNumber, String manaCost) {
super(Zone.BATTLEFIELD, new AdaptEffect(adaptNumber), new ManaCostsImpl(manaCost)); super(Zone.BATTLEFIELD, new AdaptEffect(adaptNumber), new ManaCostsImpl<>(manaCost));
} }
private AdaptAbility(final AdaptAbility ability) { private AdaptAbility(final AdaptAbility ability) {

View file

@ -24,7 +24,7 @@ import mage.target.common.TargetAttackingCreature;
public class BloodrushAbility extends ActivatedAbilityImpl { public class BloodrushAbility extends ActivatedAbilityImpl {
public BloodrushAbility(String manaString, Effect effect) { public BloodrushAbility(String manaString, Effect effect) {
super(Zone.HAND, effect, new ManaCostsImpl(manaString)); super(Zone.HAND, effect, new ManaCostsImpl<>(manaString));
this.addCost(new DiscardSourceCost()); this.addCost(new DiscardSourceCost());
this.addTarget(new TargetAttackingCreature()); this.addTarget(new TargetAttackingCreature());
this.setAbilityWord(AbilityWord.BLOODRUSH); this.setAbilityWord(AbilityWord.BLOODRUSH);

View file

@ -42,7 +42,7 @@ public class BuybackAbility extends StaticAbility implements OptionalAdditionalS
public BuybackAbility(String manaString) { public BuybackAbility(String manaString) {
super(Zone.STACK, new BuybackEffect()); super(Zone.STACK, new BuybackEffect());
addBuybackCostAndSetup(new OptionalAdditionalCostImpl(keywordText, reminderTextMana, new ManaCostsImpl(manaString))); addBuybackCostAndSetup(new OptionalAdditionalCostImpl(keywordText, reminderTextMana, new ManaCostsImpl<>(manaString)));
setRuleAtTheTop(true); setRuleAtTheTop(true);
} }

View file

@ -46,7 +46,7 @@ public class DisturbAbility extends SpellAbility {
this.manaCost = manaCost; this.manaCost = manaCost;
this.getManaCosts().clear(); this.getManaCosts().clear();
this.getManaCostsToPay().clear(); this.getManaCostsToPay().clear();
this.addManaCost(new ManaCostsImpl(manaCost)); this.addManaCost(new ManaCostsImpl<>(manaCost));
this.addSubAbility(new TransformAbility()); this.addSubAbility(new TransformAbility());
} }
@ -126,4 +126,4 @@ class DisturbEffect extends ContinuousEffectImpl {
TransformAbility.transformCardSpellDynamic(spell, spell.getCard().getSecondCardFace(), game); TransformAbility.transformCardSpellDynamic(spell, spell.getCard().getSecondCardFace(), game);
return true; return true;
} }
} }

View file

@ -26,9 +26,9 @@ public class EchoAbility extends TriggeredAbilityImpl {
private String rule; private String rule;
public EchoAbility(String manaString) { public EchoAbility(String manaString) {
super(Zone.BATTLEFIELD, new EchoEffect(new ManaCostsImpl(manaString)), false); super(Zone.BATTLEFIELD, new EchoEffect(new ManaCostsImpl<>(manaString)), false);
this.echoPaid = false; this.echoPaid = false;
this.echoCosts.add(new ManaCostsImpl(manaString)); this.echoCosts.add(new ManaCostsImpl<>(manaString));
this.lastController = null; this.lastController = null;
this.rule = null; this.rule = null;
} }

View file

@ -38,7 +38,7 @@ public class EntwineAbility extends StaticAbility implements OptionalAdditionalM
public EntwineAbility(String manaString) { public EntwineAbility(String manaString) {
super(Zone.STACK, null); super(Zone.STACK, null);
addEntwineCostAndSetup(new OptionalAdditionalCostImpl(keywordText, reminderText, new ManaCostsImpl(manaString))); addEntwineCostAndSetup(new OptionalAdditionalCostImpl(keywordText, reminderText, new ManaCostsImpl<>(manaString)));
} }
public EntwineAbility(Cost cost) { public EntwineAbility(Cost cost) {

View file

@ -40,7 +40,7 @@ public class EscapeAbility extends SpellAbility {
this.exileCount = exileCount; this.exileCount = exileCount;
this.getManaCosts().clear(); this.getManaCosts().clear();
this.getManaCostsToPay().clear(); this.getManaCostsToPay().clear();
this.addManaCost(new ManaCostsImpl(manaCost)); this.addManaCost(new ManaCostsImpl<>(manaCost));
this.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(exileCount, filter), "")); // hide additional cost text from rules this.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(exileCount, filter), "")); // hide additional cost text from rules
} }

View file

@ -2,20 +2,20 @@
package mage.abilities.keyword; package mage.abilities.keyword;
import java.util.UUID;
import mage.constants.Zone;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.costs.Cost; import mage.abilities.costs.Cost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
* FAQ 2013/01/11 * FAQ 2013/01/11
* *
@ -76,7 +76,7 @@ class ExtortEffect extends OneShotEffect {
Permanent permanent = game.getPermanent(source.getSourceId()); Permanent permanent = game.getPermanent(source.getSourceId());
if (player != null && permanent != null) { if (player != null && permanent != null) {
if (player.chooseUse(Outcome.Damage, new StringBuilder("Extort opponents? (").append(permanent.getName()).append(')').toString(), source, game)) { if (player.chooseUse(Outcome.Damage, new StringBuilder("Extort opponents? (").append(permanent.getName()).append(')').toString(), source, game)) {
Cost cost = new ManaCostsImpl("{W/B}"); Cost cost = new ManaCostsImpl<>("{W/B}");
if (cost.pay(source, game, source, player.getId(), false, null)) { if (cost.pay(source, game, source, player.getId(), false, null)) {
int loseLife = 0; int loseLife = 0;
for (UUID opponentId : game.getOpponents(source.getControllerId())) { for (UUID opponentId : game.getOpponents(source.getControllerId())) {

View file

@ -18,13 +18,13 @@ import mage.cards.*;
import mage.constants.*; import mage.constants.*;
import mage.game.ExileZone; import mage.game.ExileZone;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent;
import mage.players.Player; import mage.players.Player;
import mage.target.targetpointer.FixedTarget; import mage.target.targetpointer.FixedTarget;
import mage.util.CardUtil; import mage.util.CardUtil;
import mage.watchers.common.ForetoldWatcher; import mage.watchers.common.ForetoldWatcher;
import java.util.UUID; import java.util.UUID;
import mage.game.events.GameEvent;
/** /**
* @author jeffwadsworth * @author jeffwadsworth
@ -312,7 +312,7 @@ public class ForetellAbility extends SpecialAction {
} }
this.setAdditionalCostsRuleVisible(false); this.setAdditionalCostsRuleVisible(false);
this.name = "Foretell " + foretellCost; this.name = "Foretell " + foretellCost;
this.addCost(new ManaCostsImpl(foretellCost)); this.addCost(new ManaCostsImpl<>(foretellCost));
} }
public ForetellCostAbility(final ForetellCostAbility ability) { public ForetellCostAbility(final ForetellCostAbility ability) {

View file

@ -96,7 +96,7 @@ public class KickerAbility extends StaticAbility implements OptionalAdditionalSo
public final OptionalAdditionalCost addKickerCost(String manaString) { public final OptionalAdditionalCost addKickerCost(String manaString) {
OptionalAdditionalCost newCost = new OptionalAdditionalCostImpl( OptionalAdditionalCost newCost = new OptionalAdditionalCostImpl(
keywordText, reminderText, new ManaCostsImpl(manaString)); keywordText, reminderText, new ManaCostsImpl<>(manaString));
addKickerCostAndSetup(newCost); addKickerCostAndSetup(newCost);
return newCost; return newCost;
} }

View file

@ -9,7 +9,7 @@ import mage.constants.TimingRule;
public class MutateAbility extends SpellAbility { public class MutateAbility extends SpellAbility {
public MutateAbility(Card card, String manaString) { public MutateAbility(Card card, String manaString) {
super(new ManaCostsImpl(manaString), card.getName() + " using mutate"); super(new ManaCostsImpl<>(manaString), card.getName() + " using mutate");
this.spellAbilityType = SpellAbilityType.BASE_ALTERNATE; this.spellAbilityType = SpellAbilityType.BASE_ALTERNATE;
this.timing = TimingRule.SORCERY; this.timing = TimingRule.SORCERY;
// TODO: Implement this // TODO: Implement this

View file

@ -132,7 +132,7 @@ public class SuspendAbility extends SpecialAction {
VariableManaCost xCosts = new VariableManaCost(VariableCostType.ALTERNATIVE); VariableManaCost xCosts = new VariableManaCost(VariableCostType.ALTERNATIVE);
xCosts.setMinX(1); xCosts.setMinX(1);
this.addManaCost(xCosts); this.addManaCost(xCosts);
cost = new ManaCostsImpl("{X}" + cost.getText()); cost = new ManaCostsImpl<>("{X}" + cost.getText());
} }
StringBuilder sb = new StringBuilder("Suspend "); StringBuilder sb = new StringBuilder("Suspend ");
if (cost != null) { if (cost != null) {

View file

@ -2,13 +2,13 @@ package mage.abilities.keyword;
import mage.MageObject; import mage.MageObject;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.constants.ComparisonType;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.DiscardSourceCost; import mage.abilities.costs.common.DiscardSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.cards.Cards; import mage.cards.Cards;
import mage.cards.CardsImpl; import mage.cards.CardsImpl;
import mage.constants.ComparisonType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.TimingRule; import mage.constants.TimingRule;
import mage.constants.Zone; import mage.constants.Zone;
@ -39,7 +39,7 @@ import mage.target.common.TargetCardInLibrary;
public class TransmuteAbility extends SimpleActivatedAbility { public class TransmuteAbility extends SimpleActivatedAbility {
public TransmuteAbility(String manaCost) { public TransmuteAbility(String manaCost) {
super(Zone.HAND, new TransmuteEffect(), new ManaCostsImpl(manaCost)); super(Zone.HAND, new TransmuteEffect(), new ManaCostsImpl<>(manaCost));
this.setTiming(TimingRule.SORCERY); this.setTiming(TimingRule.SORCERY);
this.addCost(new DiscardSourceCost()); this.addCost(new DiscardSourceCost());
} }

View file

@ -49,7 +49,7 @@ public class MockCard extends CardImpl {
this.usesVariousArt = card.usesVariousArt(); this.usesVariousArt = card.usesVariousArt();
//this.manaCost = new ManaCostsImpl(join(card.getManaCosts(CardInfo.ManaCostSide.ALL))); //this.manaCost = new ManaCostsImpl<>(join(card.getManaCosts(CardInfo.ManaCostSide.ALL)));
this.manaCostLeftStr = card.getManaCosts(CardInfo.ManaCostSide.LEFT); this.manaCostLeftStr = card.getManaCosts(CardInfo.ManaCostSide.LEFT);
this.manaCostRightStr = card.getManaCosts(CardInfo.ManaCostSide.RIGHT); this.manaCostRightStr = card.getManaCosts(CardInfo.ManaCostSide.RIGHT);
this.manaCostStr = card.getManaCosts(CardInfo.ManaCostSide.ALL); this.manaCostStr = card.getManaCosts(CardInfo.ManaCostSide.ALL);

View file

@ -30,7 +30,7 @@ public abstract class Designation implements MageObject {
private static final List<CardType> emptySet = new ArrayList<>(); private static final List<CardType> emptySet = new ArrayList<>();
private static final ObjectColor emptyColor = new ObjectColor(); private static final ObjectColor emptyColor = new ObjectColor();
private static final ManaCostsImpl emptyCost = new ManaCostsImpl(); private static final ManaCostsImpl emptyCost = new ManaCostsImpl<>();
private String name; private String name;
private final DesignationType designationType; private final DesignationType designationType;

View file

@ -33,7 +33,7 @@ public class Emblem implements CommandObject {
private static List<CardType> emptySet = new ArrayList<>(); private static List<CardType> emptySet = new ArrayList<>();
private static ObjectColor emptyColor = new ObjectColor(); private static ObjectColor emptyColor = new ObjectColor();
private static ManaCosts emptyCost = new ManaCostsImpl(); private static ManaCosts emptyCost = new ManaCostsImpl<>();
private String name = ""; private String name = "";
private UUID id; private UUID id;

View file

@ -36,7 +36,7 @@ public class Plane implements CommandObject {
private static List<CardType> emptySet = new ArrayList<>(); private static List<CardType> emptySet = new ArrayList<>();
private static ObjectColor emptyColor = new ObjectColor(); private static ObjectColor emptyColor = new ObjectColor();
private static ManaCosts emptyCost = new ManaCostsImpl(); private static ManaCosts emptyCost = new ManaCostsImpl<>();
private Planes planeType = null; private Planes planeType = null;
private UUID id; private UUID id;

View file

@ -11,10 +11,11 @@ import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.GainLifeEffect;
import mage.constants.Zone; import mage.constants.Zone;
import static mage.filter.StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT;
import mage.game.command.Emblem; import mage.game.command.Emblem;
import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent;
import static mage.filter.StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT;
/** /**
* *
* @author spjspj * @author spjspj
@ -27,7 +28,7 @@ public final class ObNixilisOfTheBlackOathEmblem extends Emblem {
DynamicValue xValue = SacrificeCostCreaturesPower.instance; DynamicValue xValue = SacrificeCostCreaturesPower.instance;
Effect effect = new GainLifeEffect(xValue); Effect effect = new GainLifeEffect(xValue);
effect.setText("You gain X life"); effect.setText("You gain X life");
Ability ability = new SimpleActivatedAbility(Zone.COMMAND, effect, new ManaCostsImpl("{1}{B}")); Ability ability = new SimpleActivatedAbility(Zone.COMMAND, effect, new ManaCostsImpl<>("{1}{B}"));
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT))); ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT)));
effect = new DrawCardSourceControllerEffect(xValue); effect = new DrawCardSourceControllerEffect(xValue);
effect.setText("and draw X cards, where X is the sacrificed creature's power"); effect.setText("and draw X cards, where X is the sacrificed creature's power");

View file

@ -1,8 +1,7 @@
package mage.game.permanent.token; package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
@ -10,6 +9,8 @@ import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreatureCard;
import mage.filter.predicate.mageobject.NamePredicate; import mage.filter.predicate.mageobject.NamePredicate;
@ -41,7 +42,7 @@ public final class DeathpactAngelToken extends TokenImpl {
power = new MageInt(1); power = new MageInt(1);
toughness = new MageInt(1); toughness = new MageInt(1);
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect(), new ManaCostsImpl("{3}{W}{B}{B}")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect(), new ManaCostsImpl<>("{3}{W}{B}{B}"));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost()); ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetCardInYourGraveyard(filter)); ability.addTarget(new TargetCardInYourGraveyard(filter));

View file

@ -26,7 +26,7 @@ public final class DragonEggDragonToken extends TokenImpl {
toughness = new MageInt(2); toughness = new MageInt(2);
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}"))); this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl<>("{R}")));
availableImageSetCodes = Arrays.asList("C18", "EMA", "M14", "M15", "M19", "CMR", "IMA", "GN2"); availableImageSetCodes = Arrays.asList("C18", "EMA", "M14", "M15", "M19", "CMR", "IMA", "GN2");
} }

View file

@ -1,14 +1,15 @@
package mage.game.permanent.token; package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.TapTargetEffect; import mage.abilities.effects.common.TapTargetEffect;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
@ -27,7 +28,7 @@ public final class GoldmeadowHarrierToken extends TokenImpl {
power = new MageInt(1); power = new MageInt(1);
toughness = new MageInt(1); toughness = new MageInt(1);
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new TapTargetEffect(), new ManaCostsImpl("{W}")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new TapTargetEffect(), new ManaCostsImpl<>("{W}"));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addTarget(new TargetCreaturePermanent()); ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability); this.addAbility(ability);

View file

@ -1,13 +1,14 @@
package mage.game.permanent.token; package mage.game.permanent.token;
import mage.constants.CardType;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.common.FilterAttackingCreature; import mage.filter.common.FilterAttackingCreature;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
@ -31,7 +32,7 @@ public final class LandMineToken extends TokenImpl {
this.setOriginalExpansionSetCode("M15"); this.setOriginalExpansionSetCode("M15");
cardType.add(CardType.ARTIFACT); cardType.add(CardType.ARTIFACT);
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl("{R}")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl<>("{R}"));
ability.addCost(new SacrificeSourceCost()); ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetCreaturePermanent(filter)); ability.addTarget(new TargetCreaturePermanent(filter));
this.addAbility(ability); this.addAbility(ability);

View file

@ -1,13 +1,14 @@
package mage.game.permanent.token; package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreatureCard;
@ -29,7 +30,7 @@ public final class NighteyesTheDesecratorToken extends TokenImpl {
power = new MageInt(4); power = new MageInt(4);
toughness = new MageInt(2); toughness = new MageInt(2);
// {4}{B}: Put target creature card from a graveyard onto the battlefield under your control. // {4}{B}: Put target creature card from a graveyard onto the battlefield under your control.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect(), new ManaCostsImpl("{4}{B}")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect(), new ManaCostsImpl<>("{4}{B}"));
ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard")));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -40,7 +40,7 @@ public final class SengirNosferatuBatToken extends TokenImpl {
// {1}{B}, Sacrifice this creature: Return an exiled card named Sengir Nosferatu to the battlefield under its owners control. // {1}{B}, Sacrifice this creature: Return an exiled card named Sengir Nosferatu to the battlefield under its owners control.
ReturnSengirNosferatuEffect effect = new ReturnSengirNosferatuEffect(); ReturnSengirNosferatuEffect effect = new ReturnSengirNosferatuEffect();
effect.setText("Return an exiled card named Sengir Nosferatu to the battlefield under its owner's control."); effect.setText("Return an exiled card named Sengir Nosferatu to the battlefield under its owner's control.");
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{1}{B}")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{1}{B}"));
ability.addCost(new SacrificeSourceCost()); ability.addCost(new SacrificeSourceCost());
this.addAbility(ability); this.addAbility(ability);

View file

@ -1,12 +1,12 @@
package mage.game.permanent.token; package mage.game.permanent.token;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt; import mage.MageInt;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.keyword.CumulativeUpkeepAbility; import mage.abilities.keyword.CumulativeUpkeepAbility;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
/** /**
* *
@ -22,7 +22,7 @@ public final class SplinterToken extends TokenImpl {
power = new MageInt(1); power = new MageInt(1);
toughness = new MageInt(1); toughness = new MageInt(1);
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
this.addAbility(new CumulativeUpkeepAbility(new ManaCostsImpl("{G}"))); this.addAbility(new CumulativeUpkeepAbility(new ManaCostsImpl<>("{G}")));
} }
public SplinterToken(final SplinterToken token) { public SplinterToken(final SplinterToken token) {

View file

@ -3297,7 +3297,7 @@ public abstract class PlayerImpl implements Player, Serializable {
for (Permanent permanent : game.getBattlefield().getActivePermanents(playerId, game)) { // Some permanents allow use of abilities from non controlling players. so check all permanents in range for (Permanent permanent : game.getBattlefield().getActivePermanents(playerId, game)) { // Some permanents allow use of abilities from non controlling players. so check all permanents in range
Boolean canUse = null; Boolean canUse = null;
boolean canAdd = false; boolean canAdd = false;
boolean useLater = false; // sources with mana costs or mana pool dependency boolean useLater = false; // sources with mana costs or mana pool dependency
Abilities<ActivatedManaAbilityImpl> manaAbilities Abilities<ActivatedManaAbilityImpl> manaAbilities
= permanent.getAbilities(game).getAvailableActivatedManaAbilities(Zone.BATTLEFIELD, playerId, game); // returns ability only if canActivate is true = permanent.getAbilities(game).getAvailableActivatedManaAbilities(Zone.BATTLEFIELD, playerId, game); // returns ability only if canActivate is true
for (Iterator<ActivatedManaAbilityImpl> it = manaAbilities.iterator(); it.hasNext(); ) { for (Iterator<ActivatedManaAbilityImpl> it = manaAbilities.iterator(); it.hasNext(); ) {
@ -3606,7 +3606,7 @@ public abstract class PlayerImpl implements Player, Serializable {
if (alternateSourceCostsAbility instanceof AlternativeSourceCosts) { if (alternateSourceCostsAbility instanceof AlternativeSourceCosts) {
if (((AlternativeSourceCosts) alternateSourceCostsAbility).isAvailable(ability, game)) { if (((AlternativeSourceCosts) alternateSourceCostsAbility).isAvailable(ability, game)) {
if (alternateSourceCostsAbility.getCosts().canPay(ability, ability, playerId, game)) { if (alternateSourceCostsAbility.getCosts().canPay(ability, ability, playerId, game)) {
ManaCostsImpl manaCosts = new ManaCostsImpl(); ManaCostsImpl manaCosts = new ManaCostsImpl<>();
for (Cost cost : alternateSourceCostsAbility.getCosts()) { for (Cost cost : alternateSourceCostsAbility.getCosts()) {
// AlternativeCost2 replaced by real cost on activate, so getPlayable need to extract that costs here // AlternativeCost2 replaced by real cost on activate, so getPlayable need to extract that costs here
if (cost instanceof AlternativeCost) { if (cost instanceof AlternativeCost) {
@ -3655,7 +3655,7 @@ public abstract class PlayerImpl implements Player, Serializable {
if (alternateSourceCosts instanceof Ability) { if (alternateSourceCosts instanceof Ability) {
if (alternateSourceCosts.isAvailable(ability, game)) { if (alternateSourceCosts.isAvailable(ability, game)) {
if (((Ability) alternateSourceCosts).getCosts().canPay(ability, ability, playerId, game)) { if (((Ability) alternateSourceCosts).getCosts().canPay(ability, ability, playerId, game)) {
ManaCostsImpl manaCosts = new ManaCostsImpl(); ManaCostsImpl manaCosts = new ManaCostsImpl<>();
for (Cost cost : ((Ability) alternateSourceCosts).getCosts()) { for (Cost cost : ((Ability) alternateSourceCosts).getCosts()) {
// AlternativeCost2 replaced by real cost on activate, so getPlayable need to extract that costs here // AlternativeCost2 replaced by real cost on activate, so getPlayable need to extract that costs here
if (cost instanceof AlternativeCost) { if (cost instanceof AlternativeCost) {