Migrated Gollum cards in set 5 to hjson

This commit is contained in:
MarcinSc
2024-04-22 00:07:37 +07:00
parent f0f57cdf1a
commit e681d4394d
12 changed files with 226 additions and 683 deletions

View File

@@ -1,65 +0,0 @@
package com.gempukku.lotro.cards.set5.gollum;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
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.GameUtils;
import com.gempukku.lotro.logic.actions.CostToEffectAction;
import com.gempukku.lotro.logic.actions.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.PreventableEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.PlayConditions;
/**
* Set: Battle of Helm's Deep
* Side: Free
* Culture: Gollum
* Twilight Cost: 1
* Type: Event
* Game Text: Maneuver: Discard Smeagol to discard a minion. An opponent may exert a minion twice to prevent this.
*/
public class Card5_021 extends AbstractEvent {
public Card5_021() {
super(Side.FREE_PEOPLE, 1, Culture.GOLLUM, "Be Back Soon", Phase.MANEUVER);
}
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return PlayConditions.canDiscardFromPlay(self, game, Filters.smeagol);
}
@Override
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
PlayEventAction action = new PlayEventAction(self);
action.appendCost(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.smeagol));
action.appendEffect(
new PreventableEffect(action,
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.MINION) {
@Override
public String getText(LotroGame game) {
return "Discard a minion";
}
}, GameUtils.getShadowPlayers(game),
new PreventableEffect.PreventionCost() {
@Override
public Effect createPreventionCostForPlayer(CostToEffectAction subAction, String playerId) {
return new ChooseAndExertCharactersEffect(subAction, playerId, 1, 1, 2, CardType.MINION) {
@Override
public String getText(LotroGame game) {
return "Exert a minion twice";
}
};
}
}
));
return action;
}
}

View File

@@ -1,59 +0,0 @@
package com.gempukku.lotro.cards.set5.gollum;
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.ChooseAndExertCharactersEffect;
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.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Battle of Helm's Deep
* Side: Shadow
* Culture: Gollum
* Twilight Cost: 1
* Type: Condition
* Game Text: Plays to your support area. Each site on the adventure path is a marsh. Shadow: Exert Gollum twice
* and discard this condition to play a minion from your discard pile.
*/
public class Card5_022 extends AbstractPermanent {
public Card5_022() {
super(Side.SHADOW, 1, CardType.CONDITION, Culture.GOLLUM, "Evil-smelling Fens");
}
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new KeywordModifier(self,
Filters.and(
CardType.SITE,
Zone.ADVENTURE_PATH
), Keyword.MARSH));
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SHADOW, self, 0)
&& PlayConditions.canExert(self, game, 2, Filters.gollum)
&& PlayConditions.canPlayFromDiscard(playerId, game, CardType.MINION)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, 2, Filters.gollum));
action.appendCost(
new SelfDiscardEffect(self));
action.appendEffect(
new ChooseAndPlayCardFromDiscardEffect(playerId, game, CardType.MINION));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,51 +0,0 @@
package com.gempukku.lotro.cards.set5.gollum;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Side;
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.cardtype.AbstractAttachable;
import com.gempukku.lotro.logic.effects.PlayNextSiteEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Battle of Helm's Deep
* Side: Free
* Culture: Gollum
* Twilight Cost: 1
* Type: Condition
* Game Text: Plays on Smeagol. Regroup: Exert Smeagol or Gollum to play the fellowship's next site (replacing
* opponent's site if necessary).
*/
public class Card5_023 extends AbstractAttachable {
public Card5_023() {
super(Side.FREE_PEOPLE, CardType.CONDITION, 1, Culture.GOLLUM, null, "Follow Sméagol");
}
@Override
public Filter getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
return Filters.smeagol;
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(final String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self)
&& PlayConditions.canExert(self, game, Filters.gollumOrSmeagol)) {
final ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.gollumOrSmeagol));
action.appendEffect(new PlayNextSiteEffect(action, playerId));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,47 +0,0 @@
package com.gempukku.lotro.cards.set5.gollum;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
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.AbstractMinion;
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Battle of Helm's Deep
* Side: Shadow
* Culture: Gollum
* Twilight Cost: 2
* Type: Minion
* Strength: 5
* Vitality: 4
* Site: 3
* Game Text: Regroup: Discard Gollum to exert a companion or ally.
*/
public class Card5_024 extends AbstractMinion {
public Card5_024() {
super(2, 5, 4, 3, null, Culture.GOLLUM, "Gollum", "Nasty Treacherous Creature", true);
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.REGROUP, self, 0)
&& PlayConditions.canDiscardFromPlay(self, game, self)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfDiscardEffect(self));
action.appendEffect(
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.or(CardType.COMPANION, CardType.ALLY)));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,56 +0,0 @@
package com.gempukku.lotro.cards.set5.gollum;
import com.gempukku.lotro.common.Culture;
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.AbstractMinion;
import com.gempukku.lotro.logic.effects.AddBurdenEffect;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Battle of Helm's Deep
* Side: Shadow
* Culture: Gollum
* Twilight Cost: 2
* Type: Minion
* Strength: 5
* Vitality: 4
* Site: 3
* Game Text: Gollum is strength +1 for each burden. Each times Gollum wins a skirmish, you may add a burden.
*/
public class Card5_025 extends AbstractMinion {
public Card5_025() {
super(2, 5, 4, 3, null, Culture.GOLLUM, "Gollum", "Stinker", true);
}
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new StrengthModifier(self, self, null,
new Evaluator() {
@Override
public int evaluateExpression(LotroGame game, PhysicalCard self) {
return game.getGameState().getBurdens();
}
}));
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.winsSkirmish(game, effectResult, self)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new AddBurdenEffect(self.getOwner(), self, 1));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,39 +0,0 @@
package com.gempukku.lotro.cards.set5.gollum;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
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.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.AddTwilightEffect;
import com.gempukku.lotro.logic.timing.PlayConditions;
/**
* Set: Battle of Helm's Deep
* Side: Shadow
* Culture: Gollum
* Twilight Cost: 0
* Type: Event
* Game Text: Shadow: Spot Smeagol or Gollum to add (1) for each burden.
*/
public class Card5_026 extends AbstractEvent {
public Card5_026() {
super(Side.SHADOW, 0, Culture.GOLLUM, "Look at Him", Phase.SHADOW);
}
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return PlayConditions.canSpot(game, Filters.gollumOrSmeagol);
}
@Override
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new AddTwilightEffect(self, game.getGameState().getBurdens()));
return action;
}
}

View File

@@ -1,63 +0,0 @@
package com.gempukku.lotro.cards.set5.gollum;
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.ActivateCardAction;
import com.gempukku.lotro.logic.cardtype.AbstractAttachable;
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Battle of Helm's Deep
* Side: Free
* Culture: Gollum
* Twilight Cost: 1
* Type: Condition
* Strength: +1
* Game Text: Plays on Smeagol. Skirmish: Discard this condition to make Smeagol damage +1.
*/
public class Card5_027 extends AbstractAttachable {
public Card5_027() {
super(Side.FREE_PEOPLE, CardType.CONDITION, 1, Culture.GOLLUM, null, "Poor Wretch");
}
@Override
public Filter getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
return Filters.smeagol;
}
@Override
public int getStrength() {
return 1;
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) {
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)
&& PlayConditions.canDiscardFromPlay(self, game, self)) {
final ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfDiscardEffect(self));
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose Smeagol", Filters.smeagol) {
@Override
protected void cardSelected(LotroGame game, PhysicalCard card) {
action.insertEffect(
new AddUntilEndOfPhaseModifierEffect(
new KeywordModifier(self, Filters.sameCard(card), Keyword.DAMAGE)));
}
});
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,68 +0,0 @@
package com.gempukku.lotro.cards.set5.gollum;
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.AbstractCompanion;
import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect;
import com.gempukku.lotro.logic.effects.PutCardsFromDeckBeneathDrawDeckEffect;
import com.gempukku.lotro.logic.effects.RevealTopCardsOfDrawDeckEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.logic.modifiers.AbstractExtraPlayCostModifier;
import com.gempukku.lotro.logic.modifiers.cost.AddBurdenExtraPlayCostModifier;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Battle of Helm's Deep
* Side: Free
* Culture: Gollum
* Twilight Cost: 0
* Type: Companion
* Strength: 3
* Vitality: 4
* Resistance: 6
* Signet: Frodo
* Game Text: Ring-bound. To play add a burden. Regroup: Exert Smeagol (or Gollum) twice to reveal the top 4 cards
* of your draw deck. Wound a minion for each Shadow card revealed. Place those 4 cards beneath your draw deck in any order.
*/
public class Card5_028 extends AbstractCompanion {
public Card5_028() {
super(0, 3, 4, 6, Culture.GOLLUM, null, Signet.FRODO, "Sméagol", "Old Noser", true);
addKeyword(Keyword.RING_BOUND);
}
@Override
public List<? extends AbstractExtraPlayCostModifier> getExtraCostToPlay(LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new AddBurdenExtraPlayCostModifier(self, 1, null, self));
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(final String playerId, final LotroGame game, final PhysicalCard self) {
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.REGROUP, self)
&& PlayConditions.canExert(self, game, 2, Filters.gollumOrSmeagol)) {
final ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, 2, Filters.gollumOrSmeagol));
action.appendEffect(
new RevealTopCardsOfDrawDeckEffect(self, playerId, 4) {
@Override
protected void cardsRevealed(List<PhysicalCard> revealedCards) {
int shadowCards = Filters.filter(revealedCards, game, Side.SHADOW).size();
action.appendEffect(
new PutCardsFromDeckBeneathDrawDeckEffect(action, self, playerId, revealedCards, true));
for (int i = 0; i < shadowCards; i++)
action.appendEffect(
new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.MINION));
}
});
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,62 +0,0 @@
package com.gempukku.lotro.cards.set5.gollum;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Signet;
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.AddBurdenEffect;
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.logic.modifiers.AbstractExtraPlayCostModifier;
import com.gempukku.lotro.logic.modifiers.CantTakeWoundsModifier;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.modifiers.cost.AddBurdenExtraPlayCostModifier;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Battle of Helm's Deep
* Side: Free
* Culture: Gollum
* Twilight Cost: 0
* Type: Companion
* Strength: 3
* Vitality: 4
* Resistance: 6
* Signet: Frodo
* Game Text: Ring-bound. To play, add a burden. Skirmish: Add a burden to make Smeagol strength +2 and takes no wound.
*/
public class Card5_029 extends AbstractCompanion {
public Card5_029() {
super(0, 3, 4, 6, Culture.GOLLUM, null, Signet.FRODO, "Sméagol", "Slinker", true);
addKeyword(Keyword.RING_BOUND);
}
@Override
public List<? extends AbstractExtraPlayCostModifier> getExtraCostToPlay(LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new AddBurdenExtraPlayCostModifier(self, 1, null, self));
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new AddBurdenEffect(self.getOwner(), self, 1));
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new StrengthModifier(self, self, 2)));
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new CantTakeWoundsModifier(self, self)));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,74 +0,0 @@
package com.gempukku.lotro.cards.set5.gollum;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
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.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.ChoiceEffect;
import com.gempukku.lotro.logic.effects.DiscardCardAtRandomFromHandEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndPlayCardFromDeckEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndPlayCardFromDiscardEffect;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.LinkedList;
import java.util.List;
/**
* Set: Battle of Helm's Deep
* Side: Shadow
* Culture: Gollum
* Twilight Cost: 0
* Type: Event
* Game Text: Shadow: Play Gollum from your draw deck or your discard pile. Skirmish: Discard a card at random from hand
* to make Gollum strength +3.
*/
public class Card5_030 extends AbstractEvent {
public Card5_030() {
super(Side.SHADOW, 0, Culture.GOLLUM, "We Must Have It", Phase.SHADOW, Phase.SKIRMISH);
}
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return (
game.getGameState().getCurrentPhase() != Phase.SKIRMISH
|| Filters.filter(game.getGameState().getHand(self.getOwner()), game, Filters.not(self)).size() >= 1);
}
@Override
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
PlayEventAction action = new PlayEventAction(self);
if (game.getGameState().getCurrentPhase() == Phase.SHADOW) {
List<Effect> possibleEffects = new LinkedList<>();
possibleEffects.add(
new ChooseAndPlayCardFromDeckEffect(playerId, Filters.gollum) {
@Override
public String getText(LotroGame game) {
return "Play Gollum from your draw deck";
}
});
if (PlayConditions.canPlayFromDiscard(playerId, game, Filters.gollum)) {
possibleEffects.add(
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Filters.gollum) {
@Override
public String getText(LotroGame game) {
return "Play Gollum from your discard pile";
}
});
}
action.appendEffect(
new ChoiceEffect(action, playerId, possibleEffects));
} else {
action.appendCost(
new DiscardCardAtRandomFromHandEffect(self, playerId, false));
action.appendEffect(
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, 3, Filters.gollum));
}
return action;
}
}

View File

@@ -22,20 +22,30 @@
twilight: 1
type: Event
keywords: Maneuver
/*requires: {
}
effects: {
type: event
cost: {
type: discard
filter: choose(name(Sméagol))
},
effect: [
{
type: preventable
player: shadow
text: Would you like to exert a minion twice to prevent discarding a minion?
cost: {
type: exert
player: shadow
filter: choose(minion)
times: 2
}
effect: {
type: discard
filter: choose(minion)
}
}
]
}*/
}
gametext: <b>Maneuver:</b> Discard Sméagol to discard a minion. An opponent may exert a minion twice to prevent this.
lore: Now I wonder where he's got to?'
promotext: ""
@@ -69,17 +79,35 @@
twilight: 1
type: Condition
keywords: Support Area
/*requires: {
}
effects: [
{
}
{
}
]*/
{
type: modifier
modifier: {
type: addKeyword
filter: site,zone(adventure path)
keyword: marsh
}
}
{
type: activated
phase: shadow
cost: [
{
type: exert
filter: choose(name(Gollum))
times: 2
}
{
type: discard
filter: self
}
]
effect: {
type: playCardFromDiscard
filter: choose(minion)
}
}
]
gametext: Plays to your support area.<br>Each site on the adventure path is a <b>marsh</b>.<br><b>Shadow:</b> Exert Gollum twice and discard this condition to play a minion from your discard pile.
lore: No birds here. There are snakeses, wormses, things in the pools. Lots of things, lots of nasty things.'
promotext: ""
@@ -112,17 +140,20 @@
culture: Gollum
twilight: 1
type: Condition
/*requires: {
}
target: name(Sméagol)
effects: [
{
}
{
}
]*/
{
type: activated
phase: regroup
cost: {
type: exert
filter: choose(or(name(Sméagol),name(Gollum)))
}
effect: {
type: playNextSite
}
}
]
gametext: Plays on Sméagol.<br><b>Regroup:</b> Exert Sméagol or Gollum to play the fellowship's next site (replacing opponent's site if necessary).
lore: Follow Sméagol very carefully, and you may go a long way, quite a long way, before He catches you, yes perhaps.'
promotext: ""
@@ -156,21 +187,23 @@
culture: Gollum
twilight: 2
type: Minion
race:
strength: 5
vitality: 4
site: 3
/*requires: {
}
effects: [
{
}
{
}
]*/
{
type: activated
phase: regroup
cost: {
type: discard
filter: self
}
effect: {
type: exert
filter: choose(or(companion,ally))
}
}
]
gametext: <b>Regroup:</b> Discard Gollum to exert a companion or ally.
lore: ...we won't let you go, either. You're full of wickedness and mischief, Gollum.'
promotext: ""
@@ -204,21 +237,32 @@
culture: Gollum
twilight: 2
type: Minion
race:
strength: 5
vitality: 4
site: 3
/*requires: {
}
effects: [
{
}
{
}
]*/
{
type: modifier
modifier: {
type: modifyStrength
filter: self
amount: {
type: forEachBurden
}
}
}
{
type: trigger
optional: true
trigger: {
type: winsSkirmish
filter: self
}
effect: {
type: addBurdens
}
}
]
gametext: Gollum is strength +1 for each burden.<br>Each time Gollum wins a skirmish, you may add a burden.
lore: Still he's a Baggins, my precious, yes, a Baggins. A Baggins stole it. He found it and he said nothing. We hates Bagginses.'
promotext: ""
@@ -252,20 +296,21 @@
twilight: 0
type: Event
keywords: Shadow
/*requires: {
}
effects: {
type: event
cost: {
},
requires: {
type: canSpot
filter: or(name(Sméagol),name(Gollum))
}
effect: [
{
type: addTwilight
amount: {
type: forEachBurden
}
}
]
}*/
}
gametext: <b>Shadow:</b> Spot Sméagol or Gollum to add (1) for each burden.
lore: That's what it is. It's that Gollum! Snakes and adders! And to think I thought that we'd puzzle him with our bit of a climb!'
promotext: ""
@@ -299,17 +344,23 @@
twilight: 1
type: Condition
strength: 1
/*requires: {
}
target: name(Sméagol)
effects: [
{
}
{
}
]*/
{
type: activated
phase: skirmish
cost: {
type: discard
filter: self
}
effect: {
type: addKeyword
filter: choose(name(Sméagol))
keyword: damage
amount: 1
}
}
]
gametext: Plays on Sméagol.<br><b>Skirmish:</b> Discard this condition to make Sméagol <b>damage +1</b>.
lore: Throttle us in our sleep, that's his plan.'
promotext: ""
@@ -343,23 +394,51 @@
culture: Gollum
twilight: 0
type: Companion
race:
strength: 3
vitality: 4
signet: Frodo
resistance: 6
keywords: Ring-bound
/*requires: {
}
effects: [
{
}
{
}
]*/
{
type: extraCost
cost: {
type: addBurdens
}
}
{
type: activated
phase: regroup
cost: {
type: exert
filter: choose(or(name(Sméagol),name(Gollum)))
times: 2
}
effect: [
{
type: revealTopCardsOfDrawDeck
count: 4
memorize: revealedCards
}
{
type: repeat
amount: {
type: forEachMatchingInMemory
filter: side(shadow)
memory: revealedCards
}
effect: {
type: wound
filter: choose(minion)
}
}
{
type: putCardsFromDeckOnBottomOfDeck
filter: memory(revealedCards)
}
]
}
]
gametext: <b>Ring-bound</b>. To play, add a burden.<br><b>Regroup:</b> Exert Sméagol (or Gollum) twice to reveal the top 4 cards of your draw deck. Wound a minion for each Shadow card revealed. Place those 4 cards beneath your draw deck in any order.
lore: Could you find anything fit for a hungry hobbit?'
promotext: ""
@@ -393,23 +472,40 @@
culture: Gollum
twilight: 0
type: Companion
race:
strength: 3
vitality: 4
signet: Frodo
resistance: 6
keywords: Ring-bound
/*requires: {
}
effects: [
{
}
{
}
]*/
{
type: extraCost
cost: {
type: addBurdens
}
}
{
type: activated
phase: skirmish
cost: {
type: addBurdens
}
effect: [
{
type: modifyStrength
filter: self
amount: 2
}
{
type: addModifier
modifier: {
type: cantTakeWounds
filter: self
}
}
]
}
]
gametext: <b>Ring-bound</b>. To play, add a burden.<br><b>Skirmish:</b> Add a burden to make Sméagol strength +2 and take no wounds.
lore: ...that it is my fate to receive help from you, where I least looked for it, and your fate to help me whom you long pursued with evil purpose.'
promotext: ""
@@ -446,20 +542,48 @@
Shadow
Skirmish
]
/*requires: {
}
effects: {
type: event
cost: {
},
effect: [
{
}
]
}*/
type: if
condition: {
type: phase
phase: shadow
}
true: {
type: costToEffect
effect: {
type: choice
texts: [
Play Gollum from your draw deck
Play Gollum from your discard pile
]
effects: [
{
type: playCardFromDrawDeck
filter: choose(name(Gollum))
}
{
type: playCardFromDiscard
filter: choose(name(Gollum))
}
]
}
}
false: {
type: costToEffect
cost: {
type: discardCardAtRandomFromHand
forced: false
}
effect: {
type: modifyStrength
filter: choose(name(Gollum))
amount: 3
}
}
}
}
gametext: <b>Shadow:</b> Play Gollum from your draw deck or discard pile.<br><b>Skirmish:</b> Discard a card at random from hand to make Gollum strength +3.
lore: No, sweet one. See, my precious: if we has it, then we can escape, even from Him, eh?'
promotext: ""

View File

@@ -462,6 +462,9 @@ public class FilterFactory {
});
parameterFilters.put("zone",
(parameter, environment) -> {
// Fix for faulty "Sanitize" method, which removes spaces and underscores, therefore making it
// impossible to match ADVENTURE_PATH Zone
if (parameter.equals("adventurepath")) parameter = "adventure path";
final Zone zone = FieldUtils.getEnum(Zone.class, parameter, "parameter");
return actionContext -> zone;
});