From 584198d164bd9a3e91c261a0f2aa486708303f7d Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Thu, 29 Aug 2019 22:11:09 -0700 Subject: [PATCH] Memorize played card --- .../src/main/web/cards/set40-elven.json | 64 +++++++++++++++++++ .../trigger/PlayedTriggerCheckerProducer.java | 11 +++- 2 files changed, 73 insertions(+), 2 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-elven.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-elven.json index bc8ddcafd..8b0099120 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-elven.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-elven.json @@ -88,5 +88,69 @@ } } ] + }, + "40_36": { + "title": "*Bow of the Galadhrim", + "subtitle": "Galadriel's Gift", + "side": "free people", + "culture": "elven", + "cost": 1, + "type": "possession", + "possession": "ranged weapon", + "strength": 1, + "target": "name(Legolas)", + "effects": { + "type": "trigger", + "trigger": { + "type": "startOfPhase", + "phase": "archery" + }, + "optional": true, + "cost": { + "type": "exert", + "filter": "choose(hasAttached(self))" + }, + "effect": { + "type": "wound", + "filter": "choose(minion)" + } + } + }, + "40_37": { + "title": "*Bruinen Unleashed", + "side": "free people", + "culture": "elven", + "cost": 1, + "type": "condition", + "keyword": "support area", + "condition": { + "type": "canSpot", + "filter": "elf,companion" + }, + "effects": [ + { + "type": "trigger", + "trigger": { + "type": "played", + "filter": "nazgul", + "memorize": "playedNazgul" + }, + "effect": { + "type": "exert", + "filter": "memory(playedNazgul)" + } + }, + { + "type": "trigger", + "trigger": { + "type": "startOfPhase", + "phase": "regroup" + }, + "effect": { + "type": "discard", + "filter": "self" + } + } + ] } } \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/PlayedTriggerCheckerProducer.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/PlayedTriggerCheckerProducer.java index c5555e0a7..a50d97af8 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/PlayedTriggerCheckerProducer.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/PlayedTriggerCheckerProducer.java @@ -11,20 +11,27 @@ import com.gempukku.lotro.logic.actions.CostToEffectAction; import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.TriggerConditions; +import com.gempukku.lotro.logic.timing.results.PlayCardResult; import org.json.simple.JSONObject; public class PlayedTriggerCheckerProducer implements TriggerCheckerProducer { @Override public TriggerChecker getTriggerChecker(JSONObject value, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { - FieldUtils.validateAllowedFields(value, "filter"); + FieldUtils.validateAllowedFields(value, "filter", "memorize"); final String filterString = FieldUtils.getString(value.get("filter"), "filter"); + final String memorize = FieldUtils.getString(value.get("memorize"), "memorize"); final FilterableSource filter = environment.getFilterFactory().generateFilter(filterString); return new TriggerChecker() { @Override public boolean accepts(CostToEffectAction action, String playerId, LotroGame game, PhysicalCard self, EffectResult effectResult, Effect effect) { final Filterable filterable = filter.getFilterable(playerId, game, self, effectResult, effect); - return TriggerConditions.played(game, effectResult, filterable); + final boolean played = TriggerConditions.played(game, effectResult, filterable); + if (played && memorize != null) { + PhysicalCard playedCard = ((PlayCardResult) effectResult).getPlayedCard(); + action.setValueToMemory(memorize, playerId); + } + return played; } @Override