From c310817cf3f493ea7d2c28bde97027a103562a6c Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Thu, 30 May 2024 17:11:19 -0500 Subject: [PATCH] Consolidated KilledInSkirmish -> Killed. Fixed bad condition in combined killed trigger code. --- .../cards/official/set04/set04-Isengard.hjson | 5 ++- .../cards/official/set10/set10-Dwarven.hjson | 5 ++- .../cards/official/set12/set12-Uruk-hai.hjson | 5 ++- .../cards/official/set13/set13-Orc.hjson | 3 +- .../build/field/effect/trigger/Killed.java | 13 +++++- .../effect/trigger/KilledInSkirmish.java | 45 ------------------- .../effect/trigger/TriggerCheckerFactory.java | 1 - .../lotro/logic/timing/TriggerConditions.java | 2 +- 8 files changed, 23 insertions(+), 56 deletions(-) delete mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/KilledInSkirmish.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set04/set04-Isengard.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set04/set04-Isengard.hjson index 6da314e00..8312bbc68 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set04/set04-Isengard.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set04/set04-Isengard.hjson @@ -3706,9 +3706,10 @@ type: trigger optional: true trigger: { - type: killedInSkirmish + type: Killed filter: or(companion,ally) - by: urukHai + killer: urukHai + inSkirmish: true } effect: { type: takeControlOfSite diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set10/set10-Dwarven.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set10/set10-Dwarven.hjson index 9165dea5f..64928a042 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set10/set10-Dwarven.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set10/set10-Dwarven.hjson @@ -156,9 +156,10 @@ effects: { type: responseEvent trigger: { - type: killedInSkirmish + type: Killed filter: minion - by: dwarf + killer: dwarf + inSkirmish: true memorize: killedMinion } text: Play for {killedMinion} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set12/set12-Uruk-hai.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set12/set12-Uruk-hai.hjson index 97b9f7ad9..b24821ec9 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set12/set12-Uruk-hai.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set12/set12-Uruk-hai.hjson @@ -1188,9 +1188,10 @@ type: trigger optional: true trigger: { - type: killedInSkirmish + type: Killed filter: companion - by: culture(uruk-hai),minion + killer: culture(uruk-hai),minion + inSkirmish: true } cost: { type: discardFromHand diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set13/set13-Orc.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set13/set13-Orc.hjson index e1ed8176f..2add79d3c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set13/set13-Orc.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set13/set13-Orc.hjson @@ -432,8 +432,9 @@ type: trigger optional: true trigger: { - type: killedInSkirmish + type: Killed filter: culture(orc),minion + inSkirmish: true } effect: { type: modifyStrength 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 ce073f892..33d30dd1c 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 @@ -14,11 +14,12 @@ 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", "memorize"); + FieldUtils.validateAllowedFields(value, "filter", "killer", "inSkirmish", "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 FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment); final FilterableSource byFilterableSource = environment.getFilterFactory().generateFilter(byFilter, environment); @@ -33,7 +34,15 @@ public class Killed implements TriggerCheckerProducer { public boolean accepts(ActionContext actionContext) { final Filterable filterable = filterableSource.getFilterable(actionContext); Filterable byFilterable = byFilterableSource.getFilterable(actionContext); - final boolean result = TriggerConditions.forEachKilledBy(actionContext.getGame(), actionContext.getEffectResult(), byFilterable, filterable); + boolean result = false; + + if(inSkirmish) { + result = TriggerConditions.forEachKilledInASkirmish(actionContext.getGame(), actionContext.getEffectResult(), byFilterable, filterable); + } + else { + result = TriggerConditions.forEachKilledBy(actionContext.getGame(), actionContext.getEffectResult(), byFilterable, filterable); + } + if (result && memorize != null) { final PhysicalCard killedCard = ((ForEachKilledResult) actionContext.getEffectResult()).getKilledCard(); actionContext.setCardMemory(memorize, killedCard); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/KilledInSkirmish.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/KilledInSkirmish.java deleted file mode 100644 index 6b3f5f3e0..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/KilledInSkirmish.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.gempukku.lotro.cards.build.field.effect.trigger; - -import com.gempukku.lotro.cards.build.ActionContext; -import com.gempukku.lotro.cards.build.CardGenerationEnvironment; -import com.gempukku.lotro.cards.build.FilterableSource; -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.timing.TriggerConditions; -import com.gempukku.lotro.logic.timing.results.ForEachKilledResult; -import org.json.simple.JSONObject; - -public class KilledInSkirmish implements TriggerCheckerProducer { - @Override - public TriggerChecker getTriggerChecker(JSONObject value, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { - FieldUtils.validateAllowedFields(value, "filter", "by", "memorize"); - - final String filter = FieldUtils.getString(value.get("filter"), "filter", "any"); - final String by = FieldUtils.getString(value.get("by"), "by", "any"); - final String memorize = FieldUtils.getString(value.get("memorize"), "memorize"); - - final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment); - final FilterableSource byFilterableSource = environment.getFilterFactory().generateFilter(by, environment); - - return new TriggerChecker() { - @Override - public boolean isBefore() { - return false; - } - - @Override - public boolean accepts(ActionContext actionContext) { - final Filterable byFilterable = byFilterableSource.getFilterable(actionContext); - final Filterable filterable = filterableSource.getFilterable(actionContext); - final boolean result = TriggerConditions.forEachKilledInASkirmish(actionContext.getGame(), actionContext.getEffectResult(), byFilterable, filterable); - if (result && memorize != null) { - final PhysicalCard killedCard = ((ForEachKilledResult) actionContext.getEffectResult()).getKilledCard(); - actionContext.setCardMemory(memorize, killedCard); - } - return result; - } - }; - } -} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/TriggerCheckerFactory.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/TriggerCheckerFactory.java index a33e0aa9b..168be45b9 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/TriggerCheckerFactory.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/TriggerCheckerFactory.java @@ -54,7 +54,6 @@ public class TriggerCheckerFactory { triggerCheckers.put("fpstartedassigning", new FPStartedAssigning()); triggerCheckers.put("heals", new Heals()); triggerCheckers.put("killed", new Killed()); - triggerCheckers.put("killedinskirmish", new KilledInSkirmish()); triggerCheckers.put("losesinitiative", new LosesInitiative()); triggerCheckers.put("losesskirmish", new LosesSkirmish()); triggerCheckers.put("played", new PlayedTriggerCheckerProducer()); 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 c0b8a4fbc..993c6f996 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 @@ -282,7 +282,7 @@ public class TriggerConditions { ForEachKilledResult killResult = (ForEachKilledResult) effectResult; var killers = killResult.getKillers(); - if (killers == null || killers.isEmpty() || killers.stream().allMatch(Objects::isNull)) + if (killedBy != Filters.any && (killers == null || killers.isEmpty() || killers.stream().allMatch(Objects::isNull))) return false; return Filters.filter(killResult.getKillers(), game, killedBy).size() > 0 &&