From 1cbf075036776efa476b7e8df64c300b3bc48817 Mon Sep 17 00:00:00 2001 From: Agetian Date: Sat, 7 Oct 2017 14:50:51 +0000 Subject: [PATCH] - RemAIDeck update: next iteration. --- .../src/main/java/forge/ai/ability/ManaEffectAi.java | 12 +++++------- .../java/forge/game/spellability/SpellAbility.java | 3 +++ forge-gui/res/cardsfolder/c/carrionette.txt | 1 - forge-gui/res/cardsfolder/c/centaur_garden.txt | 2 +- forge-gui/res/cardsfolder/c/cloudshift.txt | 1 - forge-gui/res/cardsfolder/c/crescendo_of_war.txt | 1 - 6 files changed, 9 insertions(+), 11 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/ManaEffectAi.java b/forge-ai/src/main/java/forge/ai/ability/ManaEffectAi.java index 1b93a07adbb..714fa2dffc0 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ManaEffectAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ManaEffectAi.java @@ -1,13 +1,7 @@ package forge.ai.ability; import com.google.common.base.Predicates; -import forge.ai.AiPlayDecision; -import forge.ai.ComputerUtil; -import forge.ai.ComputerUtilAbility; -import forge.ai.ComputerUtilCost; -import forge.ai.ComputerUtilMana; -import forge.ai.PlayerControllerAi; -import forge.ai.SpellAbilityAi; +import forge.ai.*; import forge.card.ColorSet; import forge.card.MagicColor; import forge.card.mana.ManaCost; @@ -20,6 +14,7 @@ import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.zone.ZoneType; + import java.util.Arrays; import java.util.List; @@ -170,6 +165,9 @@ public class ManaEffectAi extends SpellAbilityAi { } SpellAbility testSaNoCost = testSa.copyWithNoManaCost(); + if (testSaNoCost == null) { + continue; + } testSaNoCost.setActivatingPlayer(ai); if (((PlayerControllerAi)ai.getController()).getAi().canPlaySa(testSaNoCost) == AiPlayDecision.WillPlay) { if (testSa.getHostCard().isPermanent() && !testSa.getHostCard().hasKeyword("Haste") diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index 17f3e9035ac..78ad6accbaa 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -842,6 +842,9 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit public SpellAbility copyWithNoManaCost() { final SpellAbility newSA = copy(); + if (newSA == null) { + return null; // the ability was not copyable, e.g. a Suspend SA may get here + } newSA.setPayCosts(newSA.getPayCosts().copyWithNoMana()); if (!newSA.hasParam("WithoutManaCost")) { newSA.mapParams.put("WithoutManaCost", "True"); diff --git a/forge-gui/res/cardsfolder/c/carrionette.txt b/forge-gui/res/cardsfolder/c/carrionette.txt index 06d7c2845ff..d36f92d4f2f 100644 --- a/forge-gui/res/cardsfolder/c/carrionette.txt +++ b/forge-gui/res/cardsfolder/c/carrionette.txt @@ -4,6 +4,5 @@ Types:Creature Skeleton PT:1/1 A:AB$ ChangeZone | Cost$ 2 B B | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Exile | UnlessCost$ 2 | UnlessPayer$ TargetedController | ActivationZone$ Graveyard | UnlessResolveSubs$ WhenNotPaid | SubAbility$ ExileME | SpellDescription$ Exile CARDNAME and target creature unless that creature's controller pays {2}. Activate this ability only if CARDNAME is in your graveyard. SVar:ExileME:DB$ChangeZone | Origin$ Graveyard | Destination$ Exile | Defined$ Self -SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/carrionette.jpg Oracle:{2}{B}{B}: Exile Carrionette and target creature unless that creature's controller pays {2}. Activate this ability only if Carrionette is in your graveyard. diff --git a/forge-gui/res/cardsfolder/c/centaur_garden.txt b/forge-gui/res/cardsfolder/c/centaur_garden.txt index 8bb57c4ab9f..83bb7cd23be 100644 --- a/forge-gui/res/cardsfolder/c/centaur_garden.txt +++ b/forge-gui/res/cardsfolder/c/centaur_garden.txt @@ -4,6 +4,6 @@ Types:Land A:AB$ Mana | Cost$ T | Produced$ G | SubAbility$ DBPain | SpellDescription$ Add {G} to your mana pool. CARDNAME deals 1 damage to you. A:AB$ Pump | Cost$ G T Sac<1/CARDNAME> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ 3 | NumDef$ 3 | Activation$ Threshold | PrecostDesc$ Threshold — | SpellDescription$ Target creature gets +3/+3 until end of turn. Activate this ability only if seven or more cards are in your graveyard. SVar:DBPain:DB$ DealDamage | NumDmg$ 1 | Defined$ You -SVar:RemAIDeck:True +SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/centaur_garden.jpg Oracle:{T}: Add {G} to your mana pool. Centaur Garden deals 1 damage to you.\nThreshold — {G}, {T}, Sacrifice Centaur Garden: Target creature gets +3/+3 until end of turn. Activate this ability only if seven or more cards are in your graveyard. diff --git a/forge-gui/res/cardsfolder/c/cloudshift.txt b/forge-gui/res/cardsfolder/c/cloudshift.txt index 402ef482aeb..5dd8877624a 100644 --- a/forge-gui/res/cardsfolder/c/cloudshift.txt +++ b/forge-gui/res/cardsfolder/c/cloudshift.txt @@ -4,6 +4,5 @@ Types:Instant A:SP$ ChangeZone | Cost$ W | ValidTgts$ Creature.YouCtrl | Origin$ Battlefield | Destination$ Exile | TgtPrompt$ Select target creature you control | RememberTargets$ True | SubAbility$ DBReturn | SpellDescription$ Exile target creature you control, then return that card to the battlefield under your control. SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ All | Destination$ Battlefield | GainControl$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/cloudshift.jpg Oracle:Exile target creature you control, then return that card to the battlefield under your control. diff --git a/forge-gui/res/cardsfolder/c/crescendo_of_war.txt b/forge-gui/res/cardsfolder/c/crescendo_of_war.txt index 287669dbca4..6b9dc32e02b 100644 --- a/forge-gui/res/cardsfolder/c/crescendo_of_war.txt +++ b/forge-gui/res/cardsfolder/c/crescendo_of_war.txt @@ -6,7 +6,6 @@ SVar:TrigStrife:AB$PutCounter | Cost$ 0 | Defined$ Self | CounterType$ STRIFE | S:Mode$ Continuous | Affected$ Creature.attacking | AddPower$ X | Description$ Attacking creatures get +1/+0 for each strife counter on CARDNAME. S:Mode$ Continuous | Affected$ Creature.blocking+YouCtrl | AddPower$ X | Description$ Blocking creatures you control get +1/+0 for each strife counter on CARDNAME. SVar:X:Count$CardCounters.STRIFE -SVar:RemAIDeck:True SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/crescendo_of_war.jpg Oracle:At the beginning of each upkeep, put a strife counter on Crescendo of War.\nAttacking creatures get +1/+0 for each strife counter on Crescendo of War.\nBlocking creatures you control get +1/+0 for each strife counter on Crescendo of War.