- The AI will now check DealDamage triggered abilities when attacking (to not run into Circle of Flame and Caltrops).

This commit is contained in:
Sloth
2011-08-25 09:30:04 +00:00
parent 45508a62fd
commit c2a188addd
2 changed files with 26 additions and 2 deletions

View File

@@ -1239,6 +1239,25 @@ public class CombatUtil {
HashMap<String, String> abilityParams = AF.getMapParams(ability, source);
if (abilityParams.containsKey("ValidTgts") || abilityParams.containsKey("Tgt"))
continue; //targeted pumping not supported
// DealDamage triggers
if ((abilityParams.containsKey("AB") && abilityParams.get("AB").equals("DealDamage"))
|| (abilityParams.containsKey("DB") && abilityParams.get("DB").equals("DealDamage"))) {
if (!abilityParams.containsKey("Defined") || !abilityParams.get("Defined").equals("TriggeredAttacker")) {
continue;
}
int damage = 0;
try {
damage = Integer.parseInt(abilityParams.get("NumDmg"));
} catch (NumberFormatException nfe) {
//can't parse the number (X for example)
continue;
}
toughness -= attacker.predictDamage(damage, 0, source, false);
continue;
}
// Pump triggers
if (abilityParams.containsKey("AB") && !abilityParams.get("AB").equals("Pump") && !abilityParams.get("AB").equals("PumpAll"))
continue;
if (abilityParams.containsKey("DB") && !abilityParams.get("DB").equals("Pump") && !abilityParams.get("DB").equals("PumpAll"))

View File

@@ -97,6 +97,11 @@ public class ComputerUtil_Attack2 {
* @return a boolean.
*/
public boolean isEffectiveAttacker(Card attacker, Combat combat) {
//if the attacker will die when attacking don't attack
if (attacker.getNetDefense() + CombatUtil.predictToughnessBonusOfAttacker(attacker, null, combat) <= 0)
return false;
if (CombatUtil.damageIfUnblocked(attacker, AllZone.getHumanPlayer(), combat) > 0) return true;
if (CombatUtil.poisonIfUnblocked(attacker, AllZone.getHumanPlayer(), combat) > 0) return true;