From 6dcad60e012844cba6695436cb7eed7c63452705 Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Mon, 2 Sep 2019 15:46:46 -0700 Subject: [PATCH] Fixing assigning chars to minions --- .../appender/AssignToSkirmishAgainstMinion.java | 14 +++++++++++--- .../field/effect/appender/DelayedAppender.java | 14 ++++++++------ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/AssignToSkirmishAgainstMinion.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/AssignToSkirmishAgainstMinion.java index 38bcf0ce5..0b7783cd0 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/AssignToSkirmishAgainstMinion.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/AssignToSkirmishAgainstMinion.java @@ -16,6 +16,10 @@ import com.gempukku.lotro.logic.effects.AssignmentEffect; import com.gempukku.lotro.logic.timing.Effect; import org.json.simple.JSONObject; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + public class AssignToSkirmishAgainstMinion implements EffectAppenderProducer { @Override public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { @@ -41,12 +45,16 @@ public class AssignToSkirmishAgainstMinion implements EffectAppenderProducer { result.addEffectAppender( new DelayedAppender() { @Override - protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) { + protected List createEffects(boolean cost, CostToEffectAction action, ActionContext actionContext) { final String assigningPlayer = playerSource.getPlayer(actionContext); final Filterable filter = minionFilter.getFilterable(actionContext); final PhysicalCard minion = Filters.findFirstActive(actionContext.getGame(), filter); - final PhysicalCard fpCharacter = actionContext.getCardFromMemory("_tempFpCharacter"); - return new AssignmentEffect(assigningPlayer, fpCharacter, minion); + final Collection fpChar = actionContext.getCardsFromMemory("_tempFpCharacter"); + if (fpChar.size() == 1) { + return Collections.singletonList( + new AssignmentEffect(assigningPlayer, fpChar.iterator().next(), minion)); + } + return null; } }); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/DelayedAppender.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/DelayedAppender.java index 51c6434a7..7fb89012e 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/DelayedAppender.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/DelayedAppender.java @@ -29,12 +29,14 @@ public abstract class DelayedAppender implements EffectAppender { protected void doPlayEffect(LotroGame game) { // Need to insert them, but in the reverse order final List effects = createEffects(cost, action, actionContext); - final Effect[] effectsArray = effects.toArray(new Effect[0]); - for (int i = effectsArray.length - 1; i >= 0; i--) - if (cost) - action.insertCost(effectsArray[i]); - else - action.insertEffect(effectsArray[i]); + if (effects != null) { + final Effect[] effectsArray = effects.toArray(new Effect[0]); + for (int i = effectsArray.length - 1; i >= 0; i--) + if (cost) + action.insertCost(effectsArray[i]); + else + action.insertEffect(effectsArray[i]); + } } @Override