- Cards that remove keyword bonuses (like "Trapped and Alone") now correctly remove the keyword bonuses.

This commit is contained in:
marcins78@gmail.com
2012-01-26 15:28:41 +00:00
parent ea6fea0603
commit 589686af38
7 changed files with 17 additions and 14 deletions

View File

@@ -10,12 +10,12 @@ import com.gempukku.lotro.logic.modifiers.KeywordAffectingModifier;
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
public class CancelKeywordBonusModifier extends AbstractModifier implements KeywordAffectingModifier {
public class CancelKeywordBonusTargetModifier extends AbstractModifier implements KeywordAffectingModifier {
private Keyword _keyword;
private Filterable _sourceFilter;
public CancelKeywordBonusModifier(PhysicalCard source, Keyword keyword, Filterable affectFilter, Filterable sourceFilter) {
super(source, "Cancel " + keyword.getHumanReadable() + " keyword", affectFilter, ModifierEffect.CANCEL_KEYWORD_BONUS_MODIFIER);
public CancelKeywordBonusTargetModifier(PhysicalCard source, Keyword keyword, Filterable affectFilter, Filterable sourceFilter) {
super(source, "Cancel " + keyword.getHumanReadable() + " keyword", affectFilter, ModifierEffect.CANCEL_KEYWORD_BONUS_TARGET_MODIFIER);
_keyword = keyword;
_sourceFilter = sourceFilter;
}

View File

@@ -1,7 +1,7 @@
package com.gempukku.lotro.cards.set10.wraith;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.modifiers.CancelKeywordBonusModifier;
import com.gempukku.lotro.cards.modifiers.CancelKeywordBonusTargetModifier;
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusTargetModifier;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
@@ -39,7 +39,7 @@ public class Card10_057 extends AbstractMinion {
Filters.and(CardType.COMPANION, Filters.inSkirmishAgainst(self)),
CardType.POSSESSION));
modifiers.add(
new CancelKeywordBonusModifier(self, Keyword.DAMAGE,
new CancelKeywordBonusTargetModifier(self, Keyword.DAMAGE,
Filters.and(CardType.COMPANION, Filters.inSkirmishAgainst(self)),
CardType.POSSESSION));
return modifiers;

View File

@@ -2,7 +2,7 @@ package com.gempukku.lotro.cards.set11.men;
import com.gempukku.lotro.cards.AbstractAttachable;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.modifiers.CancelKeywordBonusModifier;
import com.gempukku.lotro.cards.modifiers.CancelKeywordBonusTargetModifier;
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusTargetModifier;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filter;
@@ -47,7 +47,7 @@ public class Card11_087 extends AbstractAttachable {
Filters.and(Filters.hasAttached(self), Filters.inSkirmishAgainst(Culture.MEN, CardType.MINION)),
CardType.POSSESSION));
modifiers.add(
new CancelKeywordBonusModifier(self, Keyword.DAMAGE,
new CancelKeywordBonusTargetModifier(self, Keyword.DAMAGE,
Filters.and(Filters.hasAttached(self), Filters.inSkirmishAgainst(Culture.MEN, CardType.MINION)),
CardType.POSSESSION));
return modifiers;

View File

@@ -1,7 +1,7 @@
package com.gempukku.lotro.cards.set3.isengard;
import com.gempukku.lotro.cards.AbstractPermanent;
import com.gempukku.lotro.cards.modifiers.CancelKeywordBonusModifier;
import com.gempukku.lotro.cards.modifiers.CancelKeywordBonusTargetModifier;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
@@ -28,7 +28,7 @@ public class Card3_072 extends AbstractPermanent {
@Override
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new CancelKeywordBonusModifier(self, Keyword.DAMAGE,
new CancelKeywordBonusTargetModifier(self, Keyword.DAMAGE,
Filters.and(Filters.character, Filters.inSkirmishAgainst(Culture.ISENGARD, Race.ORC)),
Filters.weapon));
}

View File

@@ -15,5 +15,5 @@ public enum ModifierEffect {
ADDITIONAL_CARD_TYPE,
REMOVE_KEYWORD_MODIFIER, GIVE_KEYWORD_MODIFIER, CANCEL_KEYWORD_BONUS_MODIFIER
REMOVE_KEYWORD_MODIFIER, GIVE_KEYWORD_MODIFIER, CANCEL_KEYWORD_BONUS_TARGET_MODIFIER
}

View File

@@ -216,7 +216,7 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
return true;
for (Modifier modifier : getKeywordModifiersAffectingCard(gameState, ModifierEffect.GIVE_KEYWORD_MODIFIER, keyword, physicalCard)) {
if (appliesKeywordModifier(gameState, modifier.getSource(), keyword))
if (appliesKeywordModifier(gameState, physicalCard, modifier.getSource(), keyword))
if (modifier.hasKeyword(gameState, this, physicalCard, keyword))
return true;
}
@@ -240,7 +240,7 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
int result = physicalCard.getBlueprint().getKeywordCount(keyword);
for (Modifier modifier : getKeywordModifiersAffectingCard(gameState, ModifierEffect.GIVE_KEYWORD_MODIFIER, keyword, physicalCard)) {
if (appliesKeywordModifier(gameState, modifier.getSource(), keyword))
if (appliesKeywordModifier(gameState, physicalCard, modifier.getSource(), keyword))
result += modifier.getKeywordCountModifier(gameState, this, physicalCard, keyword);
}
return Math.max(0, result);
@@ -258,10 +258,10 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
return true;
}
private boolean appliesKeywordModifier(GameState gameState, PhysicalCard modifierSource, Keyword keyword) {
private boolean appliesKeywordModifier(GameState gameState, PhysicalCard affecting, PhysicalCard modifierSource, Keyword keyword) {
if (modifierSource == null)
return true;
for (Modifier modifier : getKeywordModifiersAffectingCard(gameState, ModifierEffect.CANCEL_KEYWORD_BONUS_MODIFIER, keyword, modifierSource)) {
for (Modifier modifier : getKeywordModifiersAffectingCard(gameState, ModifierEffect.CANCEL_KEYWORD_BONUS_TARGET_MODIFIER, keyword, affecting)) {
if (!modifier.appliesKeywordModifier(gameState, this, modifierSource, keyword))
return false;
}

View File

@@ -1,4 +1,7 @@
<pre style="font-size:80%">
<b>26 Jan. 2012</b>
- Cards that remove keyword bonuses (like "Trapped and Alone") now correctly remove the keyword bonuses.
<b>24 Jan. 2012</b>
- "Horse of Rohan" now requires to spot ROHAN Man.
- Ring-bearer can't be discarded or returned to hand.