add canAttack boolean and MODE string

This commit is contained in:
Northmoc
2022-05-19 11:32:56 -04:00
parent 960324efca
commit b057dcff06

View File

@@ -20,6 +20,7 @@ package forge.game.staticability;
import forge.game.Game; import forge.game.Game;
import forge.game.GameEntity; import forge.game.GameEntity;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.zone.ZoneType;
/** /**
* The Class StaticAbility_CanAttackDefender. * The Class StaticAbility_CanAttackDefender.
@@ -27,6 +28,24 @@ import forge.game.card.Card;
*/ */
public class StaticAbilityCanAttackDefender { 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) { public static boolean applyCanAttackAbility(final StaticAbility stAb, final Card card, final GameEntity target) {
final Card hostCard = stAb.getHostCard(); final Card hostCard = stAb.getHostCard();
final Game game = hostCard.getGame(); final Game game = hostCard.getGame();