From 4e481771798fecc4a203bcc0302f62a30167d2ed Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Wed, 2 Nov 2011 00:01:17 +0000 Subject: [PATCH] Playing possessions on specified targets. --- .../lotro/cards/set1/moria/Card1_179.java | 22 +------ .../lotro/cards/set4/rohan/Card4_365.java | 59 +++++++------------ .../lotro/cards/set5/gondor/Card5_041.java | 14 +---- 3 files changed, 27 insertions(+), 68 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_179.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_179.java index d3aba01d8..8a854460e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_179.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_179.java @@ -2,6 +2,7 @@ package com.gempukku.lotro.cards.set1.moria; import com.gempukku.lotro.cards.AbstractAttachable; import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.ExtraFilters; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.choose.ChooseArbitraryCardsEffect; import com.gempukku.lotro.common.Culture; @@ -9,10 +10,8 @@ import com.gempukku.lotro.common.Race; import com.gempukku.lotro.filters.Filter; 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.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.timing.EffectResult; import java.util.Collection; @@ -40,28 +39,13 @@ public class Card1_179 extends AbstractMinion { final Filter additionalAttachmentFilter = Filters.and(Filters.owner(self.getOwner()), Filters.culture(Culture.MORIA), Filters.race(Race.ORC)); if (PlayConditions.played(game.getGameState(), game.getModifiersQuerying(), effectResult, Filters.sameCard(self)) - && Filters.filter(game.getGameState().getDiscard(playerId), game.getGameState(), game.getModifiersQuerying(), Filters.weapon, - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - AbstractAttachable weapon = (AbstractAttachable) physicalCard.getBlueprint(); - return weapon.checkPlayRequirements(playerId, game, physicalCard, additionalAttachmentFilter, 0); - } - }, Filters.playable(game)).size() > 0 - ) { + && PlayConditions.canPlayFromDiscard(playerId, game, Filters.weapon, ExtraFilters.attachableTo(game, additionalAttachmentFilter))) { OptionalTriggerAction action = new OptionalTriggerAction(self); action.appendEffect( new ChooseArbitraryCardsEffect(playerId, "Choose card to play", game.getGameState().getDiscard(playerId), Filters.and( Filters.weapon, - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - AbstractAttachable weapon = (AbstractAttachable) physicalCard.getBlueprint(); - return weapon.checkPlayRequirements(playerId, game, physicalCard, additionalAttachmentFilter, 0); - } - }) - , 1, 1) { + ExtraFilters.attachableTo(game, additionalAttachmentFilter)), 1, 1) { @Override protected void cardsSelected(LotroGame game, Collection selectedCards) { if (selectedCards.size() > 0) { diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_365.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_365.java index 15e2b1c72..08cb4a8e6 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_365.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_365.java @@ -2,6 +2,7 @@ package com.gempukku.lotro.cards.set4.rohan; import com.gempukku.lotro.cards.AbstractAttachable; import com.gempukku.lotro.cards.AbstractCompanion; +import com.gempukku.lotro.cards.ExtraFilters; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.AttachPermanentAction; import com.gempukku.lotro.cards.effects.CheckLimitEffect; @@ -10,12 +11,10 @@ import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filter; 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.ActivateCardAction; import com.gempukku.lotro.logic.actions.CostToEffectAction; import com.gempukku.lotro.logic.effects.HealCharactersEffect; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.timing.Action; import com.gempukku.lotro.logic.timing.UnrespondableEffect; @@ -42,43 +41,29 @@ public class Card4_365 extends AbstractCompanion { @Override protected List getExtraInPlayPhaseActions(final String playerId, final LotroGame game, final PhysicalCard self) { - if (PlayConditions.canUseFPCardDuringPhase(game.getGameState(), Phase.FELLOWSHIP, self)) { + if (PlayConditions.canUseFPCardDuringPhase(game.getGameState(), Phase.FELLOWSHIP, self) + && PlayConditions.canPlayFromHand(playerId, game, Culture.ROHAN, CardType.POSSESSION, ExtraFilters.attachableTo(game, Culture.ROHAN, CardType.COMPANION))) { final Filter additionalAttachmentFilter = Filters.and(Culture.ROHAN, CardType.COMPANION); - if (Filters.filter(game.getGameState().getHand(playerId), game.getGameState(), game.getModifiersQuerying(), CardType.POSSESSION, - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - AbstractAttachable possession = (AbstractAttachable) physicalCard.getBlueprint(); - return possession.checkPlayRequirements(playerId, game, physicalCard, additionalAttachmentFilter, 0); - } - }, Filters.playable(game)).size() > 0) { - final ActivateCardAction action = new ActivateCardAction(self); - action.appendCost( - new CheckLimitEffect(action, self, 1, Phase.FELLOWSHIP, - new ChooseArbitraryCardsEffect(playerId, "Choose card to play", game.getGameState().getHand(playerId), - Filters.and( - CardType.POSSESSION, - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - AbstractAttachable possession = (AbstractAttachable) physicalCard.getBlueprint(); - return possession.checkPlayRequirements(playerId, game, physicalCard, additionalAttachmentFilter, 0); - } - }) - , 1, 1) { - @Override - protected void cardsSelected(LotroGame game, Collection selectedCards) { - if (selectedCards.size() > 0) { - PhysicalCard selectedCard = selectedCards.iterator().next(); - AttachPermanentAction attachPermanentAction = ((AbstractAttachable) selectedCard.getBlueprint()).getPlayCardAction(playerId, game, selectedCard, additionalAttachmentFilter, 0); - game.getActionsEnvironment().addActionToStack(attachPermanentAction); - action.appendEffect( - new AppendHealTargetEffect(action, attachPermanentAction)); - } + final ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new CheckLimitEffect(action, self, 1, Phase.FELLOWSHIP, + new ChooseArbitraryCardsEffect(playerId, "Choose card to play", game.getGameState().getHand(playerId), + Filters.and( + Culture.ROHAN, + CardType.POSSESSION, + ExtraFilters.attachableTo(game, additionalAttachmentFilter)), 1, 1) { + @Override + protected void cardsSelected(LotroGame game, Collection selectedCards) { + if (selectedCards.size() > 0) { + PhysicalCard selectedCard = selectedCards.iterator().next(); + AttachPermanentAction attachPermanentAction = ((AbstractAttachable) selectedCard.getBlueprint()).getPlayCardAction(playerId, game, selectedCard, additionalAttachmentFilter, 0); + game.getActionsEnvironment().addActionToStack(attachPermanentAction); + action.appendEffect( + new AppendHealTargetEffect(action, attachPermanentAction)); } - })); - return Collections.singletonList(action); - } + } + })); + return Collections.singletonList(action); } return null; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/gondor/Card5_041.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/gondor/Card5_041.java index 07adae21f..dde4f132f 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/gondor/Card5_041.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/gondor/Card5_041.java @@ -2,6 +2,7 @@ package com.gempukku.lotro.cards.set5.gondor; import com.gempukku.lotro.cards.AbstractAttachable; import com.gempukku.lotro.cards.AbstractEvent; +import com.gempukku.lotro.cards.ExtraFilters; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; @@ -10,10 +11,8 @@ import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filter; 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.SubAction; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.timing.AbstractSuccessfulEffect; import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.EffectResult; @@ -99,16 +98,7 @@ public class Card5_041 extends AbstractEvent { new ChooseArbitraryCardsEffect(_playerId, "Choose card to play", game.getGameState().getDiscard(_playerId), Filters.and( CardType.POSSESSION, - new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - if (!(physicalCard.getBlueprint() instanceof AbstractAttachable)) - return false; - AbstractAttachable weapon = (AbstractAttachable) physicalCard.getBlueprint(); - return weapon.checkPlayRequirements(_playerId, game, physicalCard, additionalAttachmentFilter, 0); - } - }) - , 1, 1) { + ExtraFilters.attachableTo(game, additionalAttachmentFilter)), 1, 1) { @Override protected void cardsSelected(LotroGame game, Collection selectedCards) { if (selectedCards.size() > 0) {