From acf376d3f75ceff98994224fb2e9db17558411a9 Mon Sep 17 00:00:00 2001 From: Sloth Date: Tue, 29 Nov 2011 21:09:49 +0000 Subject: [PATCH] - Enabled the keyword "May be played without paying its mana cost" for the AI. --- src/main/java/forge/ComputerUtil.java | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/forge/ComputerUtil.java b/src/main/java/forge/ComputerUtil.java index e86e6e4fec6..cefeaf61233 100644 --- a/src/main/java/forge/ComputerUtil.java +++ b/src/main/java/forge/ComputerUtil.java @@ -26,6 +26,8 @@ import forge.Constant.Zone; import forge.card.abilityfactory.AbilityFactory; import forge.card.cardfactory.CardFactoryUtil; import forge.card.cost.Cost; +import forge.card.cost.CostMana; +import forge.card.cost.CostPart; import forge.card.cost.CostPayment; import forge.card.cost.CostUtil; import forge.card.mana.ManaCost; @@ -71,6 +73,24 @@ public class ComputerUtil { final Card source = sa.getSourceCard(); boolean flashb = false; + + if (source.hasStartOfKeyword("May be played without paying its mana cost")) { + final SpellAbility newSA = sa.copy(); + final Cost cost = sa.getPayCosts(); + for (CostPart part : cost.getCostParts()) { + if (part instanceof CostMana) { + ((CostMana) part).setMana("0"); + } + } + cost.setNoManaCostChange(true); + newSA.setManaCost("0"); + newSA.setDescription(sa.getDescription() + " (without paying its mana cost)"); + if (ComputerUtil.canBePlayedAndPayedByAI(newSA)) { + ComputerUtil.handlePlayingSpellAbility(newSA); + + return false; + } + } // Flashback if (source.isInZone(Constant.Zone.Graveyard) && sa.isSpell() && (source.isInstant() || source.isSorcery())) { @@ -549,7 +569,9 @@ public class ComputerUtil { ManaCost cost = new ManaCost(mana); - cost = AllZone.getGameAction().getSpellCostChange(sa, cost); + if (sa.getPayCosts() == null || !sa.getPayCosts().getNoManaCostChange()) { + cost = AllZone.getGameAction().getSpellCostChange(sa, cost); + } final ManaPool manapool = player.getManaPool();