Migrated Dwarven cards in set 7 to hjson
This commit is contained in:
@@ -1,73 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set7;
|
||||
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
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.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.actions.RequiredTriggerAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractAttachable;
|
||||
import com.gempukku.lotro.logic.effects.AddBurdenEffect;
|
||||
import com.gempukku.lotro.logic.effects.NegateWoundEffect;
|
||||
import com.gempukku.lotro.logic.effects.PutOnTheOneRingEffect;
|
||||
import com.gempukku.lotro.logic.effects.WoundCharactersEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierFlag;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Return of the King
|
||||
* Type: The One Ring
|
||||
* Strength: +2
|
||||
* Game Text: Maneuver: Add a burden to wear The One Ring until the regroup phase. While wearing The One Ring, each time
|
||||
* the Ring-bearer is about to take a wound, add a burden instead.
|
||||
*/
|
||||
public class Card7_002 extends AbstractAttachable {
|
||||
public Card7_002() {
|
||||
super(null, CardType.THE_ONE_RING, 0, null, null, "The One Ring", "Such a Weight to Carry", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filter getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
|
||||
return Filters.none;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStrength() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.MANEUVER, self)
|
||||
&& !game.getModifiersQuerying().hasFlagActive(game, ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new AddBurdenEffect(self.getOwner(), self, 1));
|
||||
action.appendEffect(
|
||||
new PutOnTheOneRingEffect());
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RequiredTriggerAction> getRequiredBeforeTriggers(LotroGame game, Effect effect, PhysicalCard self) {
|
||||
if (TriggerConditions.isGettingWounded(effect, game, Filters.hasAttached(self))
|
||||
&& game.getGameState().isWearingRing()
|
||||
&& !game.getModifiersQuerying().hasFlagActive(game, ModifierFlag.RING_TEXT_INACTIVE)) {
|
||||
WoundCharactersEffect woundEffect = (WoundCharactersEffect) effect;
|
||||
RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
action.appendEffect(new NegateWoundEffect(woundEffect, self.getAttachedTo()));
|
||||
action.appendEffect(new AddBurdenEffect(self.getOwner(), self, 1));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set7.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.SpotCondition;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.ConditionEvaluator;
|
||||
|
||||
/**
|
||||
* Set: The Return of the King
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 0
|
||||
* Type: Event • Skirmish
|
||||
* Game Text: Make a Dwarf strength +2 (+4 if you spot a card stacked on a [DWARVEN] condition).
|
||||
*/
|
||||
public class Card7_003 extends AbstractEvent {
|
||||
public Card7_003() {
|
||||
super(Side.FREE_PEOPLE, 0, Culture.DWARVEN, "Battle Tested", 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 ConditionEvaluator(2, 4, new SpotCondition(CardType.CONDITION, Culture.DWARVEN, Filters.hasStacked(Filters.any))), Race.DWARF));
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set7.dwarven;
|
||||
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
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.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.AddThreatsEffect;
|
||||
import com.gempukku.lotro.logic.effects.DrawCardsEffect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
/**
|
||||
* Set: The Return of the King
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 2
|
||||
* Type: Event • Fellowship
|
||||
* Game Text: Spot a Dwarf and add a threat to draw 3 cards.
|
||||
*/
|
||||
public class Card7_004 extends AbstractEvent {
|
||||
public Card7_004() {
|
||||
super(Side.FREE_PEOPLE, 2, Culture.DWARVEN, "Calculated Risk", Phase.FELLOWSHIP);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canSpot(game, Race.DWARF)
|
||||
&& PlayConditions.canAddThreat(game, self, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendCost(
|
||||
new AddThreatsEffect(playerId, self, 1));
|
||||
action.appendEffect(
|
||||
new DrawCardsEffect(action, playerId, 3));
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set7.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.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.actions.RequiredTriggerAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.effects.AddThreatsEffect;
|
||||
import com.gempukku.lotro.logic.effects.ChoiceEffect;
|
||||
import com.gempukku.lotro.logic.effects.ChooseAndHealCharactersEffect;
|
||||
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndPutCardFromDiscardIntoHandEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Return of the King
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 0
|
||||
* Type: Condition • Support Area
|
||||
* Game Text: To play, spot a Dwarf. Each time the fellowship moves, add a threat or discard this condition.
|
||||
* Regroup: Discard this condition to heal a Dwarf twice and take a [DWARVEN] skirmish event into hand from your
|
||||
* discard pile.
|
||||
*/
|
||||
public class Card7_005 extends AbstractPermanent {
|
||||
public Card7_005() {
|
||||
super(Side.FREE_PEOPLE, 0, CardType.CONDITION, Culture.DWARVEN, "Dark Ways");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canSpot(game, Race.DWARF);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.moves(game, effectResult)) {
|
||||
RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
|
||||
List<Effect> possibleEffects = new LinkedList<>();
|
||||
possibleEffects.add(
|
||||
new AddThreatsEffect(self.getOwner(), self, 1));
|
||||
possibleEffects.add(
|
||||
new SelfDiscardEffect(self));
|
||||
|
||||
action.appendEffect(
|
||||
new ChoiceEffect(action, self.getOwner(), possibleEffects));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self)
|
||||
&& PlayConditions.canSelfDiscard(self, game)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new SelfDiscardEffect(self));
|
||||
action.appendEffect(
|
||||
new ChooseAndHealCharactersEffect(action, playerId, 1, 1, 2, Race.DWARF));
|
||||
action.appendEffect(
|
||||
new ChooseAndPutCardFromDiscardIntoHandEffect(action, playerId, 1, 1, Culture.DWARVEN, CardType.EVENT, Keyword.SKIRMISH));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set7.dwarven;
|
||||
|
||||
import com.gempukku.lotro.common.*;
|
||||
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.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.condition.InitiativeCondition;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Return of the King
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 2
|
||||
* Type: Companion • Dwarf
|
||||
* Strength: 6
|
||||
* Vitality: 3
|
||||
* Resistance: 6
|
||||
* Signet: Theoden
|
||||
* Game Text: Damage +1. While you have initiative, Gimli is strength +2.
|
||||
*/
|
||||
public class Card7_006 extends AbstractCompanion {
|
||||
public Card7_006() {
|
||||
super(2, 6, 3, 6, Culture.DWARVEN, Race.DWARF, Signet.THEODEN, "Gimli", "Faithful Companion", true);
|
||||
addKeyword(Keyword.DAMAGE, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new StrengthModifier(self, self, new InitiativeCondition(Side.FREE_PEOPLE), 2));
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set7.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.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
|
||||
import com.gempukku.lotro.logic.effects.ChoiceEffect;
|
||||
import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect;
|
||||
import com.gempukku.lotro.logic.effects.PreventableCardEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndPreventCardEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Return of the King
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 2
|
||||
* Type: Companion • Dwarf
|
||||
* Strength: 6
|
||||
* Vitality: 3
|
||||
* Resistance: 6
|
||||
* Signet: Aragorn
|
||||
* Game Text: Damage +1. Response: if a [DWARVEN] condition is about to be discarded by an opponent, exert a Dwarf
|
||||
* or discard a [DWARVEN] card from hand to prevent that.
|
||||
*/
|
||||
public class Card7_007 extends AbstractCompanion {
|
||||
public Card7_007() {
|
||||
super(2, 6, 3, 6, Culture.DWARVEN, Race.DWARF, Signet.ARAGORN, "Gimli", "Feared Axeman", true);
|
||||
addKeyword(Keyword.DAMAGE, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getOptionalInPlayBeforeActions(String playerId, LotroGame game, Effect effect, PhysicalCard self) {
|
||||
if (TriggerConditions.isGettingDiscardedByOpponent(effect, game, playerId, Culture.DWARVEN, CardType.CONDITION)
|
||||
&& (PlayConditions.canExert(self, game, Race.DWARF)
|
||||
|| PlayConditions.canDiscardFromHand(game, playerId, 1, Culture.DWARVEN))) {
|
||||
final ActivateCardAction action = new ActivateCardAction(self);
|
||||
List<Effect> possibleCosts = new LinkedList<>();
|
||||
possibleCosts.add(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Race.DWARF) {
|
||||
@Override
|
||||
public String getText(LotroGame game) {
|
||||
return "Exert a Dwarf";
|
||||
}
|
||||
});
|
||||
possibleCosts.add(
|
||||
new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 1, Culture.DWARVEN) {
|
||||
@Override
|
||||
public String getText(LotroGame game) {
|
||||
return "Discard a DWARVEN card";
|
||||
}
|
||||
});
|
||||
action.appendCost(
|
||||
new ChoiceEffect(action, playerId, possibleCosts));
|
||||
action.appendEffect(
|
||||
new ChooseAndPreventCardEffect(self, (PreventableCardEffect) effect, playerId, "Choose DWARVEN condition",
|
||||
Culture.DWARVEN, CardType.CONDITION));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set7.dwarven;
|
||||
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.common.PossessionClass;
|
||||
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.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractAttachableFPPossession;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect;
|
||||
import com.gempukku.lotro.logic.effects.PreventCardEffect;
|
||||
import com.gempukku.lotro.logic.effects.WoundCharactersEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Return of the King
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 2
|
||||
* Type: Possession • Armor
|
||||
* Game Text: Bearer must be Gimli. Response: If you have initiative and Gimli is about to take a wound, discard
|
||||
* 2 cards from hand to prevent that wound.
|
||||
*/
|
||||
public class Card7_008 extends AbstractAttachableFPPossession {
|
||||
public Card7_008() {
|
||||
super(2, 0, 0, Culture.DWARVEN, PossessionClass.ARMOR, "Gimli's Armor", null, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
|
||||
return Filters.gimli;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getOptionalInPlayBeforeActions(String playerId, LotroGame game, Effect effect, PhysicalCard self) {
|
||||
if (PlayConditions.hasInitiative(game, Side.FREE_PEOPLE)
|
||||
&& TriggerConditions.isGettingWounded(effect, game, Filters.gimli)
|
||||
&& PlayConditions.canDiscardFromHand(game, playerId, 2, Filters.any)) {
|
||||
final WoundCharactersEffect woundEffect = (WoundCharactersEffect) effect;
|
||||
|
||||
final ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 2));
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose Gimli", Filters.gimli) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
action.insertEffect(
|
||||
new PreventCardEffect(woundEffect, card));
|
||||
}
|
||||
});
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set7.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.cardtype.AbstractAttachableFPPossession;
|
||||
import com.gempukku.lotro.logic.modifiers.ArcheryTotalModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.condition.MinThreatCondition;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Return of the King
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 2
|
||||
* Type: Possession • Hand Weapon
|
||||
* Strength: +2
|
||||
* Game Text: Bearer must be a dwarf. While you can spot a threat, bearer is damage +1. While you can spot 2 threats,
|
||||
* bearer is strength +1. While you can spot 3 threats, the fellowship archery total is +1.
|
||||
*/
|
||||
public class Card7_009 extends AbstractAttachableFPPossession {
|
||||
public Card7_009() {
|
||||
super(2, 2, 0, Culture.DWARVEN, PossessionClass.HAND_WEAPON, "Gimli's Battle Axe", "Trusted Weapon", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
|
||||
return Race.DWARF;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
|
||||
List<Modifier> modifiers = new LinkedList<>();
|
||||
modifiers.add(
|
||||
new KeywordModifier(self, Filters.hasAttached(self), new MinThreatCondition(1), Keyword.DAMAGE, 1));
|
||||
modifiers.add(
|
||||
new StrengthModifier(self, Filters.hasAttached(self), new MinThreatCondition(2), 1));
|
||||
modifiers.add(
|
||||
new ArcheryTotalModifier(self, Side.FREE_PEOPLE, new MinThreatCondition(3), 1));
|
||||
return modifiers;
|
||||
}
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set7.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.actions.OptionalTriggerAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.effects.DrawCardsEffect;
|
||||
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndStackCardsFromHandEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Return of the King
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 1
|
||||
* Type: Condition • Support Area
|
||||
* Game Text: When you play this condition, you may stack 2 cards from hand here and draw a card for each [DWARVEN] card
|
||||
* you stack. Skirmish: Make a Dwarf strength +2. Also, make that Dwarf damage +2 for each [DWARVEN] card stacked
|
||||
* on this condition. Discard this condition.
|
||||
*/
|
||||
public class Card7_010 extends AbstractPermanent {
|
||||
public Card7_010() {
|
||||
super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.DWARVEN, "Loyalty Unshaken");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OptionalTriggerAction> getOptionalAfterTriggers(final String playerId, final LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.played(game, effectResult, self)) {
|
||||
final OptionalTriggerAction action = new OptionalTriggerAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseAndStackCardsFromHandEffect(action, playerId, 2, 2, self, Filters.any) {
|
||||
@Override
|
||||
public void stackFromHandCallback(Collection<PhysicalCard> cardsStacked) {
|
||||
int count = Filters.filter(cardsStacked, game, Culture.DWARVEN).size();
|
||||
if (count > 0)
|
||||
action.appendEffect(
|
||||
new DrawCardsEffect(action, playerId, count));
|
||||
}
|
||||
});
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)) {
|
||||
final ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose a Dwarf", Race.DWARF) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
game.getModifiersEnvironment().addUntilEndOfPhaseModifier(
|
||||
new StrengthModifier(self, card, 2), Phase.SKIRMISH);
|
||||
int stackedDwarf = Filters.filter(game.getGameState().getStackedCards(self), game, Culture.DWARVEN).size();
|
||||
if (stackedDwarf > 0)
|
||||
game.getModifiersEnvironment().addUntilEndOfPhaseModifier(
|
||||
new KeywordModifier(self, card, Keyword.DAMAGE, stackedDwarf * 2), Phase.SKIRMISH);
|
||||
}
|
||||
});
|
||||
action.appendEffect(
|
||||
new SelfDiscardEffect(self));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set7.dwarven;
|
||||
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
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.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.actions.SubAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.decisions.MultipleChoiceAwaitingDecision;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.effects.DrawCardsEffect;
|
||||
import com.gempukku.lotro.logic.effects.ExertCharactersEffect;
|
||||
import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
/**
|
||||
* Set: The Return of the King
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 1
|
||||
* Type: Event • Skirmish
|
||||
* Game Text: Make a Dwarf strength +2. You may also exert that Dwarf to draw 2 cards.
|
||||
*/
|
||||
public class Card7_011 extends AbstractEvent {
|
||||
public Card7_011() {
|
||||
super(Side.FREE_PEOPLE, 1, Culture.DWARVEN, "Out of Darkness", Phase.SKIRMISH);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(final String playerId, LotroGame game, final PhysicalCard self) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose a Dwarf", Race.DWARF) {
|
||||
@Override
|
||||
protected void cardSelected(final LotroGame game, final PhysicalCard card) {
|
||||
game.getModifiersEnvironment().addUntilEndOfPhaseModifier(
|
||||
new StrengthModifier(self, card, 2), Phase.SKIRMISH);
|
||||
if (PlayConditions.canExert(self, game, card)) {
|
||||
action.appendEffect(
|
||||
new PlayoutDecisionEffect(playerId,
|
||||
new MultipleChoiceAwaitingDecision(1, "Do you want to exert that Dwarf to draw 2 cards?", new String[]{"Yes", "No"}) {
|
||||
@Override
|
||||
protected void validDecisionMade(int index, String result) {
|
||||
if (index == 0) {
|
||||
SubAction subAction = new SubAction(action);
|
||||
subAction.appendCost(
|
||||
new ExertCharactersEffect(action, self, card));
|
||||
subAction.appendEffect(
|
||||
new DrawCardsEffect(action, playerId, 2));
|
||||
game.getActionsEnvironment().addActionToStack(subAction);
|
||||
}
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
});
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set7.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.ChooseAndWoundCharactersEffect;
|
||||
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndStackCardsFromDiscardEffect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Return of the King
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 2
|
||||
* Type: Condition • Support Area
|
||||
* Game Text: Regroup: Exert a Dwarf companion to stack a card from your discard pile here. Skirmish: Wound a minion
|
||||
* skirmishing a Dwarf once for each [DWARVEN] card stacked here. Discard this condition.
|
||||
*/
|
||||
public class Card7_012 extends AbstractPermanent {
|
||||
public Card7_012() {
|
||||
super(Side.FREE_PEOPLE, 2, CardType.CONDITION, Culture.DWARVEN, "Preparations");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self)
|
||||
&& PlayConditions.canExert(self, game, Race.DWARF, CardType.COMPANION)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Race.DWARF, CardType.COMPANION));
|
||||
action.appendEffect(
|
||||
new ChooseAndStackCardsFromDiscardEffect(action, playerId, 1, 1, self, Filters.any));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
int count = Filters.filter(game.getGameState().getStackedCards(self), game, Culture.DWARVEN).size();
|
||||
for (int i = 0; i < count; i++)
|
||||
action.appendEffect(
|
||||
new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.MINION, Filters.inSkirmishAgainst(Race.DWARF)));
|
||||
action.appendEffect(
|
||||
new SelfDiscardEffect(self));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set7.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.GameUtils;
|
||||
import com.gempukku.lotro.logic.actions.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractAttachable;
|
||||
import com.gempukku.lotro.logic.effects.AssignmentEffect;
|
||||
import com.gempukku.lotro.logic.effects.DrawCardsEffect;
|
||||
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.AddActionToCardModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Return of the King
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 2
|
||||
* Type: Condition
|
||||
* Game Text: Bearer must be a [DWARVEN] companion. Each minion gains this ability: 'Assignment: Assign this minion
|
||||
* to bearer of Reckless Pride.' Regroup: Discard this condition to draw 4 cards.
|
||||
*/
|
||||
public class Card7_013 extends AbstractAttachable {
|
||||
public Card7_013() {
|
||||
super(Side.FREE_PEOPLE, CardType.CONDITION, 2, Culture.DWARVEN, null, "Reckless Pride", null, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
|
||||
return Filters.and(Culture.DWARVEN, CardType.COMPANION);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getInPlayModifiers(final LotroGame game, final PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new AddActionToCardModifier(self, null, CardType.MINION) {
|
||||
@Override
|
||||
protected ActivateCardAction createExtraPhaseAction(LotroGame game, PhysicalCard matchingCard) {
|
||||
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.ASSIGNMENT, matchingCard, 0)) {
|
||||
ActivateCardAction action = new ActivateCardAction(matchingCard);
|
||||
action.setText("Assign to " + GameUtils.getFullName(self.getAttachedTo()));
|
||||
action.appendEffect(
|
||||
new AssignmentEffect(matchingCard.getOwner(), self.getAttachedTo(), matchingCard));
|
||||
return action;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self)
|
||||
&& PlayConditions.canSelfDiscard(self, game)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new SelfDiscardEffect(self));
|
||||
action.appendEffect(
|
||||
new DrawCardsEffect(action, playerId, 4));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set7.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.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.DiscardStackedCardsEffect;
|
||||
import com.gempukku.lotro.logic.effects.DrawCardsEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Return of the King
|
||||
* Side: Free
|
||||
* Culture: Dwarven
|
||||
* Twilight Cost: 1
|
||||
* Type: Event • Maneuver
|
||||
* Game Text: Choose one: Spot a Dwarf to draw a card; or, if this card is stacked on a [DWARVEN] condition, spot
|
||||
* a Dwarf companion and discard this event to exert a minion twice.
|
||||
*/
|
||||
public class Card7_014 extends AbstractEvent {
|
||||
public Card7_014() {
|
||||
super(Side.FREE_PEOPLE, 1, Culture.DWARVEN, "Slaked Thirsts", Phase.MANEUVER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canSpot(game, Race.DWARF);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new DrawCardsEffect(action, playerId, 1));
|
||||
return action;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsFromStacked(String playerId, LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseStackedFPCardDuringPhase(game, Phase.MANEUVER, self)
|
||||
&& PlayConditions.isStackedOn(self, game, Culture.DWARVEN, CardType.CONDITION)
|
||||
&& PlayConditions.canSpot(game, Race.DWARF, CardType.COMPANION)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new DiscardStackedCardsEffect(self, self));
|
||||
action.appendEffect(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, 2, CardType.MINION));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -22,20 +22,24 @@
|
||||
twilight: 0
|
||||
type: Event
|
||||
keywords: Skirmish
|
||||
/*requires: {
|
||||
|
||||
}
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
|
||||
},
|
||||
effect: [
|
||||
{
|
||||
|
||||
type: modifyStrength
|
||||
filter: choose(dwarf)
|
||||
amount: {
|
||||
type: condition
|
||||
condition: {
|
||||
type: canSpot
|
||||
filter: culture(dwarven),condition,hasStacked(any)
|
||||
}
|
||||
true: 4
|
||||
false: 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}*/
|
||||
}
|
||||
gametext: Make a Dwarf strength +2 (+4 if you spot a card stacked on a [dwarven] condition).
|
||||
lore: We're going to follow you, lad – even on the dark Road....'
|
||||
promotext: ""
|
||||
@@ -69,20 +73,22 @@
|
||||
twilight: 2
|
||||
type: Event
|
||||
keywords: Fellowship
|
||||
/*requires: {
|
||||
|
||||
}
|
||||
effects: {
|
||||
type: event
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: dwarf
|
||||
}
|
||||
cost: {
|
||||
|
||||
type: addThreats
|
||||
},
|
||||
effect: [
|
||||
{
|
||||
|
||||
type: drawCards
|
||||
count: 3
|
||||
}
|
||||
]
|
||||
}*/
|
||||
}
|
||||
gametext: Spot a Dwarf and add a threat to draw 3 cards.
|
||||
lore: Beyond the eyes of Dwarves are such fortellings....'
|
||||
promotext: ""
|
||||
@@ -116,17 +122,56 @@
|
||||
twilight: 0
|
||||
type: Condition
|
||||
keywords: Support Area
|
||||
/*requires: {
|
||||
|
||||
}
|
||||
effects: [
|
||||
{
|
||||
|
||||
}
|
||||
{
|
||||
|
||||
}
|
||||
]*/
|
||||
{
|
||||
type: toPlay
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: dwarf
|
||||
}
|
||||
}
|
||||
{
|
||||
type: trigger
|
||||
trigger: {
|
||||
type: moves
|
||||
}
|
||||
effect: {
|
||||
type: choice
|
||||
texts: [
|
||||
Add a threat
|
||||
Discard this condition
|
||||
]
|
||||
effects: [
|
||||
{
|
||||
type: addThreats
|
||||
}
|
||||
{
|
||||
type: discard
|
||||
filter: self
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
{
|
||||
type: activated
|
||||
phase: regroup
|
||||
cost: {
|
||||
type: discard
|
||||
filter: self
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: heal
|
||||
filter: choose(dwarf)
|
||||
times: 2
|
||||
}
|
||||
{
|
||||
type: putCardsFromDiscardIntoHand
|
||||
filter: choose(culture(dwarven),skirmish,event)
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
gametext: To play, spot a Dwarf.<br>Each time the fellowship moves, add a threat or discard this condition.<br><b>Regroup:</b> Discard this condition to heal a Dwarf twice and take a [dwarven] skirmish event into hand from your discard pile.
|
||||
lore: ""
|
||||
promotext: ""
|
||||
@@ -166,17 +211,20 @@
|
||||
signet: Theoden
|
||||
resistance: 6
|
||||
keywords: Damage+1
|
||||
/*requires: {
|
||||
|
||||
}
|
||||
effects: [
|
||||
{
|
||||
|
||||
}
|
||||
{
|
||||
|
||||
}
|
||||
]*/
|
||||
{
|
||||
type: modifier
|
||||
modifier: {
|
||||
type: modifyStrength
|
||||
filter: self
|
||||
requires: {
|
||||
type: haveInitiative
|
||||
side: free people
|
||||
}
|
||||
amount: 2
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: <b>Damage +1</b>.<br>While you have initiative, Gimli is strength +2.
|
||||
lore: I will go with you even on the Paths of the Dead, and to whatever end they may lead....'
|
||||
promotext: ""
|
||||
@@ -216,17 +264,38 @@
|
||||
signet: Aragorn
|
||||
resistance: 6
|
||||
keywords: Damage+1
|
||||
/*requires: {
|
||||
|
||||
}
|
||||
effects: [
|
||||
{
|
||||
|
||||
}
|
||||
{
|
||||
|
||||
}
|
||||
]*/
|
||||
{
|
||||
type: activatedTrigger
|
||||
trigger: {
|
||||
type: aboutToDiscard
|
||||
filter: culture(dwarven),condition
|
||||
opponent: true
|
||||
}
|
||||
cost: {
|
||||
type: choice
|
||||
texts: [
|
||||
Exert a Dwarf
|
||||
Discard a {dwarven} card from hand
|
||||
]
|
||||
effects: [
|
||||
{
|
||||
type: exert
|
||||
filter: choose(dwarf)
|
||||
}
|
||||
{
|
||||
type: discardFromHand
|
||||
forced: false
|
||||
filter: choose(culture(dwarven))
|
||||
}
|
||||
]
|
||||
}
|
||||
effect: {
|
||||
type: preventDiscard
|
||||
filter: choose(culture(dwarven),condition)
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: <b>Damage +1</b>.<br><b>Response:</b> If a [dwarven] condition is about to be discarded by an opponent, exert a Dwarf or discard a [dwarven] card from hand to prevent that.
|
||||
lore: There are countless things still to see in Middle-earth, and great works to do.'
|
||||
promotext: ""
|
||||
@@ -260,18 +329,29 @@
|
||||
twilight: 2
|
||||
type: Possession
|
||||
itemclass: Armor
|
||||
#target: title(Gimli)
|
||||
/*requires: {
|
||||
|
||||
}
|
||||
target: title(Gimli)
|
||||
effects: [
|
||||
{
|
||||
|
||||
}
|
||||
{
|
||||
|
||||
}
|
||||
]*/
|
||||
{
|
||||
type: activatedTrigger
|
||||
requires: {
|
||||
type: haveInitiative
|
||||
side: free people
|
||||
}
|
||||
trigger: {
|
||||
type: aboutToTakeWound
|
||||
filter: name(Gimli)
|
||||
}
|
||||
cost: {
|
||||
type: discardFromHand
|
||||
forced: false
|
||||
count: 2
|
||||
}
|
||||
effect: {
|
||||
type: preventWound
|
||||
filter: all(name(Gimli))
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: Bearer must be Gimli.<br><b>Response:</b> If you have initiative and Gimli is about to take a wound, discard 2 cards from hand to prevent that wound.
|
||||
lore: I hope that the forgotten people will not have forgotten how to fight....'
|
||||
promotext: ""
|
||||
@@ -307,18 +387,46 @@
|
||||
type: Possession
|
||||
strength: 2
|
||||
itemclass: Hand weapon
|
||||
#target: a Dwarf
|
||||
/*requires: {
|
||||
|
||||
}
|
||||
target: dwarf
|
||||
effects: [
|
||||
{
|
||||
|
||||
}
|
||||
{
|
||||
|
||||
}
|
||||
]*/
|
||||
{
|
||||
type: modifier
|
||||
modifier: {
|
||||
type: addKeyword
|
||||
requires: {
|
||||
type: canSpotThreats
|
||||
amount: 1
|
||||
}
|
||||
filter: bearer
|
||||
keyword: damage
|
||||
amount: 1
|
||||
}
|
||||
}
|
||||
{
|
||||
type: modifier
|
||||
modifier: {
|
||||
type: modifyStrength
|
||||
requires: {
|
||||
type: canSpotThreats
|
||||
amount: 2
|
||||
}
|
||||
filter: bearer
|
||||
amount: 1
|
||||
}
|
||||
}
|
||||
{
|
||||
type: modifier
|
||||
modifier: {
|
||||
type: modifyArcheryTotal
|
||||
requires: {
|
||||
type: canSpotThreats
|
||||
amount: 3
|
||||
}
|
||||
side: free people
|
||||
amount: 1
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: Bearer must be a Dwarf.<br>While you can spot a threat, bearer is <b>damage +1</b>.<br>While you can spot 2 threats, bearer is strength +1.<br>While you can spot 3 threats, the fellowship archery total is +1.
|
||||
lore: ""
|
||||
promotext: ""
|
||||
@@ -352,17 +460,58 @@
|
||||
twilight: 1
|
||||
type: Condition
|
||||
keywords: Support Area
|
||||
/*requires: {
|
||||
|
||||
}
|
||||
effects: [
|
||||
{
|
||||
|
||||
}
|
||||
{
|
||||
|
||||
}
|
||||
]*/
|
||||
{
|
||||
type: trigger
|
||||
optional: true
|
||||
trigger: {
|
||||
type: played
|
||||
filter: self
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: stackCardsFromHand
|
||||
where: self
|
||||
count: 2
|
||||
memorize: stackedCards
|
||||
}
|
||||
{
|
||||
type: drawCards
|
||||
count: {
|
||||
type: forEachInMemory
|
||||
memory: stackedCards
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
type: activated
|
||||
phase: skirmish
|
||||
effect: [
|
||||
{
|
||||
type: modifyStrength
|
||||
filter: choose(dwarf)
|
||||
amount: 2
|
||||
memorize: chosenDwarf
|
||||
}
|
||||
{
|
||||
type: addKeyword
|
||||
filter: memory(chosenDwarf)
|
||||
keyword: damage
|
||||
amount: {
|
||||
type: countStacked
|
||||
on: self
|
||||
filter: culture(dwarven)
|
||||
multiplier: 2
|
||||
}
|
||||
}
|
||||
{
|
||||
type: discard
|
||||
filter: self
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
gametext: When you play this condition, you may stack 2 cards from hand here and draw a card for each [dwarven] card you stack.<br><b>Skirmish:</b> Make a Dwarf strength +2. Also, make that Dwarf <b>damage +2</b> for each [dwarven] card stacked on this condition. Discard this condition.
|
||||
lore: ""
|
||||
promotext: ""
|
||||
@@ -396,20 +545,39 @@
|
||||
twilight: 1
|
||||
type: Event
|
||||
keywords: Skirmish
|
||||
/*requires: {
|
||||
|
||||
}
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
|
||||
},
|
||||
effect: [
|
||||
{
|
||||
|
||||
type: modifyStrength
|
||||
filter: choose(dwarf)
|
||||
amount: 2
|
||||
memorize: chosenDwarf
|
||||
}
|
||||
{
|
||||
type: conditional
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: memory(chosenDwarf),canExert
|
||||
}
|
||||
effect: {
|
||||
type: optional
|
||||
text: Would you like to exert {chosenDwarf} to draw 2 cards?
|
||||
effect: {
|
||||
type: costToEffect
|
||||
cost: {
|
||||
type: exert
|
||||
filter: memory(chosenDwarf)
|
||||
}
|
||||
effect: {
|
||||
type: drawCards
|
||||
count: 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}*/
|
||||
}
|
||||
gametext: Make a Dwarf strength +2. You may also exert that Dwarf to draw 2 cards.
|
||||
lore: Had I known what was before me, I think that not for any friendship would I have taken the Paths of the Dead.'
|
||||
promotext: ""
|
||||
@@ -443,17 +611,39 @@
|
||||
twilight: 2
|
||||
type: Condition
|
||||
keywords: Support Area
|
||||
/*requires: {
|
||||
|
||||
}
|
||||
effects: [
|
||||
{
|
||||
|
||||
}
|
||||
{
|
||||
|
||||
}
|
||||
]*/
|
||||
{
|
||||
type: activated
|
||||
phase: regroup
|
||||
cost: {
|
||||
type: exert
|
||||
filter: choose(dwarf)
|
||||
}
|
||||
effect: {
|
||||
type: stackCardsFromDiscard
|
||||
where: self
|
||||
}
|
||||
}
|
||||
{
|
||||
type: activated
|
||||
phase: skirmish
|
||||
effect: [
|
||||
{
|
||||
type: wound
|
||||
filter: choose(minion,inSkirmishAgainst(dwarf))
|
||||
times: {
|
||||
type: countStacked
|
||||
on: self
|
||||
filter: culture(dwarven)
|
||||
}
|
||||
}
|
||||
{
|
||||
type: discard
|
||||
filter: self
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
gametext: <b>Regroup:</b> Exert a Dwarf companion to stack a card from your discard pile here.<br><b>Skirmish:</b> Wound a minion skirmishing a Dwarf once for each [dwarven] card stacked here. Discard this condition.
|
||||
lore: ""
|
||||
promotext: ""
|
||||
@@ -486,17 +676,35 @@
|
||||
culture: Dwarven
|
||||
twilight: 2
|
||||
type: Condition
|
||||
/*requires: {
|
||||
|
||||
}
|
||||
target: culture(dwarven),companion
|
||||
effects: [
|
||||
{
|
||||
|
||||
}
|
||||
{
|
||||
|
||||
}
|
||||
]*/
|
||||
{
|
||||
type: modifier
|
||||
modifier: {
|
||||
type: addActivated
|
||||
filter: minion
|
||||
phase: assignment
|
||||
text: Assign this minion to bearer of Reckless Pride.
|
||||
effect: {
|
||||
type: assignFpCharacterToSkirmish
|
||||
fpCharacter: choose(hasAttached(name(Reckless Pride)))
|
||||
against: self
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
type: activated
|
||||
phase: regroup
|
||||
cost: {
|
||||
type: discard
|
||||
filter: self
|
||||
}
|
||||
effect: {
|
||||
type: drawCards
|
||||
count: 4
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: Bearer must be a [dwarven] companion.<br>Each minion gains this ability: "<b>Assignment:</b> Assign this minion to bearer of Reckless Pride."<br><b>Regroup:</b> Discard this condition to draw 4 cards.
|
||||
lore: ""
|
||||
promotext: ""
|
||||
@@ -530,20 +738,39 @@
|
||||
twilight: 1
|
||||
type: Event
|
||||
keywords: Maneuver
|
||||
/*requires: {
|
||||
|
||||
}
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
|
||||
},
|
||||
effect: [
|
||||
{
|
||||
|
||||
}
|
||||
]
|
||||
}*/
|
||||
effects: [
|
||||
{
|
||||
type: event
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: dwarf
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: drawCards
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
type: activatedFromStacked
|
||||
phase: maneuver
|
||||
stackedOn: culture(dwarven),condition
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: dwarf,companion
|
||||
}
|
||||
cost: {
|
||||
type: discardStackedCards
|
||||
filter: self
|
||||
on: culture(dwarven),condition
|
||||
}
|
||||
effect: {
|
||||
type: exert
|
||||
filter: choose(minion)
|
||||
times: 2
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: Choose one: Spot a Dwarf to draw a card; or, if this card is stacked on a [dwarven] condition, spot a Dwarf companion and discard this event to exert a minion twice.
|
||||
lore: Food and drink would pay off some of my score against you.'
|
||||
promotext: ""
|
||||
@@ -22,25 +22,26 @@ import java.util.List;
|
||||
public class StackCardsFromHand implements EffectAppenderProducer {
|
||||
@Override
|
||||
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "filter", "where", "count");
|
||||
FieldUtils.validateAllowedFields(effectObject, "filter", "where", "count", "memorize");
|
||||
|
||||
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter", "choose(any)");
|
||||
final String where = FieldUtils.getString(effectObject.get("where"), "where");
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(effectObject.get("count"), 1, environment);
|
||||
final String memorize = FieldUtils.getString(effectObject.get("memorize"), "memorize", "_temp2");
|
||||
|
||||
MultiEffectAppender result = new MultiEffectAppender();
|
||||
|
||||
result.addEffectAppender(
|
||||
CardResolver.resolveCard(where, "_temp1", "you", "Choose card to stack on", environment));
|
||||
result.addEffectAppender(
|
||||
CardResolver.resolveCardsInHand(filter, valueSource, "_temp2", "you", "you", "Choose cards to stack", environment));
|
||||
CardResolver.resolveCardsInHand(filter, valueSource, memorize, "you", "you", "Choose cards to stack", environment));
|
||||
result.addEffectAppender(
|
||||
new DelayedAppender() {
|
||||
@Override
|
||||
protected List<? extends Effect> createEffects(boolean cost, CostToEffectAction action, ActionContext actionContext) {
|
||||
final PhysicalCard card = actionContext.getCardFromMemory("_temp1");
|
||||
if (card != null) {
|
||||
final Collection<? extends PhysicalCard> cardsInHand = actionContext.getCardsFromMemory("_temp2");
|
||||
final Collection<? extends PhysicalCard> cardsInHand = actionContext.getCardsFromMemory(memorize);
|
||||
|
||||
List<Effect> result = new LinkedList<>();
|
||||
for (PhysicalCard physicalCard : cardsInHand) {
|
||||
|
||||
@@ -210,16 +210,17 @@ public class ValueResolver {
|
||||
actionContext.getGame().getGameState().getCurrentPhase(), limitSource.getEvaluator(actionContext),
|
||||
valueSource.getEvaluator(actionContext));
|
||||
} else if (type.equalsIgnoreCase("countStacked")) {
|
||||
FieldUtils.validateAllowedFields(object, "on", "filter");
|
||||
FieldUtils.validateAllowedFields(object, "on", "filter", "multiplier");
|
||||
final String on = FieldUtils.getString(object.get("on"), "on");
|
||||
final String filter = FieldUtils.getString(object.get("filter"), "filter", "any");
|
||||
|
||||
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
final FilterableSource onFilter = environment.getFilterFactory().generateFilter(on, environment);
|
||||
final ValueSource multiplier = resolveEvaluator(object.get("multiplier"), 1, environment);
|
||||
|
||||
return (actionContext) -> {
|
||||
final Filterable on1 = onFilter.getFilterable(actionContext);
|
||||
return new CountStackedEvaluator(on1, filterableSource.getFilterable(actionContext));
|
||||
return new MultiplyEvaluator(multiplier.getEvaluator(actionContext), new CountStackedEvaluator(on1, filterableSource.getFilterable(actionContext)));
|
||||
};
|
||||
} else if (type.equalsIgnoreCase("forEachYouCanSpot")) {
|
||||
FieldUtils.validateAllowedFields(object, "filter", "over", "limit", "multiplier", "divider");
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class AboutToDiscardFromPlay implements TriggerCheckerProducer {
|
||||
public class AboutToDiscard implements TriggerCheckerProducer {
|
||||
@Override
|
||||
public TriggerChecker getTriggerChecker(JSONObject value, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(value, "source", "filter", "opponent");
|
||||
@@ -15,7 +15,7 @@ public class TriggerCheckerFactory {
|
||||
triggerCheckers.put("abouttoaddburden", new AboutToAddBurden());
|
||||
triggerCheckers.put("abouttoaddtwilight", new AboutToAddTwilight());
|
||||
triggerCheckers.put("abouttobekilled", new AboutToBeKilled());
|
||||
triggerCheckers.put("abouttodiscard", new AboutToDiscardFromPlay());
|
||||
triggerCheckers.put("abouttodiscard", new AboutToDiscard());
|
||||
triggerCheckers.put("abouttoexert", new AboutToExert());
|
||||
triggerCheckers.put("abouttoheal", new AboutToHeal());
|
||||
triggerCheckers.put("abouttomoveto", new AboutToMoveTo());
|
||||
|
||||
Reference in New Issue
Block a user