diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-dwarven.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-dwarven.json index 96d32af0e..44eefa9a4 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-dwarven.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-dwarven.json @@ -162,7 +162,7 @@ "text": "Would you like to heal bearer?", "effect": { "type": "heal", - "filter": "choose(bearer)" + "filter": "bearer" } }, { @@ -170,7 +170,7 @@ "text": "Would you like to heal bearer?", "effect": { "type": "heal", - "filter": "choose(bearer)" + "filter": "bearer" } } ] @@ -182,7 +182,7 @@ }, "effect": { "type": "exert", - "filter": "choose(bearer)" + "filter": "bearer" } } ] diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-elven.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-elven.json index 5ecf8d8de..8cd6a001c 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-elven.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-elven.json @@ -509,7 +509,7 @@ "effects": [ { "type": "exert", - "filter": "choose(bearer)" + "filter": "bearer" }, { "type": "discardFromHand", @@ -520,7 +520,7 @@ }, "effect": { "type": "modifyStrength", - "filter": "choose(bearer)", + "filter": "bearer", "amount": 1 } } @@ -886,7 +886,7 @@ }, "cost": { "type": "exert", - "filter": "choose(bearer)" + "filter": "bearer" }, "effect": { "type": "modifyArcheryTotal", @@ -1029,7 +1029,7 @@ }, "cost": { "type": "exert", - "filter": "choose(bearer)" + "filter": "bearer" }, "effect": { "type": "discardCardAtRandomFromHand", diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-gandalf.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-gandalf.json index b4fe48bac..0934a3f26 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-gandalf.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-gandalf.json @@ -225,7 +225,7 @@ ], "cost": { "type": "exert", - "filter": "choose(bearer)" + "filter": "bearer" }, "effect": [ { diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set19.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set19.json index 6a365a521..abed62aff 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set19.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set19.json @@ -50,7 +50,7 @@ }, "effect": { "type": "modifyStrength", - "filter": "choose(bearer)", + "filter": "bearer", "amount": 3 } } @@ -190,7 +190,7 @@ "effects": [ { "type": "exert", - "filter": "choose(bearer)" + "filter": "bearer" }, { "type": "returnToHand", @@ -1161,7 +1161,7 @@ }, "effect": { "type": "heal", - "filter": "choose(bearer)" + "filter": "bearer" } } ] diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-elven.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-elven.json index 42b7bcc11..f9b6c546c 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-elven.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-elven.json @@ -107,7 +107,7 @@ "optional": true, "cost": { "type": "exert", - "filter": "choose(bearer)" + "filter": "bearer" }, "effect": { "type": "wound", diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-gandalf.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-gandalf.json index f6aedd357..b3057001f 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-gandalf.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-gandalf.json @@ -305,7 +305,7 @@ "phase": "maneuver", "cost": { "type": "exert", - "filter": "choose(bearer)", + "filter": "bearer", "times": 2 }, "effect": { @@ -697,7 +697,7 @@ }, "effect": { "type": "preventWound", - "filter": "choose(bearer)" + "filter": "bearer" } } }, @@ -901,7 +901,7 @@ "phase": "skirmish", "cost": { "type": "exert", - "filter": "choose(bearer)" + "filter": "bearer" }, "effect": { "type": "modifyStrength", diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-gondor.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-gondor.json index d86e334df..9e80f342d 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-gondor.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-gondor.json @@ -15,7 +15,7 @@ }, "effect": { "type": "modifyStrength", - "filter": "choose(bearer)", + "filter": "bearer", "amount": 2 } } @@ -271,7 +271,7 @@ "phase": "skirmish", "cost": { "type": "exert", - "filter": "choose(bearer)" + "filter": "bearer" }, "effect": { "type": "preventable", @@ -334,7 +334,7 @@ "phase": "skirmish", "cost": { "type": "exert", - "filter": "choose(bearer)" + "filter": "bearer" }, "effect": { "type": "choice", diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-isengard.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-isengard.json index 83946160a..a5f1efed8 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-isengard.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-isengard.json @@ -482,7 +482,7 @@ }, "effect": { "type": "preventWound", - "filter": "choose(bearer)" + "filter": "bearer" } } ] diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-sauron.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-sauron.json index b9d3c9516..abd72e5f5 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-sauron.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-sauron.json @@ -138,7 +138,7 @@ { "type": "exert", "player": "fp", - "filter": "choose(bearer)" + "filter": "bearer" } ] } diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40.json index d93e8c81b..594d9ef69 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40.json @@ -47,7 +47,7 @@ "effects": [ { "type": "exert", - "filter": "choose(bearer)" + "filter": "bearer" }, { "type": "discardCardAtRandomFromHand", diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-1.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-1.json index b411e0e9a..98cbaa7f5 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-1.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-1.json @@ -30,7 +30,7 @@ }, "cost": { "type": "exert", - "filter": "choose(bearer)" + "filter": "bearer" }, "effect": { "type": "putOnRing" @@ -916,7 +916,7 @@ "phase": "skirmish", "cost": { "type": "exert", - "filter": "choose(bearer)", + "filter": "bearer", "memorize": "bearer" }, "effect": { diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-2.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-2.json index 94411f45a..a6f85dcb0 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-2.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-2.json @@ -361,7 +361,7 @@ }, "effect": { "type": "preventWound", - "filter": "choose(bearer)" + "filter": "bearer" } } ] @@ -725,7 +725,7 @@ }, "effect": { "type": "returnToHand", - "filter": "choose(bearer)" + "filter": "bearer" } } ] @@ -744,7 +744,7 @@ "phase": "skirmish", "cost": { "type": "exert", - "filter": "choose(bearer)", + "filter": "bearer", "times": 2 }, "effect": { @@ -760,7 +760,7 @@ }, "effect": { "type": "returnToHand", - "filter": "choose(bearer)" + "filter": "bearer" } } ] @@ -792,7 +792,7 @@ }, "effect": { "type": "returnToHand", - "filter": "choose(bearer)" + "filter": "bearer" } } ] @@ -822,7 +822,7 @@ }, "cost": { "type": "exert", - "filter": "choose(bearer)" + "filter": "bearer" }, "effect": { "type": "discard", diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/DefaultActionContext.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/DefaultActionContext.java index 95706bd2c..3e106d039 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/DefaultActionContext.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/DefaultActionContext.java @@ -42,7 +42,8 @@ public class DefaultActionContext implements ActionContext { @Override public void setCardMemory(String memory, PhysicalCard card) { cardMemory.removeAll(memory); - cardMemory.put(memory, card); + if (card != null) + cardMemory.put(memory, card); } @Override diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/CardResolver.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/CardResolver.java index 1ef5c537b..d22ecbf9d 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/CardResolver.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/CardResolver.java @@ -26,8 +26,6 @@ import java.util.LinkedList; import java.util.List; public class CardResolver { - - public static EffectAppender resolveStackedCards(String type, ValueSource countSource, FilterableSource stackedOn, String memory, String choicePlayer, String choiceText, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { return resolveStackedCards(type, null, countSource, stackedOn, memory, choicePlayer, choiceText, environment); @@ -418,6 +416,28 @@ public class CardResolver { }; } }; + } else if (type.equals("bearer")) { + return new DelayedAppender() { + @Override + public boolean isPlayableInFull(ActionContext actionContext) { + final PhysicalCard attachedTo = actionContext.getSource().getAttachedTo(); + if (attachedTo == null) + return false; + if (playabilityFilter != null) + return PlayConditions.isActive(actionContext.getGame(), attachedTo, playabilityFilter.getFilterable(actionContext)); + return true; + } + + @Override + protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) { + return new UnrespondableEffect() { + @Override + protected void doPlayEffect(LotroGame game) { + actionContext.setCardMemory(memory, actionContext.getSource().getAttachedTo()); + } + }; + } + }; } else if (type.startsWith("memory(") && type.endsWith(")")) { String sourceMemory = type.substring(type.indexOf("(") + 1, type.lastIndexOf(")")); return new DelayedAppender() {