- System now correctly recognizes attribute bonus from attribute penalty and the source of the bonus/penalty is checked for cancelling bonus modifiers.
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
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.logic.modifiers.AbstractModifier;
|
||||
@@ -11,15 +12,18 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class CancelKeywordBonusModifier extends AbstractModifier implements KeywordAffectingModifier {
|
||||
private Keyword _keyword;
|
||||
private Filterable _sourceFilter;
|
||||
|
||||
public CancelKeywordBonusModifier(PhysicalCard source, Keyword keyword, Filter affectFilter) {
|
||||
public CancelKeywordBonusModifier(PhysicalCard source, Keyword keyword, Filterable affectFilter, Filterable sourceFilter) {
|
||||
super(source, "Cancel " + keyword.getHumanReadable() + " keyword", affectFilter, ModifierEffect.CANCEL_KEYWORD_BONUS_MODIFIER);
|
||||
_keyword = keyword;
|
||||
_sourceFilter = sourceFilter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean appliesKeywordModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard modifierSource, Keyword keyword) {
|
||||
if (keyword == _keyword)
|
||||
if (keyword == _keyword
|
||||
&& (_sourceFilter == null || (modifierSource != null && Filters.and(_sourceFilter).accepts(gameState, modifiersQuerying, modifierSource))))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
package com.gempukku.lotro.cards.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.Condition;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class CancelStrengthBonusModifier extends AbstractModifier {
|
||||
public CancelStrengthBonusModifier(PhysicalCard source, Filter affectFilter) {
|
||||
super(source, "Cancel strength bonus", affectFilter, ModifierEffect.STRENGTH_MODIFIER);
|
||||
}
|
||||
|
||||
public CancelStrengthBonusModifier(PhysicalCard source, Condition condition, Filter affectFilter) {
|
||||
super(source, "Cancel strength bonus", affectFilter, condition, ModifierEffect.STRENGTH_MODIFIER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean appliesStrengthModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard modifierSource) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
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.Condition;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class CancelStrengthBonusSourceModifier extends AbstractModifier {
|
||||
public CancelStrengthBonusSourceModifier(PhysicalCard source, Filterable affectFilter) {
|
||||
super(source, "Cancel strength bonus", affectFilter, ModifierEffect.STRENGTH_BONUS_SOURCE_MODIFIER);
|
||||
}
|
||||
|
||||
public CancelStrengthBonusSourceModifier(PhysicalCard source, Condition condition, Filterable affectFilter) {
|
||||
super(source, "Cancel strength bonus", affectFilter, condition, ModifierEffect.STRENGTH_BONUS_SOURCE_MODIFIER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean appliesStrengthBonusModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard modifierSource, PhysicalCard modifierTaget) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
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.Condition;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class CancelStrengthBonusTargetModifier extends AbstractModifier {
|
||||
private Filterable _sourceFilter;
|
||||
|
||||
public CancelStrengthBonusTargetModifier(PhysicalCard source, Filterable affectFilter, Filterable sourceFilter) {
|
||||
super(source, "Has some strength bonuses cancelled", affectFilter, ModifierEffect.STRENGTH_BONUS_TARGET_MODIFIER);
|
||||
_sourceFilter = sourceFilter;
|
||||
}
|
||||
|
||||
public CancelStrengthBonusTargetModifier(PhysicalCard source, Condition condition, Filterable affectFilter, Filterable sourceFilter) {
|
||||
super(source, "Has some strength bonuses cancelled", affectFilter, condition, ModifierEffect.STRENGTH_BONUS_TARGET_MODIFIER);
|
||||
_sourceFilter = sourceFilter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean appliesStrengthBonusModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard modifierSource, PhysicalCard modifierTaget) {
|
||||
if (_sourceFilter == null || (modifierSource != null && Filters.and(_sourceFilter).accepts(gameState, modifiersQuerying, modifierSource)))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set1.isengard;
|
||||
import com.gempukku.lotro.cards.AbstractOldEvent;
|
||||
import com.gempukku.lotro.cards.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusSourceModifier;
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
@@ -43,7 +43,7 @@ public class Card1_132 extends AbstractOldEvent {
|
||||
protected void cardSelected(LotroGame game, PhysicalCard possession) {
|
||||
action.appendEffect(
|
||||
new AddUntilStartOfPhaseModifierEffect(
|
||||
new CancelStrengthBonusModifier(self, Filters.sameCard(possession)), Phase.REGROUP));
|
||||
new CancelStrengthBonusSourceModifier(self, Filters.sameCard(possession)), Phase.REGROUP));
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
@@ -1,18 +1,13 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractMinion;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusModifier;
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusTargetModifier;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Race;
|
||||
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.Skirmish;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
@@ -33,22 +28,6 @@ public class Card1_143 extends AbstractMinion {
|
||||
|
||||
@Override
|
||||
public Modifier getAlwaysOnModifier(final PhysicalCard self) {
|
||||
return new CancelStrengthBonusModifier(self, Filters.and(
|
||||
// Weapon bonus (Hand or Ranged)
|
||||
Filters.weapon,
|
||||
// That is attached to Companion or Ally
|
||||
Filters.attachedTo(Filters.or(CardType.COMPANION, CardType.ALLY)),
|
||||
// In a skirmish with this minion
|
||||
new Filter() {
|
||||
@Override
|
||||
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
|
||||
Skirmish skirmish = gameState.getSkirmish();
|
||||
if (skirmish != null
|
||||
&& skirmish.getShadowCharacters().contains(self))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
));
|
||||
return new CancelStrengthBonusTargetModifier(self, Filters.inSkirmishAgainst(self), Filters.weapon);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,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.CancelStrengthBonusModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusTargetModifier;
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
@@ -35,9 +35,13 @@ public class Card10_057 extends AbstractMinion {
|
||||
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
|
||||
List<Modifier> modifiers = new LinkedList<Modifier>();
|
||||
modifiers.add(
|
||||
new CancelStrengthBonusModifier(self, Filters.and(CardType.POSSESSION, Filters.attachedTo(CardType.COMPANION, Filters.inSkirmishAgainst(self)))));
|
||||
new CancelStrengthBonusTargetModifier(self,
|
||||
Filters.and(CardType.COMPANION, Filters.inSkirmishAgainst(self)),
|
||||
CardType.POSSESSION));
|
||||
modifiers.add(
|
||||
new CancelKeywordBonusModifier(self, Keyword.DAMAGE, Filters.and(CardType.POSSESSION, Filters.attachedTo(CardType.COMPANION, Filters.inSkirmishAgainst(self)))));
|
||||
new CancelKeywordBonusModifier(self, Keyword.DAMAGE,
|
||||
Filters.and(CardType.COMPANION, Filters.inSkirmishAgainst(self)),
|
||||
CardType.POSSESSION));
|
||||
return modifiers;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,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.CancelStrengthBonusModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusTargetModifier;
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
@@ -43,9 +43,13 @@ public class Card11_087 extends AbstractAttachable {
|
||||
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
|
||||
List<Modifier> modifiers = new LinkedList<Modifier>();
|
||||
modifiers.add(
|
||||
new CancelStrengthBonusModifier(self, Filters.and(CardType.POSSESSION, Filters.attachedTo(Filters.hasAttached(self), Filters.inSkirmishAgainst(Culture.MEN, CardType.MINION)))));
|
||||
new CancelStrengthBonusTargetModifier(self,
|
||||
Filters.and(Filters.hasAttached(self), Filters.inSkirmishAgainst(Culture.MEN, CardType.MINION)),
|
||||
CardType.POSSESSION));
|
||||
modifiers.add(
|
||||
new CancelKeywordBonusModifier(self, Keyword.DAMAGE, Filters.and(CardType.POSSESSION, Filters.attachedTo(Filters.hasAttached(self), Filters.inSkirmishAgainst(Culture.MEN, CardType.MINION)))));
|
||||
new CancelKeywordBonusModifier(self, Keyword.DAMAGE,
|
||||
Filters.and(Filters.hasAttached(self), Filters.inSkirmishAgainst(Culture.MEN, CardType.MINION)),
|
||||
CardType.POSSESSION));
|
||||
return modifiers;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.gempukku.lotro.cards.AbstractPermanent;
|
||||
import com.gempukku.lotro.cards.PlayConditions;
|
||||
import com.gempukku.lotro.cards.effects.SelfDiscardEffect;
|
||||
import com.gempukku.lotro.cards.effects.choose.ChooseAndTransferAttachableEffect;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusTargetModifier;
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
@@ -34,8 +34,9 @@ public class Card12_070 extends AbstractPermanent {
|
||||
|
||||
@Override
|
||||
public Modifier getAlwaysOnModifier(PhysicalCard self) {
|
||||
return new CancelStrengthBonusModifier(self, new SpotCondition(6, CardType.COMPANION),
|
||||
Filters.and(CardType.POSSESSION, Filters.attachedTo(CardType.COMPANION, Filters.inSkirmishAgainst(CardType.MINION, Culture.MEN))));
|
||||
return new CancelStrengthBonusTargetModifier(self, new SpotCondition(6, CardType.COMPANION),
|
||||
Filters.and(CardType.COMPANION, Filters.inSkirmishAgainst(Culture.MEN, CardType.MINION)),
|
||||
CardType.POSSESSION);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.gempukku.lotro.cards.set12.uruk_hai;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractMinion;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusTargetModifier;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Race;
|
||||
@@ -28,6 +28,8 @@ public class Card12_157 extends AbstractMinion {
|
||||
|
||||
@Override
|
||||
public Modifier getAlwaysOnModifier(PhysicalCard self) {
|
||||
return new CancelStrengthBonusModifier(self, Filters.and(Filters.weapon, Filters.attachedTo(Filters.inSkirmishAgainst(self))));
|
||||
return new CancelStrengthBonusTargetModifier(self,
|
||||
Filters.and(Filters.character, Filters.inSkirmishAgainst(self)),
|
||||
Filters.weapon);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.gempukku.lotro.cards.set13.gandalf;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractFollower;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusTargetModifier;
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Side;
|
||||
@@ -44,7 +44,8 @@ public class Card13_038 extends AbstractFollower {
|
||||
@Override
|
||||
protected List<? extends Modifier> getNonBasicStatsModifiers(PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new CancelStrengthBonusModifier(self, new SpotCondition(2, Culture.GANDALF, CardType.COMPANION),
|
||||
Filters.and(CardType.POSSESSION, Filters.attachedTo(CardType.MINION, Filters.inSkirmishAgainst(Filters.hasAttached(self))))));
|
||||
new CancelStrengthBonusTargetModifier(self, new SpotCondition(2, Culture.GANDALF, CardType.COMPANION),
|
||||
Filters.and(CardType.MINION, Filters.inSkirmishAgainst(Filters.hasAttached(self))),
|
||||
CardType.POSSESSION));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.gempukku.lotro.cards.set2.gondor;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractAttachableFPPossession;
|
||||
import com.gempukku.lotro.cards.modifiers.ArcheryTotalModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusTargetModifier;
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.PossessionClass;
|
||||
@@ -10,10 +10,9 @@ import com.gempukku.lotro.common.Side;
|
||||
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.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.modifiers.SpotCondition;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
@@ -42,13 +41,10 @@ public class Card2_038 extends AbstractAttachableFPPossession {
|
||||
List<Modifier> modifiers = new LinkedList<Modifier>();
|
||||
modifiers.add(new ArcheryTotalModifier(self, Side.SHADOW, -1));
|
||||
modifiers.add(
|
||||
new CancelStrengthBonusModifier(self, Filters.and(Filters.attachedTo(Filters.and(CardType.MINION, Filters.inSkirmish)),
|
||||
new Filter() {
|
||||
@Override
|
||||
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
|
||||
return gameState.getSkirmish() != null && gameState.getSkirmish().getFellowshipCharacter() == self.getAttachedTo();
|
||||
}
|
||||
})));
|
||||
new CancelStrengthBonusTargetModifier(self,
|
||||
new SpotCondition(Filters.boromir, Filters.hasAttached(self)),
|
||||
Filters.and(CardType.MINION, Filters.inSkirmishAgainst(Filters.boromir)),
|
||||
Filters.weapon));
|
||||
return modifiers;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.gempukku.lotro.cards.set2.shire;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractAttachableFPPossession;
|
||||
import com.gempukku.lotro.cards.modifiers.ArcheryTotalModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusTargetModifier;
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
@@ -39,7 +39,9 @@ public class Card2_105 extends AbstractAttachableFPPossession {
|
||||
modifiers.add(
|
||||
new ArcheryTotalModifier(self, Side.SHADOW, -1));
|
||||
modifiers.add(
|
||||
new CancelStrengthBonusModifier(self, Filters.and(Filters.weapon, Filters.attachedTo(Filters.inSkirmishAgainst(Filters.hasAttached(self))))));
|
||||
new CancelStrengthBonusTargetModifier(self,
|
||||
Filters.and(CardType.MINION, Filters.inSkirmishAgainst(Filters.frodo)),
|
||||
Filters.weapon));
|
||||
modifiers.add(
|
||||
new RemoveKeywordModifier(self, Filters.inSkirmishAgainst(Filters.hasAttached(self)), Keyword.DAMAGE));
|
||||
return modifiers;
|
||||
|
||||
@@ -29,9 +29,7 @@ public class Card3_072 extends AbstractPermanent {
|
||||
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new CancelKeywordBonusModifier(self, Keyword.DAMAGE,
|
||||
Filters.and(
|
||||
Filters.weapon,
|
||||
Filters.attachedTo(Filters.inSkirmishAgainst(Filters.and(Culture.ISENGARD, Race.ORC)))
|
||||
)));
|
||||
Filters.and(Filters.character, Filters.inSkirmishAgainst(Culture.ISENGARD, Race.ORC)),
|
||||
Filters.weapon));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import com.gempukku.lotro.cards.effects.AddTokenEffect;
|
||||
import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.cards.effects.RemoveTokenEffect;
|
||||
import com.gempukku.lotro.cards.effects.RemoveTwilightEffect;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusTargetModifier;
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
@@ -55,7 +55,9 @@ public class Card4_028 extends AbstractPermanent {
|
||||
protected void cardSelected(LotroGame game, PhysicalCard dunlandMan) {
|
||||
action.appendEffect(
|
||||
new AddUntilEndOfPhaseModifierEffect(
|
||||
new CancelStrengthBonusModifier(self, Filters.and(CardType.POSSESSION, Filters.attachedTo(Filters.inSkirmishAgainst(Filters.sameCard(dunlandMan))))), Phase.SKIRMISH));
|
||||
new CancelStrengthBonusTargetModifier(self,
|
||||
Filters.and(Filters.character, Filters.inSkirmishAgainst(dunlandMan)),
|
||||
CardType.POSSESSION), Phase.SKIRMISH));
|
||||
}
|
||||
});
|
||||
return Collections.singletonList(action);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.gempukku.lotro.cards.set8.wraith;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractMinion;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusModifier;
|
||||
import com.gempukku.lotro.cards.modifiers.CancelStrengthBonusTargetModifier;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Race;
|
||||
@@ -33,7 +33,8 @@ public class Card8_084 extends AbstractMinion {
|
||||
@Override
|
||||
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new CancelStrengthBonusModifier(self,
|
||||
Filters.and(Filters.weapon, Filters.attachedTo(Race.MAN, Filters.inSkirmishAgainst(self)))));
|
||||
new CancelStrengthBonusTargetModifier(self,
|
||||
Filters.and(Race.MAN, Filters.inSkirmishAgainst(self)),
|
||||
Filters.weapon));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ public abstract class AbstractModifier implements Modifier {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean appliesStrengthModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard modifierSource) {
|
||||
public boolean appliesStrengthBonusModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard modifierSource, PhysicalCard modifierTaget) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ public interface Modifier {
|
||||
|
||||
public int getStrengthModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard);
|
||||
|
||||
public boolean appliesStrengthModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard modifierSource);
|
||||
public boolean appliesStrengthBonusModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard modifierSource, PhysicalCard modifierTaget);
|
||||
|
||||
public int getVitalityModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard);
|
||||
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package com.gempukku.lotro.logic.modifiers;
|
||||
|
||||
public enum ModifierEffect {
|
||||
SIGNET_MODIFIER, STRENGTH_MODIFIER, VITALITY_MODIFIER, RESISTANCE_MODIFIER, SITE_NUMBER_MODIFIER, TWILIGHT_COST_MODIFIER, OVERWHELM_MODIFIER,
|
||||
SIGNET_MODIFIER, STRENGTH_MODIFIER,
|
||||
STRENGTH_BONUS_SOURCE_MODIFIER,
|
||||
STRENGTH_BONUS_TARGET_MODIFIER,
|
||||
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,
|
||||
|
||||
@@ -306,8 +306,9 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
|
||||
try {
|
||||
int result = physicalCard.getBlueprint().getStrength();
|
||||
for (Modifier modifier : getModifiersAffectingCard(gameState, ModifierEffect.STRENGTH_MODIFIER, physicalCard)) {
|
||||
if (appliesStrengthModifier(gameState, modifier.getSource()))
|
||||
result += modifier.getStrengthModifier(gameState, this, physicalCard);
|
||||
final int strengthModifier = modifier.getStrengthModifier(gameState, this, physicalCard);
|
||||
if (strengthModifier <= 0 || appliesStrengthBonusModifier(gameState, modifier.getSource(), physicalCard))
|
||||
result += strengthModifier;
|
||||
}
|
||||
return Math.max(0, result);
|
||||
} finally {
|
||||
@@ -315,13 +316,17 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean appliesStrengthModifier(GameState gameState, PhysicalCard modifierSource) {
|
||||
if (modifierSource == null)
|
||||
return true;
|
||||
for (Modifier modifier : getModifiersAffectingCard(gameState, ModifierEffect.STRENGTH_MODIFIER, modifierSource)) {
|
||||
if (!modifier.appliesStrengthModifier(gameState, this, modifierSource))
|
||||
return false;
|
||||
}
|
||||
private boolean appliesStrengthBonusModifier(GameState gameState, PhysicalCard modifierSource, PhysicalCard modifierTarget) {
|
||||
if (modifierSource != null)
|
||||
for (Modifier modifier : getModifiersAffectingCard(gameState, ModifierEffect.STRENGTH_BONUS_SOURCE_MODIFIER, modifierSource)) {
|
||||
if (!modifier.appliesStrengthBonusModifier(gameState, this, modifierSource, modifierTarget))
|
||||
return false;
|
||||
}
|
||||
if (modifierTarget != null)
|
||||
for (Modifier modifier : getModifiersAffectingCard(gameState, ModifierEffect.STRENGTH_BONUS_TARGET_MODIFIER, modifierTarget)) {
|
||||
if (!modifier.appliesStrengthBonusModifier(gameState, this, modifierSource, modifierTarget))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
- "Fearless" should now be giving a proper bonus to the minion.
|
||||
- "Orthanc Warrior" has a propert name now.
|
||||
- Added "Bloodlines" (set 13) set.
|
||||
- "Master Proudfoot" now gives an option of choosing which cards to put into hand, because of Rule of 4.
|
||||
- "Master Proudfoot" now gives an option of choosing which cards to put into hand, because of Rule of 4.
|
||||
- System now correctly recognizes attribute bonus from attribute penalty and the source of the bonus/penalty is checked
|
||||
for cancelling bonus modifiers.
|
||||
|
||||
<b>15 Jan. 2012</b>
|
||||
- "Hobbit Farmer" and other allies copying site text should now be able to activate the site phase actions.
|
||||
|
||||
Reference in New Issue
Block a user