mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
Fix remaining raw unparameterized usages of ManaCostImpl
This commit is contained in:
parent
4806626ba0
commit
882afbf8b5
37 changed files with 84 additions and 76 deletions
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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)) {
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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())) {
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
|
|
|
||||||
|
|
@ -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));
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 owner’s control.
|
// {1}{B}, Sacrifice this creature: Return an exiled card named Sengir Nosferatu to the battlefield under its owner’s 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);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue