Migrated Dwarven cards in set 12 to hjson
This commit is contained in:
@@ -1,60 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set12.dwarven;
|
||||
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
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.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseOpponentEffect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
/**
|
||||
* Set: Black Rider
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 0
|
||||
* Type: Event • Maneuver
|
||||
* Game Text: Spot a Dwarf to choose a Shadow player who must spot a race. Discard from play all minions of all other
|
||||
* races.
|
||||
*/
|
||||
public class Card12_001 extends AbstractEvent {
|
||||
public Card12_001() {
|
||||
super(Side.FREE_PEOPLE, 0, Culture.DWARVEN, "Argument Ready to Hand", Phase.MANEUVER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canSpot(game, Race.DWARF);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(final String playerId, final LotroGame game, final PhysicalCard self) {
|
||||
final Filter hasRace = new Filter() {
|
||||
@Override
|
||||
public boolean accepts(LotroGame game, PhysicalCard physicalCard) {
|
||||
return physicalCard.getBlueprint().getRace() != null;
|
||||
}
|
||||
};
|
||||
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseOpponentEffect(playerId) {
|
||||
@Override
|
||||
protected void opponentChosen(String opponentId) {
|
||||
action.insertEffect(
|
||||
new ChooseActiveCardEffect(self, opponentId, "Choose character with a race you wish to spare", Filters.character, hasRace) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
action.insertEffect(
|
||||
new DiscardCardsFromPlayEffect(self.getOwner(), self, hasRace, CardType.MINION, Filters.not(card.getBlueprint().getRace())));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set12.dwarven;
|
||||
|
||||
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.actions.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractAttachableFPPossession;
|
||||
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndTransferAttachableEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.RemoveKeywordModifier;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Black Rider
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 0
|
||||
* Type: Possession • Armor
|
||||
* Game Text: Bearer must be a Dwarf. Each minion skirmishing bearer loses all damage bonus. Skirmish: Discard this
|
||||
* possession to transfer one of bearer's possessions to another eligible bearer.
|
||||
*/
|
||||
public class Card12_002 extends AbstractAttachableFPPossession {
|
||||
public Card12_002() {
|
||||
super(0, 0, 0, Culture.DWARVEN, PossessionClass.ARMOR, "Belt of Erebor");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
|
||||
return Race.DWARF;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new RemoveKeywordModifier(self, Filters.inSkirmishAgainst(Filters.hasAttached(self)), Keyword.DAMAGE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)
|
||||
&& PlayConditions.canSelfDiscard(self, game)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new SelfDiscardEffect(self));
|
||||
action.appendEffect(
|
||||
new ChooseAndTransferAttachableEffect(action, playerId, CardType.POSSESSION, self.getAttachedTo(), Filters.any));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set12.dwarven;
|
||||
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Race;
|
||||
import com.gempukku.lotro.common.Side;
|
||||
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.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.effects.DrawCardsEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.condition.CardPlayedInCurrentPhaseCondition;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Black Rider
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 2
|
||||
* Type: Condition • Support Area
|
||||
* Game Text: Each time a Dwarf wins a skirmish in which you played a [DWARVEN] event, you may draw a card.
|
||||
*/
|
||||
public class Card12_003 extends AbstractPermanent {
|
||||
public Card12_003() {
|
||||
super(Side.FREE_PEOPLE, 2, CardType.CONDITION, Culture.DWARVEN, "A Clamour of Many Voices");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.winsSkirmish(game, effectResult, Race.DWARF)
|
||||
&& new CardPlayedInCurrentPhaseCondition(Filters.owner(playerId), Culture.DWARVEN, CardType.EVENT).isFullfilled(game)) {
|
||||
OptionalTriggerAction action = new OptionalTriggerAction(self);
|
||||
action.appendEffect(
|
||||
new DrawCardsEffect(action, playerId, 1));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set12.dwarven;
|
||||
|
||||
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.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.DrawCardsEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
/**
|
||||
* Set: Black Rider
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 0
|
||||
* Type: Event • Skirmish
|
||||
* Game Text: Make a Dwarf strength +2. Then, if that Dwarf is at a battleground or mountain site, draw a card.
|
||||
*/
|
||||
public class Card12_004 extends AbstractEvent {
|
||||
public Card12_004() {
|
||||
super(Side.FREE_PEOPLE, 0, Culture.DWARVEN, "Durability", Phase.SKIRMISH);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, 2, Race.DWARF));
|
||||
if (PlayConditions.location(game, Filters.or(Keyword.BATTLEGROUND, Keyword.MOUNTAIN)))
|
||||
action.appendEffect(
|
||||
new DrawCardsEffect(action, playerId, 1));
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set12.dwarven;
|
||||
|
||||
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.actions.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.CardMatchesEvaluator;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Black Rider
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 3
|
||||
* Type: Condition • Support Area
|
||||
* Game Text: Toil 2. (For each [DWARVEN] character you exert when playing this, its twilight cost is -2)
|
||||
* Skirmish: Discard this condition to make a Dwarf strength +3 (or +4 if he has resistance 4 or more).
|
||||
*/
|
||||
public class Card12_006 extends AbstractPermanent {
|
||||
public Card12_006() {
|
||||
super(Side.FREE_PEOPLE, 3, CardType.CONDITION, Culture.DWARVEN, "Dwarven Skill");
|
||||
addKeyword(Keyword.TOIL, 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)
|
||||
&& PlayConditions.canSelfDiscard(self, game)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new SelfDiscardEffect(self));
|
||||
action.appendEffect(
|
||||
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, new CardMatchesEvaluator(3, 4, Filters.minResistance(4)), Race.DWARF));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set12.dwarven;
|
||||
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
import com.gempukku.lotro.logic.effects.DiscardTopCardFromDeckEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseOpponentEffect;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.common.Race;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.RequiredTriggerAction;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Black Rider
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 2
|
||||
* Type: Companion • Dwarf
|
||||
* Strength: 6
|
||||
* Vitality: 3
|
||||
* Resistance: 6
|
||||
* Game Text: When you play this companion during the fellowship phase, choose a Shadow player who must discard the
|
||||
* top 2 cards of his or her draw deck.
|
||||
*/
|
||||
public class Card12_007 extends AbstractCompanion {
|
||||
public Card12_007() {
|
||||
super(2, 6, 3, 6, Culture.DWARVEN, Race.DWARF, null, "Dwarven Warrior");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, final PhysicalCard self) {
|
||||
if (TriggerConditions.played(game, effectResult, self)
|
||||
&& PlayConditions.isPhase(game, Phase.FELLOWSHIP)) {
|
||||
final RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseOpponentEffect(game.getGameState().getCurrentPlayerId()) {
|
||||
@Override
|
||||
protected void opponentChosen(String opponentId) {
|
||||
action.appendEffect(
|
||||
new DiscardTopCardFromDeckEffect(self, opponentId, 2, true));
|
||||
}
|
||||
});
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set12.dwarven;
|
||||
|
||||
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.actions.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Black Rider
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 1
|
||||
* Type: Condition • Support Area
|
||||
* Game Text: Skirmish: Discard this condition to make a Dwarf strength +1 for each of the following that is true:
|
||||
* he is at a mountain or underground site; he has resistance 3 or more; he is bearing a possession; he is skirmishing
|
||||
* a fierce minion.
|
||||
*/
|
||||
public class Card12_008 extends AbstractPermanent {
|
||||
public Card12_008() {
|
||||
super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.DWARVEN, "His Father's Charge");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, final LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)
|
||||
&& PlayConditions.canSelfDiscard(self, game)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new SelfDiscardEffect(self));
|
||||
action.appendEffect(
|
||||
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId,
|
||||
new Evaluator() {
|
||||
@Override
|
||||
public int evaluateExpression(LotroGame game, PhysicalCard cardAffected) {
|
||||
int bonus = 0;
|
||||
if (PlayConditions.location(game, Filters.or(Keyword.MOUNTAIN, Keyword.UNDERGROUND)))
|
||||
bonus++;
|
||||
if (Filters.minResistance(3).accepts(game, cardAffected))
|
||||
bonus++;
|
||||
if (Filters.hasAttached(CardType.POSSESSION).accepts(game, cardAffected))
|
||||
bonus++;
|
||||
if (Filters.inSkirmishAgainst(CardType.MINION, Keyword.FIERCE).accepts(game, cardAffected))
|
||||
bonus++;
|
||||
return bonus;
|
||||
}
|
||||
}, Race.DWARF));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set12.dwarven;
|
||||
|
||||
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.actions.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Black Rider
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 1
|
||||
* Type: Condition • Support Area
|
||||
* Game Text: Skirmish: Discard a [DWARVEN] card from hand and spot a minion skirmishing a Dwarf to make that minion
|
||||
* fierce until the regroup phase.
|
||||
*/
|
||||
public class Card12_009 extends AbstractPermanent {
|
||||
public Card12_009() {
|
||||
super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.DWARVEN, "Loud and Strong");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)
|
||||
&& PlayConditions.canDiscardFromHand(game, playerId, 1, Culture.DWARVEN)
|
||||
&& PlayConditions.canSpot(game, CardType.MINION, Filters.inSkirmishAgainst(Race.DWARF))) {
|
||||
final ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 1, Culture.DWARVEN));
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose a minion", CardType.MINION, Filters.inSkirmishAgainst(Race.DWARF)) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
action.appendEffect(
|
||||
new AddUntilStartOfPhaseModifierEffect(
|
||||
new KeywordModifier(self, card, Keyword.FIERCE), Phase.REGROUP));
|
||||
}
|
||||
});
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set12.dwarven;
|
||||
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
|
||||
import com.gempukku.lotro.logic.decisions.IntegerAwaitingDecision;
|
||||
import com.gempukku.lotro.logic.effects.DrawCardsEffect;
|
||||
import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
/**
|
||||
* Set: Black Rider
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 4
|
||||
* Type: Event • Fellowship
|
||||
* Game Text: Toil 2. (For each [DWARVEN] character you exert when playing this, its twilight cost is -2) Spot 2 Dwarves
|
||||
* to draw up to 4 cards.
|
||||
*/
|
||||
public class Card12_010 extends AbstractEvent {
|
||||
public Card12_010() {
|
||||
super(Side.FREE_PEOPLE, 4, Culture.DWARVEN, "No Pauses, No Spills", Phase.FELLOWSHIP);
|
||||
addKeyword(Keyword.TOIL, 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canSpot(game, 2, Race.DWARF);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(final String playerId, LotroGame game, PhysicalCard self) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new PlayoutDecisionEffect(playerId,
|
||||
new IntegerAwaitingDecision(1, "Choose number of cards to draw", 1, 4, 4) {
|
||||
@Override
|
||||
public void decisionMade(String result) throws DecisionResultInvalidException {
|
||||
int count = getValidatedResult(result);
|
||||
action.appendEffect(
|
||||
new DrawCardsEffect(action, playerId, count));
|
||||
}
|
||||
}));
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set12.dwarven;
|
||||
|
||||
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.actions.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndPlayCardFromDiscardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Black Rider
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 2
|
||||
* Type: Condition • Support Area
|
||||
* Game Text: Each Dwarf is damage +1 for each possession he bears. Fellowship: Discard this condition to play
|
||||
* a [DWARVEN] possession from your discard pile.
|
||||
*/
|
||||
public class Card12_012 extends AbstractPermanent {
|
||||
public Card12_012() {
|
||||
super(Side.FREE_PEOPLE, 2, CardType.CONDITION, Culture.DWARVEN, "Proud and Able", null, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
|
||||
return java.util.Collections.singletonList(new KeywordModifier(self, Race.DWARF, null, Keyword.DAMAGE,
|
||||
new Evaluator() {
|
||||
@Override
|
||||
public int evaluateExpression(LotroGame game, PhysicalCard cardAffected) {
|
||||
return Filters.countActive(game, CardType.POSSESSION, Filters.attachedTo(cardAffected));
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.FELLOWSHIP, self)
|
||||
&& PlayConditions.canSelfDiscard(self, game)
|
||||
&& PlayConditions.canPlayFromDiscard(playerId, game, Culture.DWARVEN, CardType.POSSESSION)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new SelfDiscardEffect(self));
|
||||
action.appendEffect(
|
||||
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Culture.DWARVEN, CardType.POSSESSION));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set12.dwarven;
|
||||
|
||||
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.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
|
||||
|
||||
/**
|
||||
* Set: Black Rider
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 0
|
||||
* Type: Event • Skirmish
|
||||
* Game Text: Make a Dwarf strength +2 (or +2 for each possession he bears if he has resistance 4 or more).
|
||||
*/
|
||||
public class Card12_013 extends AbstractEvent {
|
||||
public Card12_013() {
|
||||
super(Side.FREE_PEOPLE, 0, Culture.DWARVEN, "Sharp Defense", Phase.SKIRMISH);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId,
|
||||
new Evaluator() {
|
||||
@Override
|
||||
public int evaluateExpression(LotroGame game, PhysicalCard cardAffected) {
|
||||
if (game.getModifiersQuerying().getResistance(game, cardAffected) >= 4) {
|
||||
return 2 * Filters.countActive(game, CardType.POSSESSION, Filters.attachedTo(cardAffected));
|
||||
} else {
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
}, Race.DWARF));
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set12.dwarven;
|
||||
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.RequiredTriggerAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Black Rider
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 0
|
||||
* Type: Condition • Support Area
|
||||
* Game Text: Each Dwarf gains muster. (At the start of the regroup phase, you may discard a card from hand to draw
|
||||
* a card.) Each time the fellowship moves from a plains site, discard a card from your hand.
|
||||
*/
|
||||
public class Card12_014 extends AbstractPermanent {
|
||||
public Card12_014() {
|
||||
super(Side.FREE_PEOPLE, 0, CardType.CONDITION, Culture.DWARVEN, "Stalwart Support");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(new KeywordModifier(self, Race.DWARF, Keyword.MUSTER));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.movesFrom(game, effectResult, Keyword.PLAINS)) {
|
||||
RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseAndDiscardCardsFromHandEffect(action, self.getOwner(), true, 1));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set12.dwarven;
|
||||
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Race;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.CountActiveEvaluator;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Black Rider
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 3
|
||||
* Type: Companion • Dwarf
|
||||
* Strength: 7
|
||||
* Vitality: 3
|
||||
* Resistance: 6
|
||||
* Game Text: For each artifact and possession Thrarin bears, he is damage +1.
|
||||
*/
|
||||
public class Card12_015 extends AbstractCompanion {
|
||||
public Card12_015() {
|
||||
super(3, 7, 3, 6, Culture.DWARVEN, Race.DWARF, null, "Thrarin", "Smith of Erebor", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(new KeywordModifier(self, self, null, Keyword.DAMAGE, new CountActiveEvaluator(Filters.or(CardType.POSSESSION, CardType.ARTIFACT), Filters.attachedTo(self))));
|
||||
}
|
||||
}
|
||||
@@ -22,13 +22,22 @@
|
||||
twilight: 0
|
||||
type: Event
|
||||
keywords: Maneuver
|
||||
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: dwarf
|
||||
},
|
||||
effect: [
|
||||
{
|
||||
type: chooseActiveCards
|
||||
text: Choose a race to spare, all other will be discarded
|
||||
filter: choose(minion,hasRace)
|
||||
memorize: chosenMinion
|
||||
}
|
||||
{
|
||||
type: discard
|
||||
filter: all(minion,not(raceInMemory(chosenMinion)))
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -65,8 +74,37 @@
|
||||
twilight: 0
|
||||
type: Possession
|
||||
itemclass: Armor
|
||||
#target: a Dwarf
|
||||
target: dwarf
|
||||
effects: [
|
||||
{
|
||||
type: modifier
|
||||
modifier: {
|
||||
type: removeKeyword
|
||||
filter: minion,inSkirmishAgainst(bearer)
|
||||
keyword: damage
|
||||
}
|
||||
}
|
||||
{
|
||||
type: activated
|
||||
phase: skirmish
|
||||
cost: [
|
||||
{
|
||||
type: memorizeActive
|
||||
filter: bearer
|
||||
memory: bearer
|
||||
}
|
||||
{
|
||||
type: discard
|
||||
filter: self
|
||||
}
|
||||
]
|
||||
effect: {
|
||||
type: transfer
|
||||
filter: choose(possession,attachedTo(memory(bearer)))
|
||||
where: choose(character)
|
||||
checkTarget: true
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: Bearer must be a Dwarf.<br>Each minion skirmishing bearer loses all <b>damage</b> bonuses.<br><b>Skirmish:</b> Discard this possession to transfer one of bearer's possessions to another eligible bearer.
|
||||
lore: We make good armour and keen swords....'
|
||||
@@ -102,6 +140,21 @@
|
||||
type: Condition
|
||||
keywords: Support Area
|
||||
effects: [
|
||||
{
|
||||
type: trigger
|
||||
optional: true
|
||||
trigger: {
|
||||
type: winsSkirmish
|
||||
filter: dwarf
|
||||
}
|
||||
requires: {
|
||||
type: playedCardThisPhase
|
||||
filter: your,culture(dwarven),event
|
||||
}
|
||||
effect: {
|
||||
type: drawCards
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: Each time a Dwarf wins a skirmish in which you played a [dwarven] event, you may draw a card.
|
||||
lore: ...crying strange news in the dawn.
|
||||
@@ -136,13 +189,23 @@
|
||||
twilight: 0
|
||||
type: Event
|
||||
keywords: Skirmish
|
||||
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
},
|
||||
effect: [
|
||||
{
|
||||
type: modifyStrength
|
||||
filter: choose(dwarf)
|
||||
amount: 2
|
||||
}
|
||||
{
|
||||
type: conditional
|
||||
requires: {
|
||||
type: location
|
||||
filter: or(battleground,mountain)
|
||||
}
|
||||
effect: {
|
||||
type: drawCards
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -180,8 +243,30 @@
|
||||
type: Possession
|
||||
strength: 1
|
||||
itemclass: Bracers
|
||||
#target: a Dwarf
|
||||
target: dwarf
|
||||
effects: [
|
||||
{
|
||||
type: activatedTrigger
|
||||
trigger: {
|
||||
type: aboutToTakeWound
|
||||
filter: bearer
|
||||
}
|
||||
cost: [
|
||||
{
|
||||
type: memorizeActive
|
||||
filter: bearer
|
||||
memory: bearer
|
||||
}
|
||||
{
|
||||
type: discard
|
||||
filter: self
|
||||
}
|
||||
]
|
||||
effect: {
|
||||
type: preventWound
|
||||
filter: memory(bearer)
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: Bearer must be a Dwarf.<br><b>Response:</b> If bearer is about to take a wound, discard this possession to prevent that wound.
|
||||
lore: Dwarven-smiths forge bracers for fit and agility.
|
||||
@@ -220,6 +305,28 @@
|
||||
Support Area
|
||||
]
|
||||
effects: [
|
||||
{
|
||||
type: activated
|
||||
phase: skirmish
|
||||
cost: {
|
||||
type: discard
|
||||
filter: self
|
||||
}
|
||||
effect: {
|
||||
type: modifyStrength
|
||||
filter: choose(dwarf)
|
||||
memorize: chosenDwarf
|
||||
amount: {
|
||||
type: condition
|
||||
condition: {
|
||||
type: memoryMatches
|
||||
filter: minResistance(4)
|
||||
}
|
||||
true: 4
|
||||
false: 3
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: <b>Toil 2</b>. <helper>(For each [dwarven] character you exert when playing this, its twilight cost is -2.)</helper><br><b>Skirmish:</b> Discard this condition to make a Dwarf strength +3 (or +4 if he has resistance 4 or more).
|
||||
lore: Gimli's axe-work on the Amon Hen hewed a mighty path through the Uruk-hai.
|
||||
@@ -258,6 +365,23 @@
|
||||
vitality: 3
|
||||
resistance: 6
|
||||
effects: [
|
||||
{
|
||||
type: trigger
|
||||
trigger: {
|
||||
type: played
|
||||
filter: self
|
||||
}
|
||||
requires: {
|
||||
type: phase
|
||||
phase: fellowship
|
||||
}
|
||||
effect: {
|
||||
type: discardTopCardsFromDeck
|
||||
forced: true
|
||||
deck: shadow
|
||||
count: 2
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: When you play this companion during the fellowship phase, choose a Shadow player who must discard the top 2 cards of his or her draw deck.
|
||||
lore: Though Dáin rules Erebor as King Under the Mountain, many of his kindred continue to dwell in the Iron Hills.
|
||||
@@ -293,6 +417,63 @@
|
||||
type: Condition
|
||||
keywords: Support Area
|
||||
effects: [
|
||||
{
|
||||
type: activated
|
||||
phase: skirmish
|
||||
cost: {
|
||||
type: discard
|
||||
filter: self
|
||||
}
|
||||
effect: {
|
||||
type: modifyStrength
|
||||
filter: choose(dwarf)
|
||||
memorize: chosenDwarf
|
||||
amount: {
|
||||
type: sum
|
||||
source: [
|
||||
{
|
||||
type: condition
|
||||
condition: {
|
||||
type: location
|
||||
filter: or(mountain,underground)
|
||||
}
|
||||
true: 1
|
||||
false: 0
|
||||
}
|
||||
{
|
||||
type: condition
|
||||
condition: {
|
||||
type: memoryMatches
|
||||
memory: chosenDwarf
|
||||
filter: minResistance(3)
|
||||
}
|
||||
true: 1
|
||||
false: 0
|
||||
}
|
||||
{
|
||||
type: condition
|
||||
condition: {
|
||||
type: memoryMatches
|
||||
memory: chosenDwarf
|
||||
filter: hasAttached(possession)
|
||||
}
|
||||
true: 1
|
||||
false: 0
|
||||
}
|
||||
{
|
||||
type: condition
|
||||
condition: {
|
||||
type: memoryMatches
|
||||
memory: chosenDwarf
|
||||
filter: inSkirmishAgainst(fierce,minion)
|
||||
}
|
||||
true: 1
|
||||
false: 0
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: <b>Skirmish:</b> Discard this condition to make a Dwarf strength +1 for each of the following that is true: he is at a mountain or underground site; he has resistance 3 or more; he is bearing a possession; he is skirmishing a fierce minion.
|
||||
lore: A sharpened axe does well to protect Dwarven honor.
|
||||
@@ -328,6 +509,25 @@
|
||||
type: Condition
|
||||
keywords: Support Area
|
||||
effects: [
|
||||
{
|
||||
type: activated
|
||||
phase: skirmish
|
||||
cost: {
|
||||
type: discardFromHand
|
||||
forced: false
|
||||
filter: choose(culture(dwarven))
|
||||
}
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: minion,inSkirmishAgainst(dwarf)
|
||||
}
|
||||
effect: {
|
||||
type: addKeyword
|
||||
filter: choose(minion,inSkirmishAgainst(dwarf))
|
||||
keyword: fierce
|
||||
until: regroup
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: <b>Skirmish:</b> Discard a [dwarven] card from hand and spot a minion skirmishing a Dwarf to make that minion <b>fierce</b> until the regroup phase.
|
||||
lore: Alas! My axe is notched: the forty-second had an iron collar on his neck.'
|
||||
@@ -365,13 +565,27 @@
|
||||
Toil 2
|
||||
Fellowship
|
||||
]
|
||||
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
},
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: dwarf
|
||||
count: 2
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: chooseANumber
|
||||
text: Choose how many cards to draw
|
||||
from: 0
|
||||
to: 4
|
||||
memorize: chosenNumber
|
||||
}
|
||||
{
|
||||
type: drawCards
|
||||
count: {
|
||||
type: fromMemory
|
||||
memory: chosenNumber
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -386,7 +600,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
12_11: {
|
||||
12_11: {
|
||||
cardInfo: {
|
||||
imagePath: decipher/LOTR12011.jpg
|
||||
javaClass: true
|
||||
@@ -408,19 +622,21 @@
|
||||
twilight: 0
|
||||
type: Event
|
||||
keywords: Response
|
||||
|
||||
effects: {
|
||||
type: responseEvent
|
||||
trigger: {
|
||||
|
||||
}
|
||||
cost: {
|
||||
type: winsSkirmish
|
||||
filter: dwarf
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: discardTopCardsFromDeck
|
||||
forced: true
|
||||
deck: shadow
|
||||
count: 3
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
gametext: If a Dwarf wins a skirmish, make an opponent discard 3 cards from the top of his or her draw deck.
|
||||
lore: My folk have never had dealings with any of the servants of the Enemy.'
|
||||
promotext: ""
|
||||
@@ -455,6 +671,30 @@
|
||||
type: Condition
|
||||
keywords: Support Area
|
||||
effects: [
|
||||
{
|
||||
type: modifier
|
||||
modifier: {
|
||||
type: addKeyword
|
||||
filter: dwarf
|
||||
keyword: damage
|
||||
amount: {
|
||||
type: forEachHasAttached
|
||||
filter: possession
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
type: activated
|
||||
phase: fellowship
|
||||
cost: {
|
||||
type: discard
|
||||
filter: self
|
||||
}
|
||||
effect: {
|
||||
type: playCardFromDiscard
|
||||
filter: choose(culture(dwarven),possession)
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: Each Dwarf is <b>damage +1</b> for each possession he bears.<br><b>Fellowship:</b> Discard this condition to play a [dwarven] possession from your discard pile.
|
||||
lore: Dwarves' tongues run on when speaking of their handiwork, they say.'
|
||||
@@ -489,13 +729,27 @@
|
||||
twilight: 0
|
||||
type: Event
|
||||
keywords: Skirmish
|
||||
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
},
|
||||
effect: [
|
||||
{
|
||||
type: modifyStrength
|
||||
filter: choose(dwarf)
|
||||
memorize: chosenDwarf
|
||||
amount: {
|
||||
type: condition
|
||||
condition: {
|
||||
type: memoryMatches
|
||||
memory: chosenDwarf
|
||||
filter: minResistance(4)
|
||||
}
|
||||
true: {
|
||||
type: forEachHasAttached
|
||||
filter: possession
|
||||
multiplier: 2
|
||||
}
|
||||
false: 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -533,6 +787,25 @@
|
||||
type: Condition
|
||||
keywords: Support Area
|
||||
effects: [
|
||||
{
|
||||
type: modifier
|
||||
modifier: {
|
||||
type: addKeyword
|
||||
filter: dwarf
|
||||
keyword: muster
|
||||
}
|
||||
}
|
||||
{
|
||||
type: trigger
|
||||
trigger: {
|
||||
type: movesFrom
|
||||
filter: plains
|
||||
}
|
||||
effect: {
|
||||
type: discardFromHand
|
||||
forced: true
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: Each Dwarf gains <b>muster</b>. <helper>(At the start of the regroup phase, you may discard a card from hand to draw a card.)</helper><br>Each time the fellowship moves from a plains site, discard a card from your hand.
|
||||
lore: ...I am glad to have you standing nigh....'
|
||||
@@ -572,6 +845,18 @@
|
||||
vitality: 3
|
||||
resistance: 6
|
||||
effects: [
|
||||
{
|
||||
type: modifier
|
||||
modifier: {
|
||||
type: addKeyword
|
||||
filter: self
|
||||
keyword: damage
|
||||
amount: {
|
||||
type: forEachHasAttached
|
||||
filter: or(artifact,possession)
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: For each artifact and possession Thrarin bears, he is <b>damage +1</b>.
|
||||
lore: Like many other representatives who have come to Rivendell, Thrarin the smith brings troubling news from the East.
|
||||
@@ -248,18 +248,37 @@ public class ValueResolver {
|
||||
final Filterable on1 = onFilter.getFilterable(actionContext);
|
||||
return new MultiplyEvaluator(multiplier.getEvaluator(actionContext), new CountStackedEvaluator(on1, filterableSource.getFilterable(actionContext)));
|
||||
};
|
||||
} else if (type.equalsIgnoreCase("forEachHasAttached")) {
|
||||
FieldUtils.validateAllowedFields(object, "filter", "over", "limit", "multiplier", "divider");
|
||||
final String filter = FieldUtils.getString(object.get("filter"), "filter");
|
||||
final ValueSource overSource = resolveEvaluator(object.get("over"), 0, environment);
|
||||
final ValueSource limitSource = resolveEvaluator(object.get("limit"), Integer.MAX_VALUE, environment);
|
||||
final ValueSource multiplier = resolveEvaluator(object.get("multiplier"), 1, environment);
|
||||
final ValueSource divider = resolveEvaluator(object.get("divider"), 1, environment);
|
||||
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
return actionContext ->
|
||||
(Evaluator) (game, cardAffected) -> {
|
||||
Filterable filterable = filterableSource.getFilterable(actionContext);
|
||||
return evaluateNumber(
|
||||
Filters.countActive(game, Filters.attachedTo(cardAffected), filterable),
|
||||
overSource.getEvaluator(actionContext), limitSource.getEvaluator(actionContext),
|
||||
multiplier.getEvaluator(actionContext), divider.getEvaluator(actionContext),
|
||||
game, cardAffected);
|
||||
};
|
||||
} else if (type.equalsIgnoreCase("forEachYouCanSpot")) {
|
||||
FieldUtils.validateAllowedFields(object, "filter", "over", "limit", "multiplier", "divider");
|
||||
final String filter = FieldUtils.getString(object.get("filter"), "filter");
|
||||
final ValueSource overSource = resolveEvaluator(object.get("over"), 0, environment);
|
||||
final ValueSource limitSource = resolveEvaluator(object.get("limit"), Integer.MAX_VALUE, environment);
|
||||
final ValueSource multiplier = resolveEvaluator(object.get("multiplier"), 1, environment);
|
||||
final int divider = FieldUtils.getInteger(object.get("divider"), "divider", 1);
|
||||
final ValueSource divider = resolveEvaluator(object.get("divider"), 1, environment);
|
||||
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
return actionContext -> new DivideEvaluator(divider,
|
||||
new MultiplyEvaluator(multiplier.getEvaluator(actionContext),
|
||||
new CountSpottableEvaluator(overSource.getEvaluator(actionContext), limitSource.getEvaluator(actionContext),
|
||||
filterableSource.getFilterable(actionContext))));
|
||||
return actionContext ->
|
||||
(Evaluator) (game, cardAffected) -> evaluateNumber(
|
||||
Filters.countSpottable(game, filterableSource.getFilterable(actionContext)),
|
||||
overSource.getEvaluator(actionContext), limitSource.getEvaluator(actionContext),
|
||||
multiplier.getEvaluator(actionContext), divider.getEvaluator(actionContext),
|
||||
game, cardAffected);
|
||||
} else if (type.equalsIgnoreCase("forEachInDiscard")) {
|
||||
FieldUtils.validateAllowedFields(object, "filter", "multiplier", "limit");
|
||||
final String filter = FieldUtils.getString(object.get("filter"), "filter");
|
||||
@@ -570,4 +589,13 @@ public class ValueResolver {
|
||||
}
|
||||
throw new InvalidCardDefinitionException("Unable to resolve an evaluator");
|
||||
}
|
||||
|
||||
private static int evaluateNumber(int value, Evaluator over, Evaluator limit, Evaluator multiplier, Evaluator divider,
|
||||
LotroGame game, PhysicalCard cardAffected) {
|
||||
int result = Math.max(0, value - over.evaluateExpression(game, cardAffected));
|
||||
result = Math.min(limit.evaluateExpression(game, cardAffected), result);
|
||||
result *= multiplier.evaluateExpression(game, cardAffected);
|
||||
result /= divider.evaluateExpression(game, cardAffected);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,8 +14,11 @@ import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.SingleMemoryEvaluator;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.results.CharacterLostSkirmishResult;
|
||||
import com.google.common.base.Predicates;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class FilterFactory {
|
||||
private final Map<String, FilterableSource> simpleFilters = new HashMap<>();
|
||||
@@ -99,6 +102,8 @@ public class FilterFactory {
|
||||
}
|
||||
return Filters.none;
|
||||
}));
|
||||
simpleFilters.put("hasrace",
|
||||
(actionContext -> (Filter) (game, physicalCard) -> physicalCard.getBlueprint().getRace() != null));
|
||||
simpleFilters.put("idinstored",
|
||||
(actionContext ->
|
||||
(Filter) (game, physicalCard) -> {
|
||||
@@ -425,6 +430,12 @@ public class FilterFactory {
|
||||
throw new InvalidCardDefinitionException("Unknown race definition in filter: " + parameter
|
||||
+ ". Do not use race() for races; instead just list the race by itself.");
|
||||
});
|
||||
parameterFilters.put("raceinmemory",
|
||||
(parameter, environment) -> actionContext -> {
|
||||
Set<Race> races = actionContext.getCardsFromMemory(parameter).stream().map(
|
||||
(Function<PhysicalCard, Race>) physicalCard -> physicalCard.getBlueprint().getRace()).filter(Predicates.notNull()).collect(Collectors.toSet());
|
||||
return (Filter) (game, physicalCard) -> races.contains(physicalCard.getBlueprint().getRace());
|
||||
});
|
||||
parameterFilters.put("regionnumber",
|
||||
(parameter, environment) -> {
|
||||
int min, max;
|
||||
|
||||
Reference in New Issue
Block a user