From 686b384c142d5f4d971760713e67eba15355d513 Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Fri, 18 Oct 2019 11:28:05 -0700 Subject: [PATCH] Extra costs are played at the correct time. --- .../main/web/cards/set32/set32-shadow.json | 2 +- .../effect/appender/DelayedAppender.java | 45 ++++++++++--------- .../com/gempukku/lotro/at/CostAtTest.java | 22 +++++++++ .../com/gempukku/lotro/at/NewCardsAtTest.java | 4 +- 4 files changed, 50 insertions(+), 23 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set32/set32-shadow.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set32/set32-shadow.json index 52949fa83..f8e3b489c 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set32/set32-shadow.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set32/set32-shadow.json @@ -357,7 +357,7 @@ "type": "minion", "race": "orc", "strength": 10, - "vitality": 4, + "vitality": 3, "site": 4, "effects": { "type": "trigger", 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 7fb89012e..2cfaa1193 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 @@ -23,27 +23,32 @@ public abstract class DelayedAppender implements EffectAppender { @Override public final void appendEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) { - action.appendEffect( - new UnrespondableEffect() { - @Override - protected void doPlayEffect(LotroGame game) { - // Need to insert them, but in the reverse order - final List effects = createEffects(cost, action, actionContext); - 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]); - } - } + final UnrespondableEffect effect = new UnrespondableEffect() { + @Override + protected void doPlayEffect(LotroGame game) { + // Need to insert them, but in the reverse order + final List effects = createEffects(cost, action, actionContext); + 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 - public String getText(LotroGame game) { - return text; - } - }); + @Override + public String getText(LotroGame game) { + return text; + } + }; + + if (cost) { + action.appendCost(effect); + } else { + action.appendEffect(effect); + } } protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) { diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/CostAtTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/CostAtTest.java index f8bd62df8..4726ffdb6 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/CostAtTest.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/CostAtTest.java @@ -36,4 +36,26 @@ public class CostAtTest extends AbstractAtTest { playerDecided(P1, "0"); assertEquals(twilightPool, _game.getGameState().getTwilightPool()); } + + @Test + public void exertExtraCost() throws DecisionResultInvalidException, CardNotFoundException { + initializeSimplestGame(); + + final PhysicalCardImpl azog = createCard(P2, "32_28"); + final PhysicalCardImpl fimbul = createCard(P2, "30_33"); + + _game.getGameState().addCardToZone(_game, azog, Zone.HAND); + _game.getGameState().addCardToZone(_game, fimbul, Zone.HAND); + + skipMulligans(); + + _game.getGameState().setTwilight(20); + + playerDecided(P1, ""); + + playerDecided(P2, getCardActionId(P2, "Play Azog")); + playerDecided(P2, getCardActionId(P2, "Play Fimbul")); + + assertEquals(1, _game.getGameState().getWounds(azog)); + } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/NewCardsAtTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/NewCardsAtTest.java index 70874d410..69ff80c3d 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/NewCardsAtTest.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/NewCardsAtTest.java @@ -482,9 +482,9 @@ public class NewCardsAtTest extends AbstractAtTest { skipMulligans(); playerDecided(P1, "0"); + playerDecided(P1, "2"); playerDecided(P1, ""); - playerDecided(P1, "2"); playerDecided(P1, "" + blackBreath.getCardId()); playerDecided(P1, "" + blackBreath2.getCardId()); @@ -509,9 +509,9 @@ public class NewCardsAtTest extends AbstractAtTest { skipMulligans(); playerDecided(P1, "0"); + playerDecided(P1, "1"); playerDecided(P1, ""); - playerDecided(P1, "1"); playerDecided(P1, "" + blackBreath.getCardId()); assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, _userFeedback.getAwaitingDecision(P1).getDecisionType());