From be8a883c40ba8ca806dd1a26acae738c0979702e Mon Sep 17 00:00:00 2001 From: MarcinSc Date: Fri, 5 Feb 2016 14:01:10 -0800 Subject: [PATCH] If a character other than Frodo is your Ringbearer, you cannot play any version of Frodo with the Ring-bearer keyword during the game. --- .../lotro/cards/AbstractCompanion.java | 10 +++++++-- .../gempukku/lotro/cards/PlayConditions.java | 21 ++++++++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractCompanion.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractCompanion.java index a099d0d88..22d59ab02 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractCompanion.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractCompanion.java @@ -1,6 +1,11 @@ package com.gempukku.lotro.cards; -import com.gempukku.lotro.common.*; +import com.gempukku.lotro.common.CardType; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Race; +import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.common.Signet; +import com.gempukku.lotro.common.Zone; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; @@ -44,7 +49,8 @@ public abstract class AbstractCompanion extends AbstractPermanent { public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int withTwilightRemoved, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) { return super.checkPlayRequirements(playerId, game, self, withTwilightRemoved, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile) - && PlayConditions.checkRuleOfNine(game.getGameState(), game.getModifiersQuerying(), self); + && PlayConditions.checkRuleOfNine(game.getGameState(), game.getModifiersQuerying(), self) + && PlayConditions.checkPlayRingBearer(game.getGameState(), self); } protected final List getExtraPhaseActions(String playerId, LotroGame game, final PhysicalCard self) { diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java index 1d6474602..7d3762457 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java @@ -1,6 +1,12 @@ package com.gempukku.lotro.cards; -import com.gempukku.lotro.common.*; +import com.gempukku.lotro.common.CardType; +import com.gempukku.lotro.common.Filterable; +import com.gempukku.lotro.common.Keyword; +import com.gempukku.lotro.common.Phase; +import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.common.Token; +import com.gempukku.lotro.common.Zone; import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.LotroCardBlueprint; @@ -156,6 +162,19 @@ public class PlayConditions { return (getTotalCompanions(self.getOwner(), gameState, modifiersQuerying) < 9); } + public static boolean checkPlayRingBearer(GameState gameState, PhysicalCard self) { + // If a character other than Frodo is your Ringbearer, + // you cannot play any version of Frodo + // with the Ring-bearer keyword during the game + PhysicalCard ringBearer = gameState.getRingBearer(gameState.getCurrentPlayerId()); + boolean ringBearerIsNotFrodo = ringBearer != null && !ringBearer.getBlueprint().getName().equals("Frodo"); + if (ringBearerIsNotFrodo) { + boolean isRingBearerFrodo = self.getBlueprint().getName().equals("Frodo") && self.getBlueprint().hasKeyword(Keyword.CAN_START_WITH_RING); + return !isRingBearerFrodo; + } + return true; + } + public static boolean canHealByDiscarding(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) { LotroCardBlueprint blueprint = self.getBlueprint(); if (self.getZone() == Zone.HAND