From e1a6f28bc61049c6fb8a7afc1226efebbd18364f Mon Sep 17 00:00:00 2001 From: Northmoc Date: Tue, 7 Feb 2023 15:03:53 -0500 Subject: [PATCH] StaticAbilityAttackRestrict.attackRestrictNum iterate --- .../staticability/StaticAbilityAttackRestrict.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbilityAttackRestrict.java b/forge-game/src/main/java/forge/game/staticability/StaticAbilityAttackRestrict.java index 047b01ca08f..a5381ad8181 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbilityAttackRestrict.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbilityAttackRestrict.java @@ -30,18 +30,24 @@ public class StaticAbilityAttackRestrict { static public int attackRestrictNum(GameEntity defender) { final Game game = defender.getGame(); + int num = Integer.MAX_VALUE; for (final Card ca : game.getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES)) { for (final StaticAbility stAb : ca.getStaticAbilities()) { - if (!stAb.getParam("Mode").equals(MODE) || stAb.isSuppressed() || !stAb.checkConditions()) { + if (!stAb.getParam("Mode").equals(MODE) || stAb.isSuppressed() || !stAb.checkConditions() + || !stAb.hasParam("ValidDefender")) { continue; } if (attackRestrict(stAb, defender)) { - return AbilityUtils.calculateAmount(stAb.getHostCard(), + int stNum = AbilityUtils.calculateAmount(stAb.getHostCard(), stAb.getParamOrDefault("MaxAttackers", "1"), stAb); + if (stNum < num) { + num = stNum; + } } + } } - return -1; + return num < Integer.MAX_VALUE ? num : -1; } static public boolean attackRestrict(StaticAbility stAb, GameEntity defender) {