Fix AI checking cost before less expensive logic (#8643)

This commit is contained in:
tool4ever
2025-09-05 09:54:53 +02:00
committed by GitHub
parent ee4902a5ae
commit b5f16b83a0

View File

@@ -974,17 +974,13 @@ public class ComputerUtilCombat {
continue; continue;
} }
int pBonus = 0;
if (ability.getApi() == ApiType.Pump) { if (ability.getApi() == ApiType.Pump) {
if (!ability.hasParam("NumAtt")) { if (!ability.hasParam("NumAtt")) {
continue; continue;
} }
if (ComputerUtilCost.canPayCost(ability, blocker.getController(), false)) { pBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("NumAtt"), ability);
int pBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("NumAtt"), ability);
if (pBonus > 0) {
power += pBonus;
}
}
} else if (ability.getApi() == ApiType.PutCounter) { } else if (ability.getApi() == ApiType.PutCounter) {
if (!ability.hasParam("CounterType") || !ability.getParam("CounterType").equals("P1P1")) { if (!ability.hasParam("CounterType") || !ability.getParam("CounterType").equals("P1P1")) {
continue; continue;
@@ -998,14 +994,13 @@ public class ComputerUtilCombat {
continue; continue;
} }
if (ComputerUtilCost.canPayCost(ability, blocker.getController(), false)) { pBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParamOrDefault("CounterNum", "1"), ability);
int pBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParamOrDefault("CounterNum", "1"), ability); }
if (pBonus > 0) {
if (pBonus > 0 && ComputerUtilCost.canPayCost(ability, blocker.getController(), false)) {
power += pBonus; power += pBonus;
} }
} }
}
}
return power; return power;
} }
@@ -1107,17 +1102,13 @@ public class ComputerUtilCombat {
continue; continue;
} }
int tBonus = 0;
if (ability.getApi() == ApiType.Pump) { if (ability.getApi() == ApiType.Pump) {
if (!ability.hasParam("NumDef")) { if (!ability.hasParam("NumDef")) {
continue; continue;
} }
if (ComputerUtilCost.canPayCost(ability, blocker.getController(), false)) { tBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("NumDef"), ability);
int tBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("NumDef"), ability);
if (tBonus > 0) {
toughness += tBonus;
}
}
} else if (ability.getApi() == ApiType.PutCounter) { } else if (ability.getApi() == ApiType.PutCounter) {
if (!ability.hasParam("CounterType") || !ability.getParam("CounterType").equals("P1P1")) { if (!ability.hasParam("CounterType") || !ability.getParam("CounterType").equals("P1P1")) {
continue; continue;
@@ -1131,14 +1122,13 @@ public class ComputerUtilCombat {
continue; continue;
} }
if (ComputerUtilCost.canPayCost(ability, blocker.getController(), false)) { tBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParamOrDefault("CounterNum", "1"), ability);
int tBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParamOrDefault("CounterNum", "1"), ability); }
if (tBonus > 0) {
if (tBonus > 0 && ComputerUtilCost.canPayCost(ability, blocker.getController(), false)) {
toughness += tBonus; toughness += tBonus;
} }
} }
}
}
return toughness; return toughness;
} }
@@ -1305,6 +1295,7 @@ public class ComputerUtilCombat {
continue; continue;
} }
int pBonus = 0;
if (ability.getApi() == ApiType.Pump) { if (ability.getApi() == ApiType.Pump) {
if (!ability.hasParam("NumAtt")) { if (!ability.hasParam("NumAtt")) {
continue; continue;
@@ -1314,11 +1305,8 @@ public class ComputerUtilCombat {
continue; continue;
} }
if (!ability.getPayCosts().hasTapCost() && ComputerUtilCost.canPayCost(ability, attacker.getController(), false)) { if (!ability.getPayCosts().hasTapCost()) {
int pBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("NumAtt"), ability); pBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("NumAtt"), ability);
if (pBonus > 0) {
power += pBonus;
}
} }
} else if (ability.getApi() == ApiType.PutCounter) { } else if (ability.getApi() == ApiType.PutCounter) {
if (!ability.hasParam("CounterType") || !ability.getParam("CounterType").equals("P1P1")) { if (!ability.hasParam("CounterType") || !ability.getParam("CounterType").equals("P1P1")) {
@@ -1333,14 +1321,15 @@ public class ComputerUtilCombat {
continue; continue;
} }
if (!ability.getPayCosts().hasTapCost() && ComputerUtilCost.canPayCost(ability, attacker.getController(), false)) { if (!ability.getPayCosts().hasTapCost()) {
int pBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParamOrDefault("CounterNum", "1"), ability); pBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParamOrDefault("CounterNum", "1"), ability);
if (pBonus > 0) { }
}
if (pBonus > 0 && ComputerUtilCost.canPayCost(ability, attacker.getController(), false)) {
power += pBonus; power += pBonus;
} }
} }
}
}
return power; return power;
} }
@@ -1530,16 +1519,14 @@ public class ComputerUtilCombat {
if (ability.getPayCosts().hasTapCost() && !attacker.hasKeyword(Keyword.VIGILANCE)) { if (ability.getPayCosts().hasTapCost() && !attacker.hasKeyword(Keyword.VIGILANCE)) {
continue; continue;
} }
if (!ComputerUtilCost.canPayCost(ability, attacker.getController(), false)) {
continue;
}
int tBonus = 0;
if (ability.getApi() == ApiType.Pump) { if (ability.getApi() == ApiType.Pump) {
if (!ability.hasParam("NumDef")) { if (!ability.hasParam("NumDef")) {
continue; continue;
} }
toughness += AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("NumDef"), ability, true); tBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParam("NumDef"), ability, true);
} else if (ability.getApi() == ApiType.PutCounter) { } else if (ability.getApi() == ApiType.PutCounter) {
if (!ability.hasParam("CounterType") || !ability.getParam("CounterType").equals("P1P1")) { if (!ability.hasParam("CounterType") || !ability.getParam("CounterType").equals("P1P1")) {
continue; continue;
@@ -1553,10 +1540,11 @@ public class ComputerUtilCombat {
continue; continue;
} }
int tBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParamOrDefault("CounterNum", "1"), ability); tBonus = AbilityUtils.calculateAmount(ability.getHostCard(), ability.getParamOrDefault("CounterNum", "1"), ability);
if (tBonus > 0) {
toughness += tBonus;
} }
if (tBonus > 0 && ComputerUtilCost.canPayCost(ability, attacker.getController(), false)) {
toughness += tBonus;
} }
} }
return toughness; return toughness;