Consolidated KilledInSkirmish -> Killed. Fixed bad condition in combined killed trigger code.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -432,8 +432,9 @@
|
||||
type: trigger
|
||||
optional: true
|
||||
trigger: {
|
||||
type: killedInSkirmish
|
||||
type: Killed
|
||||
filter: culture(orc),minion
|
||||
inSkirmish: true
|
||||
}
|
||||
effect: {
|
||||
type: modifyStrength
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
|
||||
@@ -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 &&
|
||||
|
||||
Reference in New Issue
Block a user