diff --git a/forge-game/src/main/java/forge/game/card/CardFactory.java b/forge-game/src/main/java/forge/game/card/CardFactory.java index aac9cd8ab3c..6a051b9d89a 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactory.java +++ b/forge-game/src/main/java/forge/game/card/CardFactory.java @@ -414,13 +414,16 @@ public class CardFactory { } private static void readCardFace(Card c, ICardFace face) { - c.addIntrinsicKeywords(face.getKeywords()); for (String r : face.getReplacements()) c.addReplacementEffect(ReplacementHandler.parseReplacement(r, c, true)); for (String s : face.getStaticAbilities()) c.addStaticAbility(s); for (String t : face.getTriggers()) c.addTrigger(TriggerHandler.parseTrigger(t, c, true)); + for (Entry v : face.getVariables()) c.setSVar(v.getKey(), v.getValue()); + // keywords not before variables + c.addIntrinsicKeywords(face.getKeywords()); + c.setName(face.getName()); c.setManaCost(face.getManaCost()); c.setText(face.getNonAbilityText()); diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 31cd2061d47..8ad3b636740 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -1949,10 +1949,6 @@ public class CardFactoryUtil { // Cards with Cycling abilities // -1 means keyword "Cycling" not found - for (KeywordInterface inst : card.getKeywords()) { - inst.createTraits(card, true); - } - // AddCost if (card.hasSVar("FullCost")) { String k[] = card.getSVar("FullCost").split(":"); diff --git a/forge-game/src/main/java/forge/game/card/CardState.java b/forge-game/src/main/java/forge/game/card/CardState.java index 53508989320..7c3554e53af 100644 --- a/forge-game/src/main/java/forge/game/card/CardState.java +++ b/forge-game/src/main/java/forge/game/card/CardState.java @@ -158,15 +158,18 @@ public class CardState extends GameObject { } public final void setIntrinsicKeywords(final Iterable intrinsicKeyword0) { intrinsicKeywords.clear(); - intrinsicKeywords.addAll(intrinsicKeyword0); + addIntrinsicKeywords(intrinsicKeyword0); } public final KeywordInterface addIntrinsicKeyword(final String s) { if (s.trim().length() == 0) { return null; } - - return intrinsicKeywords.add(s); + KeywordInterface inst = intrinsicKeywords.add(s); + if (inst != null) { + inst.createTraits(card, true); + } + return inst; } public final boolean addIntrinsicKeywords(final Iterable keywords) { boolean changed = false;