mirror of
https://github.com/magefree/mage.git
synced 2025-12-21 19:11:59 -08:00
Added possibility to check kind of cost to pay for conditional mana use.
This commit is contained in:
parent
d63f6d7d27
commit
c8f82b49ff
208 changed files with 770 additions and 571 deletions
|
|
@ -1195,7 +1195,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
|
||||||
}
|
}
|
||||||
// pay phyrexian life costs
|
// pay phyrexian life costs
|
||||||
if (cost instanceof PhyrexianManaCost) {
|
if (cost instanceof PhyrexianManaCost) {
|
||||||
if (cost.pay(null, game, null, playerId, false) || spendAnyMana) {
|
if (cost.pay(null, game, null, playerId, false, null) || spendAnyMana) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -805,7 +805,7 @@ public class HumanPlayer extends PlayerImpl {
|
||||||
if (cost instanceof PhyrexianManaCost) {
|
if (cost instanceof PhyrexianManaCost) {
|
||||||
PhyrexianManaCost ph = (PhyrexianManaCost) cost;
|
PhyrexianManaCost ph = (PhyrexianManaCost) cost;
|
||||||
if (ph.canPay(null, null, playerId, game)) {
|
if (ph.canPay(null, null, playerId, game)) {
|
||||||
((PhyrexianManaCost) cost).pay(null, game, null, playerId, false);
|
((PhyrexianManaCost) cost).pay(null, game, null, playerId, false, null);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ class VectisDominatorEffect extends OneShotEffect {
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
final StringBuilder sb = new StringBuilder("Pay 2 life? (Otherwise ").append(targetCreature.getName()).append(" will be tapped)");
|
final StringBuilder sb = new StringBuilder("Pay 2 life? (Otherwise ").append(targetCreature.getName()).append(" will be tapped)");
|
||||||
if (player.chooseUse(Outcome.Benefit, sb.toString(), source, game)) {
|
if (player.chooseUse(Outcome.Benefit, sb.toString(), source, game)) {
|
||||||
cost.pay(source, game, targetCreature.getControllerId(), targetCreature.getControllerId(), true);
|
cost.pay(source, game, targetCreature.getControllerId(), targetCreature.getControllerId(), true, null);
|
||||||
}
|
}
|
||||||
if (!cost.isPaid()) {
|
if (!cost.isPaid()) {
|
||||||
return targetCreature.tap(game);
|
return targetCreature.tap(game);
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.Mana;
|
import mage.Mana;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.effects.common.BasicManaEffect;
|
import mage.abilities.effects.common.BasicManaEffect;
|
||||||
import mage.abilities.mana.SimpleManaAbility;
|
import mage.abilities.mana.SimpleManaAbility;
|
||||||
|
|
@ -83,7 +84,7 @@ class ExileSourceFromHandCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Card card = game.getCard(sourceId);
|
Card card = game.getCard(sourceId);
|
||||||
Player player = game.getPlayer(controllerId);
|
Player player = game.getPlayer(controllerId);
|
||||||
if (player != null && player.getHand().contains(sourceId) && card != null) {
|
if (player != null && player.getHand().contains(sourceId) && card != null) {
|
||||||
|
|
|
||||||
|
|
@ -160,7 +160,7 @@ class ExileTopCardLibraryCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Player controller = game.getPlayer(controllerId);
|
Player controller = game.getPlayer(controllerId);
|
||||||
if (controller != null) {
|
if (controller != null) {
|
||||||
card = controller.getLibrary().getFromTop(game);
|
card = controller.getLibrary().getFromTop(game);
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ import mage.Mana;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.AsEntersBattlefieldAbility;
|
import mage.abilities.common.AsEntersBattlefieldAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
|
import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
|
||||||
import mage.abilities.effects.common.ChooseCreatureTypeEffect;
|
import mage.abilities.effects.common.ChooseCreatureTypeEffect;
|
||||||
|
|
@ -136,7 +137,7 @@ class CavernOfSoulsManaCondition extends CreatureCastManaCondition {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source, UUID manaProducer) {
|
public boolean apply(Game game, Ability source, UUID originalId, Cost costToPay) {
|
||||||
// check: ... to cast a creature spell
|
// check: ... to cast a creature spell
|
||||||
if (super.apply(game, source)) {
|
if (super.apply(game, source)) {
|
||||||
// check: ... of the chosen type
|
// check: ... of the chosen type
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ class GrovetenderDruidsEffect extends OneShotEffect {
|
||||||
if(player != null) {
|
if(player != null) {
|
||||||
if(player.chooseUse(Outcome.BoostCreature, "Do you want to to pay {1}?", source, game)) {
|
if(player.chooseUse(Outcome.BoostCreature, "Do you want to to pay {1}?", source, game)) {
|
||||||
Cost cost = new ManaCostsImpl("{1}");
|
Cost cost = new ManaCostsImpl("{1}");
|
||||||
if(cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if(cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
new CreateTokenEffect(new GrovetenderDruidsPlantToken()).apply(game, source);
|
new CreateTokenEffect(new GrovetenderDruidsPlantToken()).apply(game, source);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import java.util.UUID;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.Effect;
|
import mage.abilities.effects.Effect;
|
||||||
|
|
@ -92,7 +93,7 @@ class BlindingPowderUnattachCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Permanent permanent = game.getPermanent(sourceId);
|
Permanent permanent = game.getPermanent(sourceId);
|
||||||
if (permanent != null) {
|
if (permanent != null) {
|
||||||
for (UUID attachmentId : permanent.getAttachments()) {
|
for (UUID attachmentId : permanent.getAttachments()) {
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@ class OgreMarauderEffect extends OneShotEffect {
|
||||||
Cost cost = new SacrificeTargetCost(new TargetControlledCreaturePermanent());
|
Cost cost = new SacrificeTargetCost(new TargetControlledCreaturePermanent());
|
||||||
if (cost.canPay(source, source.getSourceId(), defendingPlayerId, game) &&
|
if (cost.canPay(source, source.getSourceId(), defendingPlayerId, game) &&
|
||||||
defender.chooseUse(Outcome.LoseAbility, "Sacrifice a creature to prevent that " + sourceObject.getLogName() + " can't be blocked?", source, game)) {
|
defender.chooseUse(Outcome.LoseAbility, "Sacrifice a creature to prevent that " + sourceObject.getLogName() + " can't be blocked?", source, game)) {
|
||||||
if (!cost.pay(source, game, source.getSourceId(), defendingPlayerId, false)) {
|
if (!cost.pay(source, game, source.getSourceId(), defendingPlayerId, false, null)) {
|
||||||
// cost was not payed - so source can't be blocked
|
// cost was not payed - so source can't be blocked
|
||||||
ContinuousEffect effect = new CantBeBlockedSourceEffect(Duration.EndOfTurn);
|
ContinuousEffect effect = new CantBeBlockedSourceEffect(Duration.EndOfTurn);
|
||||||
game.addEffect(effect, source);
|
game.addEffect(effect, source);
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,7 @@ class ShurikenUnattachCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Permanent permanent = game.getPermanent(sourceId);
|
Permanent permanent = game.getPermanent(sourceId);
|
||||||
if (permanent != null) {
|
if (permanent != null) {
|
||||||
for (UUID attachmentId :permanent.getAttachments()) {
|
for (UUID attachmentId :permanent.getAttachments()) {
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,7 @@ class FloodtideSerpentReplacementEffect extends ReplacementEffectImpl {
|
||||||
ReturnToHandChosenControlledPermanentCost attackCost = new ReturnToHandChosenControlledPermanentCost(new TargetControlledPermanent(filter));
|
ReturnToHandChosenControlledPermanentCost attackCost = new ReturnToHandChosenControlledPermanentCost(new TargetControlledPermanent(filter));
|
||||||
if (attackCost.canPay(source, source.getSourceId(), event.getPlayerId(), game)
|
if (attackCost.canPay(source, source.getSourceId(), event.getPlayerId(), game)
|
||||||
&& player.chooseUse(Outcome.Neutral, "Return an enchantment you control to hand to attack?", source, game)) {
|
&& player.chooseUse(Outcome.Neutral, "Return an enchantment you control to hand to attack?", source, game)) {
|
||||||
if (attackCost.pay(source, game, source.getSourceId(), event.getPlayerId(), true)) {
|
if (attackCost.pay(source, game, source.getSourceId(), event.getPlayerId(), true, null)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ class HeroOfLeinaTowerEffect extends OneShotEffect {
|
||||||
if (you != null && you.chooseUse(Outcome.BoostCreature, "Do you want to to pay {X}?", source, game)) {
|
if (you != null && you.chooseUse(Outcome.BoostCreature, "Do you want to to pay {X}?", source, game)) {
|
||||||
int costX = you.announceXMana(0, Integer.MAX_VALUE, "Announce the value for {X}", game, source);
|
int costX = you.announceXMana(0, Integer.MAX_VALUE, "Announce the value for {X}", game, source);
|
||||||
cost.add(new GenericManaCost(costX));
|
cost.add(new GenericManaCost(costX));
|
||||||
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
Permanent sourcePermanent = game.getPermanent(source.getSourceId());
|
Permanent sourcePermanent = game.getPermanent(source.getSourceId());
|
||||||
if (sourcePermanent != null) {
|
if (sourcePermanent != null) {
|
||||||
return new AddCountersSourceEffect(CounterType.P1P1.createInstance(costX), true).apply(game, source);
|
return new AddCountersSourceEffect(CounterType.P1P1.createInstance(costX), true).apply(game, source);
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ class DoUnlessTargetPaysCost extends OneShotEffect {
|
||||||
message = CardUtil.replaceSourceName(message, mageObject.getLogName());
|
message = CardUtil.replaceSourceName(message, mageObject.getLogName());
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
if (cost.canPay(source, source.getSourceId(), player.getId(), game) && player.chooseUse(executingEffect.getOutcome(), message, source, game)) {
|
if (cost.canPay(source, source.getSourceId(), player.getId(), game) && player.chooseUse(executingEffect.getOutcome(), message, source, game)) {
|
||||||
cost.pay(source, game, source.getSourceId(), player.getId(), false);
|
cost.pay(source, game, source.getSourceId(), player.getId(), false, null);
|
||||||
}
|
}
|
||||||
if (!cost.isPaid()) {
|
if (!cost.isPaid()) {
|
||||||
executingEffect.setTargetPointer(this.targetPointer);
|
executingEffect.setTargetPointer(this.targetPointer);
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ class CutTheTethersEffect extends OneShotEffect {
|
||||||
boolean paid = false;
|
boolean paid = false;
|
||||||
if (player.chooseUse(outcome, new StringBuilder("Pay {3} to keep ").append(creature.getName()).append(" on the battlefield?").toString(), source, game)) {
|
if (player.chooseUse(outcome, new StringBuilder("Pay {3} to keep ").append(creature.getName()).append(" on the battlefield?").toString(), source, game)) {
|
||||||
Cost cost = new GenericManaCost(3);
|
Cost cost = new GenericManaCost(3);
|
||||||
if (!cost.pay(source, game, source.getSourceId(), creature.getControllerId(), false)) {
|
if (!cost.pay(source, game, source.getSourceId(), creature.getControllerId(), false, null)) {
|
||||||
paid = true;
|
paid = true;
|
||||||
}
|
}
|
||||||
if (!paid) {
|
if (!paid) {
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ import mage.constants.Zone;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
|
|
@ -184,7 +185,7 @@ class HankyuCountersSourceCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Permanent equipment = game.getPermanent(this.effectGivingEquipmentId);
|
Permanent equipment = game.getPermanent(this.effectGivingEquipmentId);
|
||||||
if (equipment != null ) {
|
if (equipment != null ) {
|
||||||
this.removedCounters = equipment.getCounters().getCount(CounterType.AIM);
|
this.removedCounters = equipment.getCounters().getCount(CounterType.AIM);
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ import mage.constants.Rarity;
|
||||||
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.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
|
|
@ -98,7 +99,7 @@ class HisokaMinamoSenseiDiscardTargetCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
if (targets.choose(Outcome.Discard, controllerId, sourceId, game)) {
|
if (targets.choose(Outcome.Discard, controllerId, sourceId, game)) {
|
||||||
Player player = game.getPlayer(controllerId);
|
Player player = game.getPlayer(controllerId);
|
||||||
for (UUID targetId: targets.get(0).getTargets()) {
|
for (UUID targetId: targets.get(0).getTargets()) {
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ import mage.abilities.Ability;
|
||||||
import mage.abilities.SpellAbility;
|
import mage.abilities.SpellAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldTappedAbility;
|
import mage.abilities.common.EntersBattlefieldTappedAbility;
|
||||||
import mage.abilities.condition.Condition;
|
import mage.abilities.condition.Condition;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.common.PayLifeCost;
|
import mage.abilities.costs.common.PayLifeCost;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.mana.ConditionalColorlessManaAbility;
|
import mage.abilities.mana.ConditionalColorlessManaAbility;
|
||||||
|
|
@ -76,6 +77,7 @@ public class UntaidakeTheCloudKeeper extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
class LegendarySpellManaBuilder extends ConditionalManaBuilder {
|
class LegendarySpellManaBuilder extends ConditionalManaBuilder {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConditionalMana build(Object... options) {
|
public ConditionalMana build(Object... options) {
|
||||||
return new LegendaryCastConditionalMana(this.mana);
|
return new LegendaryCastConditionalMana(this.mana);
|
||||||
|
|
@ -97,6 +99,7 @@ class LegendaryCastConditionalMana extends ConditionalMana {
|
||||||
}
|
}
|
||||||
|
|
||||||
class LegendaryCastManaCondition extends ManaCondition implements Condition {
|
class LegendaryCastManaCondition extends ManaCondition implements Condition {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
if (source instanceof SpellAbility) {
|
if (source instanceof SpellAbility) {
|
||||||
|
|
@ -109,7 +112,7 @@ class LegendaryCastManaCondition extends ManaCondition implements Condition {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source, UUID originalId) {
|
public boolean apply(Game game, Ability source, UUID originalId, Cost costsToPay) {
|
||||||
return apply(game, source);
|
return apply(game, source);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -30,6 +30,7 @@ package mage.sets.coldsnap;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.Mana;
|
import mage.Mana;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.keyword.CumulativeUpkeepAbility;
|
import mage.abilities.keyword.CumulativeUpkeepAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
|
|
@ -73,7 +74,7 @@ class BraidOfFireCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Player player = game.getPlayer(controllerId);
|
Player player = game.getPlayer(controllerId);
|
||||||
player.getManaPool().addMana(Mana.RedMana(1), game, ability);
|
player.getManaPool().addMana(Mana.RedMana(1), game, ability);
|
||||||
paid = true;
|
paid = true;
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ package mage.sets.coldsnap;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.keyword.CumulativeUpkeepAbility;
|
import mage.abilities.keyword.CumulativeUpkeepAbility;
|
||||||
import mage.cards.Card;
|
import mage.cards.Card;
|
||||||
|
|
@ -84,7 +85,7 @@ class JotunGruntCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Player controller = game.getPlayer(controllerId);
|
Player controller = game.getPlayer(controllerId);
|
||||||
if (controller != null) {
|
if (controller != null) {
|
||||||
if (targets.choose(Outcome.Removal, controllerId, sourceId, game)) {
|
if (targets.choose(Outcome.Removal, controllerId, sourceId, game)) {
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ package mage.sets.coldsnap;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.keyword.CumulativeUpkeepAbility;
|
import mage.abilities.keyword.CumulativeUpkeepAbility;
|
||||||
import mage.abilities.keyword.TrampleAbility;
|
import mage.abilities.keyword.TrampleAbility;
|
||||||
|
|
@ -89,7 +90,7 @@ class ShelteringAncientCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Player controller = game.getPlayer(controllerId);
|
Player controller = game.getPlayer(controllerId);
|
||||||
if (controller != null) {
|
if (controller != null) {
|
||||||
Target target = new TargetCreaturePermanent(1, 1, filter, true);
|
Target target = new TargetCreaturePermanent(1, 1, filter, true);
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,7 @@ class AllianceOfArmsEffect extends OneShotEffect {
|
||||||
xValue = player.announceXMana(0, Integer.MAX_VALUE, "How much mana will you pay?", game, source);
|
xValue = player.announceXMana(0, Integer.MAX_VALUE, "How much mana will you pay?", game, source);
|
||||||
if (xValue > 0) {
|
if (xValue > 0) {
|
||||||
Cost cost = new GenericManaCost(xValue);
|
Cost cost = new GenericManaCost(xValue);
|
||||||
payed = cost.pay(source, game, source.getSourceId(), player.getId(), false);
|
payed = cost.pay(source, game, source.getSourceId(), player.getId(), false, null);
|
||||||
} else {
|
} else {
|
||||||
payed = true;
|
payed = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -147,7 +147,7 @@ class ChorusOfTheConclaveReplacementEffect extends ReplacementEffectImpl {
|
||||||
xValue = player.announceXMana(0, Integer.MAX_VALUE, "How much mana will you pay?", game, source);
|
xValue = player.announceXMana(0, Integer.MAX_VALUE, "How much mana will you pay?", game, source);
|
||||||
if (xValue > 0) {
|
if (xValue > 0) {
|
||||||
Cost cost = new GenericManaCost(xValue);
|
Cost cost = new GenericManaCost(xValue);
|
||||||
payed = cost.pay(source, game, source.getSourceId(), player.getId(), false);
|
payed = cost.pay(source, game, source.getSourceId(), player.getId(), false, null);
|
||||||
} else {
|
} else {
|
||||||
payed = true;
|
payed = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ class CollectiveVoyageEffect extends OneShotEffect {
|
||||||
xValue = player.announceXMana(0, Integer.MAX_VALUE, "How much mana will you pay?", game, source);
|
xValue = player.announceXMana(0, Integer.MAX_VALUE, "How much mana will you pay?", game, source);
|
||||||
if (xValue > 0) {
|
if (xValue > 0) {
|
||||||
Cost cost = new GenericManaCost(xValue);
|
Cost cost = new GenericManaCost(xValue);
|
||||||
payed = cost.pay(source, game, source.getSourceId(), player.getId(), false);
|
payed = cost.pay(source, game, source.getSourceId(), player.getId(), false, null);
|
||||||
} else {
|
} else {
|
||||||
payed = true;
|
payed = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@ class ManaChargedDragonEffect extends OneShotEffect {
|
||||||
xValue = player.announceXMana(0, Integer.MAX_VALUE, "How much mana will you pay?", game, source);
|
xValue = player.announceXMana(0, Integer.MAX_VALUE, "How much mana will you pay?", game, source);
|
||||||
if (xValue > 0) {
|
if (xValue > 0) {
|
||||||
Cost cost = new GenericManaCost(xValue);
|
Cost cost = new GenericManaCost(xValue);
|
||||||
payed = cost.pay(source, game, source.getSourceId(), player.getId(), false);
|
payed = cost.pay(source, game, source.getSourceId(), player.getId(), false, null);
|
||||||
} else {
|
} else {
|
||||||
payed = true;
|
payed = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ class MindsAglowEffect extends OneShotEffect {
|
||||||
xValue = player.announceXMana(0, Integer.MAX_VALUE, "How much mana will you pay?", game, source);
|
xValue = player.announceXMana(0, Integer.MAX_VALUE, "How much mana will you pay?", game, source);
|
||||||
if (xValue > 0) {
|
if (xValue > 0) {
|
||||||
Cost cost = new GenericManaCost(xValue);
|
Cost cost = new GenericManaCost(xValue);
|
||||||
payed = cost.pay(source, game, source.getSourceId(), player.getId(), false);
|
payed = cost.pay(source, game, source.getSourceId(), player.getId(), false, null);
|
||||||
} else {
|
} else {
|
||||||
payed = true;
|
payed = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,7 @@ class SharedTraumaEffect extends OneShotEffect {
|
||||||
xValue = player.announceXMana(0, Integer.MAX_VALUE, "How much mana will you pay?", game, source);
|
xValue = player.announceXMana(0, Integer.MAX_VALUE, "How much mana will you pay?", game, source);
|
||||||
if (xValue > 0) {
|
if (xValue > 0) {
|
||||||
Cost cost = new GenericManaCost(xValue);
|
Cost cost = new GenericManaCost(xValue);
|
||||||
payed = cost.pay(source, game, source.getSourceId(), player.getId(), false);
|
payed = cost.pay(source, game, source.getSourceId(), player.getId(), false, null);
|
||||||
} else {
|
} else {
|
||||||
payed = true;
|
payed = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,7 @@ class VishKalBloodArbiterCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Permanent permanent = game.getPermanent(sourceId);
|
Permanent permanent = game.getPermanent(sourceId);
|
||||||
if (permanent != null) {
|
if (permanent != null) {
|
||||||
this.amount = permanent.getCounters().getCount(name);
|
this.amount = permanent.getCounters().getCount(name);
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,7 @@ import mage.target.common.TargetCreatureOrPlayer;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -200,7 +201,7 @@ class MarathWillOfTheWildRemoveCountersCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
int amount = new ManacostVariableValue().calculate(game, ability, null);
|
int amount = new ManacostVariableValue().calculate(game, ability, null);
|
||||||
Permanent permanent = game.getPermanent(sourceId);
|
Permanent permanent = game.getPermanent(sourceId);
|
||||||
if (permanent != null && permanent.getCounters().getCount(CounterType.P1P1) >= amount) {
|
if (permanent != null && permanent.getCounters().getCount(CounterType.P1P1) >= amount) {
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ class VictimizeEffect extends OneShotEffect {
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
if (controller != null) {
|
if (controller != null) {
|
||||||
SacrificeTargetCost cost = new SacrificeTargetCost(new TargetControlledCreaturePermanent(new FilterControlledCreaturePermanent("a creature")));
|
SacrificeTargetCost cost = new SacrificeTargetCost(new TargetControlledCreaturePermanent(new FilterControlledCreaturePermanent("a creature")));
|
||||||
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
controller.moveCards(new CardsImpl(getTargetPointer().getTargets(game, source)).getCards(game),
|
controller.moveCards(new CardsImpl(getTargetPointer().getTargets(game, source)).getCards(game),
|
||||||
Zone.BATTLEFIELD, source, game, true, false, false, null);
|
Zone.BATTLEFIELD, source, game, true, false, false, null);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ class JarOfEyeballsCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Permanent permanent = game.getPermanent(ability.getSourceId());
|
Permanent permanent = game.getPermanent(ability.getSourceId());
|
||||||
if (permanent != null) {
|
if (permanent != null) {
|
||||||
this.removedCounters = permanent.getCounters().getCount(CounterType.EYEBALL);
|
this.removedCounters = permanent.getCounters().getCount(CounterType.EYEBALL);
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ import mage.constants.*;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
|
|
@ -90,7 +91,7 @@ class UnattachCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Permanent permanent = game.getPermanent(sourceId);
|
Permanent permanent = game.getPermanent(sourceId);
|
||||||
if (permanent != null) {
|
if (permanent != null) {
|
||||||
Permanent attachment = game.getPermanent(attachmentid);
|
Permanent attachment = game.getPermanent(attachmentid);
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import java.util.UUID;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
|
|
@ -104,7 +105,7 @@ class SurestrikeTridentUnattachCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Permanent permanent = game.getPermanent(sourceId);
|
Permanent permanent = game.getPermanent(sourceId);
|
||||||
if (permanent != null) {
|
if (permanent != null) {
|
||||||
for (UUID attachmentId : permanent.getAttachments()) {
|
for (UUID attachmentId : permanent.getAttachments()) {
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ import mage.MageObject;
|
||||||
import mage.Mana;
|
import mage.Mana;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
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;
|
||||||
|
|
@ -120,7 +121,7 @@ class HavenOfTheSpiritConditionalMana extends ConditionalMana {
|
||||||
class HavenOfTheSpiritManaCondition extends CreatureCastManaCondition {
|
class HavenOfTheSpiritManaCondition extends CreatureCastManaCondition {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source, UUID manaProducer) {
|
public boolean apply(Game game, Ability source, UUID manaProducer, Cost costToPay) {
|
||||||
if (super.apply(game, source)) {
|
if (super.apply(game, source)) {
|
||||||
MageObject object = game.getObject(source.getSourceId());
|
MageObject object = game.getObject(source.getSourceId());
|
||||||
if (object.hasSubtype("Dragon")
|
if (object.hasSubtype("Dragon")
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ class MysticMeditationEffect extends OneShotEffect {
|
||||||
&& controller.chooseUse(Outcome.Discard, "Do you want to discard a creature card? If you don't, you must discard 2 cards", source, game)) {
|
&& controller.chooseUse(Outcome.Discard, "Do you want to discard a creature card? If you don't, you must discard 2 cards", source, game)) {
|
||||||
Cost cost = new DiscardTargetCost(new TargetCardInHand(filter));
|
Cost cost = new DiscardTargetCost(new TargetCardInHand(filter));
|
||||||
if (cost.canPay(source, source.getSourceId(), controller.getId(), game)) {
|
if (cost.canPay(source, source.getSourceId(), controller.getId(), game)) {
|
||||||
if (cost.pay(source, game, source.getSourceId(), controller.getId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), controller.getId(), false, null)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import java.util.UUID;
|
||||||
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.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
|
@ -101,7 +102,7 @@ class HatchetBullyCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Permanent permanent = game.getPermanent(ability.getTargets().get(1).getFirstTarget());
|
Permanent permanent = game.getPermanent(ability.getTargets().get(1).getFirstTarget());
|
||||||
if (permanent != null) {
|
if (permanent != null) {
|
||||||
permanent.addCounters(CounterType.M1M1.createInstance(), game);
|
permanent.addCounters(CounterType.M1M1.createInstance(), game);
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ import mage.ObjectColor;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.effects.Effect;
|
import mage.abilities.effects.Effect;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
|
|
@ -111,7 +112,7 @@ class ImpelledGiantCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
if (target.choose(Outcome.Tap, controllerId, sourceId, game)) {
|
if (target.choose(Outcome.Tap, controllerId, sourceId, game)) {
|
||||||
for (UUID targetId: (List<UUID>)target.getTargets()) {
|
for (UUID targetId: (List<UUID>)target.getTargets()) {
|
||||||
Permanent permanent = game.getPermanent(targetId);
|
Permanent permanent = game.getPermanent(targetId);
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ class RiseOfTheHobgoblinsEffect extends OneShotEffect {
|
||||||
if (you != null && you.chooseUse(Outcome.Neutral, "Do you want to to pay {X}?", source, game)) {
|
if (you != null && you.chooseUse(Outcome.Neutral, "Do you want to to pay {X}?", source, game)) {
|
||||||
int costX = you.announceXMana(0, Integer.MAX_VALUE, "Announce the value for {X}", game, source);
|
int costX = you.announceXMana(0, Integer.MAX_VALUE, "Announce the value for {X}", game, source);
|
||||||
cost.add(new GenericManaCost(costX));
|
cost.add(new GenericManaCost(costX));
|
||||||
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
Token token = new GoblinSoldierToken();
|
Token token = new GoblinSoldierToken();
|
||||||
return token.putOntoBattlefield(costX, game, source.getSourceId(), source.getControllerId());
|
return token.putOntoBattlefield(costX, game, source.getSourceId(), source.getControllerId());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@ class ErraticPortalEffect extends OneShotEffect {
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
if (player.chooseUse(Outcome.Benefit, "Pay {1}? (Otherwise " + targetCreature.getLogName() +" will be returned to its owner's hand)", source, game)) {
|
if (player.chooseUse(Outcome.Benefit, "Pay {1}? (Otherwise " + targetCreature.getLogName() +" will be returned to its owner's hand)", source, game)) {
|
||||||
cost.pay(source, game, targetCreature.getControllerId(), targetCreature.getControllerId(), false);
|
cost.pay(source, game, targetCreature.getControllerId(), targetCreature.getControllerId(), false, null);
|
||||||
}
|
}
|
||||||
if (!cost.isPaid()) {
|
if (!cost.isPaid()) {
|
||||||
controller.moveCards(targetCreature, Zone.BATTLEFIELD, Zone.HAND, source, game);
|
controller.moveCards(targetCreature, Zone.BATTLEFIELD, Zone.HAND, source, game);
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldAbility;
|
import mage.abilities.common.EntersBattlefieldAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.condition.common.SourceHasCounterCondition;
|
import mage.abilities.condition.common.SourceHasCounterCondition;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.decorator.ConditionalContinuousEffect;
|
import mage.abilities.decorator.ConditionalContinuousEffect;
|
||||||
import mage.abilities.dynamicvalue.common.CountersCount;
|
import mage.abilities.dynamicvalue.common.CountersCount;
|
||||||
|
|
@ -127,7 +128,7 @@ class TidalInfluenceCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
this.paid = true;
|
this.paid = true;
|
||||||
return paid;
|
return paid;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,7 @@ class DisruptionAuraEffect extends OneShotEffect {
|
||||||
Cost cost = permanent.getManaCost().copy();
|
Cost cost = permanent.getManaCost().copy();
|
||||||
if (player.chooseUse(Outcome.Benefit, message, source, game)) {
|
if (player.chooseUse(Outcome.Benefit, message, source, game)) {
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -148,7 +148,7 @@ class PlungeIntoDarknessSearchEffect extends OneShotEffect {
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
VariableCost cost = new PayVariableLifeCost();
|
VariableCost cost = new PayVariableLifeCost();
|
||||||
int xValue = cost.announceXValue(source, game);
|
int xValue = cost.announceXValue(source, game);
|
||||||
cost.getFixedCostsFromAnnouncedValue(xValue).pay(source, game, source.getSourceId(), source.getControllerId(), false);
|
cost.getFixedCostsFromAnnouncedValue(xValue).pay(source, game, source.getSourceId(), source.getControllerId(), false, null);
|
||||||
|
|
||||||
Cards cards = new CardsImpl();
|
Cards cards = new CardsImpl();
|
||||||
int count = Math.min(player.getLibrary().size(), xValue);
|
int count = Math.min(player.getLibrary().size(), xValue);
|
||||||
|
|
|
||||||
|
|
@ -130,11 +130,11 @@ class PossessedPortalEffect extends OneShotEffect {
|
||||||
Cost discardCost = new DiscardCardCost();
|
Cost discardCost = new DiscardCardCost();
|
||||||
if (discardCost.canPay(source, source.getSourceId(), playerId, game)
|
if (discardCost.canPay(source, source.getSourceId(), playerId, game)
|
||||||
&& player.chooseUse(Outcome.Discard, "Discard a card? (Otherwise sacrifice a permanent)", source, game)) {
|
&& player.chooseUse(Outcome.Discard, "Discard a card? (Otherwise sacrifice a permanent)", source, game)) {
|
||||||
discardCost.pay(source, game, source.getSourceId(), playerId, true);
|
discardCost.pay(source, game, source.getSourceId(), playerId, true, null);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Cost sacrificeCost = new SacrificeTargetCost(new TargetControlledPermanent());
|
Cost sacrificeCost = new SacrificeTargetCost(new TargetControlledPermanent());
|
||||||
sacrificeCost.pay(source, game, source.getSourceId(), playerId, true);
|
sacrificeCost.pay(source, game, source.getSourceId(), playerId, true, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ class ForceOfNatureEffect extends OneShotEffect {
|
||||||
Cost cost = new ManaCostsImpl("{G}{G}{G}{G}");
|
Cost cost = new ManaCostsImpl("{G}{G}{G}{G}");
|
||||||
String message = "Would you like to pay {G}{G}{G}{G} to prevent taking 8 damage from {this}?";
|
String message = "Would you like to pay {G}{G}{G}{G} to prevent taking 8 damage from {this}?";
|
||||||
if (!(controller.chooseUse(Outcome.Benefit, message, source, game)
|
if (!(controller.chooseUse(Outcome.Benefit, message, source, game)
|
||||||
&& cost.pay(source, game, source.getSourceId(), controller.getId(), false))) {
|
&& cost.pay(source, game, source.getSourceId(), controller.getId(), false, null))) {
|
||||||
controller.damage(8, source.getSourceId(), game, false, true);
|
controller.damage(8, source.getSourceId(), game, false, true);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import java.util.UUID;
|
||||||
import mage.Mana;
|
import mage.Mana;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.effects.common.BasicManaEffect;
|
import mage.abilities.effects.common.BasicManaEffect;
|
||||||
|
|
@ -114,7 +115,7 @@ class FilterPermanentCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
this.paid = true;
|
this.paid = true;
|
||||||
return paid;
|
return paid;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ class LeylineOfLightningEffect extends DamageTargetEffect {
|
||||||
Player player = game.getPlayer(source.getControllerId());
|
Player player = game.getPlayer(source.getControllerId());
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
Cost cost = new GenericManaCost(1);
|
Cost cost = new GenericManaCost(1);
|
||||||
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
super.apply(game, source);
|
super.apply(game, source);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ class MysticRemoraTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
if (controller != null && opponent != null && sourceObject != null) {
|
if (controller != null && opponent != null && sourceObject != null) {
|
||||||
Cost cost = new GenericManaCost(4);
|
Cost cost = new GenericManaCost(4);
|
||||||
String message = "Would you like to pay {4} to prevent the opponent to draw a card?";
|
String message = "Would you like to pay {4} to prevent the opponent to draw a card?";
|
||||||
if (!(opponent.chooseUse(Outcome.Benefit, message, source, game) && cost.pay(source, game, source.getSourceId(), opponent.getId(), false))) {
|
if (!(opponent.chooseUse(Outcome.Benefit, message, source, game) && cost.pay(source, game, source.getSourceId(), opponent.getId(), false, null))) {
|
||||||
if(controller.chooseUse(Outcome.DrawCard, "Draw a card (" + sourceObject.getLogName() +")", source, game)) {
|
if(controller.chooseUse(Outcome.DrawCard, "Draw a card (" + sourceObject.getLogName() +")", source, game)) {
|
||||||
controller.drawCards(1, game);
|
controller.drawCards(1, game);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,7 @@ class SeizuresEffect extends OneShotEffect {
|
||||||
if(cost.canPay(source, source.getSourceId(), player.getId(), game)
|
if(cost.canPay(source, source.getSourceId(), player.getId(), game)
|
||||||
&& player.chooseUse(Outcome.Benefit, "Pay " + cost.getText() + " to avoid damage?", source, game)) {
|
&& player.chooseUse(Outcome.Benefit, "Pay " + cost.getText() + " to avoid damage?", source, game)) {
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
if(cost.pay(source, game, source.getSourceId(), player.getId(), false)) {
|
if(cost.pay(source, game, source.getSourceId(), player.getId(), false, null)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ package mage.sets.innistrad;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.effects.Effect;
|
import mage.abilities.effects.Effect;
|
||||||
import mage.abilities.effects.common.PutTokenOntoBattlefieldCopyTargetEffect;
|
import mage.abilities.effects.common.PutTokenOntoBattlefieldCopyTargetEffect;
|
||||||
|
|
@ -97,7 +98,7 @@ class BackFromTheBrinkCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
if (targets.choose(Outcome.Exile, controllerId, sourceId, game)) {
|
if (targets.choose(Outcome.Exile, controllerId, sourceId, game)) {
|
||||||
Player controller = game.getPlayer(controllerId);
|
Player controller = game.getPlayer(controllerId);
|
||||||
if (controller != null) {
|
if (controller != null) {
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ class FrightfulDelusionEffect extends OneShotEffect {
|
||||||
game.getPlayer(spell.getControllerId()).discard(
|
game.getPlayer(spell.getControllerId()).discard(
|
||||||
1, false, source, game);
|
1, false, source, game);
|
||||||
if (!cost.pay(source, game, spell.getControllerId(),
|
if (!cost.pay(source, game, spell.getControllerId(),
|
||||||
spell.getControllerId(), false)) {
|
spell.getControllerId(), false, null)) {
|
||||||
return game.getStack().counter(source.getFirstTarget(),
|
return game.getStack().counter(source.getFirstTarget(),
|
||||||
source.getSourceId(), game);
|
source.getSourceId(), game);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@ class ScreechingBatTransformSourceEffect extends OneShotEffect {
|
||||||
Permanent permanent = game.getPermanent(source.getSourceId());
|
Permanent permanent = game.getPermanent(source.getSourceId());
|
||||||
if (permanent != null) {
|
if (permanent != null) {
|
||||||
Cost cost = new ManaCostsImpl("{2}{B}{B}");
|
Cost cost = new ManaCostsImpl("{2}{B}{B}");
|
||||||
if (cost.pay(source, game, permanent.getControllerId(), permanent.getControllerId(), false)) {
|
if (cost.pay(source, game, permanent.getControllerId(), permanent.getControllerId(), false, null)) {
|
||||||
if (permanent.canTransform()) {
|
if (permanent.canTransform()) {
|
||||||
permanent.setTransformed(!permanent.isTransformed());
|
permanent.setTransformed(!permanent.isTransformed());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ class AthreosGodOfPassageReturnEffect extends OneShotEffect {
|
||||||
Cost cost = new PayLifeCost(3);
|
Cost cost = new PayLifeCost(3);
|
||||||
if (cost.canPay(source, source.getSourceId(), opponent.getId(), game)
|
if (cost.canPay(source, source.getSourceId(), opponent.getId(), game)
|
||||||
&& opponent.chooseUse(outcome, new StringBuilder("Pay 3 live to prevent that ").append(creature.getLogName()).append(" returns to ").append(controller.getLogName()).append("'s hand?").toString(), source, game)) {
|
&& opponent.chooseUse(outcome, new StringBuilder("Pay 3 live to prevent that ").append(creature.getLogName()).append(" returns to ").append(controller.getLogName()).append("'s hand?").toString(), source, game)) {
|
||||||
if (cost.pay(source, game, source.getSourceId(), opponent.getId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), opponent.getId(), false, null)) {
|
||||||
paid = true;
|
paid = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ class DiscipleOfDeceitEffect extends OneShotEffect {
|
||||||
String message = "Discard a nonland card to search your library?";
|
String message = "Discard a nonland card to search your library?";
|
||||||
if (cost.canPay(source, source.getSourceId(), source.getControllerId(), game)
|
if (cost.canPay(source, source.getSourceId(), source.getControllerId(), game)
|
||||||
&& player.chooseUse(Outcome.Detriment, message, source, game)) {
|
&& player.chooseUse(Outcome.Detriment, message, source, game)) {
|
||||||
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
Card card = game.getCard(cost.getTargets().getFirstTarget());
|
Card card = game.getCard(cost.getTargets().getFirstTarget());
|
||||||
if (card == null) {
|
if (card == null) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ class SageOfHoursCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Permanent permanent = game.getPermanent(ability.getSourceId());
|
Permanent permanent = game.getPermanent(ability.getSourceId());
|
||||||
if (permanent != null) {
|
if (permanent != null) {
|
||||||
this.removedCounters = permanent.getCounters().getCount(CounterType.P1P1);
|
this.removedCounters = permanent.getCounters().getCount(CounterType.P1P1);
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ import mage.MageObject;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.common.LeavesBattlefieldTriggeredAbility;
|
import mage.abilities.common.LeavesBattlefieldTriggeredAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.effects.common.ReturnFromExileForSourceEffect;
|
import mage.abilities.effects.common.ReturnFromExileForSourceEffect;
|
||||||
import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect;
|
import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect;
|
||||||
|
|
@ -103,7 +104,7 @@ class WormfangDrakeExileCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Player controller = game.getPlayer(controllerId);
|
Player controller = game.getPlayer(controllerId);
|
||||||
MageObject sourceObject = ability.getSourceObject(game);
|
MageObject sourceObject = ability.getSourceObject(game);
|
||||||
if (controller != null && sourceObject != null) {
|
if (controller != null && sourceObject != null) {
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ class ChainLightningEffect extends OneShotEffect {
|
||||||
if (affectedPlayer != null) {
|
if (affectedPlayer != null) {
|
||||||
if (affectedPlayer.chooseUse(Outcome.Copy, "Pay {R}{R} to copy the spell?", source, game)) {
|
if (affectedPlayer.chooseUse(Outcome.Copy, "Pay {R}{R} to copy the spell?", source, game)) {
|
||||||
Cost cost = new ManaCostsImpl("{R}{R}");
|
Cost cost = new ManaCostsImpl("{R}{R}");
|
||||||
if (cost.pay(source, game, source.getSourceId(), affectedPlayer.getId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), affectedPlayer.getId(), false, null)) {
|
||||||
Spell spell = game.getStack().getSpell(source.getSourceId());
|
Spell spell = game.getStack().getSpell(source.getSourceId());
|
||||||
if (spell != null) {
|
if (spell != null) {
|
||||||
Spell copy = spell.copySpell();
|
Spell copy = spell.copySpell();
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@ class CosmicHorrorEffect extends OneShotEffect {
|
||||||
}
|
}
|
||||||
if (controller.chooseUse(Outcome.Benefit, sb.toString(), source, game)) {
|
if (controller.chooseUse(Outcome.Benefit, sb.toString(), source, game)) {
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,7 @@ class DestroySourceUnlessPaysEffect extends OneShotEffect {
|
||||||
if (player != null && permanent != null) {
|
if (player != null && permanent != null) {
|
||||||
if (player.chooseUse(Outcome.Benefit, "Pay " + cost.getText() + "?", source, game)) {
|
if (player.chooseUse(Outcome.Benefit, "Pay " + cost.getText() + "?", source, game)) {
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,7 @@ class DemonicHordesEffect extends OneShotEffect {
|
||||||
}
|
}
|
||||||
if (controller.chooseUse(Outcome.Benefit, sb.toString(), source, game)) {
|
if (controller.chooseUse(Outcome.Benefit, sb.toString(), source, game)) {
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,7 @@ class BrokenAmbitionsEffect extends OneShotEffect {
|
||||||
message = costToPay.getText() + " to prevent counter effect?";
|
message = costToPay.getText() + " to prevent counter effect?";
|
||||||
}
|
}
|
||||||
costToPay.clearPaid();
|
costToPay.clearPaid();
|
||||||
if (!(controller.chooseUse(Outcome.Benefit, message, source, game) && costToPay.pay(source, game, spell.getSourceId(), spell.getControllerId(), false))) {
|
if (!(controller.chooseUse(Outcome.Benefit, message, source, game) && costToPay.pay(source, game, spell.getSourceId(), spell.getControllerId(), false, null))) {
|
||||||
game.getStack().counter(spell.getId(), source.getSourceId(), game);
|
game.getStack().counter(spell.getId(), source.getSourceId(), game);
|
||||||
}
|
}
|
||||||
if (ClashEffect.getInstance().apply(game, source)) {
|
if (ClashEffect.getInstance().apply(game, source)) {
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ class RingsOfBrighthearthEffect extends OneShotEffect {
|
||||||
ManaCostsImpl cost = new ManaCostsImpl("{2}");
|
ManaCostsImpl cost = new ManaCostsImpl("{2}");
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
if (player.chooseUse(Outcome.Benefit, "Pay " + cost.getText() + "? If you do, copy that ability. You may choose new targets for the copy.", source, game)) {
|
if (player.chooseUse(Outcome.Benefit, "Pay " + cost.getText() + "? If you do, copy that ability. You may choose new targets for the copy.", source, game)) {
|
||||||
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
Ability ability = (Ability) getValue("stackAbility");
|
Ability ability = (Ability) getValue("stackAbility");
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
Permanent sourcePermanent = game.getPermanent(source.getSourceId());
|
Permanent sourcePermanent = game.getPermanent(source.getSourceId());
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
|
|
@ -96,7 +97,7 @@ class SilvergillAdeptCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
|
|
||||||
Player player = game.getPlayer(controllerId);
|
Player player = game.getPlayer(controllerId);
|
||||||
if (player == null) {
|
if (player == null) {
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ import mage.constants.Zone;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.ActivatedAbilityImpl;
|
import mage.abilities.ActivatedAbilityImpl;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.mana.ColoredManaCost;
|
import mage.abilities.costs.mana.ColoredManaCost;
|
||||||
import mage.abilities.effects.common.DamageTargetEffect;
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
|
|
@ -137,7 +138,7 @@ class AncientHellkiteCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
this.paid = true;
|
this.paid = true;
|
||||||
return paid;
|
return paid;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -102,14 +102,14 @@ class IndulgentTormentorEffect extends OneShotEffect {
|
||||||
Cost cost = new SacrificeTargetCost(new TargetControlledCreaturePermanent());
|
Cost cost = new SacrificeTargetCost(new TargetControlledCreaturePermanent());
|
||||||
if (cost.canPay(source, source.getSourceId(), opponent.getId(), game)
|
if (cost.canPay(source, source.getSourceId(), opponent.getId(), game)
|
||||||
&& opponent.chooseUse(outcome, "Sacrifice a creature to prevent the card draw?", source, game)) {
|
&& opponent.chooseUse(outcome, "Sacrifice a creature to prevent the card draw?", source, game)) {
|
||||||
if (cost.pay(source, game, source.getSourceId(), opponent.getId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), opponent.getId(), false, null)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cost = new PayLifeCost(3);
|
cost = new PayLifeCost(3);
|
||||||
if (cost.canPay(source, source.getSourceId(), opponent.getId(), game)
|
if (cost.canPay(source, source.getSourceId(), opponent.getId(), game)
|
||||||
&& opponent.chooseUse(outcome, "Pay 3 life to prevent the card draw?", source, game)) {
|
&& opponent.chooseUse(outcome, "Pay 3 life to prevent the card draw?", source, game)) {
|
||||||
if (cost.pay(source, game, source.getSourceId(), opponent.getId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), opponent.getId(), false, null)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ package mage.sets.magic2015;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
|
|
@ -92,7 +93,7 @@ class NecromancersStockpileDiscardTargetCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
if (targets.choose(Outcome.Discard, controllerId, sourceId, game)) {
|
if (targets.choose(Outcome.Discard, controllerId, sourceId, game)) {
|
||||||
Player player = game.getPlayer(controllerId);
|
Player player = game.getPlayer(controllerId);
|
||||||
for (UUID targetId : targets.get(0).getTargets()) {
|
for (UUID targetId : targets.get(0).getTargets()) {
|
||||||
|
|
|
||||||
|
|
@ -29,11 +29,11 @@ package mage.sets.magic2015;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.ConditionalMana;
|
import mage.ConditionalMana;
|
||||||
import mage.MageInt;
|
|
||||||
import mage.MageObject;
|
import mage.MageObject;
|
||||||
import mage.Mana;
|
import mage.Mana;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.decorator.ConditionalActivatedAbility;
|
import mage.abilities.decorator.ConditionalActivatedAbility;
|
||||||
|
|
@ -124,7 +124,7 @@ class SliverHiveConditionalMana extends ConditionalMana {
|
||||||
class SliverHiveManaCondition extends CreatureCastManaCondition {
|
class SliverHiveManaCondition extends CreatureCastManaCondition {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source, UUID manaProducer) {
|
public boolean apply(Game game, Ability source, UUID manaProducer, Cost costToPay) {
|
||||||
if (super.apply(game, source)) {
|
if (super.apply(game, source)) {
|
||||||
MageObject object = game.getObject(source.getSourceId());
|
MageObject object = game.getObject(source.getSourceId());
|
||||||
if (object.hasSubtype("Sliver")) {
|
if (object.hasSubtype("Sliver")) {
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ class ForgottenLoreEffect extends OneShotEffect {
|
||||||
if(!done) {
|
if(!done) {
|
||||||
if(cost.canPay(source, source.getSourceId(), you.getId(), game) && you.chooseUse(Outcome.Benefit, "Pay {G} to choose a different card ?", source, game)) {
|
if(cost.canPay(source, source.getSourceId(), you.getId(), game) && you.chooseUse(Outcome.Benefit, "Pay {G} to choose a different card ?", source, game)) {
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
if(!cost.pay(source, game, source.getSourceId(), you.getId(), false)) {
|
if(!cost.pay(source, game, source.getSourceId(), you.getId(), false, null)) {
|
||||||
done = true;
|
done = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -113,7 +113,7 @@ class CounterSourceEffect extends OneShotEffect {
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
if(controller.chooseUse(Outcome.Detriment, "Sacrifice a land to not counter " + spell.getName() + "?", source, game)){
|
if(controller.chooseUse(Outcome.Detriment, "Sacrifice a land to not counter " + spell.getName() + "?", source, game)){
|
||||||
SacrificeTargetCost cost = new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent()));
|
SacrificeTargetCost cost = new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent()));
|
||||||
if(cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)){
|
if(cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)){
|
||||||
game.informPlayers(controller.getLogName() + " sacrifices a land to not counter " + spell.getName() + ".");
|
game.informPlayers(controller.getLogName() + " sacrifices a land to not counter " + spell.getName() + ".");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import java.util.UUID;
|
||||||
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.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.common.PayLifeCost;
|
import mage.abilities.costs.common.PayLifeCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
|
@ -124,7 +125,7 @@ class WanderingMageCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Permanent permanent = game.getPermanent(ability.getTargets().get(1).getFirstTarget());
|
Permanent permanent = game.getPermanent(ability.getTargets().get(1).getFirstTarget());
|
||||||
if (permanent != null) {
|
if (permanent != null) {
|
||||||
permanent.addCounters(CounterType.M1M1.createInstance(), game);
|
permanent.addCounters(CounterType.M1M1.createInstance(), game);
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ class HasranOgressEffect extends OneShotEffect {
|
||||||
Cost cost = new ManaCostsImpl("{2}");
|
Cost cost = new ManaCostsImpl("{2}");
|
||||||
String message = "Would you like to pay {2} to prevent taking 3 damage from Hasran Ogress?";
|
String message = "Would you like to pay {2} to prevent taking 3 damage from Hasran Ogress?";
|
||||||
if (!(controller.chooseUse(Outcome.Benefit, message, source, game)
|
if (!(controller.chooseUse(Outcome.Benefit, message, source, game)
|
||||||
&& cost.pay(source, game, source.getSourceId(), controller.getId(), false))) {
|
&& cost.pay(source, game, source.getSourceId(), controller.getId(), false, null))) {
|
||||||
controller.damage(3, source.getSourceId(), game, false, true);
|
controller.damage(3, source.getSourceId(), game, false, true);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ import mage.MageObject;
|
||||||
import mage.Mana;
|
import mage.Mana;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.condition.Condition;
|
import mage.abilities.condition.Condition;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.mana.ConditionalColorlessManaAbility;
|
import mage.abilities.mana.ConditionalColorlessManaAbility;
|
||||||
import mage.abilities.mana.builder.ConditionalManaBuilder;
|
import mage.abilities.mana.builder.ConditionalManaBuilder;
|
||||||
|
|
@ -109,7 +110,7 @@ class ArtifactAbilityManaCondition extends ManaCondition implements Condition {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source, UUID originalId) {
|
public boolean apply(Game game, Ability source, UUID originalId, Cost costsToPay) {
|
||||||
return apply(game, source);
|
return apply(game, source);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ class HornOfPlentyEffect extends OneShotEffect {
|
||||||
if (caster != null) {
|
if (caster != null) {
|
||||||
if (caster.chooseUse(Outcome.DrawCard, "Pay {1} to draw a card at the beginning of the next end step?", source, game)) {
|
if (caster.chooseUse(Outcome.DrawCard, "Pay {1} to draw a card at the beginning of the next end step?", source, game)) {
|
||||||
Cost cost = new ManaCostsImpl("{1}");
|
Cost cost = new ManaCostsImpl("{1}");
|
||||||
if (cost.pay(source, game, source.getSourceId(), caster.getId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), caster.getId(), false, null)) {
|
||||||
Effect effect = new DrawCardTargetEffect(1);
|
Effect effect = new DrawCardTargetEffect(1);
|
||||||
effect.setTargetPointer(new FixedTarget(caster.getId()));
|
effect.setTargetPointer(new FixedTarget(caster.getId()));
|
||||||
return new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect, TargetController.ANY)).apply(game, source);
|
return new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect, TargetController.ANY)).apply(game, source);
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import java.util.UUID;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.condition.Condition;
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.costs.AlternativeCostSourceAbility;
|
import mage.abilities.costs.AlternativeCostSourceAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
|
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
|
|
@ -105,7 +106,7 @@ class LandGrantReavealCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Player player = game.getPlayer(controllerId);
|
Player player = game.getPlayer(controllerId);
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
player.revealCards("Land Grant", player.getHand(), game);
|
player.revealCards("Land Grant", player.getHand(), game);
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ class FlashEffect extends OneShotEffect {
|
||||||
StringBuilder sb = new StringBuilder("Pay ").append(reducedCost.getText()).append("?");
|
StringBuilder sb = new StringBuilder("Pay ").append(reducedCost.getText()).append("?");
|
||||||
if (player.chooseUse(Outcome.Benefit, sb.toString(), source, game)) {
|
if (player.chooseUse(Outcome.Benefit, sb.toString(), source, game)) {
|
||||||
reducedCost.clearPaid();
|
reducedCost.clearPaid();
|
||||||
if (reducedCost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (reducedCost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect;
|
import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect;
|
||||||
import mage.abilities.keyword.TrampleAbility;
|
import mage.abilities.keyword.TrampleAbility;
|
||||||
|
|
@ -94,7 +95,7 @@ class PhyrexianDreadnoughtSacrificeCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
int sumPower = 0;
|
int sumPower = 0;
|
||||||
if (targets.choose(Outcome.Sacrifice, controllerId, sourceId, game)) {
|
if (targets.choose(Outcome.Sacrifice, controllerId, sourceId, game)) {
|
||||||
for (UUID targetId: targets.get(0).getTargets()) {
|
for (UUID targetId: targets.get(0).getTargets()) {
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ class VaporousDjinnEffect extends OneShotEffect {
|
||||||
Cost cost = new ManaCostsImpl("{U}{U}");
|
Cost cost = new ManaCostsImpl("{U}{U}");
|
||||||
String message = "Would you like to pay {U}{U} to prevent {this} from phasing out?";
|
String message = "Would you like to pay {U}{U} to prevent {this} from phasing out?";
|
||||||
if (!(controller.chooseUse(Outcome.Benefit, message, source, game)
|
if (!(controller.chooseUse(Outcome.Benefit, message, source, game)
|
||||||
&& cost.pay(source, game, source.getSourceId(), controller.getId(), false))) {
|
&& cost.pay(source, game, source.getSourceId(), controller.getId(), false, null))) {
|
||||||
permanent.phaseOut(game);
|
permanent.phaseOut(game);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,7 @@ class CrystalShardEffect extends OneShotEffect {
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
final StringBuilder sb = new StringBuilder("Pay {1}? (Otherwise ").append(targetCreature.getName()).append(" will be returned to its owner's hand)");
|
final StringBuilder sb = new StringBuilder("Pay {1}? (Otherwise ").append(targetCreature.getName()).append(" will be returned to its owner's hand)");
|
||||||
if (player.chooseUse(Outcome.Benefit, sb.toString(), source, game)) {
|
if (player.chooseUse(Outcome.Benefit, sb.toString(), source, game)) {
|
||||||
cost.pay(source, game, targetCreature.getControllerId(), targetCreature.getControllerId(), false);
|
cost.pay(source, game, targetCreature.getControllerId(), targetCreature.getControllerId(), false, null);
|
||||||
}
|
}
|
||||||
if (!cost.isPaid()) {
|
if (!cost.isPaid()) {
|
||||||
controller.moveCards(targetCreature, Zone.BATTLEFIELD, Zone.HAND, source, game);
|
controller.moveCards(targetCreature, Zone.BATTLEFIELD, Zone.HAND, source, game);
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ class TajNarSwordsmithEffect extends OneShotEffect {
|
||||||
if (player != null && player.chooseUse(Outcome.BoostCreature, "Do you want to to pay {X}?", source, game)) {
|
if (player != null && player.chooseUse(Outcome.BoostCreature, "Do you want to to pay {X}?", source, game)) {
|
||||||
int costX = player.announceXMana(0, Integer.MAX_VALUE, "Announce the value for {X}", game, source);
|
int costX = player.announceXMana(0, Integer.MAX_VALUE, "Announce the value for {X}", game, source);
|
||||||
Cost cost = new GenericManaCost(costX);
|
Cost cost = new GenericManaCost(costX);
|
||||||
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
FilterCard filter = new FilterCard("Equipment card with converted mana cost " + costX + " or less");
|
FilterCard filter = new FilterCard("Equipment card with converted mana cost " + costX + " or less");
|
||||||
filter.add(new SubtypePredicate("Equipment"));
|
filter.add(new SubtypePredicate("Equipment"));
|
||||||
filter.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, costX + 1));
|
filter.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, costX + 1));
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.ActivatedAbility;
|
import mage.abilities.ActivatedAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.common.RemoveCounterCost;
|
import mage.abilities.costs.common.RemoveCounterCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
|
@ -141,7 +142,7 @@ class RemoveCounterFromCardCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
paid = false;
|
paid = false;
|
||||||
Player controller = game.getPlayer(controllerId);
|
Player controller = game.getPlayer(controllerId);
|
||||||
if (target.choose(Outcome.UnboostCreature, controllerId, sourceId, game)) {
|
if (target.choose(Outcome.UnboostCreature, controllerId, sourceId, game)) {
|
||||||
|
|
|
||||||
|
|
@ -99,7 +99,7 @@ class RootwaterThiefEffect extends OneShotEffect {
|
||||||
}
|
}
|
||||||
String message = "Pay {2} to exile a card from damaged player's library?";
|
String message = "Pay {2} to exile a card from damaged player's library?";
|
||||||
Cost cost = new ManaCostsImpl("{2}");
|
Cost cost = new ManaCostsImpl("{2}");
|
||||||
if(controller.chooseUse(Outcome.Benefit, message, source, game) && cost.pay(source, game, source.getSourceId(), controller.getId(), false))
|
if(controller.chooseUse(Outcome.Benefit, message, source, game) && cost.pay(source, game, source.getSourceId(), controller.getId(), false, null))
|
||||||
{
|
{
|
||||||
TargetCardInLibrary target = new TargetCardInLibrary();
|
TargetCardInLibrary target = new TargetCardInLibrary();
|
||||||
if (controller.searchLibrary(target, game, damagedPlayer.getId())) {
|
if (controller.searchLibrary(target, game, damagedPlayer.getId())) {
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ import mage.constants.Rarity;
|
||||||
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.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||||
|
|
@ -102,7 +103,7 @@ class GreenhiltTraineeCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
this.paid = true;
|
this.paid = true;
|
||||||
return paid;
|
return paid;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,8 @@ import mage.cards.CardImpl;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Rarity;
|
import mage.constants.Rarity;
|
||||||
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
|
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -48,6 +50,12 @@ import mage.target.common.TargetCreaturePermanent;
|
||||||
*/
|
*/
|
||||||
public class GravityNegator extends CardImpl {
|
public class GravityNegator extends CardImpl {
|
||||||
|
|
||||||
|
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
|
||||||
|
|
||||||
|
static {
|
||||||
|
filter.add(new AnotherPredicate());
|
||||||
|
}
|
||||||
|
|
||||||
public GravityNegator(UUID ownerId) {
|
public GravityNegator(UUID ownerId) {
|
||||||
super(ownerId, 45, "Gravity Negator", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{U}");
|
super(ownerId, 45, "Gravity Negator", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{U}");
|
||||||
this.expansionSetCode = "OGW";
|
this.expansionSetCode = "OGW";
|
||||||
|
|
@ -65,7 +73,7 @@ public class GravityNegator extends CardImpl {
|
||||||
// Whenenever Gravity Negator attacks, you may pay {C}. If you do, another target creature gains flying until end of turn.
|
// Whenenever Gravity Negator attacks, you may pay {C}. If you do, another target creature gains flying until end of turn.
|
||||||
Ability ability = new AttacksTriggeredAbility(new DoIfCostPaid(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{C}")), false,
|
Ability ability = new AttacksTriggeredAbility(new DoIfCostPaid(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{C}")), false,
|
||||||
"Whenever {this} attacks you may pay {C}. If you do, another target creature gains flying until end of turn.");
|
"Whenever {this} attacks you may pay {C}. If you do, another target creature gains flying until end of turn.");
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent(filter));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.condition.common.CardsInHandCondition;
|
import mage.abilities.condition.common.CardsInHandCondition;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.decorator.ConditionalTriggeredAbility;
|
import mage.abilities.decorator.ConditionalTriggeredAbility;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
|
|
@ -133,7 +134,7 @@ class KozilekDiscardCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Spell targetSpell = game.getStack().getSpell(ability.getFirstTarget());
|
Spell targetSpell = game.getStack().getSpell(ability.getFirstTarget());
|
||||||
if (targetSpell == null) {
|
if (targetSpell == null) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -175,7 +175,7 @@ class DecayingSoilEffect extends OneShotEffect {
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
if (player.chooseUse(Outcome.Benefit, " - Pay " + cost.getText() + "?", source, game)) {
|
if (player.chooseUse(Outcome.Benefit, " - Pay " + cost.getText() + "?", source, game)) {
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
UUID target = this.getTargetPointer().getFirst(game, source);
|
UUID target = this.getTargetPointer().getFirst(game, source);
|
||||||
if (target != null) {
|
if (target != null) {
|
||||||
Card card = game.getCard(target);
|
Card card = game.getCard(target);
|
||||||
|
|
|
||||||
|
|
@ -139,7 +139,7 @@ class DelayingShieldUpkeepEffect extends OneShotEffect {
|
||||||
for (int i = numCounters; i > 0; i--) {
|
for (int i = numCounters; i > 0; i--) {
|
||||||
if (controller.chooseUse(Outcome.Benefit, "Pay {1}{W}? (" + i + " counters left to pay)", source, game)) {
|
if (controller.chooseUse(Outcome.Benefit, "Pay {1}{W}? (" + i + " counters left to pay)", source, game)) {
|
||||||
Cost cost = new ManaCostsImpl<>("{1}{W}");
|
Cost cost = new ManaCostsImpl<>("{1}{W}");
|
||||||
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ class DivertEffect extends OneShotEffect {
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
if (!cost.pay(source, game, spell.getControllerId(),
|
if (!cost.pay(source, game, spell.getControllerId(),
|
||||||
spell.getControllerId(), false)) {
|
spell.getControllerId(), false, null)) {
|
||||||
return spell.chooseNewTargets(game, source.getControllerId(), true, true, null);
|
return spell.chooseNewTargets(game, source.getControllerId(), true, true, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ class UnifyingTheoryEffect extends OneShotEffect {
|
||||||
if (caster != null) {
|
if (caster != null) {
|
||||||
if (caster.chooseUse(Outcome.DrawCard, "Pay {2} to draw a card?", source, game)) {
|
if (caster.chooseUse(Outcome.DrawCard, "Pay {2} to draw a card?", source, game)) {
|
||||||
Cost cost = new ManaCostsImpl("{2}");
|
Cost cost = new ManaCostsImpl("{2}");
|
||||||
if (cost.pay(source, game, source.getSourceId(), caster.getId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), caster.getId(), false, null)) {
|
||||||
caster.drawCards(1, game);
|
caster.drawCards(1, game);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ class BrainGorgersCounterSourceEffect extends OneShotEffect {
|
||||||
Player player = game.getPlayer(playerId);
|
Player player = game.getPlayer(playerId);
|
||||||
if (cost.canPay(source, source.getSourceId(), player.getId(), game)
|
if (cost.canPay(source, source.getSourceId(), player.getId(), game)
|
||||||
&& player.chooseUse(outcome, "Sacrifice a creature to counter " + sourceObject.getIdName() + "?", source, game)) {
|
&& player.chooseUse(outcome, "Sacrifice a creature to counter " + sourceObject.getIdName() + "?", source, game)) {
|
||||||
if (cost.pay(source, game, source.getSourceId(), player.getId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), player.getId(), false, null)) {
|
||||||
game.informPlayers(player.getLogName() + " sacrifices a creature to counter " + sourceObject.getIdName() + ".");
|
game.informPlayers(player.getLogName() + " sacrifices a creature to counter " + sourceObject.getIdName() + ".");
|
||||||
Spell spell = game.getStack().getSpell(source.getSourceId());
|
Spell spell = game.getStack().getSpell(source.getSourceId());
|
||||||
if (spell != null) {
|
if (spell != null) {
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ class DashHopesCounterSourceEffect extends OneShotEffect {
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
if (cost.canPay(source, source.getSourceId(), player.getId(), game)
|
if (cost.canPay(source, source.getSourceId(), player.getId(), game)
|
||||||
&& player.chooseUse(outcome, "Pay 5 life to counter " + sourceObject.getIdName() + "?", source, game)) {
|
&& player.chooseUse(outcome, "Pay 5 life to counter " + sourceObject.getIdName() + "?", source, game)) {
|
||||||
if (cost.pay(source, game, source.getSourceId(), player.getId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), player.getId(), false, null)) {
|
||||||
game.informPlayers(player.getLogName() + " pays 5 life to counter " + sourceObject.getIdName() + ".");
|
game.informPlayers(player.getLogName() + " pays 5 life to counter " + sourceObject.getIdName() + ".");
|
||||||
Spell spell = game.getStack().getSpell(source.getSourceId());
|
Spell spell = game.getStack().getSpell(source.getSourceId());
|
||||||
if (spell != null) {
|
if (spell != null) {
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@ class CounterSourceEffect extends OneShotEffect {
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
if (cost.canPay(source, source.getSourceId(), player.getId(), game)
|
if (cost.canPay(source, source.getSourceId(), player.getId(), game)
|
||||||
&& player.chooseUse(outcome, "Discard three cards to counter " + sourceObject.getIdName() + "?", source, game)) {
|
&& player.chooseUse(outcome, "Discard three cards to counter " + sourceObject.getIdName() + "?", source, game)) {
|
||||||
if (cost.pay(source, game, source.getSourceId(), playerId, false)) {
|
if (cost.pay(source, game, source.getSourceId(), playerId, false, null)) {
|
||||||
game.informPlayers(player.getLogName() + " discards 3 cards to counter " + sourceObject.getIdName() + ".");
|
game.informPlayers(player.getLogName() + " discards 3 cards to counter " + sourceObject.getIdName() + ".");
|
||||||
Spell spell = game.getStack().getSpell(source.getSourceId());
|
Spell spell = game.getStack().getSpell(source.getSourceId());
|
||||||
if (spell != null) {
|
if (spell != null) {
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ class ShivanWumpusEffect extends PutOnLibrarySourceEffect {
|
||||||
if (player != null
|
if (player != null
|
||||||
&& cost.canPay(source, source.getSourceId(), playerId, game)
|
&& cost.canPay(source, source.getSourceId(), playerId, game)
|
||||||
&& player.chooseUse(Outcome.Sacrifice, "Sacrifice a land?", source, game)
|
&& player.chooseUse(Outcome.Sacrifice, "Sacrifice a land?", source, game)
|
||||||
&& cost.pay(source, game, source.getSourceId(), playerId, true)) {
|
&& cost.pay(source, game, source.getSourceId(), playerId, true, null)) {
|
||||||
costPaid = true;
|
costPaid = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,7 @@ class ShroudedLoreEffect extends OneShotEffect {
|
||||||
if(!done) {
|
if(!done) {
|
||||||
if(cost.canPay(source, source.getSourceId(), you.getId(), game) && you.chooseUse(Outcome.Benefit, "Pay {B} to choose a different card ?", source, game)) {
|
if(cost.canPay(source, source.getSourceId(), you.getId(), game) && you.chooseUse(Outcome.Benefit, "Pay {B} to choose a different card ?", source, game)) {
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
if(!cost.pay(source, game, source.getSourceId(), you.getId(), false)) {
|
if(!cost.pay(source, game, source.getSourceId(), you.getId(), false, null)) {
|
||||||
done = true;
|
done = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ import mage.constants.Rarity;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.Mana;
|
import mage.Mana;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.effects.common.BasicManaEffect;
|
import mage.abilities.effects.common.BasicManaEffect;
|
||||||
import mage.abilities.mana.SimpleManaAbility;
|
import mage.abilities.mana.SimpleManaAbility;
|
||||||
|
|
@ -84,7 +85,7 @@ class ExileSourceFromHandCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Card card = game.getCard(sourceId);
|
Card card = game.getCard(sourceId);
|
||||||
Player player = game.getPlayer(controllerId);
|
Player player = game.getPlayer(controllerId);
|
||||||
if (player != null && player.getHand().contains(sourceId) && card != null) {
|
if (player != null && player.getHand().contains(sourceId) && card != null) {
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@ class ThirstforKnowledgeEffect extends OneShotEffect {
|
||||||
&& you.chooseUse(Outcome.Discard, "Do you want to discard an artifact? If you don't, you must discard 2 cards", source, game)) {
|
&& you.chooseUse(Outcome.Discard, "Do you want to discard an artifact? If you don't, you must discard 2 cards", source, game)) {
|
||||||
Cost cost = new DiscardTargetCost(new TargetCardInHand(filter));
|
Cost cost = new DiscardTargetCost(new TargetCardInHand(filter));
|
||||||
if (cost.canPay(source, source.getSourceId(), you.getId(), game)) {
|
if (cost.canPay(source, source.getSourceId(), you.getId(), game)) {
|
||||||
if (cost.pay(source, game, source.getSourceId(), you.getId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), you.getId(), false, null)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,7 @@ class PhyrexianTyrannyEffect extends OneShotEffect {
|
||||||
Player player = game.getPlayer(targetPointer.getFirst(game, source));
|
Player player = game.getPlayer(targetPointer.getFirst(game, source));
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
Cost cost = new GenericManaCost(2);
|
Cost cost = new GenericManaCost(2);
|
||||||
if (!cost.pay(source, game, player.getId(), player.getId(), false)) {
|
if (!cost.pay(source, game, player.getId(), player.getId(), false, null)) {
|
||||||
player.damage(2, source.getSourceId(), game, false, true);
|
player.damage(2, source.getSourceId(), game, false, true);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ class RhysticStudyDrawEffect extends OneShotEffect {
|
||||||
if (controller != null && opponent != null && sourceObject != null) {
|
if (controller != null && opponent != null && sourceObject != null) {
|
||||||
Cost cost = new GenericManaCost(1);
|
Cost cost = new GenericManaCost(1);
|
||||||
String message = "Would you like to pay {1} to prevent the opponent to draw a card?";
|
String message = "Would you like to pay {1} to prevent the opponent to draw a card?";
|
||||||
if (!(opponent.chooseUse(Outcome.Benefit, message, source, game) && cost.pay(source, game, source.getSourceId(), opponent.getId(), false))) {
|
if (!(opponent.chooseUse(Outcome.Benefit, message, source, game) && cost.pay(source, game, source.getSourceId(), opponent.getId(), false, null))) {
|
||||||
if(controller.chooseUse(Outcome.DrawCard, "Draw a card (" + sourceObject.getLogName() +")", source, game)) {
|
if(controller.chooseUse(Outcome.DrawCard, "Draw a card (" + sourceObject.getLogName() +")", source, game)) {
|
||||||
controller.drawCards(1, game);
|
controller.drawCards(1, game);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ import mage.ObjectColor;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
|
@ -149,7 +150,7 @@ class UnattachSourceCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
Permanent attachment = game.getPermanent(sourceId);
|
Permanent attachment = game.getPermanent(sourceId);
|
||||||
Permanent permanent = game.getPermanent(attachment.getAttachedTo());
|
Permanent permanent = game.getPermanent(attachment.getAttachedTo());
|
||||||
if (permanent != null) {
|
if (permanent != null) {
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,7 @@ class SoulTitheEffect extends OneShotEffect {
|
||||||
int cmc = permanent.getManaCost().convertedManaCost();
|
int cmc = permanent.getManaCost().convertedManaCost();
|
||||||
if (player.chooseUse(Outcome.Benefit, "Pay {" + cmc + "} for " + permanent.getName() + "? (otherwise you sacrifice it)", source, game)) {
|
if (player.chooseUse(Outcome.Benefit, "Pay {" + cmc + "} for " + permanent.getName() + "? (otherwise you sacrifice it)", source, game)) {
|
||||||
Cost cost = new GenericManaCost(cmc);
|
Cost cost = new GenericManaCost(cmc);
|
||||||
if (cost.pay(source, game, source.getSourceId(), player.getId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), player.getId(), false, null)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ import mage.MageInt;
|
||||||
import mage.ObjectColor;
|
import mage.ObjectColor;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
|
@ -93,7 +94,7 @@ class SacrificeAllLandCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
for(Permanent permanent : game.getBattlefield().getActivePermanents(new FilterControlledLandPermanent(), ability.getControllerId(), game)){
|
for(Permanent permanent : game.getBattlefield().getActivePermanents(new FilterControlledLandPermanent(), ability.getControllerId(), game)){
|
||||||
paid |= permanent.sacrifice(sourceId, game);
|
paid |= permanent.sacrifice(sourceId, game);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ import mage.constants.Zone;
|
||||||
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.Cost;
|
||||||
import mage.abilities.costs.CostImpl;
|
import mage.abilities.costs.CostImpl;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.effects.common.DamageTargetEffect;
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
|
|
@ -100,7 +101,7 @@ class BloodshotTraineeCost extends CostImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
|
public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||||
this.paid = true;
|
this.paid = true;
|
||||||
return paid;
|
return paid;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ class EmbersmithEffect extends OneShotEffect {
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Cost cost = new GenericManaCost(1);
|
Cost cost = new GenericManaCost(1);
|
||||||
cost.clearPaid();
|
cost.clearPaid();
|
||||||
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) {
|
if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) {
|
||||||
Permanent permanent = game.getPermanent(source.getFirstTarget());
|
Permanent permanent = game.getPermanent(source.getFirstTarget());
|
||||||
if (permanent != null) {
|
if (permanent != null) {
|
||||||
permanent.damage(1, source.getSourceId(), game, false, true);
|
permanent.damage(1, source.getSourceId(), game, false, true);
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue