Added sites for Main Deck

This commit is contained in:
PhallenCassidy
2016-10-08 22:54:36 -04:00
committed by GitHub
parent 942a698f20
commit c80aa06cf4
8 changed files with 359 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
package com.gempukku.lotro.cards.set21.site;
import com.gempukku.lotro.cards.AbstractNewSite;
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 Card21_50 extends AbstractSite {
public Card21_50() {
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, game, PossessionClass.HAND_WEAPON));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,35 @@
package com.gempukku.lotro.cards.set21.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.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.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 Card21_51 extends AbstractSite {
public Card21_51() {
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,43 @@
package com.gempukku.lotro.cards.set21.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.Block;
import com.gempukku.lotro.common.Names;
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 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 Card21_52 extends AbstractSite {
public Card21_52() {
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,40 @@
package com.gempukku.lotro.cards.set21.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.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 Card21_53 extends AbstractSite {
public Card21_53() {
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,41 @@
package com.gempukku.lotro.cards.set21.site;
import com.gempukku.lotro.cards.AbstractNewSite;
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: 6
* Game Text: River. Sanctuary. At the start of the regroup phase,
* you may play a [LAKETOWN] or [DWARF] ally from your draw deck.
*/
public class Card21_54 extends AbstractSite {
public Card21_54() {
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, game, Filters.or(Culture.LAKETOWN, Culture.DWARF), CardType.ALLY));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,47 @@
package com.gempukku.lotro.cards.set21.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 Card21_55 extends AbstractSite {
public Card21_55() {
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,66 @@
package com.gempukku.lotro.cards.set21.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.ChooseAndPlayCardFromHandEffect;
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 Card21_56 extends AbstractSite {
public Card21_56() {
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,46 @@
package com.gempukku.lotro.cards.set21.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.Block;
import com.gempukku.lotro.common.CardType;
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.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 Card21_57 extends AbstractSite {
public Card21_57() {
super("Palantir Chamber", Block.TWO_TOWERS, 9, 9, Direction.LEFT);
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;
}
}