From c8c6f49dc012515d6012e54b8a1a7d8db8993807 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Thu, 1 Dec 2011 12:03:39 +0000 Subject: [PATCH] Roamin and Ring-bearer can't be removed with "text removal" effect. Ring-bound keyword can 't be removed from Ring-bearer by such effect. --- .../lotro/logic/modifiers/ModifiersLogic.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) 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 7bacfd03a..a107d58a0 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 @@ -189,7 +189,7 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying { public boolean hasKeyword(GameState gameState, PhysicalCard physicalCard, Keyword keyword) { LoggingThreadLocal.logMethodStart(physicalCard, "hasKeyword " + keyword.getHumanReadable()); try { - if (hasTextRemoved(gameState, physicalCard)) + if (isCandidateForKeywordRemovalWithTextRemoval(gameState, physicalCard, keyword) && hasTextRemoved(gameState, physicalCard)) return false; for (Modifier modifier : getModifiers(gameState, ModifierEffect.KEYWORD_MODIFIER)) { @@ -219,7 +219,7 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying { public int getKeywordCount(GameState gameState, PhysicalCard physicalCard, Keyword keyword) { LoggingThreadLocal.logMethodStart(physicalCard, "getKeywordCount " + keyword.getHumanReadable()); try { - if (hasTextRemoved(gameState, physicalCard)) + if (isCandidateForKeywordRemovalWithTextRemoval(gameState, physicalCard, keyword) && hasTextRemoved(gameState, physicalCard)) return 0; for (Modifier modifier : getModifiers(gameState, ModifierEffect.KEYWORD_MODIFIER)) { @@ -242,6 +242,17 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying { } } + private boolean isCandidateForKeywordRemovalWithTextRemoval(GameState gameState, PhysicalCard physicalCard, Keyword keyword) { + if (keyword == Keyword.RING_BEARER) + return false; + if (keyword == Keyword.ROAMING) + return false; + if (keyword == Keyword.RING_BOUND) + if (gameState.getRingBearer(physicalCard.getOwner()) == physicalCard) + return false; + return true; + } + private boolean appliesKeywordModifier(GameState gameState, PhysicalCard modifierSource, Keyword keyword) { if (modifierSource == null) return true;