From 5918030022a201b42a8cb36284435538f5f59d0d Mon Sep 17 00:00:00 2001 From: Northmoc Date: Mon, 23 May 2022 13:44:49 -0400 Subject: [PATCH] ForgeScript > spellAbilityHasProperty() add "numTargets" --- .../src/main/java/forge/game/ForgeScript.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/forge-game/src/main/java/forge/game/ForgeScript.java b/forge-game/src/main/java/forge/game/ForgeScript.java index 119c7c36e74..d7a41fd52dc 100644 --- a/forge-game/src/main/java/forge/game/ForgeScript.java +++ b/forge-game/src/main/java/forge/game/ForgeScript.java @@ -15,12 +15,16 @@ import forge.game.mana.ManaCostBeingPaid; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbilityPredicates; +import forge.game.spellability.TargetChoices; import forge.game.staticability.StaticAbility; import forge.game.trigger.Trigger; import forge.game.zone.ZoneType; import forge.util.Expressions; import org.apache.commons.lang3.StringUtils; +import java.util.HashSet; +import java.util.Set; + public class ForgeScript { public static boolean cardStateHasProperty(CardState cardState, String property, Player sourceController, @@ -217,6 +221,15 @@ public class ForgeScript { return false; } return source.equals(m.getHostCard()); + } else if (property.startsWith("numTargets")) { + Set targets = new HashSet<>(); + for (TargetChoices tc : sa.getAllTargetChoices()) { + targets.addAll(tc); + } + String[] k = property.split(" ", 2); + String comparator = k[1].substring(0, 2); + int y = AbilityUtils.calculateAmount(sa.getHostCard(), k[1].substring(2), sa); + return Expressions.compare(targets.size(), comparator, y); } else if (property.startsWith("IsTargeting")) { String[] k = property.split(" ", 2); boolean found = false;