From 7b6ad78ba28f9b12a31e9f4bfc9ed6e4ae293c32 Mon Sep 17 00:00:00 2001 From: Agetian Date: Wed, 12 Dec 2018 12:43:21 +0300 Subject: [PATCH] - Don't use damage chaining for simulated AI. --- forge-ai/src/main/java/forge/ai/AiController.java | 3 +++ forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/forge-ai/src/main/java/forge/ai/AiController.java b/forge-ai/src/main/java/forge/ai/AiController.java index bac130006bd..d1ac0f4deac 100644 --- a/forge-ai/src/main/java/forge/ai/AiController.java +++ b/forge-ai/src/main/java/forge/ai/AiController.java @@ -93,6 +93,9 @@ public class AiController { this.cheatShuffle = canCheatShuffle; } + public boolean usesSimulation() { + return this.useSimulation; + } public void setUseSimulation(boolean value) { this.useSimulation = value; } diff --git a/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java b/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java index bf247dfb109..ded374079b1 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java @@ -1017,6 +1017,11 @@ public class DamageDealAi extends DamageAiBase { Game game = ai.getGame(); int chance = ((PlayerControllerAi)ai.getController()).getAi().getIntProperty(AiProps.CHANCE_TO_CHAIN_TWO_DAMAGE_SPELLS); + if (((PlayerControllerAi)ai.getController()).getAi().usesSimulation()) { + // simulated AI shouldn't use paired decisions, it tries to find complex decisions on its own + return null; + } + if (chance > 0 && (ComputerUtilCombat.lifeInDanger(ai, game.getCombat()) || ComputerUtil.aiLifeInDanger(ai, true, 0))) { chance = 100; // in danger, do it even if normally the chance is low (unless chaining is completely disabled) }