Migrated Gollum cards in set 18 to hjson
This commit is contained in:
@@ -1,41 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.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.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.evaluator.ForEachThreatEvaluator;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Shadow
|
||||
* Culture: Gollum
|
||||
* Twilight Cost: 2
|
||||
* Type: Event • Skirmish
|
||||
* Game Text: Spot Shelob to make a minion strength +1 for each threat you can spot.
|
||||
*/
|
||||
public class Card18_028 extends AbstractEvent {
|
||||
public Card18_028() {
|
||||
super(Side.SHADOW, 2, Culture.GOLLUM, "Countless Cords", Phase.SKIRMISH);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canSpot(game, Filters.name("Shelob"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, new ForEachThreatEvaluator(), CardType.MINION));
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.gollum;
|
||||
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
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.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.effects.PreventableCardEffect;
|
||||
import com.gempukku.lotro.logic.effects.RemoveTwilightEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndPreventCardEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Shadow
|
||||
* Culture: Gollum
|
||||
* Twilight Cost: 1
|
||||
* Type: Condition • Support Area
|
||||
* Game Text: Response: If a Free Peoples player's card is about to discard your other [GOLLUM] condition, remove (1)
|
||||
* to prevent that.
|
||||
*/
|
||||
public class Card18_029 extends AbstractPermanent {
|
||||
public Card18_029() {
|
||||
super(Side.SHADOW, 1, CardType.CONDITION, Culture.GOLLUM, "Deceit");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getOptionalInPlayBeforeActions(String playerId, LotroGame game, Effect effect, PhysicalCard self) {
|
||||
if (TriggerConditions.isGettingDiscardedBy(effect, game, Side.FREE_PEOPLE, Filters.not(self), Filters.owner(self.getOwner()), Culture.GOLLUM, CardType.CONDITION)
|
||||
&& game.getGameState().getTwilightPool() >= 1) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new RemoveTwilightEffect(1));
|
||||
action.appendEffect(
|
||||
new ChooseAndPreventCardEffect(self, (PreventableCardEffect) effect, playerId, "Choose condition to prevent discarding", Filters.not(self), Culture.GOLLUM, CardType.CONDITION));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.gollum;
|
||||
|
||||
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.effects.ChooseAndHealCharactersEffect;
|
||||
import com.gempukku.lotro.logic.effects.ReinforceTokenEffect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Shadow
|
||||
* Culture: Gollum
|
||||
* Twilight Cost: 0
|
||||
* Type: Event • Shadow
|
||||
* Game Text: Heal a Ring-bound companion to reinforce a [GOLLUM] token.
|
||||
*/
|
||||
public class Card18_030 extends AbstractEvent {
|
||||
public Card18_030() {
|
||||
super(Side.SHADOW, 0, Culture.GOLLUM, "Enemy in Your Midst", Phase.SHADOW);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canHeal(self, game, CardType.COMPANION, Keyword.RING_BOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendCost(
|
||||
new ChooseAndHealCharactersEffect(action, playerId, CardType.COMPANION, Keyword.RING_BOUND));
|
||||
action.appendEffect(
|
||||
new ReinforceTokenEffect(self, playerId, Token.GOLLUM));
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.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.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.ChoiceEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndPlayCardFromHandEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Shadow
|
||||
* Culture: Gollum
|
||||
* Twilight Cost: 0
|
||||
* Type: Event • Shadow
|
||||
* Game Text: Spot a [GOLLUM] card to play a minion. Its twilight cost is -1 (or -3 if it is roaming).
|
||||
*/
|
||||
public class Card18_031 extends AbstractEvent {
|
||||
public Card18_031() {
|
||||
super(Side.SHADOW, 0, Culture.GOLLUM, "It Draws Him", Phase.SHADOW);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canSpot(game, Culture.GOLLUM)
|
||||
&& (PlayConditions.canPlayFromHand(self.getOwner(), game, -1, CardType.MINION, Filters.not(Keyword.ROAMING))
|
||||
|| PlayConditions.canPlayFromHand(self.getOwner(), game, -3, CardType.MINION, Keyword.ROAMING));
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
List<Effect> possibleEffects = new LinkedList<>();
|
||||
possibleEffects.add(
|
||||
new ChooseAndPlayCardFromHandEffect(playerId, game, -1, CardType.MINION, Filters.not(Keyword.ROAMING)) {
|
||||
@Override
|
||||
public String getText(LotroGame game) {
|
||||
return "Play not roaming minion";
|
||||
}
|
||||
});
|
||||
possibleEffects.add(
|
||||
new ChooseAndPlayCardFromHandEffect(playerId, game, -3, CardType.MINION, Keyword.ROAMING) {
|
||||
@Override
|
||||
public String getText(LotroGame game) {
|
||||
return "Play roaming minion";
|
||||
}
|
||||
});
|
||||
action.appendEffect(
|
||||
new ChoiceEffect(action, playerId, possibleEffects));
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.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.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.ChooseAndDiscardCardsFromHandEffect;
|
||||
import com.gempukku.lotro.logic.effects.DiscardCardAtRandomFromHandEffect;
|
||||
import com.gempukku.lotro.logic.effects.RemoveTwilightEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndPutCardFromDeckIntoHandEffect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Shadow
|
||||
* Culture: Gollum
|
||||
* Twilight Cost: 3
|
||||
* Type: Condition • Support Area
|
||||
* Game Text: Shadow: Remove (3) to take a [GOLLUM] card into hand from your draw deck, then randomly discard a card
|
||||
* from your hand. Skirmish: Discard a [GOLLUM] card from hand to make a [GOLLUM] minion strength +2.
|
||||
*/
|
||||
public class Card18_032 extends AbstractPermanent {
|
||||
public Card18_032() {
|
||||
super(Side.SHADOW, 3, CardType.CONDITION, Culture.GOLLUM, "Not Easily Avoided");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SHADOW, self, 3)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new RemoveTwilightEffect(3));
|
||||
action.appendEffect(
|
||||
new ChooseAndPutCardFromDeckIntoHandEffect(action, playerId, 1, 1, Culture.GOLLUM));
|
||||
action.appendEffect(
|
||||
new DiscardCardAtRandomFromHandEffect(self, playerId, false));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SKIRMISH, self, 0)
|
||||
&& PlayConditions.canDiscardFromHand(game, playerId, 1, Culture.GOLLUM)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 1, Culture.GOLLUM));
|
||||
action.appendEffect(
|
||||
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, 2, Culture.GOLLUM, CardType.MINION));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.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.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndReturnCardsToHandEffect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Shadow
|
||||
* Culture: Gollum
|
||||
* Twilight Cost: 2
|
||||
* Type: Event • Shadow
|
||||
* Game Text: Spot Gollum or Smeagol to return a follower to its owner's hand.
|
||||
*/
|
||||
public class Card18_033 extends AbstractEvent {
|
||||
public Card18_033() {
|
||||
super(Side.SHADOW, 2, Culture.GOLLUM, "Set Up", 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 ChooseAndReturnCardsToHandEffect(action, playerId, 1, 1, CardType.FOLLOWER));
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,81 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.gollum;
|
||||
|
||||
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.actions.OptionalTriggerAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractMinion;
|
||||
import com.gempukku.lotro.logic.effects.AddThreatsEffect;
|
||||
import com.gempukku.lotro.logic.effects.AddUntilEndOfTurnModifierEffect;
|
||||
import com.gempukku.lotro.logic.effects.ForEachBurdenYouSpotEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndPlayCardFromDiscardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.AddKeywordModifier;
|
||||
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.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Shadow
|
||||
* Culture: Gollum
|
||||
* Twilight Cost: 6
|
||||
* Type: Minion • Spider
|
||||
* Strength: 8
|
||||
* Vitality: 8
|
||||
* Site: 8
|
||||
* Game Text: Fierce. Each time Shelob wins a skirmish, you may add threats up to the number of burdens you can spot.
|
||||
* Each time Shelob wins a skirmish, you may play Gollum from your discard pile; he is strength +3 and fierce until the end of turn.
|
||||
*/
|
||||
public class Card18_034 extends AbstractMinion {
|
||||
public Card18_034() {
|
||||
super(6, 8, 8, 8, Race.SPIDER, Culture.GOLLUM, "Shelob", "Menace", true);
|
||||
addKeyword(Keyword.FIERCE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OptionalTriggerAction> getOptionalAfterTriggers(final String playerId, LotroGame game, EffectResult effectResult, final PhysicalCard self) {
|
||||
if (TriggerConditions.winsSkirmish(game, effectResult, self)) {
|
||||
List<OptionalTriggerAction> actions = new LinkedList<>();
|
||||
|
||||
final OptionalTriggerAction action1 = new OptionalTriggerAction(self.getCardId() + "-1", self);
|
||||
action1.setText("Add threats");
|
||||
action1.appendEffect(
|
||||
new ForEachBurdenYouSpotEffect(playerId) {
|
||||
@Override
|
||||
protected void burdensSpotted(int burdensSpotted) {
|
||||
action1.appendEffect(
|
||||
new AddThreatsEffect(playerId, self, burdensSpotted));
|
||||
}
|
||||
});
|
||||
actions.add(action1);
|
||||
|
||||
if (PlayConditions.canPlayFromDiscard(playerId, game, Filters.gollum)) {
|
||||
final OptionalTriggerAction action2 = new OptionalTriggerAction(self.getCardId() + "-2", self);
|
||||
action2.setText("Play Gollum from discard");
|
||||
action2.appendEffect(
|
||||
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Filters.gollum) {
|
||||
@Override
|
||||
protected void afterCardPlayed(PhysicalCard cardPlayed) {
|
||||
action2.appendEffect(
|
||||
new AddUntilEndOfTurnModifierEffect(
|
||||
new StrengthModifier(self, cardPlayed, 3)));
|
||||
action2.appendEffect(
|
||||
new AddUntilEndOfTurnModifierEffect(
|
||||
new AddKeywordModifier(self, cardPlayed, Keyword.FIERCE)));
|
||||
}
|
||||
});
|
||||
actions.add(action2);
|
||||
}
|
||||
|
||||
return actions;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.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.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.effects.KillEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndReturnCardsToHandEffect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Shadow
|
||||
* Culture: Gollum
|
||||
* Twilight Cost: 10
|
||||
* Type: Event • Regroup
|
||||
* Game Text: To play, spot Shelob. The Free Peoples player chooses two companions in play (except the Ring-bearer).
|
||||
* He or she then chooses to place one of those companions in the dead pile and return the other to his or her hand.
|
||||
*/
|
||||
public class Card18_035 extends AbstractEvent {
|
||||
public Card18_035() {
|
||||
super(Side.SHADOW, 10, Culture.GOLLUM, "Sting of Shelob", Phase.REGROUP);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canSpot(game, Filters.name("Shelob"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, final PhysicalCard self) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, game.getGameState().getCurrentPlayerId(), "Choose companion to kill", CardType.COMPANION, Filters.not(Filters.ringBearer)) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
action.insertEffect(
|
||||
new KillEffect(card, self, KillEffect.Cause.CARD_EFFECT));
|
||||
}
|
||||
});
|
||||
action.appendEffect(
|
||||
new ChooseAndReturnCardsToHandEffect(action, game.getGameState().getCurrentPlayerId(), 1, 1, CardType.COMPANION, Filters.not(Filters.ringBearer)));
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.gollum;
|
||||
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
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.PlayUtils;
|
||||
import com.gempukku.lotro.logic.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractResponseEvent;
|
||||
import com.gempukku.lotro.logic.effects.CancelEventEffect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
import com.gempukku.lotro.logic.timing.results.PlayEventResult;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Free
|
||||
* Culture: Gollum
|
||||
* Twilight Cost: 0
|
||||
* Type: Event • Response
|
||||
* Game Text: If a skirmish event is played, spot Smeagol to cancel that event.
|
||||
*/
|
||||
public class Card18_036 extends AbstractResponseEvent {
|
||||
public Card18_036() {
|
||||
super(Side.FREE_PEOPLE, 0, Culture.GOLLUM, "Time for Food");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PlayEventAction> getPlayResponseEventAfterActions(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.played(game, effectResult, CardType.EVENT, Keyword.SKIRMISH)
|
||||
&& PlayConditions.canSpot(game, Filters.smeagol)
|
||||
&& PlayUtils.checkPlayRequirements(game, self, Filters.any, 0, 0, false, false)) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new CancelEventEffect(self, (PlayEventResult) effectResult));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set18.gollum;
|
||||
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.common.Side;
|
||||
import com.gempukku.lotro.common.Token;
|
||||
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.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.DrawCardsEffect;
|
||||
import com.gempukku.lotro.logic.effects.OptionalEffect;
|
||||
import com.gempukku.lotro.logic.effects.ReinforceTokenEffect;
|
||||
|
||||
/**
|
||||
* Set: Treachery & Deceit
|
||||
* Side: Free
|
||||
* Culture: Gollum
|
||||
* Twilight Cost: 0
|
||||
* Type: Event • Skirmish
|
||||
* Game Text: Reinforce a [GOLLUM] token. Each Shadow player may draw a card.
|
||||
*/
|
||||
public class Card18_037 extends AbstractEvent {
|
||||
public Card18_037() {
|
||||
super(Side.FREE_PEOPLE, 0, Culture.GOLLUM, "Trusted Promise", Phase.SKIRMISH);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ReinforceTokenEffect(self, playerId, Token.GOLLUM));
|
||||
for (String shadowPlayer : GameUtils.getShadowPlayers(game)) {
|
||||
action.appendEffect(
|
||||
new OptionalEffect(action, shadowPlayer,
|
||||
new DrawCardsEffect(action, shadowPlayer, 1)));
|
||||
|
||||
}
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -22,13 +22,19 @@
|
||||
twilight: 2
|
||||
type: Event
|
||||
keywords: Skirmish
|
||||
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
},
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: name(Shelob)
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: modifyStrength
|
||||
filter: choose(minion)
|
||||
amount: {
|
||||
type: forEachThreat
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -66,6 +72,21 @@
|
||||
type: Condition
|
||||
keywords: Support Area
|
||||
effects: [
|
||||
{
|
||||
type: activatedTrigger
|
||||
trigger: {
|
||||
type: aboutToDiscard
|
||||
opponent: true
|
||||
filter: your,other,culture(gollum),condition
|
||||
}
|
||||
cost: {
|
||||
type: removeTwilight
|
||||
}
|
||||
effect: {
|
||||
type: preventDiscard
|
||||
filter: choose(your,other,culture(gollum),condition)
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: <b>Response:</b> If a Free Peoples player's card is about to discard your other [gollum] condition, remove (1) to prevent that.
|
||||
lore: Presently they were under the shadow, and there in the midst of it they saw the opening of a cave. 'This is the way in,' said Gollum softly.
|
||||
@@ -100,13 +121,16 @@
|
||||
twilight: 0
|
||||
type: Event
|
||||
keywords: Shadow
|
||||
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
},
|
||||
type: heal
|
||||
filter: choose(ringBound,companion)
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: reinforceTokens
|
||||
culture: gollum
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -143,13 +167,31 @@
|
||||
twilight: 0
|
||||
type: Event
|
||||
keywords: Shadow
|
||||
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
},
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: culture(gollum)
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: choice
|
||||
texts: [
|
||||
Play a non-roaming minion
|
||||
Play a roaming minion
|
||||
]
|
||||
effects: [
|
||||
{
|
||||
type: play
|
||||
filter: choose(not(roaming),minion)
|
||||
cost: -1
|
||||
}
|
||||
{
|
||||
type: play
|
||||
filter: choose(roaming,minion)
|
||||
cost: -3
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -187,6 +229,41 @@
|
||||
type: Condition
|
||||
keywords: Support Area
|
||||
effects: [
|
||||
{
|
||||
type: activated
|
||||
phase: shadow
|
||||
cost: {
|
||||
type: removeTwilight
|
||||
amount: 3
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: putCardsFromDeckIntoHand
|
||||
filter: choose(culture(gollum))
|
||||
reveal: true
|
||||
shuffle: true
|
||||
}
|
||||
{
|
||||
type: discardFromHand
|
||||
forced: false
|
||||
filter: random(1)
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
type: activated
|
||||
phase: skirmish
|
||||
cost: {
|
||||
type: discardFromHand
|
||||
forced: false
|
||||
filter: choose(culture(gollum))
|
||||
}
|
||||
effect: {
|
||||
type: modifyStrength
|
||||
filter: choose(culture(gollum),minion)
|
||||
amount: 2
|
||||
}
|
||||
}
|
||||
]
|
||||
gametext: <b>Shadow:</b> Remove (3) to take a [gollum] card into hand from your draw deck, then randomly discard a card from your hand.<br><b>Skirmish:</b> Discard a [gollum] card from hand to make a [gollum] minion strength +2.
|
||||
lore: But I still feel that they are looking at me, or thinking about me: making some other plan, perhaps.'
|
||||
@@ -224,10 +301,14 @@
|
||||
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
},
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: or(name(Gollum),name(Sméagol))
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: returnToHand
|
||||
filter: choose(follower)
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -270,6 +351,49 @@
|
||||
site: 8
|
||||
keywords: Fierce
|
||||
effects: [
|
||||
{
|
||||
type: trigger
|
||||
text: Add threats up to the number of burdens
|
||||
optional: true
|
||||
trigger: {
|
||||
type: winsSkirmish
|
||||
filter: self
|
||||
}
|
||||
effect: {
|
||||
type: addThreats
|
||||
amount: {
|
||||
type: forEachBurden
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
type: trigger
|
||||
text: Play Gollum from your discard pile
|
||||
optional: true
|
||||
trigger: {
|
||||
type: winsSkirmish
|
||||
filter: self
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: playCardFromDiscard
|
||||
filter: choose(name(Gollum))
|
||||
memorize: playedGollum
|
||||
}
|
||||
{
|
||||
type: modifyStrength
|
||||
filter: memory(playedGollum)
|
||||
amount: 3
|
||||
until: endOfTurn
|
||||
}
|
||||
{
|
||||
type: addKeyword
|
||||
filter: memory(playedGollum)
|
||||
keyword: fierce
|
||||
until: endOfTurn
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
gametext: <b>Fierce</b>.<br>Each time Shelob wins a skirmish, you may add threats up to the number of burdens you can spot.<br>Each time Shelob wins a skirmish, you may play Gollum from your discard pile; he is strength +3 and <b>fierce</b> until the end of turn.
|
||||
lore: ""
|
||||
@@ -304,13 +428,22 @@
|
||||
twilight: 10
|
||||
type: Event
|
||||
keywords: Regroup
|
||||
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
},
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: name(Shelob)
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: kill
|
||||
player: free people
|
||||
filter: choose(companion,not(ringBearer))
|
||||
}
|
||||
{
|
||||
type: returnToHand
|
||||
player: free people
|
||||
filter: choose(companion,not(ringBearer))
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -347,19 +480,22 @@
|
||||
twilight: 0
|
||||
type: Event
|
||||
keywords: Response
|
||||
|
||||
effects: {
|
||||
type: responseEvent
|
||||
trigger: {
|
||||
|
||||
type: played
|
||||
filter: skirmish,event
|
||||
}
|
||||
cost: {
|
||||
requires: {
|
||||
type: canSpot
|
||||
filter: name(Sméagol)
|
||||
}
|
||||
effect: [
|
||||
{
|
||||
type: cancelEvent
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
gametext: If a skirmish event is played, spot Sméagol to cancel that event.
|
||||
lore: Oh yes we could! Spoil nice fish. Give it to usss rrraw... and wrrriggling! You keep nasty chips.
|
||||
promotext: ""
|
||||
@@ -393,13 +529,21 @@
|
||||
twilight: 0
|
||||
type: Event
|
||||
keywords: Skirmish
|
||||
|
||||
effects: {
|
||||
type: event
|
||||
cost: {
|
||||
},
|
||||
effect: [
|
||||
{
|
||||
type: reinforceTokens
|
||||
culture: gollum
|
||||
}
|
||||
{
|
||||
type: optional
|
||||
player: shadow
|
||||
text: Would you like to draw a card?
|
||||
effect: {
|
||||
type: drawCards
|
||||
player: shadow
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -17,7 +17,7 @@ import org.json.simple.JSONObject;
|
||||
public class TriggerEffectProcessor implements EffectProcessor {
|
||||
@Override
|
||||
public void processEffect(JSONObject value, BuiltLotroCardBlueprint blueprint, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(value, "trigger", "optional", "requires", "cost", "effect", "text", "player", "limitPerTurn", "limitPerPhase", "phase");
|
||||
FieldUtils.validateAllowedFields(value, "trigger", "optional", "requires", "cost", "effect", "text", "player", "limitPerTurn", "limitPerPhase", "phase", "identifierSuffix");
|
||||
|
||||
final String text = FieldUtils.getString(value.get("text"), "text");
|
||||
final JSONObject[] triggerArray = FieldUtils.getObjectArray(value.get("trigger"), "trigger");
|
||||
@@ -30,6 +30,7 @@ public class TriggerEffectProcessor implements EffectProcessor {
|
||||
|
||||
final String player = FieldUtils.getString(value.get("player"), "player");
|
||||
PlayerSource playerSource = (player != null) ? PlayerResolver.resolvePlayer(player, environment) : null;
|
||||
final String identifierSuffix = FieldUtils.getString(value.get("identifierSuffix"), "identifierSuffix");
|
||||
|
||||
for (JSONObject trigger : triggerArray) {
|
||||
final TriggerChecker triggerChecker = environment.getTriggerCheckerFactory().getTriggerChecker(trigger, environment);
|
||||
|
||||
@@ -27,8 +27,10 @@ public class PutCardsFromDeckIntoHand implements EffectAppenderProducer {
|
||||
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(effectObject.get("count"), 1, environment);
|
||||
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter", "choose(any)");
|
||||
final boolean shuffle = FieldUtils.getBoolean(effectObject.get("shuffle"), "shuffle", true);
|
||||
final boolean reveal = FieldUtils.getBoolean(effectObject.get("reveal"), "reveal", true);
|
||||
// TODO - changed the default - have to go through all cards to check which should be revealed
|
||||
final boolean shuffle = FieldUtils.getBoolean(effectObject.get("shuffle"), "shuffle", false);
|
||||
// TODO - changed the default - have to go through all cards to check which should be revealed
|
||||
final boolean reveal = FieldUtils.getBoolean(effectObject.get("reveal"), "reveal", false);
|
||||
|
||||
MultiEffectAppender result = new MultiEffectAppender();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user