From 33981efab10e729f9ea7c2ee1d5dba40f4c1377b Mon Sep 17 00:00:00 2001 From: Sloth Date: Sat, 15 Jun 2013 21:08:42 +0000 Subject: [PATCH] - Improved AI gaining Threshold. --- src/main/java/forge/card/ability/ai/DigAi.java | 3 ++- src/main/java/forge/game/ai/ComputerUtil.java | 18 ++++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/forge/card/ability/ai/DigAi.java b/src/main/java/forge/card/ability/ai/DigAi.java index 927c38b43bb..e0402343f11 100644 --- a/src/main/java/forge/card/ability/ai/DigAi.java +++ b/src/main/java/forge/card/ability/ai/DigAi.java @@ -7,6 +7,7 @@ import forge.card.ability.AbilityUtils; import forge.card.ability.SpellAbilityAi; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; +import forge.game.ai.ComputerUtil; import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.player.PlayerActionConfirmMode; @@ -51,7 +52,7 @@ public class DigAi extends SpellAbilityAi { // Don't use draw abilities before main 2 if possible if (ai.getGame().getPhaseHandler().getPhase().isBefore(PhaseType.MAIN2) && !sa.hasParam("ActivationPhases") - && !sa.hasParam("DestinationZone")) { + && !sa.hasParam("DestinationZone") && !ComputerUtil.castSpellInMain1(ai, sa)) { return false; } diff --git a/src/main/java/forge/game/ai/ComputerUtil.java b/src/main/java/forge/game/ai/ComputerUtil.java index c3ce786f77b..8ed2a7a3d7b 100644 --- a/src/main/java/forge/game/ai/ComputerUtil.java +++ b/src/main/java/forge/game/ai/ComputerUtil.java @@ -49,6 +49,7 @@ import forge.card.spellability.AbilityStatic; import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbilityStackInstance; import forge.card.spellability.Target; +import forge.card.staticability.StaticAbility; import forge.error.BugReporter; import forge.game.Game; import forge.game.phase.Combat; @@ -1099,14 +1100,23 @@ public class ComputerUtil { } } final List buffed = ai.getCardsIn(ZoneType.Battlefield); - for (Card buffedcard : buffed) { - if (buffedcard.hasSVar("BuffedBy")) { - final String buffedby = buffedcard.getSVar("BuffedBy"); + boolean checkThreshold = sa.isSpell() && !ai.hasThreshold() && !sa.getSourceCard().isInZone(ZoneType.Graveyard); + for (Card buffedCard : buffed) { + if (buffedCard.hasSVar("BuffedBy")) { + final String buffedby = buffedCard.getSVar("BuffedBy"); final String[] bffdby = buffedby.split(","); - if (source.isValid(bffdby, buffedcard.getController(), buffedcard)) { + if (source.isValid(bffdby, buffedCard.getController(), buffedCard)) { return true; } } + //Fill the graveyard for Threshold + if (checkThreshold) { + for (StaticAbility stAb : buffedCard.getStaticAbilities()) { + if ("Threshold".equals(stAb.getMapParams().get("Condition"))) { + return true; + } + } + } } // get all cards the human controls with AntiBuffedBy