3 more cards, and some effect streamlining

This commit is contained in:
marcin.sciesinski
2019-07-15 16:08:39 -07:00
parent 70a5ad2a5d
commit 700c72f165
5 changed files with 189 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
package com.gempukku.lotro.cards.modifiers.evaluator;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
public class MinEvaluator implements Evaluator {
private int _limit;
private Evaluator _evaluator;
public MinEvaluator(Evaluator evaluator, int limit) {
_evaluator = evaluator;
_limit = limit;
}
@Override
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) {
return Math.max(_limit, _evaluator.evaluateExpression(gameState, modifiersQuerying, cardAffected));
}
}

View File

@@ -0,0 +1,58 @@
package com.gempukku.lotro.cards.set40.dwarven;
import com.gempukku.lotro.cards.AbstractEvent;
import com.gempukku.lotro.cards.actions.PlayEventAction;
import com.gempukku.lotro.cards.effects.PutCardFromStackedIntoHandEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseStackedCardsEffect;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.effects.DrawCardsEffect;
import java.util.Collection;
/**
* Title: Dwarven Frenzy
* Set: Second Edition
* Side: Free
* Culture: Dwarven
* Twilight Cost: 1
* Type: Event - Maneuver
* Card Number: 1R12
* Game Text: Exert X Dwarves twice to take X [DWARVEN] cards stacked on [DWARVEN] conditions into hand (and draw
* X cards if the fellowship is at a mountain or underground site).
*/
public class Card40_012 extends AbstractEvent {
public Card40_012() {
super(Side.FREE_PEOPLE, 1, Culture.DWARVEN, "Dwarven Frenzy", Phase.MANEUVER);
}
@Override
public PlayEventAction getPlayCardAction(final String playerId, final LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
final PlayEventAction action = new PlayEventAction(self);
action.appendCost(
new ChooseAndExertCharactersEffect(
action, playerId, 0, Integer.MAX_VALUE, 2, Race.DWARF) {
@Override
protected void cardsToBeExertedCallback(Collection<PhysicalCard> characters) {
int exertedDwarves = characters.size();
action.appendEffect(
new ChooseStackedCardsEffect(action, playerId, exertedDwarves, exertedDwarves, Filters.and(Culture.DWARVEN, CardType.CONDITION), Culture.DWARVEN) {
@Override
protected void cardsChosen(LotroGame game, Collection<PhysicalCard> stackedCards) {
for (PhysicalCard stackedCard : stackedCards) {
action.appendEffect(new PutCardFromStackedIntoHandEffect(stackedCard));
}
}
});
if (Filters.or(Keyword.MOUNTAIN, Keyword.UNDERGROUND).accepts(game.getGameState(), game.getModifiersQuerying(), game.getGameState().getCurrentSite())) {
action.appendEffect(
new DrawCardsEffect(action, playerId, exertedDwarves));
}
}
});
return action;
}
}

View File

@@ -0,0 +1,37 @@
package com.gempukku.lotro.cards.set40.dwarven;
import com.gempukku.lotro.cards.AbstractPermanent;
import com.gempukku.lotro.cards.modifiers.evaluator.CountStackedEvaluator;
import com.gempukku.lotro.cards.modifiers.evaluator.LimitEvaluator;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import java.util.Collections;
import java.util.List;
/**
* Title: *Dwarven Ire
* Set: Second Edition
* Side: Free
* Culture: Dwarven
* Twilight Cost: 2
* Type: Condition - Support Area
* Card Number: 1R13
* Game Text: Each Dwarf is damage +1 for each card stacked on this condition (limit +2).
*/
public class Card40_013 extends AbstractPermanent {
public Card40_013() {
super(Side.FREE_PEOPLE, 2, CardType.CONDITION, Culture.DWARVEN, Zone.SUPPORT, "Dwarven Ire", null, true);
}
@Override
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
KeywordModifier keywordModifier = new KeywordModifier(self, Race.DWARF, null, Keyword.DAMAGE,
new CountStackedEvaluator(2, self, Filters.any));
return Collections.singletonList(keywordModifier);
}
}

View File

@@ -0,0 +1,48 @@
package com.gempukku.lotro.cards.set40.dwarven;
import com.gempukku.lotro.cards.AbstractPermanent;
import com.gempukku.lotro.cards.modifiers.evaluator.AddEvaluator;
import com.gempukku.lotro.cards.modifiers.evaluator.LimitEvaluator;
import com.gempukku.lotro.cards.modifiers.evaluator.MinEvaluator;
import com.gempukku.lotro.cards.modifiers.evaluator.VitalityEvaluator;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.modifiers.condition.CardStackedCondition;
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
import java.util.Collections;
import java.util.List;
/**
* Title: *Dwarven Vigor
* Set: Second Edition
* Side: Free
* Culture: Dwarven
* Twilight Cost: 1
* Type: Condition - Support Area
* Card Number: 1R14
* Game Text: While there is a [DWARVEN] card stacked on this condition, each Dwarf is strength +1 for each point of vitality over 3 that he has.
*/
public class Card40_014 extends AbstractPermanent {
public Card40_014(){
super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.DWARVEN, Zone.SUPPORT, "Dwarven Vigor", null, true);
}
@Override
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
StrengthModifier modifier = new StrengthModifier(self, Race.DWARF,
new CardStackedCondition(1, self, Culture.DWARVEN),
new Evaluator() {
@Override
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) {
return Math.max(0, modifiersQuerying.getVitality(gameState, cardAffected) - 3);
}
});
return Collections.singletonList(modifier);
}
}

View File

@@ -0,0 +1,25 @@
package com.gempukku.lotro.logic.modifiers.condition;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.filters.Filter;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.logic.modifiers.Condition;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
public class CardStackedCondition implements Condition {
private Filter _stackedOn;
private Filter _cardStacked;
private int _minimumCount;
public CardStackedCondition(int minimumCount, Filterable stackedOn, Filterable... cardStacked) {
_minimumCount = minimumCount;
_stackedOn = Filters.and(stackedOn);
_cardStacked = Filters.and(cardStacked);
}
@Override
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return Filters.findFirstActive(gameState, modifiersQuerying, _stackedOn, Filters.hasStacked(_minimumCount, _cardStacked)) != null;
}
}