"Fall of Free Peoples"
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
|
||||
List<Modifier> modifiers = new LinkedList<Modifier>();
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -996,6 +996,24 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNumberOfSpottableShadowCultures(GameState gameState, String playerId) {
|
||||
Set<Culture> spottableCulturesBasedOnCards = new HashSet<Culture>();
|
||||
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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user