From b057dcff06837b644bdef5b8155ff7fc467bb7d3 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 19 May 2022 11:32:56 -0400 Subject: [PATCH] add canAttack boolean and MODE string --- .../StaticAbilityCanAttackDefender.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCanAttackDefender.java b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCanAttackDefender.java index 2a577340627..f9b7eda38a6 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCanAttackDefender.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCanAttackDefender.java @@ -20,6 +20,7 @@ package forge.game.staticability; import forge.game.Game; import forge.game.GameEntity; import forge.game.card.Card; +import forge.game.zone.ZoneType; /** * The Class StaticAbility_CanAttackDefender. @@ -27,6 +28,24 @@ import forge.game.card.Card; */ public class StaticAbilityCanAttackDefender { + static String MODE = "CanAttackDefender"; + + public static boolean canAttack(final Card card, final GameEntity target) { + // CanAttack static abilities + for (final Card ca : target.getGame().getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES)) { + for (final StaticAbility stAb : ca.getStaticAbilities()) { + if (!stAb.getParam("Mode").equals(MODE) || stAb.isSuppressed() || !stAb.checkConditions()) { + continue; + } + + if (applyCanAttackAbility(stAb, card, target)) { + return true; + } + } + } + return false; + } + public static boolean applyCanAttackAbility(final StaticAbility stAb, final Card card, final GameEntity target) { final Card hostCard = stAb.getHostCard(); final Game game = hostCard.getGame();