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 9c22912d9b2..8645e8488b5 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java @@ -51,11 +51,15 @@ public class DamageDealAi extends DamageAiBase { final String damage = sa.getParam("NumDmg"); int dmg = AbilityUtils.calculateAmount(sa.getHostCard(), damage, sa); - if (damage.equals("X") && sa.getSVar(damage).equals("Count$xPaid")) { + if ((damage.equals("X") && sa.getSVar(damage).equals("Count$xPaid") || + sa.getHostCard().getName().equals("Crater's Claws"))) { // Set PayX here to maximum value. dmg = ComputerUtilMana.determineLeftoverMana(sa, ai); source.setSVar("PayX", Integer.toString(dmg)); } + if (sa.getHostCard().getName().equals("Crater's Claws") && ai.hasFerocious()) { + dmg += 2; + } String logic = sa.getParam("AILogic"); if ("DiscardLands".equals(logic)) { @@ -95,7 +99,8 @@ public class DamageDealAi extends DamageAiBase { return false; } - if (damage.equals("X") && source.getSVar(damage).equals("Count$xPaid")) { + if ((damage.equals("X") && source.getSVar(damage).equals("Count$xPaid")) || + sa.getHostCard().getName().equals("Crater's Claws")){ // If I can kill my target by paying less mana, do it if (sa.usesTargeting() && !sa.getTargets().isTargetingAnyPlayer() && !sa.hasParam("DividedAsYouChoose")) { int actualPay = 0; @@ -106,6 +111,9 @@ public class DamageDealAi extends DamageAiBase { actualPay = adjDamage; } } + if (sa.getHostCard().getName().equals("Crater's Claws") && ai.hasFerocious()) { + actualPay = actualPay > 2 ? actualPay - 2 : 0; + } source.setSVar("PayX", Integer.toString(actualPay)); } } diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index e970d2471b7..b240eb23f73 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -2348,6 +2348,25 @@ public class Player extends GameEntity implements Comparable { return false; } + + /** + *

+ * hasFerocious. + *

+ * + * @return a boolean. + */ + public boolean hasFerocious() { + final List list = this.getCreaturesInPlay(); + final List ferocious = CardLists.filter(list, new Predicate() { + @Override + public boolean apply(final Card c) { + return c.getNetAttack() > 3; + } + }); + return !ferocious.isEmpty(); + } + /** *

* getBloodthirstAmount.