From 415c9db5e2ba7e3fb49159d119881846950e65b8 Mon Sep 17 00:00:00 2001 From: marcins78 Date: Thu, 7 Feb 2013 11:37:17 +0000 Subject: [PATCH] "Fall of Free Peoples" --- .../CanSpotFPCulturesCondition.java | 21 +++++++++++++++++++ .../CanSpotShadowCulturesCondition.java | 21 +++++++++++++++++++ .../lotro/cards/set18/gondor/Card18_038.java | 8 +++---- .../lotro/cards/set20/sauron/Card20_349.java | 5 +++-- .../lotro/cards/set20/sauron/Card20_351.java | 4 ++-- .../lotro/cards/set20/sauron/Card20_352.java | 4 ++-- .../com/gempukku/lotro/logic/GameUtils.java | 4 ++++ .../lotro/logic/modifiers/ModifiersLogic.java | 18 ++++++++++++++++ .../logic/modifiers/ModifiersQuerying.java | 2 ++ 9 files changed, 77 insertions(+), 10 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/conditions/CanSpotFPCulturesCondition.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/conditions/CanSpotShadowCulturesCondition.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/conditions/CanSpotFPCulturesCondition.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/conditions/CanSpotFPCulturesCondition.java new file mode 100644 index 000000000..358371935 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/conditions/CanSpotFPCulturesCondition.java @@ -0,0 +1,21 @@ +package com.gempukku.lotro.cards.modifiers.conditions; + +import com.gempukku.lotro.game.state.GameState; +import com.gempukku.lotro.logic.GameUtils; +import com.gempukku.lotro.logic.modifiers.Condition; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; + +public class CanSpotFPCulturesCondition implements Condition { + private String _playerId; + private int _count; + + public CanSpotFPCulturesCondition(String playerId, int count) { + _playerId = playerId; + _count = count; + } + + @Override + public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { + return GameUtils.getSpottableFPCulturesCount(gameState, modifiersQuerying, _playerId)>=_count; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/conditions/CanSpotShadowCulturesCondition.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/conditions/CanSpotShadowCulturesCondition.java new file mode 100644 index 000000000..87a812fd1 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/conditions/CanSpotShadowCulturesCondition.java @@ -0,0 +1,21 @@ +package com.gempukku.lotro.cards.modifiers.conditions; + +import com.gempukku.lotro.game.state.GameState; +import com.gempukku.lotro.logic.GameUtils; +import com.gempukku.lotro.logic.modifiers.Condition; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; + +public class CanSpotShadowCulturesCondition implements Condition { + private String _playerId; + private int _count; + + public CanSpotShadowCulturesCondition(String playerId, int count) { + _playerId = playerId; + _count = count; + } + + @Override + public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { + return GameUtils.getSpottableShadowCulturesCount(gameState, modifiersQuerying, _playerId)>=_count; + } +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gondor/Card18_038.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gondor/Card18_038.java index 89eef0979..cd936040c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gondor/Card18_038.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/gondor/Card18_038.java @@ -1,11 +1,11 @@ package com.gempukku.lotro.cards.set18.gondor; import com.gempukku.lotro.cards.AbstractCompanion; -import com.gempukku.lotro.cards.modifiers.conditions.SpotCulturesCondition; +import com.gempukku.lotro.cards.modifiers.conditions.CanSpotFPCulturesCondition; +import com.gempukku.lotro.cards.modifiers.conditions.CanSpotShadowCulturesCondition; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Race; -import com.gempukku.lotro.common.Side; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.modifiers.KeywordModifier; @@ -36,9 +36,9 @@ public class Card18_038 extends AbstractCompanion { public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { List modifiers = new LinkedList(); modifiers.add( - new KeywordModifier(self, self, new SpotCulturesCondition(3, Side.FREE_PEOPLE), Keyword.DEFENDER, 1)); + new KeywordModifier(self, self, new CanSpotFPCulturesCondition(self.getOwner(), 3), Keyword.DEFENDER, 1)); modifiers.add( - new KeywordModifier(self, self, new SpotCulturesCondition(2, Side.SHADOW), Keyword.DEFENDER, 1)); + new KeywordModifier(self, self, new CanSpotShadowCulturesCondition(self.getOwner(), 2), Keyword.DEFENDER, 1)); return modifiers; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/sauron/Card20_349.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/sauron/Card20_349.java index a80e59171..9af9c75fa 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/sauron/Card20_349.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/sauron/Card20_349.java @@ -3,7 +3,8 @@ package com.gempukku.lotro.cards.set20.sauron; import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.SelfExertEffect; -import com.gempukku.lotro.cards.modifiers.conditions.SpotCulturesCondition; +import com.gempukku.lotro.cards.modifiers.conditions.CanSpotFPCulturesCondition; +import com.gempukku.lotro.cards.modifiers.conditions.NotCondition; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -33,7 +34,7 @@ public class Card20_349 extends AbstractMinion { @Override public Modifier getAlwaysOnModifier(PhysicalCard self) { return new KeywordModifier(self, self, - new SpotCulturesCondition(3, Side.FREE_PEOPLE), Keyword.DAMAGE, 1); + new NotCondition(new CanSpotFPCulturesCondition(self.getOwner(), 3)), Keyword.DAMAGE, 1); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/sauron/Card20_351.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/sauron/Card20_351.java index 63bf26c6f..3a799e365 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/sauron/Card20_351.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/sauron/Card20_351.java @@ -1,8 +1,8 @@ package com.gempukku.lotro.cards.set20.sauron; import com.gempukku.lotro.cards.AbstractAttachable; +import com.gempukku.lotro.cards.modifiers.conditions.CanSpotFPCulturesCondition; import com.gempukku.lotro.cards.modifiers.conditions.NotCondition; -import com.gempukku.lotro.cards.modifiers.conditions.SpotCulturesCondition; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -39,7 +39,7 @@ public class Card20_351 extends AbstractAttachable { new StrengthModifier(self, Filters.hasAttached(self), 2)); modifiers.add( new KeywordModifier(self, Filters.hasAttached(self), - new NotCondition(new SpotCulturesCondition(3, Side.FREE_PEOPLE)), Keyword.DAMAGE, 1)); + new NotCondition(new CanSpotFPCulturesCondition(self.getOwner(), 3)), Keyword.DAMAGE, 1)); return modifiers; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/sauron/Card20_352.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/sauron/Card20_352.java index 8fe264b75..fe2e7878b 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/sauron/Card20_352.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/sauron/Card20_352.java @@ -1,8 +1,8 @@ package com.gempukku.lotro.cards.set20.sauron; import com.gempukku.lotro.cards.AbstractAttachable; +import com.gempukku.lotro.cards.modifiers.conditions.CanSpotFPCulturesCondition; import com.gempukku.lotro.cards.modifiers.conditions.NotCondition; -import com.gempukku.lotro.cards.modifiers.conditions.SpotCulturesCondition; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -39,7 +39,7 @@ public class Card20_352 extends AbstractAttachable { new StrengthModifier(self, Filters.hasAttached(self), 2)); modifiers.add( new KeywordModifier(self, Filters.hasAttached(self), - new NotCondition(new SpotCulturesCondition(3, Side.FREE_PEOPLE)), Keyword.FIERCE, 1)); + new NotCondition(new CanSpotFPCulturesCondition(self.getOwner(), 3)), Keyword.FIERCE, 1)); return modifiers; } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/GameUtils.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/GameUtils.java index 6675ca0c5..dcc33541e 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/GameUtils.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/GameUtils.java @@ -118,4 +118,8 @@ public class GameUtils { public static int getSpottableFPCulturesCount(GameState gameState, ModifiersQuerying modifiersQuerying, String playerId) { return modifiersQuerying.getNumberOfSpottableFPCultures(gameState, playerId); } + + public static int getSpottableShadowCulturesCount(GameState gameState, ModifiersQuerying modifiersQuerying, String playerId) { + return modifiersQuerying.getNumberOfSpottableShadowCultures(gameState, playerId); + } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java index 445134d84..b410e2487 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java @@ -996,6 +996,24 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying { return result; } + @Override + public int getNumberOfSpottableShadowCultures(GameState gameState, String playerId) { + Set spottableCulturesBasedOnCards = new HashSet(); + for (PhysicalCard spottableFPCard : Filters.filterActive(gameState, this, Side.SHADOW, Filters.spottable)) { + final Culture fpCulture = spottableFPCard.getBlueprint().getCulture(); + if (fpCulture != null) + spottableCulturesBasedOnCards.add(fpCulture); + } + + int result = 0; + for (Culture spottableCulturesBasedOnCardsOnCard : spottableCulturesBasedOnCards) + for (Modifier modifier : getModifiers(gameState, ModifierEffect.SPOT_MODIFIER)) + if (modifier.canSpotCulture(gameState, this, spottableCulturesBasedOnCardsOnCard, playerId)) + result++; + + return result; + } + @Override public int getSpotBonus(GameState gameState, Filterable filter) { int result = 0; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java index b61967c03..7fe490170 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java @@ -140,6 +140,8 @@ public interface ModifiersQuerying { public boolean canBeSpotted(GameState gameState, PhysicalCard card); public int getNumberOfSpottableFPCultures(GameState gameState, String playerId); + + public int getNumberOfSpottableShadowCultures(GameState gameState, String playerId); public int getSpotBonus(GameState gameState, Filterable filter);