diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/errata/set01-errata-playtest.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/errata/set01-errata-playtest.json index db45e5bbd..718f50ea3 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/errata/set01-errata-playtest.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/errata/set01-errata-playtest.json @@ -114,14 +114,14 @@ { "type": "revealRandomCardsFromHand", "forced": true, - "hand": "fp", + "hand": "shadowPlayer", "count": 3, "memorize": "revealedCards" }, { "type": "putCardsFromHandOnTopOfDeck", "filter": "choose(memory(revealedCards))", - "player": "fp" + "player": "shadowPlayer" } ] } diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/errata/set03-errata.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/errata/set03-errata.json index f637e4c58..c5ad97652 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/errata/set03-errata.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/errata/set03-errata.json @@ -67,7 +67,7 @@ }, "53_42": { "side": "free_people", - "cost": 0, + "cost": 1, "culture": "Gondor", "title": "*Horn of Boromir", "type": "possession", @@ -157,7 +157,9 @@ "type": "addKeyword", "filter": "choose(uruk-hai)", "keyword": "fierce", - "until": "start(regroup)" + "until": "start(regroup)", + "memorize": "chosenUruk", + } }, { @@ -291,7 +293,7 @@ "optional": true, "trigger": { "type": "removesBurden", - "filter": "not(hobbit)" + "filter": "your,not(hobbit)" }, "condition": { "type": "perPhaseLimit", diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/errata/set10-errata-playtest.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/errata/set10-errata-playtest.json index 3d62d35cd..c0454552b 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/errata/set10-errata-playtest.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/errata/set10-errata-playtest.json @@ -37,7 +37,7 @@ "type": "conditional", "condition": { "type": "memorymatches", - "memory": "discardedCard", + "memory": "chosenMinion", "filter": "strengthLessThan(7)" }, "effect": { diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set101/set101_gandalf_playtest.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set101/set101_gandalf_playtest.json index 9f7137fbf..0ed02a3f5 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set101/set101_gandalf_playtest.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set101/set101_gandalf_playtest.json @@ -147,7 +147,7 @@ ] }, "151_16": { - "title": "My Heart Tells Me", + "title": "*My Heart Tells Me", "culture": "gandalf", "cost": 1, "type": "condition", @@ -233,19 +233,32 @@ { "type": "activated", "phase": "skirmish", + "condition": { + "type": "perPhaseLimit", + "limit": 3 + }, "cost": { "type": "exert", "filter": "choose(name(Gandalf))" }, - "effect": { - "type": "modifyStrength", - "filter": "choose(or(culture(gandalf),culture(elven)),companion)", - "amount": { - "type": "forEachYouCanSpot", - "filter": "culture(elven),ally", - "limit": 3 - } - } + "effect": [ + { + "type": "modifyStrength", + "filter": "choose(or(culture(gandalf),culture(elven)),companion)", + "amount": { + "type": "forEachYouCanSpot", + "filter": "culture(elven),ally", + "limit": 3 + } + }, + { + "type": "incrementPerPhaseLimit", + "limit": { + "type": "forEachYouCanSpot", + "filter": "culture(elven),ally", + } + }, + ] } ] } diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html b/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html index f8990ac83..179d5aff6 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html +++ b/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html @@ -1,6 +1,14 @@
Most recent update
+2022 February 20
+- Fixed The Mirror of Galadriel (1R55) errata operating on the Free People's hand instead of Shadow...oops!
+- Fixed Horn of Boromir (3R42) errata not including the 1 twilight cost
+- Fixed The Shire Countryside (3R113) errata triggering from Shadow cards and sites removing burdens
+- Fixed Cirdan, the Shipwright (10R8) errata not removing events from the discard pile
+- Fixed My Heart Tells Me (V1_16) not being unique
+- Fixed The White Council (V1_18) not respecting the +3 limit for the whole phase
+
2021 December 26 - A
- Fixed Scouring of the Shire (18R112) errata not being unique.
- Fixed Fell Voices Call (V1_37) likely crashing due to a bad memory reference.
diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/IncrementPerPhaseLimit.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/IncrementPerPhaseLimit.java
index 1235fb1b8..64f3d72f3 100644
--- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/IncrementPerPhaseLimit.java
+++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/IncrementPerPhaseLimit.java
@@ -3,11 +3,14 @@ package com.gempukku.lotro.cards.build.field.effect.appender;
import com.gempukku.lotro.cards.build.ActionContext;
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
+import com.gempukku.lotro.cards.build.ValueSource;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
+import com.gempukku.lotro.cards.build.field.effect.appender.resolver.ValueResolver;
import com.gempukku.lotro.logic.actions.CostToEffectAction;
import com.gempukku.lotro.logic.effects.IncrementPhaseLimitEffect;
+import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.PlayConditions;
import org.json.simple.JSONObject;
@@ -17,12 +20,15 @@ public class IncrementPerPhaseLimit implements EffectAppenderProducer {
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(effectObject, "limit", "perPlayer");
- final int limit = FieldUtils.getInteger(effectObject.get("limit"), "limit", 1);
+ final ValueSource limitSource = ValueResolver.resolveEvaluator(effectObject.get("limit"), 1, environment);
final boolean perPlayer = FieldUtils.getBoolean(effectObject.get("perPlayer"), "perPlayer", false);
return new DelayedAppender() {
@Override
protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) {
+ final Evaluator evaluator = limitSource.getEvaluator(actionContext);
+ final int limit = evaluator.evaluateExpression(actionContext.getGame(), actionContext.getSource());
+
if (perPlayer)
return new IncrementPhaseLimitEffect(actionContext.getSource(), actionContext.getPerformingPlayer() + "_", limit);
else
@@ -31,6 +37,9 @@ public class IncrementPerPhaseLimit implements EffectAppenderProducer {
@Override
public boolean isPlayableInFull(ActionContext actionContext) {
+ final Evaluator evaluator = limitSource.getEvaluator(actionContext);
+ final int limit = evaluator.evaluateExpression(actionContext.getGame(), actionContext.getSource());
+
if (perPlayer)
return PlayConditions.checkPhaseLimit(actionContext.getGame(), actionContext.getSource(), actionContext.getPerformingPlayer() + "_", limit);
else