mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
- Somewhat better logic for Provoke.
This commit is contained in:
@@ -11,6 +11,7 @@ import forge.game.card.CardLists;
|
|||||||
import forge.game.card.CardPredicates;
|
import forge.game.card.CardPredicates;
|
||||||
import forge.game.combat.Combat;
|
import forge.game.combat.Combat;
|
||||||
import forge.game.combat.CombatUtil;
|
import forge.game.combat.CombatUtil;
|
||||||
|
import forge.game.keyword.Keyword;
|
||||||
import forge.game.phase.PhaseHandler;
|
import forge.game.phase.PhaseHandler;
|
||||||
import forge.game.phase.PhaseType;
|
import forge.game.phase.PhaseType;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
@@ -102,6 +103,18 @@ public class MustBlockAi extends SpellAbilityAi {
|
|||||||
if (blocker == null) {
|
if (blocker == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (source.hasKeyword(Keyword.PROVOKE) && blocker.isTapped()) {
|
||||||
|
// Don't provoke if the attack is potentially lethal
|
||||||
|
Combat combat = ai.getGame().getCombat();
|
||||||
|
Player defender = combat.getDefenderPlayerByAttacker(source);
|
||||||
|
if (combat != null && combat.getAttackingPlayer().equals(ai)
|
||||||
|
&& defender.canLoseLife() && !defender.cantLoseForZeroOrLessLife()
|
||||||
|
&& ComputerUtilCombat.lifeThatWouldRemain(defender, combat) <= 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sa.getTargets().add(blocker);
|
sa.getTargets().add(blocker);
|
||||||
chance = true;
|
chance = true;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user