From 505a579cb2c00949eb364b7be96b0d893981ebcc Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Tue, 24 Jan 2012 20:53:17 +0000 Subject: [PATCH] - Ring-bearer can't be discarded or returned to hand. --- .../effects/ReturnCardsToHandEffect.java | 10 ++++++++- .../ChooseAndDiscardCardsFromPlayEffect.java | 13 ++++++++++++ .../ChooseAndReturnCardsToHandEffect.java | 13 ++++++++++++ .../lotro/cards/set1/shire/Card1_306.java | 2 +- .../cards/set13/uruk_hai/Card13_163.java | 2 +- .../lotro/cards/set4/isengard/Card4_186.java | 2 +- .../lotro/cards/set4/isengard/Card4_188.java | 2 +- .../lotro/cards/set4/isengard/Card4_190.java | 2 +- .../logic/modifiers/AbstractModifier.java | 5 +++++ .../CantDiscardFromPlayModifier.java | 5 +---- .../modifiers/CantReturnToHandModifier.java | 21 +++++++++++++++++++ .../lotro/logic/modifiers/Modifier.java | 2 ++ .../lotro/logic/modifiers/ModifierEffect.java | 2 +- .../lotro/logic/modifiers/ModifiersLogic.java | 13 ++++++++++++ .../logic/modifiers/ModifiersQuerying.java | 2 ++ .../gempukku/lotro/logic/timing/RuleSet.java | 2 ++ .../logic/timing/rules/RingBearerRule.java | 21 +++++++++++++++++++ .../src/main/webapp/includes/changeLog.html | 1 + 18 files changed, 109 insertions(+), 11 deletions(-) rename gemp-lotr/{gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards => gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic}/modifiers/CantDiscardFromPlayModifier.java (75%) create mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CantReturnToHandModifier.java create mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/rules/RingBearerRule.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ReturnCardsToHandEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ReturnCardsToHandEffect.java index ee610c7dd..7671dda1b 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ReturnCardsToHandEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/ReturnCardsToHandEffect.java @@ -2,11 +2,13 @@ package com.gempukku.lotro.cards.effects; import com.gempukku.lotro.common.Filterable; import com.gempukku.lotro.common.Zone; +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.GameUtils; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.timing.AbstractEffect; import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.results.DiscardCardsFromPlayResult; @@ -39,7 +41,13 @@ public class ReturnCardsToHandEffect extends AbstractEffect { @Override public boolean isPlayableInFull(LotroGame game) { - return Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), _filter).size() > 0; + return Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), _filter, + new Filter() { + @Override + public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { + return (_source == null || modifiersQuerying.canBeReturnedToHand(gameState, physicalCard, _source)); + } + }).size() > 0; } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndDiscardCardsFromPlayEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndDiscardCardsFromPlayEffect.java index 7a61ecc97..e5b49a569 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndDiscardCardsFromPlayEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndDiscardCardsFromPlayEffect.java @@ -1,12 +1,15 @@ package com.gempukku.lotro.cards.effects.choose; import com.gempukku.lotro.common.Filterable; +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.actions.SubAction; import com.gempukku.lotro.logic.effects.ChooseActiveCardsEffect; import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.timing.Action; import java.util.Collection; @@ -20,6 +23,16 @@ public class ChooseAndDiscardCardsFromPlayEffect extends ChooseActiveCardsEffect _action = action; } + @Override + protected Filter getExtraFilterForPlaying(LotroGame game) { + return new Filter() { + @Override + public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { + return (_action.getActionSource() == null || modifiersQuerying.canBeDiscardedFromPlay(gameState, physicalCard, _action.getActionSource())); + } + }; + } + @Override protected void cardsSelected(LotroGame game, Collection cards) { _resultSubAction = new SubAction(_action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndReturnCardsToHandEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndReturnCardsToHandEffect.java index f6e6202fd..455ed39d8 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndReturnCardsToHandEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndReturnCardsToHandEffect.java @@ -2,11 +2,14 @@ package com.gempukku.lotro.cards.effects.choose; import com.gempukku.lotro.cards.effects.ReturnCardsToHandEffect; import com.gempukku.lotro.common.Filterable; +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.actions.SubAction; import com.gempukku.lotro.logic.effects.ChooseActiveCardsEffect; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; import com.gempukku.lotro.logic.timing.Action; import java.util.Collection; @@ -19,6 +22,16 @@ public class ChooseAndReturnCardsToHandEffect extends ChooseActiveCardsEffect { _action = action; } + @Override + protected Filter getExtraFilterForPlaying(LotroGame game) { + return new Filter() { + @Override + public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { + return (_action.getActionSource() == null || modifiersQuerying.canBeReturnedToHand(gameState, physicalCard, _action.getActionSource())); + } + }; + } + @Override protected void cardsSelected(LotroGame game, Collection cards) { SubAction subAction = new SubAction(_action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/shire/Card1_306.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/shire/Card1_306.java index eece9539d..2bf0f3b0e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/shire/Card1_306.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/shire/Card1_306.java @@ -1,13 +1,13 @@ package com.gempukku.lotro.cards.set1.shire; import com.gempukku.lotro.cards.AbstractCompanion; -import com.gempukku.lotro.cards.modifiers.CantDiscardFromPlayModifier; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Race; import com.gempukku.lotro.common.Signet; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.logic.modifiers.CantDiscardFromPlayModifier; import com.gempukku.lotro.logic.modifiers.Modifier; /** diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set13/uruk_hai/Card13_163.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set13/uruk_hai/Card13_163.java index fe99ef3e8..cb0a5c214 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set13/uruk_hai/Card13_163.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set13/uruk_hai/Card13_163.java @@ -1,10 +1,10 @@ package com.gempukku.lotro.cards.set13.uruk_hai; import com.gempukku.lotro.cards.AbstractMinion; -import com.gempukku.lotro.cards.modifiers.CantDiscardFromPlayModifier; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.logic.modifiers.CantDiscardFromPlayModifier; import com.gempukku.lotro.logic.modifiers.Modifier; /** diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_186.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_186.java index e52a404c9..d2c33f92d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_186.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_186.java @@ -5,7 +5,6 @@ import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.effects.AddBurdenEffect; import com.gempukku.lotro.cards.effects.SelfExertEffect; -import com.gempukku.lotro.cards.modifiers.CantDiscardFromPlayModifier; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Race; @@ -13,6 +12,7 @@ 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.ActivateCardAction; +import com.gempukku.lotro.logic.modifiers.CantDiscardFromPlayModifier; import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.timing.EffectResult; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_188.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_188.java index f72e75fd0..d644f5bd6 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_188.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_188.java @@ -5,7 +5,6 @@ import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.effects.ExhaustCharacterEffect; import com.gempukku.lotro.cards.effects.SelfExertEffect; -import com.gempukku.lotro.cards.modifiers.CantDiscardFromPlayModifier; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; @@ -15,6 +14,7 @@ import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; +import com.gempukku.lotro.logic.modifiers.CantDiscardFromPlayModifier; import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.timing.EffectResult; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_190.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_190.java index 8b7e5cbac..0b311737d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_190.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_190.java @@ -4,7 +4,6 @@ import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.effects.SelfExertEffect; -import com.gempukku.lotro.cards.modifiers.CantDiscardFromPlayModifier; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Race; @@ -13,6 +12,7 @@ import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect; +import com.gempukku.lotro.logic.modifiers.CantDiscardFromPlayModifier; import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.timing.EffectResult; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java index dc7c95adb..406a8cbb4 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java @@ -236,6 +236,11 @@ public abstract class AbstractModifier implements Modifier { return true; } + @Override + public boolean canBeReturnedToHand(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card, PhysicalCard source) { + return true; + } + @Override public boolean canBeHealed(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card) { return true; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantDiscardFromPlayModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CantDiscardFromPlayModifier.java similarity index 75% rename from gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantDiscardFromPlayModifier.java rename to gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CantDiscardFromPlayModifier.java index c3bf6afc5..34df27119 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantDiscardFromPlayModifier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CantDiscardFromPlayModifier.java @@ -1,11 +1,8 @@ -package com.gempukku.lotro.cards.modifiers; +package com.gempukku.lotro.logic.modifiers; import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.GameState; -import com.gempukku.lotro.logic.modifiers.AbstractModifier; -import com.gempukku.lotro.logic.modifiers.ModifierEffect; -import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; public class CantDiscardFromPlayModifier extends AbstractModifier { private Filter _sourceFilter; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CantReturnToHandModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CantReturnToHandModifier.java new file mode 100644 index 000000000..e55e1c85b --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CantReturnToHandModifier.java @@ -0,0 +1,21 @@ +package com.gempukku.lotro.logic.modifiers; + +import com.gempukku.lotro.filters.Filter; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.GameState; + +public class CantReturnToHandModifier extends AbstractModifier { + private Filter _sourceFilter; + + public CantReturnToHandModifier(PhysicalCard source, String text, Filter affectFilter, Filter sourceFilter) { + super(source, text, affectFilter, ModifierEffect.RETURN_TO_HAND_MODIFIER); + _sourceFilter = sourceFilter; + } + + @Override + public boolean canBeReturnedToHand(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card, PhysicalCard source) { + if (_sourceFilter.accepts(gameState, modifiersQuerying, source)) + return false; + return true; + } +} \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java index 03904d6de..170cb3a55 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java @@ -96,6 +96,8 @@ public interface Modifier { public boolean canBeDiscardedFromPlay(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card, PhysicalCard source); + public boolean canBeReturnedToHand(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card, PhysicalCard source); + public boolean canBeHealed(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard card); public boolean canRemoveBurden(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard source); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifierEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifierEffect.java index 91f61421d..6d84051d1 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifierEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifierEffect.java @@ -7,7 +7,7 @@ public enum ModifierEffect { VITALITY_MODIFIER, RESISTANCE_MODIFIER, SITE_NUMBER_MODIFIER, TWILIGHT_COST_MODIFIER, OVERWHELM_MODIFIER, WOUND_MODIFIER, BURDEN_MODIFIER, THREAT_MODIFIER, PRESENCE_MODIFIER, ARCHERY_MODIFIER, MOVE_LIMIT_MODIFIER, ACTION_MODIFIER, ASSIGNMENT_MODIFIER, DISCARD_FROM_PLAY_MODIFIER, DISCARD_NOT_FROM_PLAY, - LOOK_OR_REVEAL_MODIFIER, SPOT_MODIFIER, TARGET_MODIFIER, + LOOK_OR_REVEAL_MODIFIER, SPOT_MODIFIER, TARGET_MODIFIER, RETURN_TO_HAND_MODIFIER, EXTRA_ACTION_MODIFIER, INITIATIVE_MODIFIER, TEXT_MODIFIER, diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java index 9c0a92dbb..311abf0a6 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java @@ -677,6 +677,19 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying { } } + @Override + public boolean canBeReturnedToHand(GameState gameState, PhysicalCard card, PhysicalCard source) { + LoggingThreadLocal.logMethodStart(card, "canBeReturnedToHand"); + try { + for (Modifier modifier : getModifiersAffectingCard(gameState, ModifierEffect.RETURN_TO_HAND_MODIFIER, card)) + if (!modifier.canBeReturnedToHand(gameState, this, card, source)) + return false; + return true; + } finally { + LoggingThreadLocal.logMethodEnd(); + } + } + @Override public boolean canBeHealed(GameState gameState, PhysicalCard card) { LoggingThreadLocal.logMethodStart(card, "canBeHealed"); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java index f8058d31a..a2889f41d 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java @@ -96,6 +96,8 @@ public interface ModifiersQuerying { // Others public boolean canBeDiscardedFromPlay(GameState gameState, PhysicalCard card, PhysicalCard source); + public boolean canBeReturnedToHand(GameState gameState, PhysicalCard card, PhysicalCard source); + public boolean canDrawCardNoIncrement(GameState gameState, String playerId); public boolean canDrawCardAndIncrement(GameState gameState, String playerId); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleSet.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleSet.java index 240d75d1c..6d61d5936 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleSet.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleSet.java @@ -36,6 +36,8 @@ public class RuleSet { new FrodoAndSamRule(_modifiersLogic).applyRule(); + new RingBearerRule(_modifiersLogic).applyRule(); + new ThreatRule(_actionsEnvironment).applyRule(); } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/rules/RingBearerRule.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/rules/RingBearerRule.java new file mode 100644 index 000000000..21b0788e6 --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/rules/RingBearerRule.java @@ -0,0 +1,21 @@ +package com.gempukku.lotro.logic.timing.rules; + +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.logic.modifiers.CantDiscardFromPlayModifier; +import com.gempukku.lotro.logic.modifiers.CantReturnToHandModifier; +import com.gempukku.lotro.logic.modifiers.ModifiersLogic; + +public class RingBearerRule { + private ModifiersLogic _modifiersLogic; + + public RingBearerRule(ModifiersLogic modifiersLogic) { + _modifiersLogic = modifiersLogic; + } + + public void applyRule() { + _modifiersLogic.addAlwaysOnModifier( + new CantDiscardFromPlayModifier(null, "Can't be discarded from play", Filters.ringBearer, Filters.any)); + _modifiersLogic.addAlwaysOnModifier( + new CantReturnToHandModifier(null, "Can't be returned to hand", Filters.ringBearer, Filters.any)); + } +} diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html index c9de83de0..f048e8629 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html @@ -1,6 +1,7 @@
 24 Jan. 2012
 - "Horse of Rohan" now requires to spot ROHAN Man.
+- Ring-bearer can't be discarded or returned to hand.
 
 23 Jan. 2012
 - You can't create a League table, if you played maximum number of games in league serie. You can't join a league table