From 70659e8af5c509ce1bb57395b041d881a5f3cfbf Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Fri, 16 Mar 2012 13:44:24 +0000 Subject: [PATCH] - "Gimli, Feared Axeman" should now properly be usable when a card is discarded by an action of an opponent. --- .../com/gempukku/lotro/cards/TriggerConditions.java | 9 +++++++++ .../choose/ChooseAndDiscardCardsFromPlayEffect.java | 2 +- .../lotro/cards/set7/dwarven/Card7_007.java | 2 +- .../logic/effects/DiscardCardsFromPlayEffect.java | 13 +++++++++++++ .../src/main/webapp/includes/changeLog.html | 1 + 5 files changed, 25 insertions(+), 2 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/TriggerConditions.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/TriggerConditions.java index 73ef56d34..cbd1d7126 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/TriggerConditions.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/TriggerConditions.java @@ -270,6 +270,15 @@ public class TriggerConditions { return false; } + public static boolean isGettingDiscardedByOpponent(Effect effect, LotroGame game, String playerId, Filterable... filters) { + if (effect.getType() == Effect.Type.BEFORE_DISCARD_FROM_PLAY) { + DiscardCardsFromPlayEffect discardEffect = (DiscardCardsFromPlayEffect) effect; + if (discardEffect.getSource() != null && !discardEffect.getPerformingPlayer().equals(playerId)) + return Filters.filter(discardEffect.getAffectedCardsMinusPrevented(game), game.getGameState(), game.getModifiersQuerying(), filters).size() > 0; + } + return false; + } + public static boolean isGettingDiscarded(Effect effect, LotroGame game, Filterable... filters) { if (effect.getType() == Effect.Type.BEFORE_DISCARD_FROM_PLAY) { DiscardCardsFromPlayEffect discardEffect = (DiscardCardsFromPlayEffect) effect; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndDiscardCardsFromPlayEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndDiscardCardsFromPlayEffect.java index e5b49a569..d2fb4221c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndDiscardCardsFromPlayEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndDiscardCardsFromPlayEffect.java @@ -36,7 +36,7 @@ public class ChooseAndDiscardCardsFromPlayEffect extends ChooseActiveCardsEffect @Override protected void cardsSelected(LotroGame game, Collection cards) { _resultSubAction = new SubAction(_action); - _resultSubAction.appendEffect(new DiscardCardsFromPlayEffect(_action.getActionSource(), Filters.in(cards))); + _resultSubAction.appendEffect(new DiscardCardsFromPlayEffect(_action.getPerformingPlayer(), _action.getActionSource(), Filters.in(cards))); game.getActionsEnvironment().addActionToStack(_resultSubAction); cardsToBeDiscardedCallback(cards); } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/dwarven/Card7_007.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/dwarven/Card7_007.java index 69ff4fd6b..c2eb62774 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/dwarven/Card7_007.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/dwarven/Card7_007.java @@ -42,7 +42,7 @@ public class Card7_007 extends AbstractCompanion { @Override public List getOptionalInPlayBeforeActions(String playerId, LotroGame game, Effect effect, PhysicalCard self) { - if (TriggerConditions.isGettingDiscardedBy(effect, game, Side.SHADOW, Culture.DWARVEN, CardType.CONDITION) + if (TriggerConditions.isGettingDiscardedByOpponent(effect, game, playerId, Culture.DWARVEN, CardType.CONDITION) && (PlayConditions.canExert(self, game, Race.DWARF) || PlayConditions.canDiscardFromHand(game, playerId, 1, Culture.DWARVEN))) { final DiscardCardsFromPlayEffect discardEffect = (DiscardCardsFromPlayEffect) effect; 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 20a8a1642..843750df0 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 @@ -30,6 +30,12 @@ public class DiscardCardsFromPlayEffect extends AbstractPreventableCardEffect { _source = source; } + public DiscardCardsFromPlayEffect(String performingPlayer, PhysicalCard source, Filterable... filters) { + super(filters); + _performingPlayer = performingPlayer; + _source = source; + } + public PhysicalCard getSource() { return _source; } @@ -44,6 +50,13 @@ public class DiscardCardsFromPlayEffect extends AbstractPreventableCardEffect { }; } + public String getPerformingPlayer() { + final String performingPlayer = _performingPlayer; + if (performingPlayer != null) + return performingPlayer; + return _source.getOwner(); + } + @Override public Effect.Type getType() { return Type.BEFORE_DISCARD_FROM_PLAY; diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html index 3d8652b97..2b38b83e2 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html @@ -1,6 +1,7 @@
 16 Mar. 2012
 - When "Mountain-troll" is played with discarding 5 minions, now it should properly gain Fierce.
+- "Gimli, Feared Axeman" should now properly be usable when a card is discarded by an action of an opponent.
 
 15 Mar. 2012
 - "Mount Doom" should finally work.