From 44fb8577a02898d6f480c33023117c5262e7b120 Mon Sep 17 00:00:00 2001 From: Sloth Date: Tue, 11 Oct 2011 09:32:31 +0000 Subject: [PATCH] - Little improvement for the AI of AF LoseLife (the AI will no longer wait until Main2 or blocking or use randomness if the ability can kill the human). --- .../card/abilityFactory/AbilityFactory_AlterLife.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_AlterLife.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_AlterLife.java index 6449e62b7b5..d2ede5528ad 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_AlterLife.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_AlterLife.java @@ -496,6 +496,7 @@ public class AbilityFactory_AlterLife { Cost abCost = sa.getPayCosts(); final Card source = sa.getSourceCard(); HashMap params = af.getMapParams(); + boolean priority = false; String amountStr = params.get("LifeAmount"); @@ -519,13 +520,16 @@ public class AbilityFactory_AlterLife { if (!AllZone.getHumanPlayer().canLoseLife()) return false; + + if (amount >= AllZone.getHumanPlayer().getLife()) + priority = true; //killing the human should be done asap //Don't use loselife before main 2 if possible - if (AllZone.getPhase().isBefore(Constant.Phase.Main2) && !params.containsKey("ActivationPhases")) + if (AllZone.getPhase().isBefore(Constant.Phase.Main2) && !params.containsKey("ActivationPhases") && !priority) return false; //Don't tap creatures that may be able to block - if (AbilityFactory.waitForBlocking(sa)) + if (AbilityFactory.waitForBlocking(sa) && !priority) return false; // prevent run-away activations - first time will always return true @@ -545,7 +549,7 @@ public class AbilityFactory_AlterLife { } boolean randomReturn = r.nextFloat() <= .6667; - if (AbilityFactory.playReusable(sa)) + if (AbilityFactory.playReusable(sa) || priority) randomReturn = true; return (randomReturn && chance);