mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
- Removed and defaulted the experimental AI option to avoid counting static attack bonus effects in declare blockers twice.
This commit is contained in:
@@ -83,17 +83,10 @@ public class AiBlockController {
|
|||||||
private List<Card> getSafeBlockers(final Combat combat, final Card attacker, final List<Card> blockersLeft) {
|
private List<Card> getSafeBlockers(final Combat combat, final Card attacker, final List<Card> blockersLeft) {
|
||||||
final List<Card> blockers = new ArrayList<>();
|
final List<Card> blockers = new ArrayList<>();
|
||||||
|
|
||||||
// -- Experimental feature in testing (set withoutAttackerStaticAbilities to "true" after extensive testing --
|
// We don't check attacker static abilities at this point since the attackers have already attacked and, thus,
|
||||||
// -- and remove the following block of conditional code and the related AI profile preference) --
|
// their P/T modifiers are active and are counted as a part of getNetPower/getNetToughness
|
||||||
// -- We don't check attacker static abilities at this point since the attackers have already attacked and, thus, --
|
|
||||||
// -- their P/T modifiers are active and are counted as a part of getNetPower/getNetToughness --
|
|
||||||
boolean withoutStAbs = false;
|
|
||||||
if (ai.getController().isAI()) {
|
|
||||||
withoutStAbs = ((PlayerControllerAi)ai.getController()).getAi().getBooleanProperty(AiProps.EXPERIMENTAL_AVOID_ST_ATK_BONUS_2X_COUNT);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (final Card b : blockersLeft) {
|
for (final Card b : blockersLeft) {
|
||||||
if (!ComputerUtilCombat.canDestroyBlocker(ai, b, attacker, combat, false, withoutStAbs)) {
|
if (!ComputerUtilCombat.canDestroyBlocker(ai, b, attacker, combat, false, true)) {
|
||||||
blockers.add(b);
|
blockers.add(b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -105,17 +98,10 @@ public class AiBlockController {
|
|||||||
private List<Card> getKillingBlockers(final Combat combat, final Card attacker, final List<Card> blockersLeft) {
|
private List<Card> getKillingBlockers(final Combat combat, final Card attacker, final List<Card> blockersLeft) {
|
||||||
final List<Card> blockers = new ArrayList<>();
|
final List<Card> blockers = new ArrayList<>();
|
||||||
|
|
||||||
// -- Experimental feature in testing (set withoutAttackerStaticAbilities to "true" after extensive testing --
|
// We don't check attacker static abilities at this point since the attackers have already attacked and, thus,
|
||||||
// -- and remove the following block of conditional code and the related AI profile preference) --
|
// their P/T modifiers are active and are counted as a part of getNetPower/getNetToughness
|
||||||
// -- We don't check attacker static abilities at this point since the attackers have already attacked and, thus, --
|
|
||||||
// -- their P/T modifiers are active and are counted as a part of getNetPower/getNetToughness --
|
|
||||||
boolean withoutStAbs = false;
|
|
||||||
if (ai.getController().isAI()) {
|
|
||||||
withoutStAbs = ((PlayerControllerAi)ai.getController()).getAi().getBooleanProperty(AiProps.EXPERIMENTAL_AVOID_ST_ATK_BONUS_2X_COUNT);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (final Card b : blockersLeft) {
|
for (final Card b : blockersLeft) {
|
||||||
if (ComputerUtilCombat.canDestroyAttacker(ai, attacker, b, combat, false, withoutStAbs)) {
|
if (ComputerUtilCombat.canDestroyAttacker(ai, attacker, b, combat, false, true)) {
|
||||||
blockers.add(b);
|
blockers.add(b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,9 +87,9 @@ public enum AiProps { /** */
|
|||||||
COMBAT_ASSAULT_ATTACK_EVASION_PREDICTION ("true"), /** */
|
COMBAT_ASSAULT_ATTACK_EVASION_PREDICTION ("true"), /** */
|
||||||
COMBAT_ATTRITION_ATTACK_EVASION_PREDICTION ("true"), /** */
|
COMBAT_ATTRITION_ATTACK_EVASION_PREDICTION ("true"), /** */
|
||||||
CONSERVATIVE_ENERGY_PAYMENT_ONLY_IN_COMBAT ("true"), /** */
|
CONSERVATIVE_ENERGY_PAYMENT_ONLY_IN_COMBAT ("true"), /** */
|
||||||
CONSERVATIVE_ENERGY_PAYMENT_ONLY_DEFENSIVELY ("true"), /** */
|
CONSERVATIVE_ENERGY_PAYMENT_ONLY_DEFENSIVELY ("true"); /** */
|
||||||
// Experimental features, must be removed after extensive testing and, ideally, defaulting
|
// Experimental features, must be removed after extensive testing and, ideally, defaulting
|
||||||
EXPERIMENTAL_AVOID_ST_ATK_BONUS_2X_COUNT ("false"); /** */
|
// <-- there are currently no options here -->
|
||||||
|
|
||||||
private final String strDefaultVal;
|
private final String strDefaultVal;
|
||||||
|
|
||||||
|
|||||||
@@ -151,4 +151,4 @@ CONSERVATIVE_ENERGY_PAYMENT_ONLY_DEFENSIVELY=false
|
|||||||
# -- Experimental feature toggles which only exist until the testing procedure for the relevant --
|
# -- Experimental feature toggles which only exist until the testing procedure for the relevant --
|
||||||
# -- features is over. These toggles will be removed later, or may be reintroduced under a --
|
# -- features is over. These toggles will be removed later, or may be reintroduced under a --
|
||||||
# -- different name if necessary --
|
# -- different name if necessary --
|
||||||
EXPERIMENTAL_AVOID_ST_ATK_BONUS_2X_COUNT=true
|
# <-- There are currently no experimental options here -->
|
||||||
|
|||||||
Reference in New Issue
Block a user