Main Deck: sites
This commit is contained in:
@@ -0,0 +1,41 @@
|
|||||||
|
package com.gempukku.lotro.cards.set30.site;
|
||||||
|
|
||||||
|
import com.gempukku.lotro.cards.AbstractSite;
|
||||||
|
import com.gempukku.lotro.cards.PlayConditions;
|
||||||
|
import com.gempukku.lotro.cards.TriggerConditions;
|
||||||
|
import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDeckEffect;
|
||||||
|
import com.gempukku.lotro.common.*;
|
||||||
|
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.timing.EffectResult;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set: Main Deck
|
||||||
|
* Twilight Cost: 3
|
||||||
|
* Type: Site
|
||||||
|
* Site: 2
|
||||||
|
* Game Text: Forest. Underground. At the start of your fellowship phase, you may play a hand weapon from your draw deck.
|
||||||
|
*/
|
||||||
|
public class Card30_050 extends AbstractSite {
|
||||||
|
public Card30_050() {
|
||||||
|
super("The Troll Hoard", Block.HOBBIT, 2, 3, Direction.RIGHT);
|
||||||
|
addKeyword(Keyword.FOREST);
|
||||||
|
addKeyword(Keyword.UNDERGROUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||||
|
if (TriggerConditions.startOfPhase(game, effectResult, Phase.FELLOWSHIP)
|
||||||
|
&& playerId.equals(game.getGameState().getCurrentPlayerId())) {
|
||||||
|
OptionalTriggerAction action = new OptionalTriggerAction(self);
|
||||||
|
action.appendEffect(
|
||||||
|
new ChooseAndPlayCardFromDeckEffect(playerId, PossessionClass.HAND_WEAPON));
|
||||||
|
return Collections.singletonList(action);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package com.gempukku.lotro.cards.set30.site;
|
||||||
|
|
||||||
|
import com.gempukku.lotro.cards.AbstractSite;
|
||||||
|
import com.gempukku.lotro.common.Block;
|
||||||
|
import com.gempukku.lotro.common.CardType;
|
||||||
|
import com.gempukku.lotro.common.Keyword;
|
||||||
|
import com.gempukku.lotro.common.Race;
|
||||||
|
import com.gempukku.lotro.game.PhysicalCard;
|
||||||
|
import com.gempukku.lotro.game.state.GameState;
|
||||||
|
import com.gempukku.lotro.game.state.LotroGame;
|
||||||
|
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
|
||||||
|
import com.gempukku.lotro.logic.modifiers.CantPlayCardsModifier;
|
||||||
|
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||||
|
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||||
|
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||||
|
import com.gempukku.lotro.logic.timing.Action;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set: Main Deck
|
||||||
|
* Twilight Cost: 1
|
||||||
|
* Type: Site
|
||||||
|
* Site: 3
|
||||||
|
* Game Text: Sanctuary. Trolls cannot be played at Rivendell.
|
||||||
|
*/
|
||||||
|
public class Card30_051 extends AbstractSite {
|
||||||
|
public Card30_051() {
|
||||||
|
super("Rivendell", Block.HOBBIT, 3, 1, Direction.RIGHT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Modifier getAlwaysOnModifier(LotroGame game, PhysicalCard self) {
|
||||||
|
return new CantPlayCardsModifier(self, Race.TROLL);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package com.gempukku.lotro.cards.set30.site;
|
||||||
|
|
||||||
|
import com.gempukku.lotro.cards.AbstractSite;
|
||||||
|
import com.gempukku.lotro.cards.PlayConditions;
|
||||||
|
import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDeckEffect;
|
||||||
|
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.timing.Action;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set: Main Deck
|
||||||
|
* Twilight Cost: 4
|
||||||
|
* Type: Site
|
||||||
|
* Site: 4
|
||||||
|
* Game Text: Underground. Maneuver: Play The One Ring from your draw deck.
|
||||||
|
*/
|
||||||
|
public class Card30_052 extends AbstractSite {
|
||||||
|
public Card30_052() {
|
||||||
|
super("Goblin Town", Block.HOBBIT, 4, 4, Direction.RIGHT);
|
||||||
|
addKeyword(Keyword.UNDERGROUND);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<? extends Action> getPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
|
||||||
|
if (PlayConditions.canUseSiteDuringPhase(game, Phase.MANEUVER, self)
|
||||||
|
&& PlayConditions.canSpot(game, 1, Filters.name("Bilbo"))) {
|
||||||
|
ActivateCardAction action = new ActivateCardAction(self);
|
||||||
|
action.appendEffect(
|
||||||
|
new ChooseAndPlayCardFromDeckEffect(playerId, Filters.name("The One Ring")));
|
||||||
|
return Collections.singletonList(action);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package com.gempukku.lotro.cards.set30.site;
|
||||||
|
|
||||||
|
import com.gempukku.lotro.cards.AbstractSite;
|
||||||
|
import com.gempukku.lotro.cards.TriggerConditions;
|
||||||
|
import com.gempukku.lotro.common.Block;
|
||||||
|
import com.gempukku.lotro.common.CardType;
|
||||||
|
import com.gempukku.lotro.common.Keyword;
|
||||||
|
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.RequiredTriggerAction;
|
||||||
|
import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect;
|
||||||
|
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set: Main Deck
|
||||||
|
* Twilight Cost: 6
|
||||||
|
* Type: Site
|
||||||
|
* Site: 5
|
||||||
|
* Game Text: Forest. When the fellowship moves to Mirkwood, discard Gandalf.
|
||||||
|
*/
|
||||||
|
public class Card30_053 extends AbstractSite {
|
||||||
|
public Card30_053() {
|
||||||
|
super("Mirkwood", Block.HOBBIT, 5, 6, Direction.RIGHT);
|
||||||
|
addKeyword(Keyword.FOREST);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||||
|
if (TriggerConditions.movesTo(game, effectResult, self)) {
|
||||||
|
RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||||
|
action.appendEffect(
|
||||||
|
new DiscardCardsFromPlayEffect(self, Filters.gandalf));
|
||||||
|
return Collections.singletonList(action);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.gempukku.lotro.cards.set30.site;
|
||||||
|
|
||||||
|
import com.gempukku.lotro.cards.AbstractSite;
|
||||||
|
import com.gempukku.lotro.cards.PlayConditions;
|
||||||
|
import com.gempukku.lotro.cards.TriggerConditions;
|
||||||
|
import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDeckEffect;
|
||||||
|
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.OptionalTriggerAction;
|
||||||
|
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set: Main Deck
|
||||||
|
* Twilight Cost: 3
|
||||||
|
* Type: Site
|
||||||
|
* Site: 6
|
||||||
|
* Game Text: River. Sanctuary. At the start of the regroup phase,
|
||||||
|
* you may play a [ESGAROTH] or [DWARVEN] ally from your draw deck.
|
||||||
|
*/
|
||||||
|
public class Card30_054 extends AbstractSite {
|
||||||
|
public Card30_054() {
|
||||||
|
super("Esgaroth", Block.HOBBIT, 6, 3, Direction.RIGHT);
|
||||||
|
addKeyword(Keyword.RIVER);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||||
|
if (TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP)
|
||||||
|
&& playerId.equals(game.getGameState().getCurrentPlayerId())) {
|
||||||
|
OptionalTriggerAction action = new OptionalTriggerAction(self);
|
||||||
|
action.appendEffect(
|
||||||
|
new ChooseAndPlayCardFromDeckEffect(playerId, Filters.or(Culture.ESGAROTH, Culture.DWARVEN), CardType.ALLY));
|
||||||
|
return Collections.singletonList(action);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package com.gempukku.lotro.cards.set30.site;
|
||||||
|
|
||||||
|
import com.gempukku.lotro.cards.AbstractSite;
|
||||||
|
import com.gempukku.lotro.cards.PlayConditions;
|
||||||
|
import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
|
||||||
|
import com.gempukku.lotro.common.Block;
|
||||||
|
import com.gempukku.lotro.common.CardType;
|
||||||
|
import com.gempukku.lotro.common.Keyword;
|
||||||
|
import com.gempukku.lotro.common.Phase;
|
||||||
|
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.effects.DrawCardsEffect;
|
||||||
|
import com.gempukku.lotro.logic.timing.Action;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set: Main Deck
|
||||||
|
* Twilight Cost: 6
|
||||||
|
* Type: Site
|
||||||
|
* Site: 7
|
||||||
|
* Game Text: Mountain. River. Shadow: Exert 2 minions and spot 6 companions to draw 2 cards.
|
||||||
|
*/
|
||||||
|
public class Card30_055 extends AbstractSite {
|
||||||
|
public Card30_055() {
|
||||||
|
super("Erebor", Block.HOBBIT, 7, 6, Direction.RIGHT);
|
||||||
|
addKeyword(Keyword.MOUNTAIN);
|
||||||
|
addKeyword(Keyword.RIVER);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<? extends Action> getPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
|
||||||
|
if (PlayConditions.canUseSiteDuringPhase(game, Phase.SHADOW, self)
|
||||||
|
&& PlayConditions.canExert(self, game, 1, 2, CardType.MINION)
|
||||||
|
&& PlayConditions.canSpot(game, 6, CardType.COMPANION)) {
|
||||||
|
ActivateCardAction action = new ActivateCardAction(self);
|
||||||
|
action.appendCost(
|
||||||
|
new ChooseAndExertCharactersEffect(action, playerId, 2, 2, CardType.MINION));
|
||||||
|
action.appendEffect(
|
||||||
|
new DrawCardsEffect(action, playerId, 2));
|
||||||
|
return Collections.singletonList(action);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
package com.gempukku.lotro.cards.set30.site;
|
||||||
|
|
||||||
|
import com.gempukku.lotro.cards.AbstractSite;
|
||||||
|
import com.gempukku.lotro.cards.PlayConditions;
|
||||||
|
import com.gempukku.lotro.cards.effects.ChoiceEffect;
|
||||||
|
import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDeckEffect;
|
||||||
|
import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDiscardEffect;
|
||||||
|
import com.gempukku.lotro.common.Block;
|
||||||
|
import com.gempukku.lotro.common.Keyword;
|
||||||
|
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.timing.Action;
|
||||||
|
import com.gempukku.lotro.logic.timing.Effect;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set: Main Deck
|
||||||
|
* Twilight Cost: 8
|
||||||
|
* Type: Site
|
||||||
|
* Site: 8
|
||||||
|
* Game Text: Mountain. Underground. Shadow: Play Smaug from your draw deck or discard pile.
|
||||||
|
*/
|
||||||
|
public class Card30_056 extends AbstractSite {
|
||||||
|
public Card30_056() {
|
||||||
|
super("Smaug's Den", Block.HOBBIT, 8, 8, Direction.RIGHT);
|
||||||
|
addKeyword(Keyword.MOUNTAIN);
|
||||||
|
addKeyword(Keyword.UNDERGROUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<? extends Action> getPhaseActions(String playerId, final LotroGame game, PhysicalCard self) {
|
||||||
|
if (PlayConditions.canUseSiteDuringPhase(game, Phase.SHADOW, self)) {
|
||||||
|
ActivateCardAction action = new ActivateCardAction(self);
|
||||||
|
|
||||||
|
List<Effect> possibleEffects = new LinkedList<Effect>();
|
||||||
|
if (Filters.filter(game.getGameState().getHand(playerId), game.getGameState(), game.getModifiersQuerying(), Filters.name("Smaug")).size() > 0) {
|
||||||
|
possibleEffects.add(
|
||||||
|
new ChooseAndPlayCardFromDeckEffect(playerId, Filters.name("Smaug")) {
|
||||||
|
@Override
|
||||||
|
public String getText(LotroGame game) {
|
||||||
|
return "Play Smaug from your draw deck";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (PlayConditions.canPlayFromDiscard(playerId, game, Filters.name("Smaug"))) {
|
||||||
|
possibleEffects.add(
|
||||||
|
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Filters.name("Smaug")) {
|
||||||
|
@Override
|
||||||
|
public String getText(LotroGame game) {
|
||||||
|
return "Play Smaug from your discard pile";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
action.appendEffect(
|
||||||
|
new ChoiceEffect(action, playerId, possibleEffects));
|
||||||
|
|
||||||
|
return Collections.singletonList(action);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package com.gempukku.lotro.cards.set30.site;
|
||||||
|
|
||||||
|
import com.gempukku.lotro.cards.AbstractSite;
|
||||||
|
import com.gempukku.lotro.cards.PlayConditions;
|
||||||
|
import com.gempukku.lotro.cards.effects.RemoveBurdenEffect;
|
||||||
|
import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDiscardEffect;
|
||||||
|
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.timing.Action;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set: Main Deck
|
||||||
|
* Twilight Cost: 9
|
||||||
|
* Type: Site
|
||||||
|
* Site: 9
|
||||||
|
* Game Text: Mountain. Battleground. Shadow: Remove 2 doubts to play a minion from your discard pile (Except Smaug)
|
||||||
|
*/
|
||||||
|
public class Card30_057 extends AbstractSite {
|
||||||
|
public Card30_057() {
|
||||||
|
super("Battle of the Five Armies", Block.HOBBIT, 9, 9, Direction.RIGHT);
|
||||||
|
addKeyword(Keyword.MOUNTAIN);
|
||||||
|
addKeyword(Keyword.BATTLEGROUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<? extends Action> getPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
|
||||||
|
if (PlayConditions.canUseSiteDuringPhase(game, Phase.SHADOW, self)
|
||||||
|
&& game.getGameState().getBurdens() >= 2
|
||||||
|
&& PlayConditions.canPlayFromDiscard(playerId, game, CardType.MINION, Filters.not(Filters.name("Smaug")))) {
|
||||||
|
ActivateCardAction action = new ActivateCardAction(self);
|
||||||
|
action.appendCost(
|
||||||
|
new RemoveBurdenEffect(playerId, self, 2));
|
||||||
|
action.appendEffect(
|
||||||
|
new ChooseAndPlayCardFromDiscardEffect(playerId, game, CardType.MINION, Filters.not(Filters.name("Smaug"))));
|
||||||
|
return Collections.singletonList(action);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user