mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
- Implemented AI for Crater's Claws
This commit is contained in:
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user