From 7f7a033f12a1fc5c557e467dd2b7317325f07a5c Mon Sep 17 00:00:00 2001 From: Agetian Date: Thu, 6 Dec 2018 08:03:00 +0300 Subject: [PATCH] - Support detecting blocking threatened creatures in AILogic$ MoveCounter. --- forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java | 4 ++-- forge-gui/res/cardsfolder/s/salt_road_quartermasters.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java b/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java index 0c72c7d61de..e2a6253beb5 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java @@ -1012,7 +1012,7 @@ public class CountersPutAi extends SpellAbilityAi { final int creatDiff = sa.getParam("AILogic").contains("IsCounterUser") ? 450 : 1; final Combat combat = ai.getGame().getCombat(); final boolean threatened = ComputerUtil.predictThreatenedObjects(ai, null, true).contains(sa.getHostCard()) - || (combat != null && combat.isBlocked(sa.getHostCard()) && ComputerUtilCombat.attackerWouldBeDestroyed(ai, sa.getHostCard(), combat)); + || (combat != null && ((combat.isBlocked(sa.getHostCard()) && ComputerUtilCombat.attackerWouldBeDestroyed(ai, sa.getHostCard(), combat)) || (combat.isBlocking(sa.getHostCard()) && ComputerUtilCombat.blockerWouldBeDestroyed(ai, sa.getHostCard(), combat)))); if (!(threatened || (ph.is(PhaseType.END_OF_TURN) && ph.getNextTurn() == ai))) { return false; @@ -1024,7 +1024,7 @@ public class CountersPutAi extends SpellAbilityAi { targets = CardLists.filter(targets, new Predicate() { @Override public boolean apply(Card card) { - boolean tgtThreatened = ComputerUtil.predictThreatenedObjects(ai, null, true).contains(card) || (combat != null && combat.isBlocked(card) && ComputerUtilCombat.attackerWouldBeDestroyed(ai, card, combat)); + boolean tgtThreatened = ComputerUtil.predictThreatenedObjects(ai, null, true).contains(card) || (combat != null && ((combat.isBlocked(card) && ComputerUtilCombat.attackerWouldBeDestroyed(ai, card, combat)) || (combat.isBlocking(card) && ComputerUtilCombat.blockerWouldBeDestroyed(ai, card, combat)))); // when threatened, any non-threatened target is good to preserve the counter return !tgtThreatened && (threatened || ComputerUtilCard.evaluateCreature(card, false, false) > ComputerUtilCard.evaluateCreature(sa.getHostCard(), false, false) + creatDiff); } diff --git a/forge-gui/res/cardsfolder/s/salt_road_quartermasters.txt b/forge-gui/res/cardsfolder/s/salt_road_quartermasters.txt index 40e55cc2a1b..d38f6a30e2a 100644 --- a/forge-gui/res/cardsfolder/s/salt_road_quartermasters.txt +++ b/forge-gui/res/cardsfolder/s/salt_road_quartermasters.txt @@ -3,6 +3,6 @@ ManaCost:2 G Types:Creature Human Soldier PT:1/1 K:etbCounter:P1P1:2 -A:AB$ PutCounter | Cost$ 2 G SubCounter<1/P1P1> | ValidTgts$ Creature | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on target creature. +A:AB$ PutCounter | Cost$ 2 G SubCounter<1/P1P1> | ValidTgts$ Creature | CounterType$ P1P1 | CounterNum$ 1 | AILogic$ MoveCounter | SpellDescription$ Put a +1/+1 counter on target creature. SVar:Picture:http://www.wizards.com/global/images/magic/general/salt_road_quartermasters.jpg Oracle:Salt Road Quartermasters enters the battlefield with two +1/+1 counters on it.\n{2}{G}, Remove a +1/+1 counter from Salt Road Quartermasters: Put a +1/+1 counter on target creature.