Fixed A Dark Shape Sprang not initiating the extra skirmish phase properly.

This commit is contained in:
Christian 'ketura' McCarty
2024-12-18 00:51:37 -06:00
parent aa20747d3a
commit 3eabebbfb8
2 changed files with 35 additions and 14 deletions

View File

@@ -17,6 +17,7 @@ import com.gempukku.lotro.logic.timing.Effect;
import org.json.simple.JSONObject;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
public class StartSkirmish implements EffectAppenderProducer {
@@ -46,17 +47,19 @@ public class StartSkirmish implements EffectAppenderProducer {
(actionContext) -> {
final String assigningPlayer = playerSource.getPlayer(actionContext);
Side assigningSide = GameUtils.getSide(actionContext.getGame(), assigningPlayer);
final Collection<? extends PhysicalCard> fpChar = actionContext.getCardsFromMemory("_tempFpCharacter");
final Collection<? extends PhysicalCard> fpChar = actionContext.getCardsFromMemory("_fpCharacterTemp");
return Filters.assignableToSkirmishAgainst(assigningSide, Filters.in(fpChar), true, true, false);
}, "_minionTemp", "you", "Choose minion to assign to character", environment));
result.addEffectAppender(
new DelayedAppender() {
@Override
protected List<? extends Effect> createEffects(boolean cost, CostToEffectAction action, ActionContext actionContext) {
List<Effect> result = new LinkedList<>();
final Collection<? extends PhysicalCard> fpChar = actionContext.getCardsFromMemory("_fpCharacterTemp");
final Collection<? extends PhysicalCard> minions = actionContext.getCardsFromMemory("_minionTemp");
if (fpChar.size() == 1 && !minions.isEmpty()) {
new AdditionalSkirmishPhaseEffect(fpChar.iterator().next(), minions);
result.add(new AdditionalSkirmishPhaseEffect(fpChar.iterator().next(), minions));
return result;
}
return null;
}

View File

@@ -1,10 +1,7 @@
package com.gempukku.lotro.cards.official.set10;
import com.gempukku.lotro.cards.GenericCardTestHelper;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Side;
import com.gempukku.lotro.common.Timeword;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.CardNotFoundException;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import org.junit.Test;
@@ -20,8 +17,10 @@ public class Card_10_019_Tests
return new GenericCardTestHelper(
new HashMap<>()
{{
put("card", "10_19");
// put other cards in here as needed for the test case
put("sprang", "10_19");
put("gollum", "9_28");
put("sword", "1_299");
}},
GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo,
@@ -58,18 +57,37 @@ public class Card_10_019_Tests
assertEquals(0, card.getBlueprint().getTwilightCost());
}
// Uncomment any @Test markers below once this is ready to be used
//@Test
@Test
public void ADarkShapeSprangTest1() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
scn.FreepsMoveCardToHand(card);
var sprang = scn.GetShadowCard("sprang");
var gollum = scn.GetShadowCard("gollum");
scn.ShadowMoveCardToHand(sprang, gollum);
var frodo = scn.GetRingBearer();
var sword = scn.GetFreepsCard("sword");
scn.FreepsMoveCardToHand(sword);
scn.StartGame();
scn.FreepsPlayCard(card);
assertEquals(0, scn.GetTwilight());
scn.SetTwilight(9);
scn.FreepsPlayCard(sword);
assertTrue(scn.ShadowHasOptionalTriggerAvailable());
assertEquals(Zone.HAND, gollum.getZone());
assertEquals(0, scn.GetWoundsOn(frodo));
scn.ShadowAcceptOptionalTrigger();
assertEquals(Zone.SHADOW_CHARACTERS, gollum.getZone());
//9 start, +1 from sword = 10; gollum costs 2 + 2 roaming -2 discount
assertEquals(8, scn.GetTwilight());
assertEquals(Phase.SKIRMISH, scn.GetCurrentPhase());
scn.FreepsPassCurrentPhaseAction();
scn.ShadowPassCurrentPhaseAction();
assertEquals(Phase.FELLOWSHIP, scn.GetCurrentPhase());
assertEquals(1, scn.GetWoundsOn(gollum)); //lost skirmish
}
}