diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_338.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_338.java new file mode 100644 index 000000000..a25b6517d --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/site/Card1_338.java @@ -0,0 +1,56 @@ +package com.gempukku.lotro.cards.set1.site; + +import com.gempukku.lotro.cards.AbstractSite; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.common.Keyword; +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.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.TwilightCostModifier; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.List; + +/** + * Set: The Fellowship of the Ring + * Twilight Cost: 0 + * Type: Site + * Site: 3 + * Game Text: River. Sanctuary. The twilight cost of the first Nazgul played to Ford of Bruinen each turn is -5. + */ +public class Card1_338 extends AbstractSite { + public Card1_338() { + super("Ford of Bruinen", 3, 0, Direction.RIGHT); + addKeyword(Keyword.RIVER); + addKeyword(Keyword.SANCTUARY); + } + + @Override + public Modifier getAlwaysOnEffect(final PhysicalCard self) { + return new TwilightCostModifier(self, + Filters.and( + Filters.keyword(Keyword.NAZGUL), + new Filter() { + @Override + public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { + return (self.getData() == null); + } + }), -5); + } + + @Override + public List getRequiredWhenActions(LotroGame game, EffectResult effectResult, PhysicalCard self) { + if (PlayConditions.played(game.getGameState(), game.getModifiersQuerying(), effectResult, Filters.keyword(Keyword.NAZGUL))) + self.storeData(new Object()); + if (effectResult.getType() == EffectResult.Type.END_OF_TURN) + self.removeData(); + return null; + } + + +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/PhysicalCard.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/PhysicalCard.java index 19723bf69..f935da98c 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/PhysicalCard.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/PhysicalCard.java @@ -14,4 +14,10 @@ public interface PhysicalCard { public LotroCardBlueprint getBlueprint(); public PhysicalCard getAttachedTo(); + + public void storeData(Object object); + + public Object getData(); + + public void removeData(); } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/PhysicalCardImpl.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/PhysicalCardImpl.java index 1b8a3dd09..d2005208e 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/PhysicalCardImpl.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/PhysicalCardImpl.java @@ -16,6 +16,8 @@ public class PhysicalCardImpl implements PhysicalCard { private ModifierHook _modifierHook; + private Object _data; + public PhysicalCardImpl(int cardId, String blueprintId, String owner, Zone zone, LotroCardBlueprint blueprint) { _cardId = cardId; _blueprintId = blueprintId; @@ -74,4 +76,19 @@ public class PhysicalCardImpl implements PhysicalCard { public PhysicalCard getAttachedTo() { return _attachedTo; } + + @Override + public void storeData(Object object) { + _data = object; + } + + @Override + public Object getData() { + return _data; + } + + @Override + public void removeData() { + _data = null; + } }