Main Deck: sites

This commit is contained in:
PhallenCassidy
2016-11-30 12:51:32 -05:00
committed by GitHub
parent 0485611a48
commit 27c3d2bf0c
8 changed files with 362 additions and 0 deletions

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}