From 6bd356cb2ca3877e10917b703ad62c55108bed1c Mon Sep 17 00:00:00 2001 From: Sloth Date: Sun, 16 Sep 2012 12:29:43 +0000 Subject: [PATCH] - The AI will no longer sacrifice the sourcecard of a GainLife ability unless it has 5 or less life. --- .../AbilityFactoryAlterLife.java | 5 +++-- src/main/java/forge/card/cost/CostUtil.java | 20 ++++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java index b953bd9c832..0113f6ac967 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java @@ -326,7 +326,7 @@ public class AbilityFactoryAlterLife { } if (abCost != null && life > 5) { - if (!CostUtil.checkSacrificeCost(abCost, source)) { + if (!CostUtil.checkSacrificeCost(abCost, source, false)) { return false; } @@ -348,7 +348,8 @@ public class AbilityFactoryAlterLife { } // Don't use lifegain before main 2 if possible - if (Singletons.getModel().getGameState().getPhaseHandler().getPhase().isBefore(PhaseType.MAIN2) && !params.containsKey("ActivationPhases")) { + if (Singletons.getModel().getGameState().getPhaseHandler().getPhase().isBefore(PhaseType.MAIN2) + && !params.containsKey("ActivationPhases")) { return false; } diff --git a/src/main/java/forge/card/cost/CostUtil.java b/src/main/java/forge/card/cost/CostUtil.java index a409826527c..f8ab60c8112 100644 --- a/src/main/java/forge/card/cost/CostUtil.java +++ b/src/main/java/forge/card/cost/CostUtil.java @@ -36,7 +36,7 @@ import forge.gui.GuiUtils; */ public class CostUtil { private static Random r = new Random(); - + /** * Check sacrifice cost. * @@ -47,6 +47,21 @@ public class CostUtil { * @return true, if successful */ public static boolean checkSacrificeCost(final Cost cost, final Card source) { + return checkSacrificeCost(cost, source, true); + } + + /** + * Check sacrifice cost. + * + * @param cost + * the cost + * @param source + * the source + * @param important + * is the gain important enough? + * @return true, if successful + */ + public static boolean checkSacrificeCost(final Cost cost, final Card source, final boolean important) { if (cost == null) { return true; } @@ -57,6 +72,9 @@ public class CostUtil { final String type = sac.getType(); if (type.equals("CARDNAME")) { + if (!important) { + return false; + } CardList auras = new CardList(source.getEnchantedBy()); if (!auras.getController(source.getController()).isEmpty()) { return false;