From d0fcad732ed2b097da096075655c8fc1df2ec8b9 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Thu, 10 Nov 2011 00:37:40 +0000 Subject: [PATCH] Fixing how limit works. --- .../lotro/cards/set1/isengard/Card1_153.java | 10 +++--- .../lotro/cards/set1/sauron/Card1_269.java | 9 ++--- .../lotro/cards/set1/wraith/Card1_229.java | 9 ++--- .../lotro/cards/set3/gandalf/Card3_035.java | 8 +++-- .../lotro/cards/set4/elven/Card4_082.java | 2 +- .../lotro/cards/set4/rohan/Card4_365.java | 34 +++++++++---------- .../lotro/cards/set4/shire/Card4_305.java | 2 +- .../lotro/cards/set6/rohan/Card6_095.java | 9 ++--- .../lotro/cards/set7/gandalf/Card7_051.java | 1 + 9 files changed, 46 insertions(+), 38 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_153.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_153.java index 5e72290ad..95524cb86 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_153.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_153.java @@ -3,8 +3,8 @@ package com.gempukku.lotro.cards.set1.isengard; import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; -import com.gempukku.lotro.cards.effects.CheckLimitEffect; import com.gempukku.lotro.cards.effects.RemoveTwilightEffect; +import com.gempukku.lotro.cards.modifiers.evaluator.CardLimitEvaluator; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Phase; @@ -14,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.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.modifiers.evaluator.ConstantEvaluator; import com.gempukku.lotro.logic.timing.Action; import java.util.Collections; @@ -42,9 +43,10 @@ public class Card1_153 extends AbstractMinion { final ActivateCardAction action = new ActivateCardAction(self); action.appendCost(new RemoveTwilightEffect(1)); action.appendEffect( - new CheckLimitEffect(action, self, 3, Phase.SKIRMISH, - new AddUntilEndOfPhaseModifierEffect( - new StrengthModifier(self, Filters.sameCard(self), 1), Phase.SKIRMISH))); + new AddUntilEndOfPhaseModifierEffect( + new StrengthModifier(self, Filters.sameCard(self), null, + new CardLimitEvaluator(game, self, Phase.SKIRMISH, 3, + new ConstantEvaluator(1))), Phase.SKIRMISH)); return Collections.singletonList(action); } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_269.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_269.java index 233c75a1b..4abf3b619 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_269.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/sauron/Card1_269.java @@ -3,8 +3,8 @@ package com.gempukku.lotro.cards.set1.sauron; import com.gempukku.lotro.cards.AbstractAttachable; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; -import com.gempukku.lotro.cards.effects.CheckLimitEffect; import com.gempukku.lotro.cards.effects.RemoveTwilightEffect; +import com.gempukku.lotro.cards.modifiers.evaluator.CardLimitEvaluator; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.filters.Filters; @@ -13,6 +13,7 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.modifiers.evaluator.ConstantEvaluator; import com.gempukku.lotro.logic.timing.Action; import java.util.Collections; @@ -49,9 +50,9 @@ public class Card1_269 extends AbstractAttachable { action.appendCost( new RemoveTwilightEffect(1)); action.appendEffect( - new CheckLimitEffect(action, self, 3, Phase.SKIRMISH, - new AddUntilEndOfPhaseModifierEffect( - new StrengthModifier(self, Filters.sameCard(self.getAttachedTo()), 1), Phase.SKIRMISH))); + new AddUntilEndOfPhaseModifierEffect( + new StrengthModifier(self, Filters.sameCard(self.getAttachedTo()), null, + new CardLimitEvaluator(game, self, Phase.SKIRMISH, 3, new ConstantEvaluator(1))), Phase.SKIRMISH)); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_229.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_229.java index 9140ab96c..178783525 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_229.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_229.java @@ -3,8 +3,8 @@ package com.gempukku.lotro.cards.set1.wraith; import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; -import com.gempukku.lotro.cards.effects.CheckLimitEffect; import com.gempukku.lotro.cards.effects.RemoveTwilightEffect; +import com.gempukku.lotro.cards.modifiers.evaluator.CardLimitEvaluator; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Phase; @@ -14,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.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.modifiers.evaluator.ConstantEvaluator; import com.gempukku.lotro.logic.timing.Action; import java.util.Collections; @@ -42,9 +43,9 @@ public class Card1_229 extends AbstractMinion { ActivateCardAction action = new ActivateCardAction(self); action.appendCost(new RemoveTwilightEffect(1)); action.appendEffect( - new CheckLimitEffect(action, self, 5, Phase.SKIRMISH, - new AddUntilEndOfPhaseModifierEffect( - new StrengthModifier(self, Filters.sameCard(self), 1), Phase.SKIRMISH))); + new AddUntilEndOfPhaseModifierEffect( + new StrengthModifier(self, Filters.sameCard(self), null, + new CardLimitEvaluator(game, self, Phase.SKIRMISH, 5, new ConstantEvaluator(1))), Phase.SKIRMISH)); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gandalf/Card3_035.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gandalf/Card3_035.java index 5b6a2f5b6..151745263 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gandalf/Card3_035.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gandalf/Card3_035.java @@ -4,6 +4,8 @@ import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.cards.modifiers.evaluator.CardLimitEvaluator; +import com.gempukku.lotro.cards.modifiers.evaluator.CountSpottableEvaluator; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -41,11 +43,11 @@ public class Card3_035 extends AbstractPermanent { new ChooseActiveCardEffect(self, playerId, "Chooose a companion", Filters.type(CardType.COMPANION)) { @Override protected void cardSelected(LotroGame game, PhysicalCard card) { - int gandalfSignet = Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), new com.gempukku.lotro.filters.Filter[]{Filters.type(CardType.COMPANION), Filters.signet(Signet.GANDALF)}); - int bonus = Math.min(3, gandalfSignet); action.insertEffect( new AddUntilEndOfPhaseModifierEffect( - new StrengthModifier(self, Filters.sameCard(card), bonus), Phase.SKIRMISH)); + new StrengthModifier(self, Filters.sameCard(card), null, + new CardLimitEvaluator(game, self, Phase.SKIRMISH, 3, + new CountSpottableEvaluator(CardType.COMPANION, Signet.GANDALF))), Phase.SKIRMISH)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_082.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_082.java index 79077f52d..a59badecf 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_082.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_082.java @@ -53,7 +53,7 @@ public class Card4_082 extends AbstractPermanent { new ChooseActiveCardEffect(self, playerId, "Choose minion", Filters.type(CardType.MINION), Filters.inSkirmishAgainst(Filters.race(Race.ELF))) { @Override protected void cardSelected(LotroGame game, PhysicalCard card) { - int bonus = -game.getGameState().getTokenCount(self, Token.ELVEN); + int bonus = Math.max(-3, -game.getGameState().getTokenCount(self, Token.ELVEN)); action.insertEffect( new AddUntilEndOfPhaseModifierEffect( new StrengthModifier(self, Filters.sameCard(card), bonus), Phase.SKIRMISH)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_365.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_365.java index abf02c227..096cb08f7 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_365.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_365.java @@ -45,23 +45,23 @@ public class Card4_365 extends AbstractCompanion { final Filter additionalAttachmentFilter = Filters.and(Culture.ROHAN, CardType.COMPANION); final ActivateCardAction action = new ActivateCardAction(self); action.appendCost( - new CheckLimitEffect(action, self, 1, Phase.FELLOWSHIP, - new ChooseArbitraryCardsEffect(playerId, "Choose card to play", game.getGameState().getHand(playerId), - Filters.and( - Culture.ROHAN, - CardType.POSSESSION, - ExtraFilters.attachableTo(game, additionalAttachmentFilter)), 1, 1) { - @Override - protected void cardsSelected(LotroGame game, Collection selectedCards) { - if (selectedCards.size() > 0) { - PhysicalCard selectedCard = selectedCards.iterator().next(); - AttachPermanentAction attachPermanentAction = ((AbstractAttachable) selectedCard.getBlueprint()).getPlayCardAction(playerId, game, selectedCard, additionalAttachmentFilter, 0); - game.getActionsEnvironment().addActionToStack(attachPermanentAction); - action.appendEffect( - new AppendHealTargetEffect(action, attachPermanentAction)); - } - } - })); + new ChooseArbitraryCardsEffect(playerId, "Choose card to play", game.getGameState().getHand(playerId), + Filters.and( + Culture.ROHAN, + CardType.POSSESSION, + ExtraFilters.attachableTo(game, additionalAttachmentFilter)), 1, 1) { + @Override + protected void cardsSelected(LotroGame game, Collection selectedCards) { + if (selectedCards.size() > 0) { + PhysicalCard selectedCard = selectedCards.iterator().next(); + AttachPermanentAction attachPermanentAction = ((AbstractAttachable) selectedCard.getBlueprint()).getPlayCardAction(playerId, game, selectedCard, additionalAttachmentFilter, 0); + game.getActionsEnvironment().addActionToStack(attachPermanentAction); + action.appendEffect( + new CheckLimitEffect(action, self, 1, Phase.FELLOWSHIP, + new AppendHealTargetEffect(action, attachPermanentAction))); + } + } + }); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_305.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_305.java index 26bdf59aa..9e172f6a0 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_305.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/shire/Card4_305.java @@ -44,7 +44,7 @@ public class Card4_305 extends AbstractPermanent { @Override protected List getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) { if (PlayConditions.canUseFPCardDuringPhase(game.getGameState(), Phase.FELLOWSHIP, self)) { - int tokenCount = game.getGameState().getTokenCount(self, Token.SHIRE); + int tokenCount = Math.min(3, game.getGameState().getTokenCount(self, Token.SHIRE)); ActivateCardAction action = new ActivateCardAction(self); for (int i = 0; i < tokenCount; i++) action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/rohan/Card6_095.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/rohan/Card6_095.java index 603f0ba81..4f3fb8e16 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/rohan/Card6_095.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/rohan/Card6_095.java @@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set6.rohan; import com.gempukku.lotro.cards.AbstractCompanion; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; -import com.gempukku.lotro.cards.effects.CheckLimitEffect; +import com.gempukku.lotro.cards.modifiers.evaluator.CardLimitEvaluator; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Phase; @@ -14,6 +14,7 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.effects.ChooseAndHealCharactersEffect; import com.gempukku.lotro.logic.modifiers.StrengthModifier; +import com.gempukku.lotro.logic.modifiers.evaluator.ConstantEvaluator; import java.util.Collections; import java.util.List; @@ -49,9 +50,9 @@ public class Card6_095 extends AbstractCompanion { action.appendCost( new ChooseAndHealCharactersEffect(action, playerId, 1, 1, CardType.MINION, Filters.inSkirmishAgainst(self))); action.appendEffect( - new CheckLimitEffect(action, self, 1, Phase.SKIRMISH, - new AddUntilEndOfPhaseModifierEffect( - new StrengthModifier(self, self, 3), Phase.SKIRMISH))); + new AddUntilEndOfPhaseModifierEffect( + new StrengthModifier(self, self, null, + new CardLimitEvaluator(game, self, Phase.SKIRMISH, 3, new ConstantEvaluator(3))), Phase.SKIRMISH)); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gandalf/Card7_051.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gandalf/Card7_051.java index 51f8f946e..539431941 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gandalf/Card7_051.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gandalf/Card7_051.java @@ -41,6 +41,7 @@ public class Card7_051 extends AbstractEvent { new ForEachTwilightTokenYouSpotEffect(playerId) { @Override protected void twilightTokensSpotted(int twilightTokens) { + twilightTokens = Math.min(8, twilightTokens); action.insertEffect( new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, twilightTokens, Filters.gandalf)); }