From 33213b4728ef6dd07079f87619e59b6e078487b2 Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Mon, 10 Dec 2018 17:43:12 -0500 Subject: [PATCH 01/22] New version of "Gandalf, Leader of Dwarves" --- .../lotro/cards/set30/gandalf/Card30_025.java | 59 +++++++++++-------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/gandalf/Card30_025.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/gandalf/Card30_025.java index b02ca6bc0..777177548 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/gandalf/Card30_025.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/gandalf/Card30_025.java @@ -3,23 +3,24 @@ package com.gempukku.lotro.cards.set30.gandalf; import com.gempukku.lotro.cards.AbstractCompanion; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.AddBurdenEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; import com.gempukku.lotro.cards.effects.SelfExertEffect; -import com.gempukku.lotro.cards.effects.choose.ChooseCardsFromDeckEffect; -import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect; -import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDiscardEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDeckEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromHandEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.actions.OptionalTriggerAction; -import com.gempukku.lotro.logic.effects.AddTwilightEffect; +import com.gempukku.lotro.logic.effects.DrawCardsEffect; import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.Action; import java.util.Collection; import java.util.Collections; +import java.util.LinkedList; import java.util.List; /** @@ -31,39 +32,51 @@ import java.util.List; * Strength: 7 * Vitality: 4 * Resistance: 6 - * Game Text: Wise. At the start of each of your turns, you may exert Gandalf to play a Dwarf companion - * from your draw deck. Maneuver: Discard 2 Dwarf followers to play Gandalf from your discard pile. + * Game Text: Wise. Each time you reconcile, you may draw 2 cards. Skirmish: Play a [GANDALF] skirmish + * event and add a doubt to play a Dwarf from your draw deck. Skirmish: Play a [DWARVEN] skirmish + * event to make an Orc skirmishing Bilbo strength -2. */ + +/** updated text: */ public class Card30_025 extends AbstractCompanion { public Card30_025() { - super(4, 7, 4, 6, Culture.GANDALF, Race.WIZARD, null, "Gandalf", "Leader of Dwarves", true); + super(2, 7, 4, 6, Culture.GANDALF, Race.WIZARD, null, "Gandalf", "Leader of Dwarves", true); addKeyword(Keyword.WISE); } @Override - public List getOptionalAfterTriggers(final String playerId, LotroGame game, EffectResult effectResult, final PhysicalCard self) { - if (TriggerConditions.startOfTurn(game, effectResult)) { - final OptionalTriggerAction action = new OptionalTriggerAction(self); - action.appendCost( - new SelfExertEffect(action, self)); + public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.reconciles(game, effectResult, playerId)) { + OptionalTriggerAction action = new OptionalTriggerAction(self); action.appendEffect( - new ChooseAndPlayCardFromDeckEffect(self.getOwner(), Race.DWARF, CardType.COMPANION)); + new DrawCardsEffect(action, playerId, 2)); return Collections.singletonList(action); } return null; } @Override - public List getPhaseActionsFromDiscard(String playerId, LotroGame game, final PhysicalCard self) { - if (PlayConditions.isPhase(game, Phase.MANEUVER) - && (PlayConditions.canDiscardFromPlay(self, game, 2, Race.DWARF, CardType.FOLLOWER)) - && (PlayConditions.canPlayFromDiscard(playerId, game, self))) { - ActivateCardAction replayGandalf = new ActivateCardAction(self); - replayGandalf.appendCost( - new ChooseAndDiscardCardsFromPlayEffect(replayGandalf, playerId, 2, 2, Race.DWARF, CardType.FOLLOWER)); - replayGandalf.appendEffect( - new ChooseAndPlayCardFromDiscardEffect(playerId, game, self)); - return Collections.singletonList(replayGandalf); + protected List getExtraInPlayPhaseActions(String playerId, LotroGame game, final PhysicalCard self) { + List actions = new LinkedList(); + if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)) { + + if (PlayConditions.canPlayFromHand(playerId, game, Culture.GANDALF, CardType.EVENT, Keyword.SKIRMISH)) { + final ActivateCardAction action = new ActivateCardAction(self); + action.setText("Play a [GANDALF] event"); + action.appendCost(new ChooseAndPlayCardFromHandEffect(playerId, game, Culture.GANDALF, CardType.EVENT, Keyword.SKIRMISH)); + action.appendCost(new AddBurdenEffect(playerId, self, 1)); + action.appendEffect(new ChooseAndPlayCardFromDeckEffect(self.getOwner(), Race.DWARF)); + actions.add(action); + } + if (PlayConditions.canPlayFromHand(playerId, game, Culture.DWARVEN, CardType.EVENT, Keyword.SKIRMISH)) { + final ActivateCardAction action = new ActivateCardAction(self); + action.setText("Play a [DWARVEN] event"); + action.appendCost(new ChooseAndPlayCardFromHandEffect(playerId, game, Culture.DWARVEN, CardType.EVENT, Keyword.SKIRMISH)); + action.appendEffect(new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, -2, + CardType.MINION, Race.ORC, Filters.inSkirmishAgainst(Filters.name("Bilbo")))); + actions.add(action); + } + return actions; } return null; } From 7afc872f737fa9332862106dc83d61de297525ac Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Tue, 11 Dec 2018 08:27:41 -0500 Subject: [PATCH 02/22] New version of "Emeralds of Girion" --- .../lotro/cards/set31/dwarven/Card31_003.java | 79 +++++++++---------- 1 file changed, 37 insertions(+), 42 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_003.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_003.java index 3ab447d18..68b19cfee 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_003.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/dwarven/Card31_003.java @@ -2,20 +2,21 @@ package com.gempukku.lotro.cards.set31.dwarven; import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.PlayConditions; -import com.gempukku.lotro.cards.effects.ChoiceEffect; -import com.gempukku.lotro.cards.effects.SelfDiscardEffect; +import com.gempukku.lotro.cards.effects.PutCardFromStackedIntoHandEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDeckEffect; -import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDiscardEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndStackCardsFromHandEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; -import com.gempukku.lotro.logic.effects.ChooseAndHealCharactersEffect; -import com.gempukku.lotro.logic.timing.Effect; +import com.gempukku.lotro.logic.effects.AddTwilightEffect; +import com.gempukku.lotro.logic.effects.ChooseArbitraryCardsEffect; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.TwilightCostModifier; import com.gempukku.lotro.logic.timing.Action; +import java.util.Collection; import java.util.Collections; import java.util.LinkedList; import java.util.List; @@ -26,54 +27,48 @@ import java.util.List; * Culture: Dwarven * Twilight Cost: 2 * Type: Artifact • Support Area - * Game Text: Fellowship: Exert an Elf to heal a Man. Regroup: Exert a Man and discard this artifact to play an Elf from - * your draw deck or discard pile. + * Game Text: Fellowship: Add (1) to take a card stacked here into hand. Regroup: Exert an ally to stack a [DWARVEN] + * event from hand on Emeralds of Girion. */ public class Card31_003 extends AbstractPermanent { public Card31_003() { super(Side.FREE_PEOPLE, 2, CardType.ARTIFACT, Culture.DWARVEN, Zone.SUPPORT, "Emeralds of Girion", null, true); - } + } @Override protected List getExtraPhaseActions(String playerId, LotroGame game, final PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.FELLOWSHIP, self) - && PlayConditions.canExert(self, game, Race.ELF)) { - final ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Race.ELF)); - action.appendEffect( - new ChooseAndHealCharactersEffect(action, playerId, 1, 1, Race.MAN)); - return Collections.singletonList(action); - } - if (PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self) - && PlayConditions.canExert(self, game, Race.MAN)) { - final ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Race.MAN)); - action.appendCost( - new SelfDiscardEffect(self)); - List possibleEffects = new LinkedList(); - possibleEffects.add( - new ChooseAndPlayCardFromDeckEffect(playerId, Race.ELF) { - @Override - public String getText(LotroGame game) { - return "Play an Elf from your draw deck"; - } - }); - if (PlayConditions.canPlayFromDiscard(playerId, game, Race.ELF)) { - possibleEffects.add( - new ChooseAndPlayCardFromDiscardEffect(playerId, game, Race.ELF) { + if (PlayConditions.canUseFPCardDuringPhase(game, Phase.FELLOWSHIP, self)) { + List stackedCards = game.getGameState().getStackedCards(self); + if (stackedCards.size() > 0) { + final ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new AddTwilightEffect(self, 1)); + action.appendEffect( + new ChooseArbitraryCardsEffect(playerId, "Choose card", stackedCards, 1, 1) { @Override - public String getText(LotroGame game) { - return "Play an Elf from your discard pile"; + protected void cardsSelected(LotroGame game, Collection selectedCards) { + for (PhysicalCard selectedCard : selectedCards) { + action.appendEffect( + new PutCardFromStackedIntoHandEffect(selectedCard)); + } } }); + return Collections.singletonList(action); } - action.appendEffect( - new ChoiceEffect(action, playerId, possibleEffects)); - return Collections.singletonList(action); } - return null; + + if (PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self) + && PlayConditions.canExert(self, game, CardType.ALLY)) { + if (Filters.filter(game.getGameState().getHand(playerId), game.getGameState(), game.getModifiersQuerying(), + Culture.DWARVEN, CardType.EVENT).size() > 0) { + final ActivateCardAction action = new ActivateCardAction(self); + action.appendCost(new ChooseAndExertCharactersEffect(action, playerId, 1, 1, CardType.ALLY)); + action.appendEffect( + new ChooseAndStackCardsFromHandEffect(action, playerId, 1, 1, self, Culture.DWARVEN)); + return Collections.singletonList(action); + } + } + return null; } } From d252410d9a525a14f3d16c030610fee98312091c Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Tue, 11 Dec 2018 08:28:54 -0500 Subject: [PATCH 03/22] New version of "Better Than Nothing" --- .../lotro/cards/set31/gollum/Card31_019.java | 72 +++++++++++-------- 1 file changed, 44 insertions(+), 28 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gollum/Card31_019.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gollum/Card31_019.java index 321a16a32..5577e37fa 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gollum/Card31_019.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gollum/Card31_019.java @@ -1,8 +1,9 @@ package com.gempukku.lotro.cards.set31.gollum; -import com.gempukku.lotro.cards.AbstractEvent; +import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.PlayConditions; -import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.AddBurdenEffect; import com.gempukku.lotro.cards.effects.ChoiceEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDeckEffect; @@ -10,9 +11,15 @@ import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDiscardEffec import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.OptionalTriggerAction; +import com.gempukku.lotro.logic.actions.RequiredTriggerAction; +import com.gempukku.lotro.logic.timing.Action; import com.gempukku.lotro.logic.timing.Effect; +import com.gempukku.lotro.logic.timing.EffectResult; +import java.util.Collections; import java.util.LinkedList; import java.util.List; @@ -21,44 +28,53 @@ import java.util.List; * Side: Shadow * Culture: Gollum * Twilight Cost: 0 - * Type: Event • Shadow - * Game Text: Discard an orc to play Gollum from your draw deck or discard pile. + * Type: Condition • Support Area + * Game Text: While you can spot Gollum, each [GANDALF] event gains this cost: "add a doubt." At the end of + * your Shadow phase, you may discard an Orc from play to play Gollum from your draw deck or discard pile. */ -public class Card31_019 extends AbstractEvent { +public class Card31_019 extends AbstractPermanent { public Card31_019() { - super(Side.SHADOW, 0, Culture.GOLLUM, "Better Than Nothing", Phase.SHADOW); + super(Side.SHADOW, 0, CardType.CONDITION, Culture.GOLLUM, Zone.SUPPORT, "Better Than Nothing", null, true); } @Override - public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int withTwilightRemoved, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { - return super.checkPlayRequirements(playerId, game, self, withTwilightRemoved, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && PlayConditions.canDiscardFromPlay(self, game, Race.ORC); + public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.played(game, effectResult, Filters.owner(game.getGameState().getCurrentPlayerId()), Culture.GANDALF, CardType.EVENT)) { + RequiredTriggerAction action = new RequiredTriggerAction(self); + action.appendEffect(new AddBurdenEffect(self.getOwner(), self, 1)); + return Collections.singletonList(action); + } + return null; } @Override - public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { - PlayEventAction action = new PlayEventAction(self); - action.appendCost( - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Race.ORC)); - List possibleEffects = new LinkedList(); - possibleEffects.add( - new ChooseAndPlayCardFromDeckEffect(playerId, Filters.gollum) { + public List getOptionalAfterTriggers(final String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.endOfPhase(game, effectResult, Phase.SHADOW) + && PlayConditions.canDiscardFromPlay(self, game, Race.ORC)) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendCost( + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Race.ORC)); + List possibleEffects = new LinkedList(); + possibleEffects.add( + new ChooseAndPlayCardFromDeckEffect(playerId, Filters.gollum) { + @Override + public String getText(LotroGame game) { + return "Play Gollum from your draw deck"; + } + }); + if (PlayConditions.canPlayFromDiscard(playerId, game, Filters.gollum)) { + possibleEffects.add( + new ChooseAndPlayCardFromDiscardEffect(playerId, game, Filters.gollum) { @Override public String getText(LotroGame game) { - return "Play Gollum from your draw deck"; + return "Play Gollum from your discard pile"; } }); - if (PlayConditions.canPlayFromDiscard(playerId, game, Filters.gollum)) { - possibleEffects.add( - new ChooseAndPlayCardFromDiscardEffect(playerId, game, Filters.gollum) { - @Override - public String getText(LotroGame game) { - return "Play Gollum from your discard pile"; - } - }); + } + action.appendEffect( + new ChoiceEffect(action, playerId, possibleEffects)); + return Collections.singletonList(action); } - action.appendEffect( - new ChoiceEffect(action, playerId, possibleEffects)); - return action; + return null; } } From 1d99e50fbda24873603318cfba2a76b2e86e1d41 Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Tue, 11 Dec 2018 08:30:33 -0500 Subject: [PATCH 04/22] Errata for "Azog, The Defiler" The Free Peoples must now exert a [DWARVEN] companion --- .../com/gempukku/lotro/cards/set31/gundabad/Card31_023.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_023.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_023.java index 10e902544..b1ac87255 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_023.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/gundabad/Card31_023.java @@ -24,8 +24,9 @@ import java.util.List; * Strength: 9 * Vitality: 3 * Site: 3 - * Game Text: Damage +1. Each time you play a mount, you may make the Free Peoples player exert a companion. + * Game Text: Damage +1. Each time you play a mount, you may make the Free Peoples player exert a [DWARVEN] companion. */ + public class Card31_023 extends AbstractMinion { public Card31_023() { super(4, 9, 3, 3, Race.ORC, Culture.GUNDABAD, "Azog", "The Defiler", true); @@ -38,7 +39,7 @@ public class Card31_023 extends AbstractMinion { if (TriggerConditions.played(game, effectResult, PossessionClass.MOUNT)) { OptionalTriggerAction action = new OptionalTriggerAction(self); action.appendEffect( - new ChooseAndExertCharactersEffect(action, game.getGameState().getCurrentPlayerId(), 1, 1, CardType.COMPANION)); + new ChooseAndExertCharactersEffect(action, game.getGameState().getCurrentPlayerId(), 1, 1, CardType.COMPANION, Culture.DWARVEN)); return Collections.singletonList(action); } return null; From 3579c28da1d5dfe4fb7e36e3ed5e48b38f1f4544 Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Tue, 11 Dec 2018 08:32:51 -0500 Subject: [PATCH 05/22] Errata for "Goblin Song" May now discard a [DWARVEN] item borne by any companion --- .../java/com/gempukku/lotro/cards/set31/moria/Card31_033.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/moria/Card31_033.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/moria/Card31_033.java index ab22b87c6..160baf2a8 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/moria/Card31_033.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/moria/Card31_033.java @@ -24,7 +24,7 @@ import java.util.List; * Twilight Cost: 1 * Type: Event * Game Text: You may exert The Great Goblin twice to play this event from your discard pile. Exert 2 Orcs - * to discard a possession or artifact borne by a [DWARVEN] companion. + * to discard a [DWARVEN] possession or [DWARVEN] artifact borne by a companion. */ public class Card31_033 extends AbstractEvent { public Card31_033() { @@ -43,7 +43,7 @@ public class Card31_033 extends AbstractEvent { action.appendCost( new ChooseAndExertCharactersEffect(action, playerId, 2, 2, Race.ORC)); action.appendEffect( - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.or(CardType.POSSESSION, CardType.ARTIFACT), Filters.attachedTo(Filters.and(CardType.COMPANION, Race.DWARF)))); + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.and(Culture.DWARVEN, Filters.or(CardType.POSSESSION, CardType.ARTIFACT)), Filters.attachedTo(Filters.and(CardType.COMPANION)))); return action; } From 290bce9b0645df9a4bd9d3ddfee932c69ce853c6 Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Tue, 11 Dec 2018 08:36:03 -0500 Subject: [PATCH 06/22] Errata for "Goblin Song" May now discard a [DWARVEN] item borne by any companion --- .../java/com/gempukku/lotro/cards/set31/moria/Card31_033.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/moria/Card31_033.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/moria/Card31_033.java index 160baf2a8..f0e2b9931 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/moria/Card31_033.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/moria/Card31_033.java @@ -43,7 +43,7 @@ public class Card31_033 extends AbstractEvent { action.appendCost( new ChooseAndExertCharactersEffect(action, playerId, 2, 2, Race.ORC)); action.appendEffect( - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.and(Culture.DWARVEN, Filters.or(CardType.POSSESSION, CardType.ARTIFACT)), Filters.attachedTo(Filters.and(CardType.COMPANION)))); + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.and(Culture.DWARVEN, Filters.or(CardType.POSSESSION, CardType.ARTIFACT)), Filters.attachedTo(CardType.COMPANION))); return action; } @@ -60,7 +60,7 @@ public class Card31_033 extends AbstractEvent { action.appendCost( new ChooseAndExertCharactersEffect(action, playerId, 2, 2, Race.ORC)); action.appendEffect( - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.or(CardType.POSSESSION, CardType.ARTIFACT), Filters.attachedTo(Filters.and(CardType.COMPANION, Race.DWARF)))); + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.and(Culture.DWARVEN, Filters.or(CardType.POSSESSION, CardType.ARTIFACT)), Filters.attachedTo(CardType.COMPANION))); return Collections.singletonList(action); } return null; From 19b64c552708c465e0a0dd780f373fed209e149e Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Tue, 11 Dec 2018 08:39:06 -0500 Subject: [PATCH 07/22] Errata for "Great Goblin's Power" May now self-discard or remove (3) to prevent a wound --- .../lotro/cards/set31/moria/Card31_035.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/moria/Card31_035.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/moria/Card31_035.java index ffce0487c..02965e27a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/moria/Card31_035.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/moria/Card31_035.java @@ -3,7 +3,9 @@ package com.gempukku.lotro.cards.set31.moria; import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.ChoiceEffect; import com.gempukku.lotro.cards.effects.PreventCardEffect; +import com.gempukku.lotro.cards.effects.RemoveTwilightEffect; import com.gempukku.lotro.cards.effects.SelfDiscardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; @@ -19,6 +21,7 @@ import com.gempukku.lotro.logic.timing.EffectResult; import java.util.Collection; import java.util.Collections; +import java.util.LinkedList; import java.util.List; /** @@ -28,8 +31,9 @@ import java.util.List; * Twilight Cost: 0 * Type: Condition * Game Text: To play, spot a [MORIA] card. Each time you play a weapon, add (1). Response: If an Orc is - * about to take a wound, discard this condition to prevent that wound. + * about to take a wound, discard this condition or remove (3) to prevent that wound. */ + public class Card31_035 extends AbstractPermanent { public Card31_035() { super(Side.SHADOW, 0, CardType.CONDITION, Culture.MORIA, Zone.SUPPORT, "Great Goblin's Power"); @@ -52,23 +56,30 @@ public class Card31_035 extends AbstractPermanent { } @Override - public List getOptionalInPlayBeforeActions(String playerId, LotroGame game, final Effect effect, final PhysicalCard self) { + public List getOptionalInPlayBeforeActions(String playerId, LotroGame game, Effect effect, PhysicalCard self) { if (TriggerConditions.isGettingWounded(effect, game, Race.ORC)) { final WoundCharactersEffect woundEffect = (WoundCharactersEffect) effect; - final Collection cardsToBeWounded = woundEffect.getAffectedCardsMinusPrevented(game); + Collection woundedCharacters = woundEffect.getAffectedCardsMinusPrevented(game); final ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( + + List possibleCosts = new LinkedList(); + possibleCosts.add( + new RemoveTwilightEffect(3)); + possibleCosts.add( new SelfDiscardEffect(self)); + + action.appendCost( + new ChoiceEffect(action, playerId, possibleCosts)); action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose an Orc", Race.ORC, Filters.in(cardsToBeWounded)) { + new ChooseActiveCardEffect(self, playerId, "Choose an Orc", Filters.in(woundedCharacters), Race.ORC) { @Override - protected void cardSelected(LotroGame game, PhysicalCard woundedOrc) { - action.appendEffect( - new PreventCardEffect(woundEffect, woundedOrc)); + protected void cardSelected(LotroGame game, PhysicalCard card) { + action.insertEffect( + new PreventCardEffect(woundEffect, card)); } }); return Collections.singletonList(action); } return null; } -} \ No newline at end of file +} From 960cd08539ab80339b5da592d49da165dc3e4436 Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Tue, 11 Dec 2018 09:11:26 -0500 Subject: [PATCH 08/22] New version of "Caught in a Sack" --- .../lotro/cards/set31/troll/Card31_065.java | 85 +++++++++---------- 1 file changed, 42 insertions(+), 43 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/troll/Card31_065.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/troll/Card31_065.java index f7dd9db5e..4c33d7230 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/troll/Card31_065.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/troll/Card31_065.java @@ -3,20 +3,21 @@ package com.gempukku.lotro.cards.set31.troll; import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.TriggerConditions; -import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; import com.gempukku.lotro.cards.effects.ChoiceEffect; -import com.gempukku.lotro.cards.effects.PreventableEffect; +import com.gempukku.lotro.cards.effects.SelfDiscardEffect; +import com.gempukku.lotro.cards.effects.TransferPermanentEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.cards.modifiers.ResistanceModifier; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.actions.OptionalTriggerAction; -import com.gempukku.lotro.logic.actions.SubAction; +import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; import com.gempukku.lotro.logic.modifiers.CantBeAssignedToSkirmishModifier; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.timing.Action; import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.EffectResult; @@ -30,26 +31,43 @@ import java.util.List; * Culture: Troll * Twilight Cost: 2 * Type: Condition • Support Area - * Game Text: At the start of each assignment phase, you may discard a minion (or exert - * a [TROLL] Troll) to spot a [DWARVEN] or [SHIRE] companion. That companion cannot be - * assigned to a skirmish. Bilbo may exert twice to prevent this. + * Game Text: Discard this condition if Bilbo wins a skirmish. Regroup: Discard a + * minion (or exert a Troll) to transfer this condition to a [DWARVEN] companion. + * Bearer cannot be assigned to a skirmish by any player. */ public class Card31_065 extends AbstractPermanent { public Card31_065() { - super(Side.SHADOW, 2, CardType.CONDITION, Culture.GUNDABAD, Zone.SUPPORT, "Caught in a Sack", null, true); + super(Side.SHADOW, 0, CardType.CONDITION, Culture.GUNDABAD, Zone.SUPPORT, "Caught in a Sack"); } @Override - public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, final PhysicalCard self) { - if (TriggerConditions.startOfPhase(game, effectResult, Phase.ASSIGNMENT) - && (PlayConditions.canExert(self, game, 1, Culture.GUNDABAD, Race.TROLL) || PlayConditions.canDiscardFromPlay(self, game, CardType.MINION))) { - final OptionalTriggerAction action = new OptionalTriggerAction(self); - List possibleCosts = new LinkedList(); + public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.winsSkirmish(game, effectResult, Filters.name("Bilbo"))) { + RequiredTriggerAction action = new RequiredTriggerAction(self); + action.appendEffect( + new SelfDiscardEffect(self)); + return Collections.singletonList(action); + } + return null; + } + + @Override + public Modifier getAlwaysOnModifier(LotroGame game, PhysicalCard self) { + return new CantBeAssignedToSkirmishModifier(self, Filters.hasAttached(self)); + } + + @Override + public List getExtraPhaseActions(String playerId, LotroGame game, final PhysicalCard self) { + if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.REGROUP, self, 0) + && (PlayConditions.canExert(self, game, CardType.MINION, Race.TROLL) + || PlayConditions.canSpot(game, CardType.MINION))) { + final ActivateCardAction action = new ActivateCardAction(self); + List possibleCosts = new LinkedList(); possibleCosts.add( - new ChooseAndExertCharactersEffect(action, playerId, 1, 1, 1, Culture.GUNDABAD, Race.TROLL) { + new ChooseAndExertCharactersEffect(action, playerId, 1, 1, 1, Race.TROLL) { @Override public String getText(LotroGame game) { - return "Exert a [TROLL] Troll"; + return "Exert a Troll"; } }); possibleCosts.add( @@ -59,36 +77,17 @@ public class Card31_065 extends AbstractPermanent { return "Discard a minion"; } }); - action.appendCost( - new ChoiceEffect(action, playerId, possibleCosts)); + action.appendCost(new ChoiceEffect(action, playerId, possibleCosts)); action.appendEffect( - new ChooseActiveCardEffect(self, playerId, "Choose a [DWARVEN] or [SHIRE] companion", CardType.COMPANION, Filters.or(Culture.DWARVEN, Culture.SHIRE)) { - @Override - protected void cardSelected(LotroGame game, final PhysicalCard card) { - action.appendEffect(new PreventableEffect( - action, - new AddUntilEndOfPhaseModifierEffect(new CantBeAssignedToSkirmishModifier(self, card)) { - @Override - public String getText(LotroGame game) { - return "prevent that"; - } - }, - Collections.singletonList(game.getGameState().getCurrentPlayerId()), - new PreventableEffect.PreventionCost() { - @Override - public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) { - return new ChooseAndExertCharactersEffect(action, playerId, 1, 1, 2, Filters.name("Bilbo")) { - @Override - public String getText(LotroGame game) { - return "exert Bilbo twice"; - } - }; - } - })); - } + new ChooseActiveCardEffect(self, playerId, "Choose a [DWARVEN] companion", Culture.DWARVEN, CardType.COMPANION, Filters.not(Filters.hasAttached(self))) { + @Override + protected void cardSelected(LotroGame game, PhysicalCard card) { + action.appendEffect( + new TransferPermanentEffect(self, card)); + } }); return Collections.singletonList(action); } return null; - } + } } From 4ef35f986453dafd004d4c8466c89a2656a194a6 Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Tue, 11 Dec 2018 09:13:45 -0500 Subject: [PATCH 09/22] Updated errata card images --- .../src/main/web/js/gemp-021/hobbit.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/hobbit.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/hobbit.js index 2f6432829..f4d4c9621 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/hobbit.js +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/hobbit.js @@ -23,7 +23,7 @@ var hobbit = { '30_22': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Bard.png', '30_23': 'http://hobbitdraftgame.free.fr/Cards_Good_def/A_wizard_is_never_late.png', '30_24': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Dawn_take_you_all.png', - '30_25': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Gandalf.png', + '30_25': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Gandalf.png', '30_26': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Gandalf2.png', '30_27': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Gandalf3.png', '30_28': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Gandalf4.png', @@ -59,7 +59,7 @@ var hobbit = { '30_58': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Smaug.png', '31_1': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Dwarven_Axe.png', '31_2': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Dwarven_Song.png', - '31_3': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Emeralds_of_Girion.png', + '31_3': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Emeralds_of_Girion.png', '31_4': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Great_Barricade.png', '31_5': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Mithril_Coat.png', '31_6': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Oakenshield.png', @@ -75,11 +75,11 @@ var hobbit = { '31_16': 'http://hobbitdraftgame.free.fr/Cards_Good_def/His_Wrath_Was_Redoubled.png', '31_17': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Radagast.png', '31_18': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Wizard_Staff.png', - '31_19': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Gollum_Better_Than_Nothing.png', + '31_19': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Gollum_Better_Than_Nothing.png', '31_20': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Gollum_Gollum.png', '31_21': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Gollum_If_He_Loses.png', '31_22': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Riddles_in_the_Dark.png', - '31_23': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Wargs_Azog.png', + '31_23': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Wargs_Azog.png', '31_24': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Wargs_Bolg.png', '31_25': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Savage_Warg.png', '31_26': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Wargs_Threatening_Warg.png', @@ -89,9 +89,9 @@ var hobbit = { '31_30': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Goblin_Goblin_Runner.png', '31_31': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Goblin_Goblin_Scimitar.png', '31_32': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Goblin_Goblin_Sneak.png', - '31_33': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Goblin_Song.png', + '31_33': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Goblin_Song.png', '31_34': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Goblin_Goblin_Swarms.png', - '31_35': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Goblin_Great_Goblin_s_power.png', + '31_35': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Goblin_Great_Goblin_s_power.png', '31_36': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Goblin_The_Great_Goblin.png', '31_37': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Bolg_Servant.png', '31_38': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Acorn.png', @@ -121,7 +121,7 @@ var hobbit = { '31_62': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Spider_Spider_Nest.png', '31_63': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Spider_Wicked_Spider.png', '31_64': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Troll_Bert.png', - '31_65': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Caught_In_A_Sack.png', + '31_65': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Caught_In_A_Sack.png', '31_66': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Troll_Tom.png', '31_67': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Troll_Troll_Campfire.png', '31_68': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Troll_Troll_Knife.png', From 80435d62915b525a380355ff834509a7fc0c3739 Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Tue, 11 Dec 2018 09:25:50 -0500 Subject: [PATCH 10/22] Update changeLog.html --- .../src/main/web/includes/changeLog.html | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html b/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html index 14141035a..199694db3 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html +++ b/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html @@ -1,15 +1,18 @@
 Most recent update
-- "Drawn to Its Power" can no longer adds burden if The Ring-Bearer was killed
+- "Drawn to Its Power" can no longer add a burden if The Ring-Bearer was killed
 - "The Witch-king, Deathless Lord" can now wound an ally twice if all Free Peoples characters are exhausted
 - "Nine-fingered Frodo and the Ring of Doom" can now remove one threat if there is one threat and no burdens
 - "Saved from the Fire" can no longer target the Ring-Bearer
 - "Tower Troll" now has the correct prevention pop-up text
 - "Uruk Guard" and "Uruk-hai Guard" now announce the selected companion in chat
-- "Shelob, Her Ladyship" now announces the seclected companion in chat
+- "Shelob, Her Ladyship" now announces the selected companion in chat
 - "Safe Passage" now announces the selected keyword in chat
 - "Saruman, Of Many Colours" now announces the selected culture in chat
 - The Hobbit Draft League should no longer disappear from users' collections each server day
+- The Hobbit's "Goblin Song," "Great Goblin's Power," and "Azog, The Defiler" have errata text added
+- The Hobbit's "Gandalf, Leader of Dwarves," "Emeralds of Girion," "Better Than Nothing," and "Caught in a Sack" have been changed
+
 
 21 June 2018
 - Added Draft for Fellowship block, The Two Towers block, and The Hobbit
@@ -38,12 +41,13 @@
 - "Brought Down from Inside" now properly allows the Free Peoples to transfer this condition at the start of each skirmish.
 - "Hope Comes" no longer triggers if a multi-phase event is played outside of a skirmish phase.
 - "Eye of Barad-Dur" can now use its response action.
-- "Above the Battlement" no longer allows players to play a stacked Besieger to play a [Sauron] Orc from discard.
+- "Above the Battlement" no longer allows players to play a stacked Besieger to play a SAURON Orc from discard.
 - "Eomer, Keeper of Oaths" no longer shuffles the deck twice.
 - The Hobbit's "Dawn Take You All" may now be used if all minions have only 1 vitality.
 - The Hobbit's "Gandalf, Leader of Dwarves" now properly discards 2 Dwarf followers to be played from discard.
 - The Hobbit's "Gandalf, Leader of Dwarves" and "Gandalf, Leader of the Company" are now properly wise.
-- The Hobbit's "He Gives Me Courage" no longer gives the Free Peoples the option to exert Gandalf if that player cannot exert a Wise ELVEN ally.
+- The Hobbit's "He Gives Me Courage" no longer gives the Free Peoples the option to exert Gandalf if that player cannot
+exert a Wise ELVEN ally.
 - The Hobbit's "Beorn, Skin-Changer" now properly prevents a Shadow player from discarding him while borne.
 - The Hobbit's "The Eagles Are Coming" now properly attaches a follower.
 - The Hobbit's "Trollshaw Forest" now always gives each player the opportunity to play a hand weapon.

From 4e6131f2018cff5a7ddf9f7907ae19e6dce451c9 Mon Sep 17 00:00:00 2001
From: PhallenCassidy 
Date: Tue, 11 Dec 2018 09:27:38 -0500
Subject: [PATCH 11/22] New version of "Gandalf, Leader of Dwarves"

---
 .../java/com/gempukku/lotro/cards/set30/gandalf/Card30_025.java | 2 --
 1 file changed, 2 deletions(-)

diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/gandalf/Card30_025.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/gandalf/Card30_025.java
index 777177548..5c5a152e6 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/gandalf/Card30_025.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/gandalf/Card30_025.java
@@ -36,8 +36,6 @@ import java.util.List;
  * event and add a doubt to play a Dwarf from your draw deck. Skirmish: Play a [DWARVEN] skirmish
  * event to make an Orc skirmishing Bilbo strength -2.
  */
-
-/** updated text:   */
 public class Card30_025 extends AbstractCompanion {
     public Card30_025() {
         super(2, 7, 4, 6, Culture.GANDALF, Race.WIZARD, null, "Gandalf", "Leader of Dwarves", true);

From 18bcd75e0d0c6771ba3f39b6aef8e5ac11fdd516 Mon Sep 17 00:00:00 2001
From: PhallenCassidy 
Date: Tue, 11 Dec 2018 13:24:06 -0500
Subject: [PATCH 12/22] Corrected typo in 8R33 "Elessar's Edict"

Previously, it was called "Ellesar's Edict"
---
 .../java/com/gempukku/lotro/cards/set8/gondor/Card8_033.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gondor/Card8_033.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gondor/Card8_033.java
index 307c45a61..4ba6965a4 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gondor/Card8_033.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gondor/Card8_033.java
@@ -33,7 +33,7 @@ import java.util.List;
  */
 public class Card8_033 extends AbstractResponseEvent {
     public Card8_033() {
-        super(Side.FREE_PEOPLE, 1, Culture.GONDOR, "Ellesar's Edict");
+        super(Side.FREE_PEOPLE, 1, Culture.GONDOR, "Elessar's Edict");
     }
 
     @Override

From 89be5cac6ce3db037c992b39771301cf72734931 Mon Sep 17 00:00:00 2001
From: PhallenCassidy 
Date: Sat, 15 Dec 2018 11:31:05 -0500
Subject: [PATCH 13/22] Corrected canWound logic

Previously, players were unable to kill characters if the cost of an action was to wound.
---
 .../src/main/java/com/gempukku/lotro/cards/PlayConditions.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java
index 7d3762457..c7bef3a9a 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java
@@ -278,7 +278,7 @@ public class PlayConditions {
                     @Override
                     public boolean visitPhysicalCard(PhysicalCard physicalCard) {
                         if (filter.accepts(gameState, modifiersQuerying, physicalCard)
-                                && modifiersQuerying.getVitality(gameState, physicalCard) > times
+                                && modifiersQuerying.getVitality(gameState, physicalCard) >= times
                                 && modifiersQuerying.canTakeWounds(gameState, (source != null)?Collections.singleton(source):Collections.emptySet(), physicalCard, times))
                             _woundableCount++;
                         return _woundableCount >= count;

From 47f511cb8a349d372198e45face3483df313cfff Mon Sep 17 00:00:00 2001
From: PhallenCassidy 
Date: Sat, 15 Dec 2018 11:33:38 -0500
Subject: [PATCH 14/22] Fix to 17R98 "Throne of the Golden Hall"

Players may no longer exert a character to prevent that same character's wound.
---
 .../lotro/cards/set17/rohan/Card17_098.java   | 33 +++++++++++++------
 1 file changed, 23 insertions(+), 10 deletions(-)

diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/rohan/Card17_098.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/rohan/Card17_098.java
index 492705430..af268b482 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/rohan/Card17_098.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/rohan/Card17_098.java
@@ -3,12 +3,14 @@ package com.gempukku.lotro.cards.set17.rohan;
 import com.gempukku.lotro.cards.AbstractPermanent;
 import com.gempukku.lotro.cards.PlayConditions;
 import com.gempukku.lotro.cards.TriggerConditions;
+import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
+import com.gempukku.lotro.cards.effects.PreventCardEffect;
 import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
-import com.gempukku.lotro.cards.effects.choose.ChooseAndPreventCardEffect;
 import com.gempukku.lotro.common.*;
 import com.gempukku.lotro.filters.Filters;
 import com.gempukku.lotro.game.PhysicalCard;
 import com.gempukku.lotro.game.state.LotroGame;
+import com.gempukku.lotro.logic.GameUtils;
 import com.gempukku.lotro.logic.actions.ActivateCardAction;
 import com.gempukku.lotro.logic.effects.AddTwilightEffect;
 import com.gempukku.lotro.logic.effects.WoundCharactersEffect;
@@ -16,7 +18,8 @@ import com.gempukku.lotro.logic.modifiers.CantBeAssignedToSkirmishModifier;
 import com.gempukku.lotro.logic.modifiers.Modifier;
 import com.gempukku.lotro.logic.timing.Effect;
 
-import java.util.Collections;
+import java.util.Collection;
+import java.util.LinkedList;
 import java.util.List;
 
 /**
@@ -49,14 +52,24 @@ public class Card17_098 extends AbstractPermanent {
     public List getOptionalInPlayBeforeActions(String playerId, LotroGame game, Effect effect, PhysicalCard self) {
         if (TriggerConditions.isGettingWounded(effect, game, Culture.ROHAN, Race.MAN)
                 && PlayConditions.canExert(self, game, Culture.ROHAN, Race.MAN)) {
-            ActivateCardAction action = new ActivateCardAction(self);
-            action.appendCost(
-                    new AddTwilightEffect(self, 2));
-            action.appendCost(
-                    new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Culture.ROHAN, Race.MAN));
-            action.appendEffect(
-                    new ChooseAndPreventCardEffect(self, (WoundCharactersEffect) effect, playerId, "Choose character to prevent wound to", Culture.ROHAN, Race.MAN));
-            return Collections.singletonList(action);
+            final WoundCharactersEffect woundEffect = (WoundCharactersEffect) effect;
+            Collection woundedCharacters = Filters.filter(woundEffect.getAffectedCardsMinusPrevented(game), game.getGameState(), game.getModifiersQuerying(), Culture.ROHAN, Race.MAN);
+            List actions = new LinkedList();
+            for (PhysicalCard woundedCharacter : woundedCharacters) {
+                if (PlayConditions.canExert(self, game, Culture.ROHAN, Race.MAN, Filters.not(woundedCharacter))) {
+                    ActivateCardAction action = new ActivateCardAction(self);
+                    action.setText("Prevent for " + GameUtils.getFullName(woundedCharacter));
+                    action.appendCost(
+                            new AddTwilightEffect(self, 2));
+                    action.appendCost(
+                            new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Culture.ROHAN, Race.MAN, Filters.not(woundedCharacter)));
+                    action.appendEffect(
+                            new PreventCardEffect(woundEffect, woundedCharacter));
+                    actions.add(action);
+                
+                }
+            }
+            return actions;
         }
         return null;
     }

From a532f2c59e695355aae9ed1270b388bfd056343f Mon Sep 17 00:00:00 2001
From: PhallenCassidy 
Date: Sat, 15 Dec 2018 11:37:58 -0500
Subject: [PATCH 15/22] Update changeLog.html

---
 gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html b/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html
index 199694db3..6d5eeb194 100644
--- a/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html
+++ b/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html
@@ -1,9 +1,11 @@
 
 Most recent update
+- Players may now kill characters if the cost of an action is to wound
 - "Drawn to Its Power" can no longer add a burden if The Ring-Bearer was killed
 - "The Witch-king, Deathless Lord" can now wound an ally twice if all Free Peoples characters are exhausted
 - "Nine-fingered Frodo and the Ring of Doom" can now remove one threat if there is one threat and no burdens
 - "Saved from the Fire" can no longer target the Ring-Bearer
+- "Throne of the Golden Hall" no longer allows a character to prevent its own wound by exerting
 - "Tower Troll" now has the correct prevention pop-up text
 - "Uruk Guard" and "Uruk-hai Guard" now announce the selected companion in chat
 - "Shelob, Her Ladyship" now announces the selected companion in chat

From 375646140ca4cb4cff0b002ec2a6186b1c6a1857 Mon Sep 17 00:00:00 2001
From: PhallenCassidy 
Date: Sun, 23 Dec 2018 07:58:31 -0500
Subject: [PATCH 16/22] Fix for the deckbuilder

Adding sites will now cause the deckbuilder to check whether the deck is legal.
---
 .../gemp-lotr-async/src/main/web/js/gemp-021/deckBuildingUi.js  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/deckBuildingUi.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/deckBuildingUi.js
index aab5d31fc..8ca8df810 100644
--- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/deckBuildingUi.js
+++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/deckBuildingUi.js
@@ -573,6 +573,7 @@ var GempLotrDeckBuildingUI = Class.extend({
         var cardDiv = createCardDiv(card.imageUrl, null, card.isFoil(), tokens, card.isPack(), card.hasErrata());
         cardDiv.data("card", card);
         container.append(cardDiv);
+        this.deckDirty = true;
         return cardDiv;
     },
 
@@ -587,7 +588,6 @@ var GempLotrDeckBuildingUI = Class.extend({
             cardDiv.addClass("cardInDeck");
             that.showNormalFilter();
             that.layoutSpecialGroups();
-            that.deckDirty = true;
             that.deckModified(true);
         };
     },

From 02b1fb8521fb0489005d1ca6ff70bbe8e2fdca7d Mon Sep 17 00:00:00 2001
From: PhallenCassidy 
Date: Sun, 23 Dec 2018 08:00:47 -0500
Subject: [PATCH 17/22] Update changeLog.html

---
 gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html b/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html
index 6d5eeb194..f1f6b472f 100644
--- a/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html
+++ b/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html
@@ -1,5 +1,6 @@
 
 Most recent update
+- Fixed an error in which the deck builder would not check for format legality after adding a site
 - Players may now kill characters if the cost of an action is to wound
 - "Drawn to Its Power" can no longer add a burden if The Ring-Bearer was killed
 - "The Witch-king, Deathless Lord" can now wound an ally twice if all Free Peoples characters are exhausted

From ae5f521614f5f4b05ad90de6c459049874a3e2ad Mon Sep 17 00:00:00 2001
From: PhallenCassidy 
Date: Wed, 2 Jan 2019 10:18:38 -0500
Subject: [PATCH 18/22] Slight rework to the card filter

Moved Hobbit shadow culture for better fit, shrank card name filter to help optimize space, lowered culture filters slightly to prevent overlap.
---
 .../src/main/web/js/gemp-021/cardFilter.js     | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/cardFilter.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/cardFilter.js
index 1f14c681a..0262508b2 100644
--- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/cardFilter.js
+++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/cardFilter.js
@@ -136,11 +136,11 @@ var CardFilter = Class.extend({
             + ""
             + ""
             + ""
-			//Additional Hobbit Draft blocks
-			+ ""
-			+ ""
+            //Additional Hobbit Draft blocks
+            + ""
+            + ""
             + "");
-        this.nameInput = $("");
+        this.nameInput = $("");
         this.sortSelect = $(""
             + ""
             + ""
-            //Additional Hobbit Draft Free Peoples culture
+            //Additional Hobbit Draft cultures
             + ""
+            + ""
             + "");
         this.filterDiv.append("
" + "" @@ -193,7 +194,6 @@ var CardFilter = Class.extend({ + "" + "" //Additional Hobbit Draft Shadow cultures - + "" //+ "" //+ "" //+ "" @@ -295,15 +295,15 @@ var CardFilter = Class.extend({ $("#keyword").change(filterOut); $("#type").change(filterOut); - //Additional Hobbit Draft labels + //Additional Hobbit Draft labels $("#labelDWARVEN,#labelELVEN,#labelGANDALF,#labelGONDOR,#labelROHAN,#labelSHIRE,#labelGOLLUM,#labelDUNLAND,#labelISENGARD,#labelMEN,#labelMORIA,#labelORC,#labelRAIDER,#labelSAURON,#labelURUK_HAI,#labelWRAITH,#labelESGAROTH,#labelGUNDABAD").click(filterOut); }, layoutUi:function (x, y, width, height) { this.pageDiv.css({ position:"absolute", left:x, top:y, width:width, height:50 }); this.countSlider.css({width:width - 100}); - this.fullFilterDiv.css({position:"absolute", left:x, top:y + 50, width:width, height:30}); - this.filterDiv.css({ position:"absolute", left:x, top:y + 80, width:width, height:80 }); + this.fullFilterDiv.css({position:"absolute", left:x, top:y + 50, width:width, height:32}); + this.filterDiv.css({ position:"absolute", left:x, top:y + 82, width:width, height:80 }); }, layoutPageUi: function(x, y, width) { From 7ae6953be9619e8a26a4e774210a6cccde9c319d Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Fri, 4 Jan 2019 08:56:53 -0500 Subject: [PATCH 19/22] Fix to 17R98 "Throne of the Golden Hall" Players may no longer exert a character to prevent that same character's wound. --- .../java/com/gempukku/lotro/cards/set17/rohan/Card17_098.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/rohan/Card17_098.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/rohan/Card17_098.java index af268b482..c24046f17 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/rohan/Card17_098.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set17/rohan/Card17_098.java @@ -58,7 +58,7 @@ public class Card17_098 extends AbstractPermanent { for (PhysicalCard woundedCharacter : woundedCharacters) { if (PlayConditions.canExert(self, game, Culture.ROHAN, Race.MAN, Filters.not(woundedCharacter))) { ActivateCardAction action = new ActivateCardAction(self); - action.setText("Prevent for " + GameUtils.getFullName(woundedCharacter)); + action.setText("Prevent to " + GameUtils.getFullName(woundedCharacter)); action.appendCost( new AddTwilightEffect(self, 2)); action.appendCost( From ffbe26ab6e1070d138a8674da9cc0aa3d2f95097 Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Sat, 5 Jan 2019 12:02:19 -0500 Subject: [PATCH 20/22] Making card filter more mobile-friendly Free Peoples culture buttons should no longer take up two rows for mobile users, and raising the filters will make sure players can at least access card type and keyword filters. --- .../src/main/web/js/gemp-021/cardFilter.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/cardFilter.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/cardFilter.js index 0262508b2..63454d056 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/cardFilter.js +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/cardFilter.js @@ -179,9 +179,6 @@ var CardFilter = Class.extend({ + "" + "" + "" - //Additional Hobbit Draft cultures - + "" - + "" + "
"); this.filterDiv.append("
" + "" @@ -193,7 +190,9 @@ var CardFilter = Class.extend({ + "" + "" + "" - //Additional Hobbit Draft Shadow cultures + //Additional Hobbit Draft cultures + + "" + + "" //+ "" //+ "" //+ "" @@ -300,10 +299,10 @@ var CardFilter = Class.extend({ }, layoutUi:function (x, y, width, height) { - this.pageDiv.css({ position:"absolute", left:x, top:y, width:width, height:50 }); + this.pageDiv.css({ position:"absolute", left:x, top:y, width:width, height:34 }); this.countSlider.css({width:width - 100}); - this.fullFilterDiv.css({position:"absolute", left:x, top:y + 50, width:width, height:32}); - this.filterDiv.css({ position:"absolute", left:x, top:y + 82, width:width, height:80 }); + this.fullFilterDiv.css({position:"absolute", left:x, top:y + 34, width:width, height:34}); + this.filterDiv.css({ position:"absolute", left:x, top:y + 68, width:width, height:80 }); }, layoutPageUi: function(x, y, width) { From 83c64095ecf9ff4dfcb366aae8ad710a6439ae31 Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Wed, 23 Jan 2019 14:58:42 -0500 Subject: [PATCH 21/22] Excluding "The Hobbit" card from all cards. --- .../gemp-lotr-server/src/main/resources/lotrFormats.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gemp-lotr/gemp-lotr-server/src/main/resources/lotrFormats.json b/gemp-lotr/gemp-lotr-server/src/main/resources/lotrFormats.json index a308046c3..9712f5910 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/resources/lotrFormats.json +++ b/gemp-lotr/gemp-lotr-server/src/main/resources/lotrFormats.json @@ -352,5 +352,12 @@ "limited":true, "set":[30, 31], "hall":false + }, + { + "name":"LotR Cards", + "code":"lotr", + "sites":"SPECIAL", + "set":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19], + "hall":false } ] From 7db98ea2960c372e34e9afacbac85dbafc6c5d8e Mon Sep 17 00:00:00 2001 From: PhallenCassidy Date: Wed, 23 Jan 2019 14:59:53 -0500 Subject: [PATCH 22/22] Excluding "The Hobbit" cards by default --- .../gemp-lotr-async/src/main/web/js/gemp-021/cardFilter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/cardFilter.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/cardFilter.js index 63454d056..41175623d 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/cardFilter.js +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-021/cardFilter.js @@ -104,7 +104,7 @@ var CardFilter = Class.extend({ this.fullFilterDiv = $("
"); this.setSelect = $("