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.

This commit is contained in:
marcins78@gmail.com
2011-12-01 12:03:39 +00:00
parent cd784314f1
commit c8c6f49dc0

View File

@@ -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;