From c00aa8ad41946dad882dc3740c20bb2d7d3e8998 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Mon, 14 Nov 2011 12:03:50 +0000 Subject: [PATCH] "Corsair Freebooter" --- .../gempukku/lotro/cards/PlayConditions.java | 4 ++ ...AndRemoveCultureTokensFromCardEffect.java} | 6 +- .../lotro/cards/set5/isengard/Card5_045.java | 4 +- .../lotro/cards/set5/isengard/Card5_046.java | 4 +- .../lotro/cards/set5/isengard/Card5_047.java | 4 +- .../lotro/cards/set5/rohan/Card5_079.java | 4 +- .../lotro/cards/set5/rohan/Card5_087.java | 4 +- .../lotro/cards/set6/gondor/Card6_050.java | 8 +-- .../lotro/cards/set6/gondor/Card6_055.java | 2 +- .../lotro/cards/set6/isengard/Card6_060.java | 4 +- .../lotro/cards/set7/gondor/Card7_107.java | 4 +- .../lotro/cards/set7/sauron/Card7_281.java | 4 +- .../lotro/cards/set8/raider/Card8_049.java | 4 +- .../lotro/cards/set8/raider/Card8_054.java | 58 +++++++++++++++++++ .../com/gempukku/lotro/filters/Filters.java | 9 +-- 15 files changed, 93 insertions(+), 30 deletions(-) rename gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/{ChooseAndRemoveTokensFromCardEffect.java => ChooseAndRemoveCultureTokensFromCardEffect.java} (80%) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/raider/Card8_054.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java index 2d47156e5..4d6b06478 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java @@ -539,6 +539,10 @@ public class PlayConditions { return Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), Filters.and(fromFilters, Filters.hasToken(token, count))).size() > 0; } + public static boolean canRemoveAnyCultureTokens(LotroGame game, int count, Filterable... fromFilters) { + return Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), Filters.and(fromFilters, Filters.hasAnyCultureTokens(count))).size() > 0; + } + public static boolean canRemoveToken(GameState gameState, PhysicalCard from, Token token) { return canRemoveToken(gameState, from, token, 1); } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndRemoveTokensFromCardEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndRemoveCultureTokensFromCardEffect.java similarity index 80% rename from gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndRemoveTokensFromCardEffect.java rename to gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndRemoveCultureTokensFromCardEffect.java index 8e4d1e02c..5d7ce5853 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndRemoveTokensFromCardEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/choose/ChooseAndRemoveCultureTokensFromCardEffect.java @@ -8,11 +8,11 @@ import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; -public class ChooseAndRemoveTokensFromCardEffect extends ChooseActiveCardEffect { +public class ChooseAndRemoveCultureTokensFromCardEffect extends ChooseActiveCardEffect { private Token _token; private int _count; - public ChooseAndRemoveTokensFromCardEffect(PhysicalCard source, String playerId, Token token, int count, Filterable... filters) { + public ChooseAndRemoveCultureTokensFromCardEffect(PhysicalCard source, String playerId, Token token, int count, Filterable... filters) { super(source, playerId, "Choose card to remove tokens from", filters); _token = token; _count = count; @@ -23,7 +23,7 @@ public class ChooseAndRemoveTokensFromCardEffect extends ChooseActiveCardEffect if (_token != null) return Filters.hasToken(_token, _count); else - return Filters.hasAnyTokens(_count); + return Filters.hasAnyCultureTokens(_count); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/isengard/Card5_045.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/isengard/Card5_045.java index 48c2de25f..3a4494c3a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/isengard/Card5_045.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/isengard/Card5_045.java @@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set5.isengard; import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.ExertCharactersEffect; -import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveTokensFromCardEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveCultureTokensFromCardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -61,7 +61,7 @@ public class Card5_045 extends AbstractMinion { && PlayConditions.canRemoveTokens(game, Token.ISENGARD, 3, Keyword.MACHINE)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( - new ChooseAndRemoveTokensFromCardEffect(self, playerId, Token.ISENGARD, 3, Keyword.MACHINE)); + new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, Token.ISENGARD, 3, Keyword.MACHINE)); action.appendCost( new ExertCharactersEffect(self, self)); action.appendCost( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/isengard/Card5_046.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/isengard/Card5_046.java index 04261d1db..814aee321 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/isengard/Card5_046.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/isengard/Card5_046.java @@ -4,7 +4,7 @@ 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.ExertCharactersEffect; -import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveTokensFromCardEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveCultureTokensFromCardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -61,7 +61,7 @@ public class Card5_046 extends AbstractMinion { && PlayConditions.canRemoveTokens(game, Token.ISENGARD, 4, Keyword.MACHINE)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( - new ChooseAndRemoveTokensFromCardEffect(self, playerId, Token.ISENGARD, 4, Keyword.MACHINE)); + new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, Token.ISENGARD, 4, Keyword.MACHINE)); action.appendCost( new ExertCharactersEffect(self, self)); action.appendCost( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/isengard/Card5_047.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/isengard/Card5_047.java index 2a68afeca..74f61c989 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/isengard/Card5_047.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/isengard/Card5_047.java @@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set5.isengard; import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.ExertCharactersEffect; -import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveTokensFromCardEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveCultureTokensFromCardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -61,7 +61,7 @@ public class Card5_047 extends AbstractMinion { && PlayConditions.canRemoveTokens(game, Token.ISENGARD, 5, Keyword.MACHINE)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( - new ChooseAndRemoveTokensFromCardEffect(self, playerId, Token.ISENGARD, 5, Keyword.MACHINE)); + new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, Token.ISENGARD, 5, Keyword.MACHINE)); action.appendCost( new ExertCharactersEffect(self, self)); action.appendCost( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/rohan/Card5_079.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/rohan/Card5_079.java index 32ba2bfbc..5350b3581 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/rohan/Card5_079.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/rohan/Card5_079.java @@ -4,7 +4,7 @@ import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.ChoiceEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndPutCardFromDiscardIntoHandEffect; -import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveTokensFromCardEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveCultureTokensFromCardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; @@ -39,7 +39,7 @@ public class Card5_079 extends AbstractPermanent { ActivateCardAction action = new ActivateCardAction(self); List possibleEffects = new LinkedList(); possibleEffects.add( - new ChooseAndRemoveTokensFromCardEffect(self, playerId, null, 2, Keyword.MACHINE) { + new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, null, 2, Keyword.MACHINE) { @Override public String getText(LotroGame game) { return "Remove 2 tokens from a machine"; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/rohan/Card5_087.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/rohan/Card5_087.java index e62d4c6cc..5fea4c76e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/rohan/Card5_087.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set5/rohan/Card5_087.java @@ -4,7 +4,7 @@ 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.ChoiceEffect; -import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveTokensFromCardEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveCultureTokensFromCardEffect; import com.gempukku.lotro.cards.modifiers.ArcheryTotalModifier; import com.gempukku.lotro.common.*; import com.gempukku.lotro.game.PhysicalCard; @@ -40,7 +40,7 @@ public class Card5_087 extends AbstractPermanent { ActivateCardAction action = new ActivateCardAction(self); List possibleEffects = new LinkedList(); possibleEffects.add( - new ChooseAndRemoveTokensFromCardEffect(self, playerId, null, 2, Keyword.MACHINE) { + new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, null, 2, Keyword.MACHINE) { @Override public String getText(LotroGame game) { return "Remove 2 tokens from a machine"; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gondor/Card6_050.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gondor/Card6_050.java index ff5ffbbab..ea665c5d8 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gondor/Card6_050.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gondor/Card6_050.java @@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set6.gondor; 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.choose.ChooseAndRemoveTokensFromCardEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveCultureTokensFromCardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -44,7 +44,7 @@ public class Card6_050 extends AbstractCompanion { final ActivateCardAction action = new ActivateCardAction(self); action.setText("Remove ELVEN token..."); action.appendCost( - new ChooseAndRemoveTokensFromCardEffect(self, playerId, Token.ELVEN, 1, Filters.any)); + new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, Token.ELVEN, 1, Filters.any)); action.appendEffect( new ChooseActiveCardEffect(self, playerId, "Choose a minion", CardType.MINION, Filters.inSkirmishAgainst(self)) { @Override @@ -61,7 +61,7 @@ public class Card6_050 extends AbstractCompanion { final ActivateCardAction action = new ActivateCardAction(self); action.setText("Remove DWARVEN token..."); action.appendCost( - new ChooseAndRemoveTokensFromCardEffect(self, playerId, Token.DWARVEN, 1, Filters.any)); + new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, Token.DWARVEN, 1, Filters.any)); action.appendEffect( new ChooseAndHealCharactersEffect(action, playerId, 1, 1, Race.DWARF)); actions.add(action); @@ -71,7 +71,7 @@ public class Card6_050 extends AbstractCompanion { && PlayConditions.canRemoveTokens(game, Token.ROHAN, 1, Filters.any)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( - new ChooseAndRemoveTokensFromCardEffect(self, playerId, Token.ROHAN, 1, Filters.any)); + new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, Token.ROHAN, 1, Filters.any)); action.appendEffect( new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, 2, CardType.MINION)); actions.add(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gondor/Card6_055.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gondor/Card6_055.java index 0f51873f1..44a5ba727 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gondor/Card6_055.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/gondor/Card6_055.java @@ -37,7 +37,7 @@ public class Card6_055 extends AbstractAttachableFPPossession { public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { if (effectResult.getType() == EffectResult.Type.START_OF_TURN) { final Set cultureTokens = new HashSet(); - for (PhysicalCard physicalCard : Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), Filters.hasAnyTokens(1))) { + for (PhysicalCard physicalCard : Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), Filters.hasAnyCultureTokens(1))) { Map tokens = game.getGameState().getTokens(physicalCard); for (Map.Entry tokenIntegerEntry : tokens.entrySet()) { if (tokenIntegerEntry.getValue() > 0) { diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/isengard/Card6_060.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/isengard/Card6_060.java index 9549eb45f..cf6aced2c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/isengard/Card6_060.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/isengard/Card6_060.java @@ -5,7 +5,7 @@ import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseActionProxyEffect; import com.gempukku.lotro.cards.effects.ExertCharactersEffect; import com.gempukku.lotro.cards.effects.PreventAllWoundsActionProxy; -import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveTokensFromCardEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveCultureTokensFromCardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -63,7 +63,7 @@ public class Card6_060 extends AbstractMinion { && PlayConditions.canExert(self, game, 2, self)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( - new ChooseAndRemoveTokensFromCardEffect(self, playerId, Token.ISENGARD, 1, Keyword.MACHINE)); + new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, Token.ISENGARD, 1, Keyword.MACHINE)); action.appendCost( new ExertCharactersEffect(self, self)); action.appendCost( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gondor/Card7_107.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gondor/Card7_107.java index 1316ff3c3..470f8780d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gondor/Card7_107.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gondor/Card7_107.java @@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set7.gondor; import com.gempukku.lotro.cards.AbstractCompanion; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.RemoveTwilightEffect; -import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveTokensFromCardEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveCultureTokensFromCardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -41,7 +41,7 @@ public class Card7_107 extends AbstractCompanion { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( - new ChooseAndRemoveTokensFromCardEffect(self, playerId, Token.GONDOR, 1, Filters.owner(playerId), CardType.CONDITION)); + new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, Token.GONDOR, 1, Filters.owner(playerId), CardType.CONDITION)); int twilight = game.getGameState().getTwilightPool(); if (twilight >= 1) action.appendEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/sauron/Card7_281.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/sauron/Card7_281.java index 1a220c085..a79a2aafa 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/sauron/Card7_281.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/sauron/Card7_281.java @@ -6,7 +6,7 @@ import com.gempukku.lotro.cards.effects.AddTokenEffect; import com.gempukku.lotro.cards.effects.CheckLimitEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromHandEffect; -import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveTokensFromCardEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveCultureTokensFromCardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; @@ -46,7 +46,7 @@ public class Card7_281 extends AbstractPermanent { && PlayConditions.canRemoveTokens(game, Token.SAURON, 1, CardType.CONDITION)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( - new ChooseAndRemoveTokensFromCardEffect(self, playerId, Token.SAURON, 1, CardType.CONDITION)); + new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, Token.SAURON, 1, CardType.CONDITION)); action.appendEffect( new CheckLimitEffect(action, self, 2, Phase.SKIRMISH, new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, 1, Culture.SAURON, Race.ORC))); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/raider/Card8_049.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/raider/Card8_049.java index 49fb0c93f..26b14a75f 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/raider/Card8_049.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/raider/Card8_049.java @@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set8.raider; import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect; -import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveTokensFromCardEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveCultureTokensFromCardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -40,7 +40,7 @@ public class Card8_049 extends AbstractMinion { && PlayConditions.canRemoveTokens(game, Token.RAIDER, 1, Filters.any)) { ActivateCardAction action = new ActivateCardAction(self); action.appendCost( - new ChooseAndRemoveTokensFromCardEffect(self, playerId, Token.RAIDER, 1, Filters.any)); + new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, Token.RAIDER, 1, Filters.any)); action.appendEffect( new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.POSSESSION, Filters.attachedTo(Filters.inSkirmishAgainst(self)))); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/raider/Card8_054.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/raider/Card8_054.java new file mode 100644 index 000000000..0feb79581 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/raider/Card8_054.java @@ -0,0 +1,58 @@ +package com.gempukku.lotro.cards.set8.raider; + +import com.gempukku.lotro.cards.AbstractMinion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.effects.AddTokenEffect; +import com.gempukku.lotro.cards.effects.choose.ChooseAndRemoveCultureTokensFromCardEffect; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Keyword; +import com.gempukku.lotro.common.Race; +import com.gempukku.lotro.common.Token; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.OptionalTriggerAction; +import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.List; + +/** + * Set: Siege of Gondor + * Side: Shadow + * Culture: Raider + * Twilight Cost: 3 + * Type: Minion • Man + * Strength: 8 + * Vitality: 2 + * Site: 4 + * Game Text: Corsair. When you play this minion, you may remove 2 culture tokens to add 2 [RAIDER] tokens to a card + * that already has a [RAIDER] token on it. + */ +public class Card8_054 extends AbstractMinion { + public Card8_054() { + super(3, 8, 2, 4, Race.MAN, Culture.RAIDER, "Corsair Freebooter"); + addKeyword(Keyword.CORSAIR); + } + + @Override + public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, final PhysicalCard self) { + if (PlayConditions.played(game, effectResult, self) + && PlayConditions.canRemoveAnyCultureTokens(game, 2, Filters.any)) { + final OptionalTriggerAction action = new OptionalTriggerAction(self); + action.appendCost( + new ChooseAndRemoveCultureTokensFromCardEffect(self, playerId, null, 2, Filters.any)); + action.appendEffect( + new ChooseActiveCardEffect(self, playerId, "Choose a card to add tokens to", Filters.hasToken(Token.RAIDER)) { + @Override + protected void cardSelected(LotroGame game, PhysicalCard card) { + action.insertEffect( + new AddTokenEffect(self, self, Token.RAIDER, 2)); + } + }); + return Collections.singletonList(action); + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java index 19ab968b9..05d3649cc 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java @@ -85,14 +85,15 @@ public class Filters { }; } - public static Filter hasAnyTokens(final int count) { + public static Filter hasAnyCultureTokens(final int count) { return new Filter() { @Override public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { Map tokens = gameState.getTokens(physicalCard); - for (Integer integer : tokens.values()) { - if (integer >= count) - return true; + for (Map.Entry tokenCount : tokens.entrySet()) { + if (tokenCount.getKey().getCulture() != null) + if (tokenCount.getValue() >= count) + return true; } return false; }