From d0f7df48ac8b299ee9d872d04f54cefd7ec6c3c0 Mon Sep 17 00:00:00 2001 From: Agetian Date: Mon, 5 Jun 2017 04:53:58 +0000 Subject: [PATCH] - Slightly improved DestroyAi for Strip Mine and Wasteland (AI should not sac-destroy a land unless it has a mana-producing land to replace it with, as well as at least a couple lands in the hand and on the battlefield combined, or enough mana-producing lands on the battlefield in general, otherwise it's too risky to mana-lock yourself early in the game). Further improvements are welcome. --- .../src/main/java/forge/ai/ability/DestroyAi.java | 11 +++++++++++ forge-gui/res/cardsfolder/s/strip_mine.txt | 2 +- forge-gui/res/cardsfolder/w/wasteland.txt | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/DestroyAi.java b/forge-ai/src/main/java/forge/ai/ability/DestroyAi.java index 010a053ee38..9b37b742724 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DestroyAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DestroyAi.java @@ -63,6 +63,17 @@ public class DestroyAi extends SpellAbilityAi { return false; } + // Special logic not related to targeting + if ("LandForLand".equals(logic)) { + // Strip Mine and Wasteland + int numLandsInHand = CardLists.filter(ai.getCardsIn(ZoneType.Hand), CardPredicates.Presets.LANDS_PRODUCING_MANA).size(); + int numLandsOTB = CardLists.filter(ai.getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.LANDS_PRODUCING_MANA).size(); + + // TODO: improve this logic + boolean isViable = numLandsInHand > 0 && numLandsInHand + numLandsOTB > 2; + if (!isViable) { return false; } + } + // Targeting if (abTgt != null) { sa.resetTargets(); diff --git a/forge-gui/res/cardsfolder/s/strip_mine.txt b/forge-gui/res/cardsfolder/s/strip_mine.txt index 5357342ec53..a1bb3767916 100644 --- a/forge-gui/res/cardsfolder/s/strip_mine.txt +++ b/forge-gui/res/cardsfolder/s/strip_mine.txt @@ -2,6 +2,6 @@ Name:Strip Mine ManaCost:no cost Types:Land A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C} to your mana pool. -A:AB$ Destroy | ValidTgts$ Land | TgtPrompt$ Select target land. | Cost$ T Sac<1/CARDNAME> | SpellDescription$ Destroy target land. +A:AB$ Destroy | ValidTgts$ Land | TgtPrompt$ Select target land. | Cost$ T Sac<1/CARDNAME> | AILogic$ LandForLand | SpellDescription$ Destroy target land. SVar:Picture:http://www.wizards.com/global/images/magic/general/strip_mine.jpg Oracle:{T}: Add {C} to your mana pool.\n{T}, Sacrifice Strip Mine: Destroy target land. diff --git a/forge-gui/res/cardsfolder/w/wasteland.txt b/forge-gui/res/cardsfolder/w/wasteland.txt index 8bae1229d83..b5b4b5a5fd1 100644 --- a/forge-gui/res/cardsfolder/w/wasteland.txt +++ b/forge-gui/res/cardsfolder/w/wasteland.txt @@ -2,6 +2,6 @@ Name:Wasteland ManaCost:no cost Types:Land A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C} to your mana pool. -A:AB$ Destroy | ValidTgts$ Land.nonBasic | TgtPrompt$ Select target nonbasic land. | Cost$ T Sac<1/CARDNAME> | SpellDescription$ Destroy target nonbasic land. +A:AB$ Destroy | ValidTgts$ Land.nonBasic | TgtPrompt$ Select target nonbasic land. | Cost$ T Sac<1/CARDNAME> | AILogic$ LandForLand | SpellDescription$ Destroy target nonbasic land. SVar:Picture:http://www.wizards.com/global/images/magic/general/wasteland.jpg Oracle:{T}: Add {C} to your mana pool.\n{T}, Sacrifice Wasteland: Destroy target nonbasic land.