- Implemented AI for Crater's Claws

This commit is contained in:
excessum
2014-09-21 03:38:15 +00:00
parent 3db4d519b7
commit 46033d55a9
2 changed files with 29 additions and 2 deletions

View File

@@ -51,11 +51,15 @@ public class DamageDealAi extends DamageAiBase {
final String damage = sa.getParam("NumDmg"); final String damage = sa.getParam("NumDmg");
int dmg = AbilityUtils.calculateAmount(sa.getHostCard(), damage, sa); 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. // Set PayX here to maximum value.
dmg = ComputerUtilMana.determineLeftoverMana(sa, ai); dmg = ComputerUtilMana.determineLeftoverMana(sa, ai);
source.setSVar("PayX", Integer.toString(dmg)); source.setSVar("PayX", Integer.toString(dmg));
} }
if (sa.getHostCard().getName().equals("Crater's Claws") && ai.hasFerocious()) {
dmg += 2;
}
String logic = sa.getParam("AILogic"); String logic = sa.getParam("AILogic");
if ("DiscardLands".equals(logic)) { if ("DiscardLands".equals(logic)) {
@@ -95,7 +99,8 @@ public class DamageDealAi extends DamageAiBase {
return false; 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 I can kill my target by paying less mana, do it
if (sa.usesTargeting() && !sa.getTargets().isTargetingAnyPlayer() && !sa.hasParam("DividedAsYouChoose")) { if (sa.usesTargeting() && !sa.getTargets().isTargetingAnyPlayer() && !sa.hasParam("DividedAsYouChoose")) {
int actualPay = 0; int actualPay = 0;
@@ -106,6 +111,9 @@ public class DamageDealAi extends DamageAiBase {
actualPay = adjDamage; actualPay = adjDamage;
} }
} }
if (sa.getHostCard().getName().equals("Crater's Claws") && ai.hasFerocious()) {
actualPay = actualPay > 2 ? actualPay - 2 : 0;
}
source.setSVar("PayX", Integer.toString(actualPay)); source.setSVar("PayX", Integer.toString(actualPay));
} }
} }

View File

@@ -2348,6 +2348,25 @@ public class Player extends GameEntity implements Comparable<Player> {
return false; return false;
} }
/**
* <p>
* hasFerocious.
* </p>
*
* @return a boolean.
*/
public boolean hasFerocious() {
final List<Card> list = this.getCreaturesInPlay();
final List<Card> ferocious = CardLists.filter(list, new Predicate<Card>() {
@Override
public boolean apply(final Card c) {
return c.getNetAttack() > 3;
}
});
return !ferocious.isEmpty();
}
/** /**
* <p> * <p>
* getBloodthirstAmount. * getBloodthirstAmount.