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 43a87b7de..20a7d079a 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 @@ -340,7 +340,7 @@ ] }, "1_16": { - "title": "Greatest Kingdom of My People", + "title": "*Greatest Kingdom of My People", "culture": "dwarven", "cost": 0, "type": "condition", diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-isengard.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-isengard.json index c70017d0a..5a9d000dd 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-isengard.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-isengard.json @@ -532,7 +532,8 @@ "condition": { "type": "location", "filter": "hasAttached(self)" - } + }, + "phase": "skirmish" } }, { diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-moria.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-moria.json index 21ebfcee4..6bff13505 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-moria.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-moria.json @@ -498,7 +498,8 @@ "condition": { "type": "location", "filter": "underground" - } + }, + "amount": 2 } }, { @@ -808,7 +809,7 @@ "phase": "shadow", "cost": { "type": "discardFromHand", - "forced": false + "forced": false, "count": 3 }, "effect": { diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-wraith.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-wraith.json index d2ef45464..4716f68b1 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-wraith.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-wraith.json @@ -847,23 +847,23 @@ "vitality": 4, "site": 3, "keyword": "fierce", - "condition": { - "type": "or", - "condition": [ - { - "type": "canSpot", - "count": 6, - "filter": "companion" - }, - { - "type": "canSpotBurdens", - "amount": 5 - } - ] - }, "effects": { "type": "activated", "phase": "maneuver", + "condition": { + "type": "or", + "condition": [ + { + "type": "canSpot", + "count": 6, + "filter": "companion" + }, + { + "type": "canSpotBurdens", + "amount": 5 + } + ] + }, "cost": { "type": "exert", "filter": "self" diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set3/set3-elven.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set3/set3-elven.json new file mode 100644 index 000000000..948871534 --- /dev/null +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set3/set3-elven.json @@ -0,0 +1,33 @@ +{ + "3_14": { + "title": "*Erestor", + "subtitle": "Chief Advisor to Elrond", + "culture": "elven", + "cost": 2, + "type": "ally", + "allyHome": "fellowship,3", + "race": "elf", + "strength": 5, + "vitality": 2, + "condition": { + "type": "canSpot", + "filter": "elf" + }, + "effects": { + "type": "activatedTrigger", + "trigger": { + "type": "aboutToTakeWound", + "filter": "elf", + "source": "culture(sauron),or(minion,event)" + }, + "cost": { + "type": "exert", + "filter": "self" + }, + "effect": { + "type": "preventWound", + "filter": "choose(elf)" + } + } + } +} \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Choice.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Choice.java index aefb14e0b..587adaf00 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Choice.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Choice.java @@ -37,11 +37,16 @@ public class Choice implements EffectAppenderProducer { return new DelayedAppender() { @Override protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) { + final String choosingPlayer = playerSource.getPlayer(actionContext); + ActionContext delegateActionContext = new DelegateActionContext(actionContext, + choosingPlayer, actionContext.getGame(), actionContext.getSource(), + actionContext.getEffectResult(), actionContext.getEffect()); + int textIndex = 0; List playableEffectAppenders = new LinkedList<>(); List effectTexts = new LinkedList<>(); for (EffectAppender possibleEffectAppender : possibleEffectAppenders) { - if (possibleEffectAppender.isPlayableInFull(actionContext)) { + if (possibleEffectAppender.isPlayableInFull(delegateActionContext)) { playableEffectAppenders.add(possibleEffectAppender); effectTexts.add(textArray[textIndex]); } @@ -58,14 +63,10 @@ public class Choice implements EffectAppenderProducer { if (playableEffectAppenders.size() == 1) { SubAction subAction = new SubAction(action); - playableEffectAppenders.get(0).appendEffect(cost, subAction, actionContext); + playableEffectAppenders.get(0).appendEffect(cost, subAction, delegateActionContext); return new StackActionEffect(subAction); } - final String choosingPlayer = playerSource.getPlayer(actionContext); - ActionContext delegateActionContext = new DelegateActionContext(actionContext, - choosingPlayer, actionContext.getGame(), actionContext.getSource(), - actionContext.getEffectResult(), actionContext.getEffect()); SubAction subAction = new SubAction(action); subAction.appendCost( new PlayoutDecisionEffect(choosingPlayer, diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantPlayPhaseEventsOrPhaseSpecialAbilities.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantPlayPhaseEventsOrPhaseSpecialAbilities.java index 6b93b169a..92592ad30 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantPlayPhaseEventsOrPhaseSpecialAbilities.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantPlayPhaseEventsOrPhaseSpecialAbilities.java @@ -13,6 +13,9 @@ public class CantPlayPhaseEventsOrPhaseSpecialAbilities implements ModifierSourc FieldUtils.validateAllowedFields(object, "phase", "condition"); final Phase phase = FieldUtils.getEnum(Phase.class, object.get("phase"), "phase"); + if (phase == null) + throw new InvalidCardDefinitionException("Has to have a phase defined"); + final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("condition"), "condition"); final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);