- Some further work on the experimental attack/block trading options (disabled by default in all profiles except Experimental).

This commit is contained in:
Agetian
2017-09-01 03:19:24 +00:00
parent eaabad923e
commit a1461851ee
6 changed files with 24 additions and 17 deletions

View File

@@ -916,10 +916,12 @@ public class AiAttackController {
if (ratioDiff > 0 && doAttritionalAttack) {
this.aiAggression = 5; // attack at all costs
} else if ((ratioDiff >= 1 && this.attackers.size() > 1 && (humanLifeToDamageRatio < 2 || outNumber > 0))
|| (playAggro && humanLifeToDamageRatio > 1)) {
|| (playAggro && MyRandom.percentTrue(chanceToAttackToTrade) && humanLifeToDamageRatio > 1)) {
this.aiAggression = 4; // attack expecting to trade or damage player.
} else if (MyRandom.percentTrue(chanceToAttackToTrade) && humanLifeToDamageRatio > 1
&& ComputerUtil.countUsefulCreatures(ai) > ComputerUtil.countUsefulCreatures(defendingOpponent)) {
&& defendingOpponent != null
&& ComputerUtil.countUsefulCreatures(ai) > ComputerUtil.countUsefulCreatures(defendingOpponent)
&& ai.getLife() > defendingOpponent.getLife()) {
this.aiAggression = 4; // random (chance-based) attack expecting to trade or damage player.
} else if (ratioDiff >= 0 && this.attackers.size() > 1) {
this.aiAggression = 3; // attack expecting to make good trades or damage player.

View File

@@ -575,9 +575,10 @@ public class AiBlockController {
// Always trade when life in danger
doTrade = true;
} else if (enableRandomTrades) {
// Randomly trade creatures with lower power and worse abilities
float chanceStep = (100 - minRandomTradeChance) / 15; // 15 steps between 5 life and 20+ life
int chance = (int)Math.max(minRandomTradeChance, (100 - (Math.abs(5 - ai.getLife()) * chanceStep)));
// Randomly trade creatures with lower power and [hopefully] worse abilities
int numSteps = ai.getStartingLife() - 5; // e.g. 15 steps between 5 life and 20 life
float chanceStep = (maxRandomTradeChance - minRandomTradeChance) / numSteps;
int chance = (int)Math.max(minRandomTradeChance, (maxRandomTradeChance - (Math.abs(5 - ai.getLife()) * chanceStep)));
if (chance > maxRandomTradeChance) {
chance = maxRandomTradeChance;
}

View File

@@ -3,7 +3,8 @@ MULLIGAN_THRESHOLD=4
# Aggro preferences (enabling these will generally make the AI attack more aggressively into potential trades)
PLAY_AGGRO=false
# The chance to attack aggressively into a potential trade even if not playing all-out aggro (PLAY_AGGRO disabled)
# The chance to attack aggressively into a potential trade (works even if not playing all-out aggro, e.g. PLAY_AGGRO disabled,
# but only in more favorable conditions in that case - when ahead in life count and in parity or ahead in creature count)
CHANCE_TO_ATTACK_INTO_TRADE=0
# When enabled, the AI will use Berserk on offense to try to severely damage the opponent at the expense of the creature
USE_BERSERK_AGGRESSIVELY=false
@@ -13,9 +14,9 @@ USE_BERSERK_AGGRESSIVELY=false
ENABLE_RANDOM_FAVORABLE_TRADES_ON_BLOCK=false
# If enabled, the AI will consider trade blocking even if its creature count is lower than the opponent's
RANDOMLY_TRADE_EVEN_IF_HAS_LESS_CREATS=false
# Min and max chance to randomly aggressively trade when blocking
# Min and max chance to randomly aggressively trade when blocking (note that it will become 100 if the AI is in danger)
MIN_CHANCE_TO_RANDOMLY_TRADE_ON_BLOCK=20
MAX_CHANCE_TO_RANDOMLY_TRADE_ON_BLOCK=100
MAX_CHANCE_TO_RANDOMLY_TRADE_ON_BLOCK=65
# Only works when AI cheating is enabled in preferences, otherwise does nothing
CHEAT_WITH_MANA_ON_SHUFFLE=true

View File

@@ -3,7 +3,8 @@ MULLIGAN_THRESHOLD=4
# Aggro preferences (enabling these will generally make the AI attack more aggressively into potential trades)
PLAY_AGGRO=false
# The chance to attack aggressively into a potential trade even if not playing all-out aggro (PLAY_AGGRO disabled)
# The chance to attack aggressively into a potential trade (works even if not playing all-out aggro, e.g. PLAY_AGGRO disabled,
# but only in more favorable conditions in that case - when ahead in life count and in parity or ahead in creature count)
CHANCE_TO_ATTACK_INTO_TRADE=0
# When enabled, the AI will use Berserk on offense to try to severely damage the opponent at the expense of the creature
USE_BERSERK_AGGRESSIVELY=false
@@ -13,9 +14,9 @@ USE_BERSERK_AGGRESSIVELY=false
ENABLE_RANDOM_FAVORABLE_TRADES_ON_BLOCK=false
# If enabled, the AI will consider trade blocking even if its creature count is lower than the opponent's
RANDOMLY_TRADE_EVEN_IF_HAS_LESS_CREATS=false
# Min and max chance to randomly aggressively trade when blocking
# Min and max chance to randomly aggressively trade when blocking (note that it will become 100 if the AI is in danger)
MIN_CHANCE_TO_RANDOMLY_TRADE_ON_BLOCK=20
MAX_CHANCE_TO_RANDOMLY_TRADE_ON_BLOCK=100
MAX_CHANCE_TO_RANDOMLY_TRADE_ON_BLOCK=65
# Only works when AI cheating is enabled in preferences, otherwise does nothing
CHEAT_WITH_MANA_ON_SHUFFLE=true

View File

@@ -3,7 +3,8 @@ MULLIGAN_THRESHOLD=4
# Aggro preferences (enabling these will generally make the AI attack more aggressively into potential trades)
PLAY_AGGRO=false
# The chance to attack aggressively into a potential trade even if not playing all-out aggro (PLAY_AGGRO disabled)
# The chance to attack aggressively into a potential trade (works even if not playing all-out aggro, e.g. PLAY_AGGRO disabled,
# but only in more favorable conditions in that case - when ahead in life count and in parity or ahead in creature count)
CHANCE_TO_ATTACK_INTO_TRADE=20
# When enabled, the AI will use Berserk on offense to try to severely damage the opponent at the expense of the creature
USE_BERSERK_AGGRESSIVELY=true
@@ -13,9 +14,9 @@ USE_BERSERK_AGGRESSIVELY=true
ENABLE_RANDOM_FAVORABLE_TRADES_ON_BLOCK=true
# If enabled, the AI will consider trade blocking even if its creature count is lower than the opponent's
RANDOMLY_TRADE_EVEN_IF_HAS_LESS_CREATS=true
# Min and max chance to randomly aggressively trade when blocking
# Min and max chance to randomly aggressively trade when blocking (note that it will become 100 if the AI is in danger)
MIN_CHANCE_TO_RANDOMLY_TRADE_ON_BLOCK=20
MAX_CHANCE_TO_RANDOMLY_TRADE_ON_BLOCK=100
MAX_CHANCE_TO_RANDOMLY_TRADE_ON_BLOCK=65
# Only works when AI cheating is enabled in preferences, otherwise does nothing
CHEAT_WITH_MANA_ON_SHUFFLE=true

View File

@@ -3,7 +3,8 @@ MULLIGAN_THRESHOLD=3
# Aggro preferences (enabling these will generally make the AI attack more aggressively)
PLAY_AGGRO=true
# The chance to attack aggressively into a potential trade even if not playing all-out aggro (PLAY_AGGRO disabled)
# The chance to attack aggressively into a potential trade (works even if not playing all-out aggro, e.g. PLAY_AGGRO disabled,
# but only in more favorable conditions in that case - when ahead in life count and in parity or ahead in creature count)
CHANCE_TO_ATTACK_INTO_TRADE=100
# When enabled, the AI will use Berserk on offense to try to severely damage the opponent at the expense of the creature
USE_BERSERK_AGGRESSIVELY=true
@@ -13,9 +14,9 @@ USE_BERSERK_AGGRESSIVELY=true
ENABLE_RANDOM_FAVORABLE_TRADES_ON_BLOCK=false
# If enabled, the AI will consider trade blocking even if its creature count is lower than the opponent's
RANDOMLY_TRADE_EVEN_IF_HAS_LESS_CREATS=false
# Min and max chance to randomly aggressively trade when blocking
# Min and max chance to randomly aggressively trade when blocking (note that it will become 100 if the AI is in danger)
MIN_CHANCE_TO_RANDOMLY_TRADE_ON_BLOCK=20
MAX_CHANCE_TO_RANDOMLY_TRADE_ON_BLOCK=100
MAX_CHANCE_TO_RANDOMLY_TRADE_ON_BLOCK=65
# Only works when AI cheating is enabled in preferences, otherwise does nothing
CHEAT_WITH_MANA_ON_SHUFFLE=true