From 94c7896ebde4fc7e1b626e5f737caa5c4614a5a1 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Wed, 11 Jan 2012 15:56:33 +0000 Subject: [PATCH] "Riddermark Tactician" --- .../lotro/cards/set13/rohan/Card13_133.java | 63 +++++++++++++++++++ .../lotro/logic/effects/PlaySiteEffect.java | 3 + .../lotro/logic/timing/EffectResult.java | 4 +- .../timing/results/ReplaceSiteResult.java | 22 +++++++ 4 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set13/rohan/Card13_133.java create mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/ReplaceSiteResult.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set13/rohan/Card13_133.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set13/rohan/Card13_133.java new file mode 100644 index 000000000..11a148ad7 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set13/rohan/Card13_133.java @@ -0,0 +1,63 @@ +package com.gempukku.lotro.cards.set13.rohan; + +import com.gempukku.lotro.cards.AbstractCompanion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.TriggerConditions; +import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; +import com.gempukku.lotro.cards.effects.ReinforceTokenEffect; +import com.gempukku.lotro.cards.modifiers.ArcheryTotalModifier; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.OptionalTriggerAction; +import com.gempukku.lotro.logic.timing.EffectResult; +import com.gempukku.lotro.logic.timing.results.ReplaceSiteResult; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Bloodlines + * Side: Free + * Culture: Rohan + * Twilight Cost: 2 + * Type: Companion • Man + * Strength: 6 + * Vitality: 3 + * Resistance: 5 + * Game Text: When you play this, you may reinforce a [ROHAN] token. Each time a Shadow player replaces the fellowship’s + * current site, you may spot another [ROHAN] Man to make, until the regroup phase, the fellowship archery total +2 + * and the minion archery total -2. + */ +public class Card13_133 extends AbstractCompanion { + public Card13_133() { + super(2, 6, 3, 5, Culture.ROHAN, Race.MAN, null, "Riddermark Tactician"); + } + + @Override + public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (TriggerConditions.played(game, effectResult, self)) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendEffect( + new ReinforceTokenEffect(self, playerId, Token.ROHAN)); + return Collections.singletonList(action); + } + if (effectResult.getType() == EffectResult.Type.REPLACE_SITE + && PlayConditions.canSpot(game, Filters.not(self), Culture.ROHAN, Race.MAN)) { + ReplaceSiteResult replaceSiteResult = (ReplaceSiteResult) effectResult; + if (replaceSiteResult.getSiteNumber() == game.getGameState().getCurrentSiteNumber() + && !replaceSiteResult.getPlayerId().equals(game.getGameState().getCurrentPlayerId())) { + OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendEffect( + new AddUntilStartOfPhaseModifierEffect( + new ArcheryTotalModifier(self, Side.FREE_PEOPLE, 2), Phase.REGROUP)); + action.appendEffect( + new AddUntilStartOfPhaseModifierEffect( + new ArcheryTotalModifier(self, Side.SHADOW, -2), Phase.REGROUP)); + return Collections.singletonList(action); + } + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/PlaySiteEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/PlaySiteEffect.java index 84f36478f..76ca77f3c 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/PlaySiteEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/PlaySiteEffect.java @@ -17,6 +17,7 @@ import com.gempukku.lotro.logic.timing.AbstractEffect; import com.gempukku.lotro.logic.timing.Action; import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.results.PlayCardResult; +import com.gempukku.lotro.logic.timing.results.ReplaceSiteResult; import java.util.Collection; import java.util.Collections; @@ -120,6 +121,8 @@ public class PlaySiteEffect extends AbstractEffect { && !_playerId.equals(gameState.getCurrentPlayerId())) game.getModifiersEnvironment().addUntilEndOfTurnModifier( new SpecialFlagModifier(null, ModifierFlag.SHADOW_PLAYER_REPLACED_CURRENT_SITE)); + + game.getActionsEnvironment().emitEffectResult(new ReplaceSiteResult(_playerId, siteNumber)); } gameState.removeCardsFromZone(_playerId, Collections.singleton(newSite)); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/EffectResult.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/EffectResult.java index 6b3e45851..739fa0503 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/EffectResult.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/EffectResult.java @@ -49,7 +49,9 @@ public abstract class EffectResult { CHARACTER_WON_SKIRMISH, CHARACTER_LOST_SKIRMISH, - CHARACTER_ASSIGNED, CARD_TRANSFERRED + CHARACTER_ASSIGNED, CARD_TRANSFERRED, + + REPLACE_SITE } private Type _type; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/ReplaceSiteResult.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/ReplaceSiteResult.java new file mode 100644 index 000000000..131919093 --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/ReplaceSiteResult.java @@ -0,0 +1,22 @@ +package com.gempukku.lotro.logic.timing.results; + +import com.gempukku.lotro.logic.timing.EffectResult; + +public class ReplaceSiteResult extends EffectResult { + private int _siteNumber; + private String _playerId; + + public ReplaceSiteResult(String playerId, int siteNumber) { + super(Type.REPLACE_SITE); + _playerId = playerId; + _siteNumber = siteNumber; + } + + public String getPlayerId() { + return _playerId; + } + + public int getSiteNumber() { + return _siteNumber; + } +}