diff --git a/src/forge/CardUtil.java b/src/forge/CardUtil.java index 02fb1c976b1..96da73b29d2 100644 --- a/src/forge/CardUtil.java +++ b/src/forge/CardUtil.java @@ -241,6 +241,24 @@ public class CardUtil { || cardType.equals("Mountain") || cardType.equals("Forest")); } + //this function checks, if duplicates of a keyword are not necessary (like flying, trample, etc.) + public static boolean isNonStackingKeyword(String keyword) { + return ( + keyword.equals("Deathtouch") || keyword.equals("Defender") + || keyword.equals("Double Strike") || keyword.equals("First Strike") + || keyword.equals("Flash") || keyword.equals("Flying") + || keyword.equals("Haste") || keyword.equals("Intimidate") + || keyword.equals("Lifelink") || keyword.equals("Reach") + || keyword.equals("Shroud") || keyword.equals("Trample") + || keyword.equals("Vigilance") || keyword.equals("Horsemanship") + || keyword.equals("Fear") || keyword.equals("Changeling") + || keyword.equals("Wither") || keyword.equals("Infect")); + } + + public static boolean isStackingKeyword(String keyword) { + return !isNonStackingKeyword(keyword); + } + public static String buildFilename(Card card) { File path = null; diff --git a/src/forge/card/abilityFactory/AbilityFactory_Animate.java b/src/forge/card/abilityFactory/AbilityFactory_Animate.java index 2fb9109082f..16e2a6226f2 100644 --- a/src/forge/card/abilityFactory/AbilityFactory_Animate.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Animate.java @@ -7,6 +7,7 @@ import java.util.Arrays; import forge.AllZone; import forge.Card; +import forge.CardUtil; import forge.Command; import forge.ComputerUtil; import forge.Constant; @@ -393,7 +394,7 @@ public class AbilityFactory_Animate { c.addExtrinsicKeyword(k); //this maybe should just blindly add since multiple instances of a keyword sometimes have effects //practically, this shouldn't matter though, and will display more cleanly - else if(!c.getIntrinsicKeyword().contains(k)) + else if(!c.getIntrinsicKeyword().contains(k) || CardUtil.isStackingKeyword(k)) c.addIntrinsicKeyword(k); }