From 4c5180fb2683322f3adaedebc62553c094bfc59e Mon Sep 17 00:00:00 2001 From: Phallen Cassidy Date: Fri, 29 Jan 2021 16:42:28 -0500 Subject: [PATCH 01/16] Corrected rarity errors --- gemp-lotr/gemp-lotr-cards/src/main/resources/set15-rarity.txt | 4 ++-- gemp-lotr/gemp-lotr-cards/src/main/resources/set17-rarity.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/set15-rarity.txt b/gemp-lotr/gemp-lotr-cards/src/main/resources/set15-rarity.txt index ab03c4097..a80bb6c47 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/set15-rarity.txt +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/set15-rarity.txt @@ -186,8 +186,8 @@ 15U187 15S188 15S189 -15U190 -15U191 +15S190 +15S191 15U192 15R193 15S194 diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/set17-rarity.txt b/gemp-lotr/gemp-lotr-cards/src/main/resources/set17-rarity.txt index 6163e142e..52c7091c1 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/set17-rarity.txt +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/set17-rarity.txt @@ -44,7 +44,7 @@ 17R44 17R45 17C46 -17U47 +17C47 17S48 17R49 17U50 @@ -154,4 +154,4 @@ 17A154 17A155 17A156 -17A157 \ No newline at end of file +17A157 From 0e79006201db73d3656d2c5d28a56fbc8fa8bc15 Mon Sep 17 00:00:00 2001 From: Phallen Cassidy Date: Sat, 6 Feb 2021 10:28:22 -0500 Subject: [PATCH 02/16] Nertea, Dark Horseman Should no longer prevent allies from being assigned --- gemp-lotr/gemp-lotr-async/src/main/web/cards/set19.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set19.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set19.json index e8edfca96..e3729a02a 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set19.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set19.json @@ -1438,7 +1438,7 @@ "modifier": { "type": "cantBeAssignedToSkirmishAgainst", "side": "free people", - "fpCharacter": "race(stored)", + "fpCharacter": "companion,race(stored)", "minion": "self" } } From 9c3a04819bd5127d43ce96a19c7774dd2cd4ab22 Mon Sep 17 00:00:00 2001 From: Phallen Cassidy Date: Sat, 6 Feb 2021 10:58:22 -0500 Subject: [PATCH 03/16] Narya, Ring of Fire Active abilty should properly remove culture tokens --- gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-1.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-1.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-1.json index 8bfd9f6d1..5c84cf03b 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-1.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-1.json @@ -715,7 +715,8 @@ "filter": "bearer" }, "effect": { - "type": "removeTokens" + "type": "removeTokens", + "filter": "any" } }, { From f6e22585a9534c346c758b6dd485a1b23cb26df6 Mon Sep 17 00:00:00 2001 From: Phallen Cassidy Date: Sat, 6 Feb 2021 11:26:04 -0500 Subject: [PATCH 04/16] Dead pile checks should always refer to the FP player --- .../build/field/effect/appender/resolver/ValueResolver.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/ValueResolver.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/ValueResolver.java index 51463c02d..e23469223 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/ValueResolver.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/ValueResolver.java @@ -248,7 +248,7 @@ public class ValueResolver { final int multiplier = FieldUtils.getInteger(object.get("multiplier"), "multiplier", 1); final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment); return actionContext -> - (Evaluator) (game, cardAffected) -> multiplier * Filters.filter(game.getGameState().getDeadPile(actionContext.getPerformingPlayer()), + (Evaluator) (game, cardAffected) -> multiplier * Filters.filter(game.getGameState().getDeadPile(game.getGameState().getCurrentPlayerId()), game, filterableSource.getFilterable(actionContext)).size(); } else if (type.equalsIgnoreCase("fromMemory")) { FieldUtils.validateAllowedFields(object, "memory", "multiplier", "limit"); From af51b2830a9b4c1f6fa189074605591e4155465d Mon Sep 17 00:00:00 2001 From: Phallen Cassidy Date: Mon, 8 Feb 2021 09:26:35 -0500 Subject: [PATCH 05/16] Corrected overwhelm multiplier text --- .../field/effect/appender/CantBeOverwhelmedMultiplier.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/CantBeOverwhelmedMultiplier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/CantBeOverwhelmedMultiplier.java index bb036124c..3c9ad4dde 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/CantBeOverwhelmedMultiplier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/CantBeOverwhelmedMultiplier.java @@ -31,7 +31,7 @@ public class CantBeOverwhelmedMultiplier implements EffectAppenderProducer { MultiEffectAppender result = new MultiEffectAppender(); result.addEffectAppender( - CardResolver.resolveCards(filter, new ConstantEvaluator(1), "_temp", "you", "Choose characters that you want to make unable to be assigned to skirmish", environment)); + CardResolver.resolveCards(filter, new ConstantEvaluator(1), "_temp", "you", "Choose characters to apply overwhelm multiplier on", environment)); result.addEffectAppender( new DelayedAppender() { @Override From 910aef12160a75e3179ca58b970f32f599fca004 Mon Sep 17 00:00:00 2001 From: Phallen Cassidy Date: Fri, 19 Feb 2021 08:13:22 -0500 Subject: [PATCH 06/16] Jarnsmid, Merchant from Dale No longer discounts Shadow items --- .../gemp-lotr-async/src/main/web/cards/set2/set2-gandalf.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set2/set2-gandalf.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set2/set2-gandalf.json index efc380d07..e0e5f5e09 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set2/set2-gandalf.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set2/set2-gandalf.json @@ -128,7 +128,7 @@ "modifier": { "type": "modifyCost", "amount": -1, - "filter": "or(shield,armor,helm,hand weapon)" + "filter": "side(free people),or(shield,armor,helm,hand weapon)" } } }, From 09ad118f5d6686a65dc8ca750dfe06bb16d418bd Mon Sep 17 00:00:00 2001 From: Phallen Cassidy Date: Fri, 19 Feb 2021 08:15:26 -0500 Subject: [PATCH 07/16] Narya, Ring of Fire --- gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-1.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-1.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-1.json index 5c84cf03b..51cf32cfc 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-1.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set9-1.json @@ -716,7 +716,7 @@ }, "effect": { "type": "removeTokens", - "filter": "any" + "filter": "choose(any)" } }, { From 4bc90765940487de4959dfcee32ad8c130427016 Mon Sep 17 00:00:00 2001 From: Phallen Cassidy Date: Fri, 19 Feb 2021 08:42:41 -0500 Subject: [PATCH 08/16] Mordor Assassin No longer crashes the game if the RB is overwhelmed --- .../java/com/gempukku/lotro/cards/set7/sauron/Card7_284.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/sauron/Card7_284.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/sauron/Card7_284.java index 4a4092219..d7bbbdd21 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/sauron/Card7_284.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/sauron/Card7_284.java @@ -45,7 +45,8 @@ public class Card7_284 extends AbstractMinion { KilledResult killResult = threatWoundsEffect.getKillResult(); if (killResult.getCause() == KillEffect.Cause.OVERWHELM && Filters.filter(killResult.getKilledCards(), game, CardType.COMPANION).size() > 0 - && Filters.canSpot(game, Filters.inSkirmish, Culture.SAURON, Race.ORC)) { + && Filters.canSpot(game, Filters.inSkirmish, Culture.SAURON, Race.ORC) + && Filters.canSpot(game, Filters.ringBearer)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( new RemoveThreatsEffect(self, 1)); From e300b376304f0dd5bb37983dc88a87991d0a26b2 Mon Sep 17 00:00:00 2001 From: Phallen Cassidy Date: Fri, 19 Feb 2021 11:33:53 -0500 Subject: [PATCH 09/16] Discard from play checks performing player instead of only card owner --- .../lotro/logic/effects/DiscardCardsFromPlayEffect.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardsFromPlayEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardsFromPlayEffect.java index c6837ea9e..cf89e9ce5 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardsFromPlayEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardsFromPlayEffect.java @@ -33,7 +33,7 @@ public class DiscardCardsFromPlayEffect extends AbstractPreventableCardEffect { protected Filter getExtraAffectableFilter() { if (_source == null) return Filters.any; - return Filters.canBeDiscarded(_source); + return Filters.canBeDiscarded(_performingPlayer, _source); } public String getPerformingPlayer() { From ea460a13e9f49bc4242f3a2ae6f1b1b3351dacd8 Mon Sep 17 00:00:00 2001 From: Phallen Cassidy Date: Fri, 19 Feb 2021 11:43:20 -0500 Subject: [PATCH 10/16] Performing player specified in chat log --- .../lotro/logic/effects/DiscardCardsFromPlayEffect.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardsFromPlayEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardsFromPlayEffect.java index cf89e9ce5..8d8b12d5a 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardsFromPlayEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardsFromPlayEffect.java @@ -69,17 +69,13 @@ public class DiscardCardsFromPlayEffect extends AbstractPreventableCardEffect { discardedCards.addAll(cards); toMoveFromZoneToDiscard.addAll(cards); - String sourcePlayer = null; - if (_source != null) - sourcePlayer = _source.getOwner(); - - gameState.removeCardsFromZone(sourcePlayer, toMoveFromZoneToDiscard); + gameState.removeCardsFromZone(_performingPlayer, toMoveFromZoneToDiscard); for (PhysicalCard card : toMoveFromZoneToDiscard) gameState.addCardToZone(game, card, Zone.DISCARD); if (_source != null && discardedCards.size() > 0) - game.getGameState().sendMessage(_source.getOwner() + " discards " + getAppendedNames(discardedCards) + " from play using " + GameUtils.getCardLink(_source)); + game.getGameState().sendMessage(_performingPlayer + " discards " + getAppendedNames(discardedCards) + " from play using " + GameUtils.getCardLink(_source)); for (PhysicalCard discardedCard : discardedCards) game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(_source, getPerformingPlayer(), discardedCard)); From 235a76f06776afbb775ec8a73f78ce8a6350f9b0 Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Mon, 22 Feb 2021 09:05:08 -0800 Subject: [PATCH 11/16] Deck building's import now respects card counts --- .../main/web/js/gemp-022/deckBuildingUi.js | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/deckBuildingUi.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/deckBuildingUi.js index 05b1288db..e0dcf6801 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/deckBuildingUi.js +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/deckBuildingUi.js @@ -348,26 +348,24 @@ var GempLotrDeckBuildingUI = Class.extend({ } this.importDeckCollection(formattedText, function (xml) { - log(xml); - var cards = xml.documentElement.getElementsByTagName("card"); for (var i = 0; i < cards.length; i++) { var cardElem = cards[i]; var blueprintId = cardElem.getAttribute("blueprintId"); var side = cardElem.getAttribute("side"); var group = cardElem.getAttribute("group"); - if (group == "ringBearer") { - that.addCardToContainer(blueprintId, "special", that.ringBearerDiv, false).addClass("cardInDeck"); - that.layoutSpecialGroups(); - } - else if (group == "ring") { - that.addCardToContainer(blueprintId, "special", that.ringDiv, false).addClass("cardInDeck"); - that.layoutSpecialGroups(); - } - else { - that.addCardToDeckAndLayout(blueprintId, side); + var cardCount = parseInt(cardElem.getAttribute("count")); + for (var j = 0; j < cardCount; j++) { + if (group == "ringBearer") { + that.addCardToContainer(blueprintId, "special", that.ringBearerDiv, false).addClass("cardInDeck"); + } else if (group == "ring") { + that.addCardToContainer(blueprintId, "special", that.ringDiv, false).addClass("cardInDeck"); + } else { + that.addCardToDeckAndLayout(blueprintId, side); + } } } + that.layoutSpecialGroups(); $("#editingDeck").text("Imported Deck (unsaved)"); }); }, From 88f8e3bab668e4fe95d9abcb189f3116a7ca7da1 Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Mon, 22 Feb 2021 09:10:16 -0800 Subject: [PATCH 12/16] Improving the client side performance - doing just one layout after all cards are added --- .../src/main/web/js/gemp-022/deckBuildingUi.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/deckBuildingUi.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/deckBuildingUi.js index e0dcf6801..ef43234ea 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/deckBuildingUi.js +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/deckBuildingUi.js @@ -361,11 +361,12 @@ var GempLotrDeckBuildingUI = Class.extend({ } else if (group == "ring") { that.addCardToContainer(blueprintId, "special", that.ringDiv, false).addClass("cardInDeck"); } else { - that.addCardToDeckAndLayout(blueprintId, side); + that.addCardToDeckDontLayout(blueprintId, side); } } } - that.layoutSpecialGroups(); + that.deckModified(true); + that.layoutDeck(); $("#editingDeck").text("Imported Deck (unsaved)"); }); }, @@ -709,6 +710,18 @@ var GempLotrDeckBuildingUI = Class.extend({ this.selectionFunc = this.addCardToDeckAndLayout; }, + addCardToDeckDontLayout:function (blueprintId, side) { + var that = this; + if (side == "FREE_PEOPLE") { + this.addCardToDeck(blueprintId, side); + } else if (side == "SHADOW") { + this.addCardToDeck(blueprintId, side); + } else if (side == null) { + var div = this.addCardToContainer(blueprintId, side, this.siteDiv, false) + div.addClass("cardInDeck"); + } + }, + addCardToDeckAndLayout:function (blueprintId, side) { var that = this; if (side == "FREE_PEOPLE") { @@ -948,7 +961,6 @@ var GempLotrDeckBuildingUI = Class.extend({ this.ringBearerGroup.layoutCards(); this.ringGroup.layoutCards(); this.siteGroup.layoutCards(); - }, layoutDeck:function () { From aba6e3e2a12f4312f7e887045f9c73ef80977929 Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Mon, 22 Feb 2021 09:11:58 -0800 Subject: [PATCH 13/16] Fixed case-problem with site detection --- .../java/com/gempukku/lotro/game/ImportCards.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ImportCards.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ImportCards.java index 67d468fa9..df049f332 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ImportCards.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ImportCards.java @@ -7,13 +7,12 @@ import java.util.*; public class ImportCards { //For a deck to be legal in a Pre-shadows format, it must contain one of these sites - private Set fellowshipSiteCheck = new HashSet<>(Arrays.asList("Council Courtyard", - "Ford of Bruinen", "Frodo's Bedroom", "Rivendell Terrace", "Rivendell Valley", "Rivendell Waterfall", - "House of Elrond")); - private Set towersSiteCheck = new HashSet<>(Arrays.asList("Derndingle", "Eastfold", - "Fangorn Forest", "Plains of Rohan Camp", "Rohirrim Village", "Uruk Camp", "Wold of Rohan")); - private Set kingSiteCheck = new HashSet<>(Arrays.asList("King's Tent", "Rohirrim Camp", - "West Road")); + private Set fellowshipSiteCheck = new HashSet<>(Arrays.asList("council courtyard", + "ford of bruinen", "frodo's bedroom", "rivendell terrace", "rivendell valley", "rivendell waterfall", + "house of elrond")); + private Set towersSiteCheck = new HashSet<>(Arrays.asList("derndingle", "eastfold", + "fangorn forest", "plains of rohan camp", "rohirrim village", "uruk camp", "wold of rohan")); + private Set kingSiteCheck = new HashSet<>(Arrays.asList("king's tent", "rohirrim camp", "west road")); public List process(String rawDecklist, LotroCardBlueprintLibrary cardLibrary) { List decklist = getDecklist(rawDecklist); From a23efdc542d32e2d87792e4c84307dce1d5fef85 Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Mon, 22 Feb 2021 10:13:40 -0800 Subject: [PATCH 14/16] Fixed problem with Glorfindel --- .../appender/resolver/CardResolver.java | 33 ++++++++-- .../com/gempukku/lotro/at/AbstractAtTest.java | 5 ++ .../com/gempukku/lotro/at/ExertAtTest.java | 61 +++++++++++++++++++ 3 files changed, 95 insertions(+), 4 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/ExertAtTest.java diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/CardResolver.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/CardResolver.java index b4b0b1359..4124db82a 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/CardResolver.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/CardResolver.java @@ -16,6 +16,7 @@ import com.gempukku.lotro.logic.effects.choose.ChooseCardsFromDiscardEffect; import com.gempukku.lotro.logic.effects.choose.ChooseCardsFromHandEffect; import com.gempukku.lotro.logic.effects.choose.ChooseStackedCardsEffect; import com.gempukku.lotro.logic.modifiers.evaluator.ConstantEvaluator; +import com.gempukku.lotro.logic.timing.AbstractEffect; import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.PlayConditions; import com.gempukku.lotro.logic.timing.UnrespondableEffect; @@ -291,10 +292,22 @@ public class CardResolver { @Override protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) { Collection result = filterCards(actionContext, choiceFilter); - return new UnrespondableEffect() { + return new AbstractEffect() { @Override - protected void doPlayEffect(LotroGame game) { + public boolean isPlayableInFull(LotroGame game) { + int min = countSource.getMinimum(actionContext); + return result.size() >= min; + } + + @Override + protected FullEffectResult playEffectReturningResult(LotroGame game) { actionContext.setCardMemory(memory, result); + int min = countSource.getMinimum(actionContext); + if (result.size() >= min) { + return new FullEffectResult(true); + } else { + return new FullEffectResult(false); + } } }; } @@ -330,10 +343,22 @@ public class CardResolver { @Override protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) { Collection result = filterCards(actionContext, choiceFilter); - return new UnrespondableEffect() { + return new AbstractEffect() { @Override - protected void doPlayEffect(LotroGame game) { + public boolean isPlayableInFull(LotroGame game) { + int min = countSource.getMinimum(actionContext); + return result.size() >= min; + } + + @Override + protected FullEffectResult playEffectReturningResult(LotroGame game) { actionContext.setCardMemory(memory, result); + int min = countSource.getMinimum(actionContext); + if (result.size() >= min) { + return new FullEffectResult(true); + } else { + return new FullEffectResult(false); + } } }; } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AbstractAtTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AbstractAtTest.java index 3f3e6d318..1ebc341ea 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AbstractAtTest.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AbstractAtTest.java @@ -1,5 +1,6 @@ package com.gempukku.lotro.at; +import com.gempukku.lotro.common.Zone; import com.gempukku.lotro.game.*; import com.gempukku.lotro.game.formats.LotroFormatLibrary; import com.gempukku.lotro.logic.actions.SystemQueueAction; @@ -137,6 +138,10 @@ public abstract class AbstractAtTest { decks.put(player, deck); } + protected void moveCardToZone(PhysicalCardImpl card, Zone zone) { + _game.getGameState().addCardToZone(_game, card, zone); + } + protected void playerDecided(String player, String answer) throws DecisionResultInvalidException { AwaitingDecision decision = _userFeedback.getAwaitingDecision(player); _userFeedback.participantDecided(player); diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/ExertAtTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/ExertAtTest.java new file mode 100644 index 000000000..ce420bb27 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/ExertAtTest.java @@ -0,0 +1,61 @@ +package com.gempukku.lotro.at; + +import com.gempukku.lotro.common.Token; +import com.gempukku.lotro.common.Zone; +import com.gempukku.lotro.game.CardNotFoundException; +import com.gempukku.lotro.game.PhysicalCardImpl; +import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class ExertAtTest extends AbstractAtTest{ + @Test + public void glorfindelCantExertWhenExhausted() throws CardNotFoundException, DecisionResultInvalidException { + initializeSimplestGame(); + + PhysicalCardImpl glorfindel = createCard(P1, "9_16"); + PhysicalCardImpl elvenBow = createCard(P1, "1_41"); + + PhysicalCardImpl cantea = createCard(P2, "1_230"); + + skipMulligans(); + + moveCardToZone(glorfindel, Zone.FREE_CHARACTERS); + moveCardToZone(cantea, Zone.SHADOW_CHARACTERS); + _game.getGameState().addTokens(glorfindel, Token.WOUND, 2); + _game.getGameState().putCardOnTopOfDeck(elvenBow); + + // End Fellowship phase + playerDecided(P1, ""); + // End Shadow phase + playerDecided(P2, ""); + + // End maneuver phase + playerDecided(P1, ""); + playerDecided(P2, ""); + + // End archery phase + playerDecided(P1, ""); + playerDecided(P2, ""); + + // End assignment phase + playerDecided(P1, ""); + playerDecided(P2, ""); + + // Assign + playerDecided(P1, glorfindel.getCardId() + " " + cantea.getCardId()); + // Start skirmish + playerDecided(P1, String.valueOf(glorfindel.getCardId())); + + // Use Glorfindel + playerDecided(P1, getCardActionId(P1, "Use Glorfindel")); + // Pass on viewing revealed card + playerDecided(P1, ""); + // Pass on viewing revealed card + playerDecided(P2, ""); + // Can't exert (already exhausted) + playerDecided(P1, "0"); + assertEquals(10, _game.getModifiersQuerying().getStrength(_game, cantea)); + } +} From de22c9fd4424437a8a850bccb2dab553a1e71c92 Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Mon, 22 Feb 2021 10:19:52 -0800 Subject: [PATCH 15/16] Fixed problem with Glorfindel --- .../appender/resolver/CardResolver.java | 40 ++++++++++++++----- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/CardResolver.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/CardResolver.java index 4124db82a..f6d520ad9 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/CardResolver.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/resolver/CardResolver.java @@ -22,6 +22,7 @@ import com.gempukku.lotro.logic.timing.PlayConditions; import com.gempukku.lotro.logic.timing.UnrespondableEffect; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.function.Function; @@ -240,23 +241,44 @@ public class CardResolver { return new DelayedAppender() { @Override public boolean isPlayableInFull(ActionContext actionContext) { - final PhysicalCard attachedTo = actionContext.getSource().getAttachedTo(); - if (attachedTo == null) - return false; - if (playabilityFilter != null) - return PlayConditions.isActive(actionContext.getGame(), attachedTo, playabilityFilter.getFilterable(actionContext)); - return true; + int min = countSource.getMinimum(actionContext); + return filterCards(actionContext, playabilityFilter).size() >= min; } @Override protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) { - return new UnrespondableEffect() { + Collection result = filterCards(actionContext, additionalFilter); + return new AbstractEffect() { @Override - protected void doPlayEffect(LotroGame game) { - actionContext.setCardMemory(memory, actionContext.getSource().getAttachedTo()); + public boolean isPlayableInFull(LotroGame game) { + int min = countSource.getMinimum(actionContext); + return result.size() >= min; + } + + @Override + protected FullEffectResult playEffectReturningResult(LotroGame game) { + actionContext.setCardMemory(memory, result); + int min = countSource.getMinimum(actionContext); + if (result.size() >= min) { + return new FullEffectResult(true); + } else { + return new FullEffectResult(false); + } } }; } + + private Collection filterCards(ActionContext actionContext, FilterableSource filter) { + PhysicalCard source = actionContext.getSource(); + PhysicalCard attachedTo = source.getAttachedTo(); + if (attachedTo == null) + return Collections.emptySet(); + + Filterable additionalFilterable = Filters.any; + if (filter != null) + additionalFilterable = filter.getFilterable(actionContext); + return Filters.filter(cardSource.apply(actionContext), actionContext.getGame(), attachedTo, additionalFilterable); + } }; } else if (type.startsWith("memory(") && type.endsWith(")")) { return resolveMemoryCards(type, additionalFilter, playabilityFilter, countSource, memory, cardSource); From 48708f729368bf6dcc6f4575c1244b9f61c6e6ee Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Wed, 24 Feb 2021 21:58:25 -0600 Subject: [PATCH 16/16] Fixed Elven Armaments errata image incorrectly missing the dual item class --- .../src/main/web/images/erratas/LOTR18008.jpg | Bin 60515 -> 60755 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/images/erratas/LOTR18008.jpg b/gemp-lotr/gemp-lotr-async/src/main/web/images/erratas/LOTR18008.jpg index 8e0a31b426320534c6325b17a27bcb40b7f3d246..26b42ade01e3b35b632d478b5dd56f4632a4f3ba 100644 GIT binary patch delta 28853 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