mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
- Support detecting blocking threatened creatures in AILogic$ MoveCounter.
This commit is contained in:
@@ -1012,7 +1012,7 @@ public class CountersPutAi extends SpellAbilityAi {
|
|||||||
final int creatDiff = sa.getParam("AILogic").contains("IsCounterUser") ? 450 : 1;
|
final int creatDiff = sa.getParam("AILogic").contains("IsCounterUser") ? 450 : 1;
|
||||||
final Combat combat = ai.getGame().getCombat();
|
final Combat combat = ai.getGame().getCombat();
|
||||||
final boolean threatened = ComputerUtil.predictThreatenedObjects(ai, null, true).contains(sa.getHostCard())
|
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))) {
|
if (!(threatened || (ph.is(PhaseType.END_OF_TURN) && ph.getNextTurn() == ai))) {
|
||||||
return false;
|
return false;
|
||||||
@@ -1024,7 +1024,7 @@ public class CountersPutAi extends SpellAbilityAi {
|
|||||||
targets = CardLists.filter(targets, new Predicate<Card>() {
|
targets = CardLists.filter(targets, new Predicate<Card>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Card card) {
|
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
|
// 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);
|
return !tgtThreatened && (threatened || ComputerUtilCard.evaluateCreature(card, false, false) > ComputerUtilCard.evaluateCreature(sa.getHostCard(), false, false) + creatDiff);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ ManaCost:2 G
|
|||||||
Types:Creature Human Soldier
|
Types:Creature Human Soldier
|
||||||
PT:1/1
|
PT:1/1
|
||||||
K:etbCounter:P1P1:2
|
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
|
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.
|
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.
|
||||||
|
|||||||
Reference in New Issue
Block a user