Try to attack mustAttackEntities first. (#8355)

This commit is contained in:
Eradev
2025-08-13 12:45:42 -04:00
committed by GitHub
parent 9d54e82214
commit bfd4a68e23

View File

@@ -30,6 +30,7 @@ import forge.game.event.GameEventCombatUpdate;
import forge.game.keyword.Keyword; import forge.game.keyword.Keyword;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerView; import forge.game.player.PlayerView;
import forge.game.staticability.StaticAbilityMustAttack;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.events.UiEventAttackerDeclared; import forge.gui.events.UiEventAttackerDeclared;
import forge.player.PlayerControllerHuman; import forge.player.PlayerControllerHuman;
@@ -128,6 +129,20 @@ public class InputAttack extends InputSyncronizedBase {
continue; continue;
} }
final List<GameEntity> mustAttack = StaticAbilityMustAttack.entitiesMustAttack(c);
if (!mustAttack.isEmpty()) {
for (final GameEntity defender : mustAttack) {
if (CombatUtil.canAttack(c, defender)) {
combat.addAttacker(c, defender);
refreshCards.add(CardView.get(c));
break;
}
}
if (combat.isAttacking(c)) {
continue;
}
}
if (currentDefender != null && CombatUtil.canAttack(c, currentDefender)) { if (currentDefender != null && CombatUtil.canAttack(c, currentDefender)) {
combat.addAttacker(c, currentDefender); combat.addAttacker(c, currentDefender);
refreshCards.add(CardView.get(c)); refreshCards.add(CardView.get(c));