"Doors of Durin"
This commit is contained in:
@@ -0,0 +1,67 @@
|
|||||||
|
package com.gempukku.lotro.cards.set13.site;
|
||||||
|
|
||||||
|
import com.gempukku.lotro.cards.AbstractNewSite;
|
||||||
|
import com.gempukku.lotro.cards.modifiers.conditions.NotCondition;
|
||||||
|
import com.gempukku.lotro.cards.modifiers.conditions.PhaseCondition;
|
||||||
|
import com.gempukku.lotro.common.CardType;
|
||||||
|
import com.gempukku.lotro.common.Keyword;
|
||||||
|
import com.gempukku.lotro.common.Phase;
|
||||||
|
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.logic.modifiers.Modifier;
|
||||||
|
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||||
|
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set: Bloodlines
|
||||||
|
* Twilight Cost: 0
|
||||||
|
* Type: Site
|
||||||
|
* Game Text: Marsh. Each companion of a race that has the most companions is strength -1 until the regroup phase.
|
||||||
|
*/
|
||||||
|
public class Card13_190 extends AbstractNewSite {
|
||||||
|
public Card13_190() {
|
||||||
|
super("Doors of Durin", 0, Direction.LEFT);
|
||||||
|
addKeyword(Keyword.MARSH);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Modifier getAlwaysOnModifier(PhysicalCard self) {
|
||||||
|
return new StrengthModifier(self,
|
||||||
|
Filters.and(CardType.COMPANION,
|
||||||
|
new Filter() {
|
||||||
|
@Override
|
||||||
|
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
|
||||||
|
final Race race = physicalCard.getBlueprint().getRace();
|
||||||
|
if (race != null && isRaceMostCommonRaceAmongCompanions(gameState, modifiersQuerying, race))
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}), new NotCondition(new PhaseCondition(Phase.REGROUP)), -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isRaceMostCommonRaceAmongCompanions(GameState gameState, ModifiersQuerying modifiersQuerying, Race race) {
|
||||||
|
Map<Race, Integer> counts = new HashMap<Race, Integer>();
|
||||||
|
for (PhysicalCard companion : Filters.filterActive(gameState, modifiersQuerying, CardType.COMPANION)) {
|
||||||
|
final Race companionRace = companion.getBlueprint().getRace();
|
||||||
|
if (companionRace != null) {
|
||||||
|
Integer count = counts.get(companionRace);
|
||||||
|
if (count == null)
|
||||||
|
count = 0;
|
||||||
|
counts.put(companionRace, count + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final Integer thisRaceCount = counts.get(race);
|
||||||
|
for (Map.Entry<Race, Integer> raceCount : counts.entrySet()) {
|
||||||
|
if (raceCount.getValue() > thisRaceCount)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user