From fd88585bd4bfb11159c05e819ae185b98f067568 Mon Sep 17 00:00:00 2001 From: Sloth Date: Fri, 4 Apr 2014 18:42:50 +0000 Subject: [PATCH] - Expanded the predictThreatenedObjects AI function. --- forge-ai/src/main/java/forge/ai/ComputerUtil.java | 15 +++++++++++++++ .../main/java/forge/ai/ability/DamageDealAi.java | 10 ++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtil.java b/forge-ai/src/main/java/forge/ai/ComputerUtil.java index 92839463160..ddcc2b5ba5b 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtil.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtil.java @@ -1444,6 +1444,21 @@ public class ComputerUtil { } } } + //GainControl + else if (threatApi == ApiType.GainControl + && (saviourApi == ApiType.ChangeZone || saviourApi == ApiType.Pump || saviourApi == null)) { + for (final Object o : objects) { + if (o instanceof Card) { + final Card c = (Card) o; + // give Shroud to targeted creatures + if (saviourApi == ApiType.Pump && tgt == null && saviour.hasParam("KW") + && (saviour.getParam("KW").endsWith("Shroud") || saviour.getParam("KW").endsWith("Hexproof"))) { + continue; + } + threatened.add(c); + } + } + } Iterables.addAll(threatened, ComputerUtil.predictThreatenedObjects(aiPlayer, saviour, topStack.getSubAbility())); return threatened; diff --git a/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java b/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java index 50cba71797c..9a5753ca857 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java @@ -20,10 +20,8 @@ import forge.game.spellability.TargetChoices; import forge.game.spellability.TargetRestrictions; import forge.game.zone.ZoneType; import forge.util.Aggregates; -import forge.util.MyRandom; import java.util.List; -import java.util.Random; public class DamageDealAi extends DamageAiBase { @Override @@ -89,12 +87,8 @@ public class DamageDealAi extends DamageAiBase { return false; } - if (sa.isAbility()) { - final Random r = MyRandom.getRandom(); // prevent run-away - // activations - if (r.nextFloat() > Math.pow(.9, sa.getActivationsThisTurn())) { - return false; - } + if (ComputerUtil.preventRunAwayActivations(sa)) { + return false; } if (!this.damageTargetAI(ai, sa, dmg)) {