From 4df0f0adcfe3a349c1cd50c3a16a287c3d77f9f2 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Fri, 11 Nov 2011 14:21:43 +0000 Subject: [PATCH] "Counts But One" --- .../effects/ReplaceInSkirmishEffect.java | 41 +++++++++++++++ .../lotro/cards/set8/dwarven/Card8_004.java | 52 +++++++++++++++++++ .../gempukku/lotro/game/state/GameState.java | 8 +++ 3 files changed, 101 insertions(+) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ReplaceInSkirmishEffect.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/dwarven/Card8_004.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ReplaceInSkirmishEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ReplaceInSkirmishEffect.java new file mode 100644 index 000000000..7a8ee87cb --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ReplaceInSkirmishEffect.java @@ -0,0 +1,41 @@ +package com.gempukku.lotro.cards.effects; + +import com.gempukku.lotro.common.Filterable; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.timing.AbstractEffect; + +public class ReplaceInSkirmishEffect extends AbstractEffect { + private PhysicalCard _replacedBy; + private Filterable[] _replacingFilter; + + public ReplaceInSkirmishEffect(PhysicalCard replacedBy, Filterable... replacingFilter) { + _replacedBy = replacedBy; + _replacingFilter = replacingFilter; + } + + @Override + public String getText(LotroGame game) { + return null; + } + + @Override + public Type getType() { + return null; + } + + @Override + public boolean isPlayableInFull(LotroGame game) { + return Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Filters.and(_replacingFilter, Filters.inSkirmish)); + } + + @Override + protected FullEffectResult playEffectReturningResult(LotroGame game) { + if (isPlayableInFull(game)) { + game.getGameState().replaceInSkirmish(_replacedBy); + 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/set8/dwarven/Card8_004.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/dwarven/Card8_004.java new file mode 100644 index 000000000..d28ec6c17 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/dwarven/Card8_004.java @@ -0,0 +1,52 @@ +package com.gempukku.lotro.cards.set8.dwarven; + +import com.gempukku.lotro.cards.AbstractEvent; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.cards.effects.ReplaceInSkirmishEffect; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Phase; +import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.effects.AddThreatsEffect; +import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; + +/** + * Set: Siege of Gondor + * Side: Free + * Culture: Dwarven + * Twilight Cost: 2 + * Type: Event • Skirmish + * Game Text: If Gimli is not assigned to a skirmish, add a threat to have him replace an unbound companion in + * a skirmish. + */ +public class Card8_004 extends AbstractEvent { + public Card8_004() { + super(Side.FREE_PEOPLE, 2, Culture.DWARVEN, "Counts But One", Phase.SKIRMISH); + } + + @Override + public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { + return super.checkPlayRequirements(playerId, game, self, twilightModifier, ignoreRoamingPenalty) + && PlayConditions.canSpot(game, Filters.gimli, Filters.notAssignedToSkirmish) + && PlayConditions.canAddThreat(game, self, 1); + } + + @Override + public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) { + final PlayEventAction action = new PlayEventAction(self); + action.appendCost( + new AddThreatsEffect(playerId, self, 1)); + action.appendEffect( + new ChooseActiveCardEffect(self, playerId, "Choose Gimli", Filters.gimli) { + @Override + protected void cardSelected(LotroGame game, PhysicalCard card) { + action.insertEffect( + new ReplaceInSkirmishEffect(card, Filters.unboundCompanion)); + } + }); + return action; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java index c183aabf8..b2354a5d1 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java @@ -287,6 +287,14 @@ public class GameState { removeFromSkirmish(card, true); } + public void replaceInSkirmish(PhysicalCard card) { + _skirmish.setFellowshipCharacter(card); + for (GameStateListener gameStateListener : getAllGameStateListeners()) { + gameStateListener.finishSkirmish(); + gameStateListener.startSkirmish(_skirmish.getFellowshipCharacter(), _skirmish.getShadowCharacters()); + } + } + private void removeFromSkirmish(PhysicalCard card, boolean notify) { if (_skirmish.getFellowshipCharacter() == card) { _skirmish.setFellowshipCharacter(null);