From 41b48a94e4685a4d8533b7a15e36df70ace0e64e Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Sat, 8 Oct 2011 14:21:38 +0000 Subject: [PATCH] "Boromir's Gauntlets" --- .../cards/effects/CancelSkirmishEffect.java | 41 +++++++++++-- .../cards/effects/PreventableEffect.java | 10 ++++ .../lotro/cards/set4/gondor/Card4_112.java | 57 +++++++++++++++++++ .../com/gempukku/lotro/common/Keyword.java | 2 +- 4 files changed, 104 insertions(+), 6 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_112.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/CancelSkirmishEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/CancelSkirmishEffect.java index 6208736d1..8857463a6 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/CancelSkirmishEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/CancelSkirmishEffect.java @@ -1,12 +1,43 @@ package com.gempukku.lotro.cards.effects; +import com.gempukku.lotro.filters.Filter; +import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.timing.UnrespondableEffect; +import com.gempukku.lotro.logic.timing.AbstractEffect; +import com.gempukku.lotro.logic.timing.EffectResult; + +public class CancelSkirmishEffect extends AbstractEffect { + private Filter _involvementFilter; + + public CancelSkirmishEffect() { + } + + public CancelSkirmishEffect(Filter involvementFilter) { + _involvementFilter = involvementFilter; + } -public class CancelSkirmishEffect extends UnrespondableEffect { @Override - public void doPlayEffect(LotroGame game) { - game.getGameState().sendMessage("Skirmish is cancelled"); - game.getGameState().getSkirmish().cancel(); + public String getText(LotroGame game) { + return "Cancel skirmish"; + } + + @Override + public EffectResult.Type getType() { + return null; + } + + @Override + public boolean isPlayableInFull(LotroGame game) { + return (_involvementFilter == null || Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.inSkirmish(), _involvementFilter) > 0); + } + + @Override + protected FullEffectResult playEffectReturningResult(LotroGame game) { + if (_involvementFilter == null || Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.inSkirmish(), _involvementFilter) > 0) { + game.getGameState().sendMessage("Skirmish is cancelled"); + game.getGameState().getSkirmish().cancel(); + return new FullEffectResult(null, true, true); + } + return new FullEffectResult(null, false, false); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PreventableEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PreventableEffect.java index a49517199..36a0cc437 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PreventableEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PreventableEffect.java @@ -7,6 +7,8 @@ import com.gempukku.lotro.logic.timing.AbstractEffect; import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.EffectResult; +import java.util.Arrays; +import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -16,6 +18,14 @@ public class PreventableEffect extends AbstractEffect { private Iterator _choicePlayers; private Effect _preventionCost; + public PreventableEffect(CostToEffectAction action, Effect effectToExecute, String[] choicePlayers, Effect preventionCost) { + this(action, effectToExecute, Arrays.asList(choicePlayers), preventionCost); + } + + public PreventableEffect(CostToEffectAction action, Effect effectToExecute, String choicePlayer, Effect preventionCost) { + this(action, effectToExecute, Collections.singletonList(choicePlayer), preventionCost); + } + public PreventableEffect(CostToEffectAction action, Effect effectToExecute, List choicePlayers, Effect preventionCost) { _action = action; _effectToExecute = effectToExecute; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_112.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_112.java new file mode 100644 index 000000000..1cef88a62 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/gondor/Card4_112.java @@ -0,0 +1,57 @@ +package com.gempukku.lotro.cards.set4.gondor; + +import com.gempukku.lotro.cards.AbstractAttachableFPPossession; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.effects.CancelSkirmishEffect; +import com.gempukku.lotro.cards.effects.ExertCharactersEffect; +import com.gempukku.lotro.cards.effects.PreventableEffect; +import com.gempukku.lotro.cards.effects.RemoveTwilightEffect; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Keyword; +import com.gempukku.lotro.common.Phase; +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.LotroGame; +import com.gempukku.lotro.logic.GameUtils; +import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.timing.Action; + +import java.util.List; + +/** + * Set: The Two Towers + * Side: Free + * Culture: Gondor + * Twilight Cost: 1 + * Type: Possession • Gauntlets + * Game Text: Bearer must be a [GONDOR] Man. Skirmish: Exert bearer to cancel a skirmish involving bearer. Any Shadow + * player may remove (1) to prevent this. + */ +public class Card4_112 extends AbstractAttachableFPPossession { + public Card4_112() { + super(1, 0, 0, Culture.GONDOR, Keyword.GAUNTLETS, "Boromir's Gauntlets", true); + } + + @Override + protected Filter getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) { + return Filters.and(Filters.culture(Culture.GONDOR), Filters.race(Race.MAN)); + } + + @Override + protected List getExtraInPlayPhaseActions(String playerId, LotroGame game, PhysicalCard self) { + if (PlayConditions.canUseFPCardDuringPhase(game.getGameState(), Phase.SKIRMISH, self) + && PlayConditions.canExert(self, game.getGameState(), game.getModifiersQuerying(), self.getAttachedTo())) { + ActivateCardAction action = new ActivateCardAction(self, Keyword.SKIRMISH); + action.appendCost( + new ExertCharactersEffect(self, self.getAttachedTo())); + action.appendEffect( + new PreventableEffect(action, + new CancelSkirmishEffect(Filters.hasAttached(self)), + GameUtils.getOpponents(game, playerId), + new RemoveTwilightEffect(1))); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java index b280f195d..2fb1c487f 100644 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java @@ -19,7 +19,7 @@ public enum Keyword { HAND_WEAPON("Hand Weapon"), ARMOR("Armor"), HELM("Helm"), MOUNT("Mount"), RANGED_WEAPON("Ranged Weapon"), CLOAK("Cloak"), PIPE("Pipe"), PIPEWEED("Pipeweed"), SHIELD("Shield"), BRACERS("Bracers"), STAFF("Staff"), RING("Ring"), - BROOCH("Brooch"); + BROOCH("Brooch"), GAUNTLETS("Gauntlets"); private String _humanReadable; private boolean _infoDisplayable;