From 15cdf7aaea990f7a555d095888a1a2a4888c6431 Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Thu, 23 Nov 2017 18:58:03 -0800 Subject: [PATCH] Discarding cards from play effect result now carries information on who performed the discarding. --- .../cards/effects/LiberateASiteEffect.java | 2 +- .../PutCardFromPlayOnBottomOfDeckEffect.java | 2 +- .../PutCardFromPlayOnTopOfDeckEffect.java | 2 +- .../effects/ReturnCardsToHandEffect.java | 2 +- .../ShuffleCardsFromPlayIntoDeckEffect.java | 2 +- .../effects/StackCardFromPlayEffect.java | 2 +- .../lotro/cards/set31/troll/Card31_064.java | 27 ++++++++++--------- .../effects/DiscardCardsFromPlayEffect.java | 2 +- .../lotro/logic/effects/KillEffect.java | 2 +- .../results/DiscardCardsFromPlayResult.java | 8 +++++- 10 files changed, 29 insertions(+), 22 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/LiberateASiteEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/LiberateASiteEffect.java index 51c263e68..fb7ccf190 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/LiberateASiteEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/LiberateASiteEffect.java @@ -81,7 +81,7 @@ public class LiberateASiteEffect extends AbstractEffect { game.getGameState().loseControlOfCard(siteToLiberate, Zone.ADVENTURE_PATH); for (PhysicalCard discardedCard : discardedCards) - game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(null, discardedCard)); + game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(null, null, discardedCard)); game.getGameState().sendMessage(_liberatingPlayer + " liberated a " + GameUtils.getCardLink(siteToLiberate) + " using " + GameUtils.getCardLink(_source)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutCardFromPlayOnBottomOfDeckEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutCardFromPlayOnBottomOfDeckEffect.java index d5401e5e7..fcfd84bc5 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutCardFromPlayOnBottomOfDeckEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutCardFromPlayOnBottomOfDeckEffect.java @@ -42,7 +42,7 @@ public class PutCardFromPlayOnBottomOfDeckEffect extends AbstractEffect { gameState.putCardOnBottomOfDeck(_physicalCard); for (PhysicalCard discardedCard : discardedCards) { - game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(null, discardedCard)); + game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(null, null, discardedCard)); } for (PhysicalCard toGoToDiscardCard : toGoToDiscardCards) gameState.addCardToZone(game, toGoToDiscardCard, Zone.DISCARD); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutCardFromPlayOnTopOfDeckEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutCardFromPlayOnTopOfDeckEffect.java index b2c51f847..96401d6b0 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutCardFromPlayOnTopOfDeckEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutCardFromPlayOnTopOfDeckEffect.java @@ -42,7 +42,7 @@ public class PutCardFromPlayOnTopOfDeckEffect extends AbstractEffect { gameState.putCardOnTopOfDeck(_physicalCard); for (PhysicalCard discardedCard : discardedCards) { - game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(null, discardedCard)); + game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(null, null, discardedCard)); } for (PhysicalCard toGoToDiscardCard : toGoToDiscardCards) gameState.addCardToZone(game, toGoToDiscardCard, Zone.DISCARD); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ReturnCardsToHandEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ReturnCardsToHandEffect.java index 5934bb784..674ee6bd1 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ReturnCardsToHandEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ReturnCardsToHandEffect.java @@ -79,7 +79,7 @@ public class ReturnCardsToHandEffect extends AbstractEffect { gameState.sendMessage(GameUtils.getCardLink(_source) + " returns " + getAppendedNames(cardsToReturnToHand) + " to hand"); for (PhysicalCard discardedCard : discardedFromPlay) - game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(null, discardedCard)); + game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(null, null, discardedCard)); for (PhysicalCard cardReturned : cardsToReturnToHand) game.getActionsEnvironment().emitEffectResult(new ReturnCardsToHandResult(cardReturned)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ShuffleCardsFromPlayIntoDeckEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ShuffleCardsFromPlayIntoDeckEffect.java index 26f08f50e..f542cdeb9 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ShuffleCardsFromPlayIntoDeckEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ShuffleCardsFromPlayIntoDeckEffect.java @@ -69,7 +69,7 @@ public class ShuffleCardsFromPlayIntoDeckEffect extends AbstractEffect { game.getGameState().addCardToZone(game, physicalCard, Zone.DISCARD); for (PhysicalCard physicalCard : discardedFromPlay) - game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(null, physicalCard)); + game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(null, null, physicalCard)); game.getGameState().sendMessage(getAppendedNames(toShuffleIn) + " " + GameUtils.be(toShuffleIn) + " shuffled into " + _playerDeck + " deck"); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/StackCardFromPlayEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/StackCardFromPlayEffect.java index e4a342690..f1a6c7577 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/StackCardFromPlayEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/StackCardFromPlayEffect.java @@ -62,7 +62,7 @@ public class StackCardFromPlayEffect extends AbstractEffect { // Send the result (attached cards get discarded) for (PhysicalCard discardedCard : discardedFromPlayCards) - game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(null, discardedCard)); + game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(null, null, discardedCard)); return new FullEffectResult(true); } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/troll/Card31_064.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/troll/Card31_064.java index a35db8cea..73760eae0 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/troll/Card31_064.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set31/troll/Card31_064.java @@ -15,6 +15,7 @@ import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.modifiers.TwilightCostModifier; import com.gempukku.lotro.logic.timing.Action; import com.gempukku.lotro.logic.timing.EffectResult; +import com.gempukku.lotro.logic.timing.results.DiscardCardsFromPlayResult; import java.util.Collections; import java.util.List; @@ -36,36 +37,36 @@ public class Card31_064 extends AbstractMinion { super(5, 11, 4, 2, Race.TROLL, Culture.GUNDABAD, "Bert", "Troll of Ettenmoors", true); addKeyword(Keyword.FIERCE); } - + @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); - } - + } + @Override public PlayPermanentAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { final PlayPermanentAction playCardAction = super.getPlayCardAction(playerId, game, self, twilightModifier, ignoreRoamingPenalty); playCardAction.appendCost( new ChooseAndDiscardCardsFromPlayEffect(playCardAction, playerId, 1, 1, Race.ORC)); return playCardAction; - } - + } + @Override public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { return Collections.singletonList( new TwilightCostModifier(self, Race.TROLL, -2)); - } + } @Override public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (TriggerConditions.forEachDiscardedFromPlay(game, effectResult, CardType.CONDITION)) { - if (!discardEffect.getPerformingPlayer().equals(self.getOwner())) { - OptionalTriggerAction action = new OptionalTriggerAction(self); - action.appendEffect( - new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.ALLY)); - return Collections.singletonList(action); - } + if (TriggerConditions.forEachDiscardedFromPlay(game, effectResult, CardType.CONDITION) + && ((DiscardCardsFromPlayResult) effectResult).getPerformingPlayer() != null + && !((DiscardCardsFromPlayResult) effectResult).getPerformingPlayer().equals(self.getOwner())) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendEffect( + new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.ALLY)); + return Collections.singletonList(action); } return null; } 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 255895dcc..0abc1534b 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 @@ -95,7 +95,7 @@ public class DiscardCardsFromPlayEffect extends AbstractPreventableCardEffect { game.getGameState().sendMessage(_source.getOwner() + " discards " + getAppendedNames(discardedCards) + " from play using " + GameUtils.getCardLink(_source)); for (PhysicalCard discardedCard : discardedCards) - game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(_source, discardedCard)); + game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(_source, getPerformingPlayer(), discardedCard)); forEachDiscardedByEffectCallback(cards); } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/KillEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/KillEffect.java index b6b371a3a..3959fbd17 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/KillEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/KillEffect.java @@ -103,7 +103,7 @@ public class KillEffect extends AbstractSuccessfulEffect { for (PhysicalCard killedCard : killedCards) game.getActionsEnvironment().emitEffectResult(new ForEachKilledResult(killedCard, _cause)); for (PhysicalCard discardedCard : discardedCards) - game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(null, discardedCard)); + game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(null, null, discardedCard)); } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/DiscardCardsFromPlayResult.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/DiscardCardsFromPlayResult.java index eb2d25877..fe5c0450a 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/DiscardCardsFromPlayResult.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/DiscardCardsFromPlayResult.java @@ -5,14 +5,20 @@ import com.gempukku.lotro.logic.timing.EffectResult; public class DiscardCardsFromPlayResult extends EffectResult { private PhysicalCard _source; + private String _performingPlayer; private PhysicalCard _card; - public DiscardCardsFromPlayResult(PhysicalCard source, PhysicalCard card) { + public DiscardCardsFromPlayResult(PhysicalCard source, String performingPlayer, PhysicalCard card) { super(EffectResult.Type.FOR_EACH_DISCARDED_FROM_PLAY); _source = source; + _performingPlayer = performingPlayer; _card = card; } + public String getPerformingPlayer() { + return _performingPlayer; + } + public PhysicalCard getDiscardedCard() { return _card; }