diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Orc.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Orc.hjson index 0d11eff0c..10648ea94 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Orc.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Orc.hjson @@ -1040,7 +1040,7 @@ optional: true trigger: { type: assignedAgainst - filter: self + filter: bearer against: companion memorizeAgainst: assignedComp } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Sites.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Sites.hjson index 39b9c0aa9..229c5ca73 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Sites.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Sites.hjson @@ -818,7 +818,7 @@ player: free people optional: true trigger: { - type: movesTo + type: movesFrom filter: self } requires: { @@ -902,12 +902,11 @@ { type: memorize filter: character,minResistance(5) - memorize: healedChars + memory: healedChars } { type: heal select: all(memory(healedChars)) - memorize: healedChars } { type: exert diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Elven.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Elven.hjson index 7990df7ef..bb5ae7eb8 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Elven.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Elven.hjson @@ -179,6 +179,7 @@ type: aidCost cost: { type: addTwilight + amount: 2 } } { diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Sites.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Sites.hjson index 0ee38cd73..368ab4d99 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Sites.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set18/set18-Sites.hjson @@ -152,21 +152,13 @@ } effect: [ { - type: optional - text: Would you like to reinforce a culture token - player: free people + type: ForEachPlayer effect: { - type: reinforceTokens - player: free people - } - } - { - type: optional - text: Would you like to reinforce a culture token - player: shadow - effect: { - type: reinforceTokens - player: shadow + type: optional + text: Would you like to reinforce a culture token + effect: { + type: reinforceTokens + } } } ] diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set11/set11-Sites-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set11/set11-Sites-errata.hjson index 0e7cd13ae..aa91e5f6b 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set11/set11-Sites-errata.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set11/set11-Sites-errata.hjson @@ -242,12 +242,11 @@ { type: memorize filter: character,minResistance(5) - memorize: healedChars + memory: healedChars } { type: heal select: all(memory(healedChars)) - memorize: healedChars } { type: exert diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV01/V1_moria.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV01/V1_moria.hjson index a28c92975..6d7347d3c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV01/V1_moria.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV01/V1_moria.hjson @@ -83,6 +83,7 @@ type: CostToEffect cost: { type: Discard + player: freeps select: choose(tentacle) } effect: { @@ -369,11 +370,18 @@ { type: Trigger optional: true - trigger: { - type: TakesWound - filter: tentacle - memorize: woundedTentacle - } + trigger: [ + { + type: TakesWound + filter: tentacle + memorize: woundedTentacle + } + { + type: Killed + filter: tentacle + cause: wounds + } + ] effect: { type: StackCardsFromPlay select: memory(woundedTentacle) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/Killed.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/Killed.java index 33d30dd1c..3b9bc4792 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/Killed.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/Killed.java @@ -7,6 +7,7 @@ import com.gempukku.lotro.cards.build.InvalidCardDefinitionException; import com.gempukku.lotro.cards.build.field.FieldUtils; import com.gempukku.lotro.common.Filterable; import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.logic.effects.KillEffect; import com.gempukku.lotro.logic.timing.TriggerConditions; import com.gempukku.lotro.logic.timing.results.ForEachKilledResult; import org.json.simple.JSONObject; @@ -14,12 +15,13 @@ import org.json.simple.JSONObject; public class Killed implements TriggerCheckerProducer { @Override public TriggerChecker getTriggerChecker(JSONObject value, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { - FieldUtils.validateAllowedFields(value, "filter", "killer", "inSkirmish", "memorize"); + FieldUtils.validateAllowedFields(value, "filter", "killer", "inSkirmish", "cause", "memorize"); final String filter = FieldUtils.getString(value.get("filter"), "filter", "any"); final String byFilter = FieldUtils.getString(value.get("killer"), "killer", "any"); final String memorize = FieldUtils.getString(value.get("memorize"), "memorize"); final boolean inSkirmish = FieldUtils.getBoolean(value.get("inSkirmish"), "inSkirmish", false); + final KillEffect.Cause cause = FieldUtils.getEnum(KillEffect.Cause.class, value.get("cause"), "cause"); final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment); final FilterableSource byFilterableSource = environment.getFilterFactory().generateFilter(byFilter, environment); @@ -37,10 +39,10 @@ public class Killed implements TriggerCheckerProducer { boolean result = false; if(inSkirmish) { - result = TriggerConditions.forEachKilledInASkirmish(actionContext.getGame(), actionContext.getEffectResult(), byFilterable, filterable); + result = TriggerConditions.forEachKilledInASkirmish(actionContext.getGame(), actionContext.getEffectResult(), byFilterable, cause, filterable); } else { - result = TriggerConditions.forEachKilledBy(actionContext.getGame(), actionContext.getEffectResult(), byFilterable, filterable); + result = TriggerConditions.forEachKilledBy(actionContext.getGame(), actionContext.getEffectResult(), byFilterable, cause, filterable); } if (result && memorize != null) { diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/KillEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/KillEffect.java index 4fec2405c..4e1ddab3e 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/KillEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/KillEffect.java @@ -21,7 +21,19 @@ public class KillEffect extends AbstractSuccessfulEffect { private final Cause _cause; public enum Cause { - WOUNDS, OVERWHELM, CARD_EFFECT + WOUNDS, OVERWHELM, CARD_EFFECT; + + public static Cause parse(String name) { + String nameCaps = name.toUpperCase().trim() + .replace(' ', '_') + .replace('-', '_'); + + for (Cause cause : values()) { + if (cause.toString().equals(nameCaps)) + return cause; + } + return null; + } } public KillEffect(PhysicalCard card, PhysicalCard killer, Cause cause) { diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/TriggerConditions.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/TriggerConditions.java index 79129aeda..83bc452c8 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/TriggerConditions.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/TriggerConditions.java @@ -297,14 +297,14 @@ public class TriggerConditions { } public static boolean forEachKilled(LotroGame game, EffectResult effectResult, Filterable... filters) { - return forEachKilledBy(game, effectResult, Filters.any, filters); + return forEachKilledBy(game, effectResult, Filters.any, null, filters); } - public static boolean forEachKilledBy(LotroGame game, EffectResult effectResult, Filterable killedBy, Filterable... killed) { + public static boolean forEachKilledBy(LotroGame game, EffectResult effectResult, Filterable killedBy, KillEffect.Cause cause, Filterable... killed) { if (effectResult.getType() == EffectResult.Type.FOR_EACH_WOUNDED) { return forEachMortallyWoundedBy(game, effectResult, killedBy, killed); } else if (effectResult.getType() == EffectResult.Type.FOR_EACH_KILLED) { - if (forEachKilledInASkirmish(game, effectResult, killedBy, killed)) + if (forEachKilledInASkirmish(game, effectResult, killedBy, cause, killed)) return true; ForEachKilledResult killResult = (ForEachKilledResult) effectResult; @@ -319,12 +319,15 @@ public class TriggerConditions { return false; } - public static boolean forEachKilledInASkirmish(LotroGame game, EffectResult effectResult, Filterable killedBy, Filterable... killed) { + public static boolean forEachKilledInASkirmish(LotroGame game, EffectResult effectResult, Filterable killedBy, KillEffect.Cause cause, Filterable... killed) { if (effectResult.getType() == EffectResult.Type.FOR_EACH_KILLED && game.getGameState().getCurrentPhase() == Phase.SKIRMISH && Filters.countActive(game, Filters.inSkirmish, killedBy) > 0) { ForEachKilledResult killResult = (ForEachKilledResult) effectResult; + if(cause != null && killResult.getCause() != cause) + return false; + return Filters.and(killed).accepts(game, killResult.getKilledCard()); } return false;