diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index b1b7d415f21..36df10af917 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -1966,6 +1966,15 @@ public class AbilityUtils { if (sq[0].contains("CardSumPT")) { return doXMath((c.getNetPower() + c.getNetToughness()), expr, c, ctb); } + if (sq[0].contains("CardNumTypes")) { + Card ce; + if (sq[0].contains("Remembered")) { + ce = (Card) c.getFirstRemembered(); + } else { + ce = c; + } + return doXMath(getNumberOfTypes(ce), expr, c, ctb); + } if (sq[0].contains("CardNumColors")) { return doXMath(CardUtil.getColors(c).countColors(), expr, c, ctb); @@ -3647,6 +3656,12 @@ public class AbilityUtils { return someCards; } + public static int getNumberOfTypes(final Card card) { + EnumSet types = EnumSet.noneOf(CardType.CoreType.class); + Iterables.addAll(types, card.getType().getCoreTypes()); + return types.size(); + } + public static int getCardTypesFromList(final CardCollectionView list) { EnumSet types = EnumSet.noneOf(CardType.CoreType.class); for (Card c1 : list) {