The Short Rest: Spider culture

This commit is contained in:
PhallenCassidy
2017-01-06 10:13:03 -05:00
committed by GitHub
parent aeee203a3e
commit aee9fa684b
6 changed files with 397 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
package com.gempukku.lotro.cards.set31.spider;
import com.gempukku.lotro.cards.AbstractPermanent;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.ChoiceEffect;
import com.gempukku.lotro.cards.effects.SelfDiscardEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
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.actions.RequiredTriggerAction;
import com.gempukku.lotro.logic.effects.DrawCardsEffect;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.results.PlayCardResult;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* Set: The Short Rest
* Side: Shadow
* Culture: Spider
* Twilight Cost: 2
* Type: Condition • Support Area
* Game Text: Each time a companion or a follower is played at site 5, the Free Peoples player must exert
* 2 [DWARVEN] companions. Shadow: Discard this condition or exert 3 Spiders to draw 3 cards.
*/
public class Card31_058 extends AbstractPermanent {
public Card31_058() {
super(Side.SHADOW, 2, CardType.CONDITION, Culture.SPIDER, Zone.SUPPORT, "Enchanted River", null, true);
}
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.played(game, effectResult, Filters.or(CardType.COMPANION, CardType.FOLLOWER))
&& game.getGameState().getCurrentSiteNumber() == 5 && game.getGameState().getCurrentSiteBlock() == Block.HOBBIT) {
PlayCardResult playCardResult = (PlayCardResult) effectResult;
RequiredTriggerAction action = new RequiredTriggerAction(self);
action.appendEffect(
new ChooseAndExertCharactersEffect(action, game.getGameState().getCurrentPlayerId(), 2, 2, CardType.COMPANION, Culture.DWARVEN));
return Collections.singletonList(action);
}
return null;
}
@Override
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SHADOW, self, 0)) {
ActivateCardAction action = new ActivateCardAction(self);
List<Effect> possibleCosts = new LinkedList<Effect>();
possibleCosts.add(
new SelfDiscardEffect(self) {
@Override
public String getText(LotroGame game) {
return "Discard this condition";
}
});
possibleCosts.add(
new ChooseAndExertCharactersEffect(action, playerId, 3, 3, Race.SPIDER) {
@Override
public String getText(LotroGame game) {
return "Exert 3 Spiders";
}
});
action.appendCost(
new ChoiceEffect(action, playerId, possibleCosts));
action.appendEffect(
new DrawCardsEffect(action, playerId, 3));
action.appendEffect(
new SelfDiscardEffect(self));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,58 @@
package com.gempukku.lotro.cards.set31.spider;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.AddBurdenEffect;
import com.gempukku.lotro.cards.effects.SelfDiscardEffect;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
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.actions.ActivateCardAction;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.Action;
import java.util.Collections;
import java.util.List;
/**
* Set: The Short Rest
* Side: Shadow
* Culture: Spider
* Twilight Cost: 3
* Type: Minion • Spider
* Strength: 8
* Vitality: 2
* Site: 5
* Game Text: Fierce. The twilight cost of this minion is -1 for each doubt. Regroup: Discard this minion
* to add a doubt.
*/
public class Card31_059 extends AbstractMinion {
public Card31_059() {
super(3, 8, 2, 5, Race.SPIDER, Culture.SPIDER, "Fat Spider");
addKeyword(Keyword.FIERCE);
}
@Override
public int getTwilightCostModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) {
return -gameState.getBurdens();
}
@Override
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.REGROUP, self, 0)
&& PlayConditions.canSelfDiscard(self, game)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfDiscardEffect(self));
action.appendEffect(
new AddBurdenEffect(self.getOwner(), self, 1));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,66 @@
package com.gempukku.lotro.cards.set31.spider;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
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.actions.ActivateCardAction;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.Action;
import java.util.Collections;
import java.util.List;
/**
* Set: The Short Rest
* Side: Shadow
* Culture: Spider
* Twilight Cost: 4
* Type: Minion • Spider
* Strength: 9
* Vitality: 2
* Site: 5
* Game Text: Fierce. The twilight cost of this minion is -1 for each Orc you spot. Skirmish: Discard an
* Orc to make a Spider damage +1.
*/
public class Card31_060 extends AbstractMinion {
public Card31_060() {
super(4, 9, 2, 5, Race.SPIDER, Culture.SPIDER, "Lazy Lob", null, true);
addKeyword(Keyword.FIERCE);
}
@Override
public int getTwilightCostModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) {
return -Filters.countActive(gameState, modifiersQuerying, Race.ORC);
}
@Override
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SKIRMISH, self, 0)
&& PlayConditions.canDiscardFromPlay(self, game, Race.ORC)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Race.ORC));
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose a Spider", Race.SPIDER) {
@Override
protected void cardSelected(LotroGame game, PhysicalCard card) {
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new KeywordModifier(self, card, Keyword.DAMAGE, 1)));
}
});
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,50 @@
package com.gempukku.lotro.cards.set31.spider;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.RemoveTwilightEffect;
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.OptionalTriggerAction;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.List;
/**
* Set: The Short Rest
* Side: Shadow
* Culture: Spider
* Twilight Cost: 4
* Type: Minion • Spider
* Strength: 8
* Vitality: 3
* Site: 5
* Game Text: Fierce. When you play this minion, you may remove (1) to play a Spider or an Orc from your
* discard pile.
*/
public class Card31_061 extends AbstractMinion {
public Card31_061() {
super(4, 8, 3, 5, Race.SPIDER, Culture.SPIDER, "Old Tomnoddy");
addKeyword(Keyword.FIERCE);
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.played(game, effectResult, self)
&& PlayConditions.canPlayFromDiscard(playerId, game, 1, 0, Filters.or(Race.SPIDER, Race.ORC))
&& (game.getGameState().getTwilightPool() > 0)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendCost(
new RemoveTwilightEffect(1));
action.appendEffect(
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Filters.or(Race.SPIDER, Race.ORC)));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,78 @@
package com.gempukku.lotro.cards.set31.spider;
import com.gempukku.lotro.cards.AbstractPermanent;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.ChoiceEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDeckEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndPlayCardFromDiscardEffect;
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.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.effects.AddThreatsEffect;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* Set: The Short Rest
* Side: Shadow
* Culture: Spider
* Twilight Cost: 2
* Type: Condition • Support Area
* Game Text: To play, spot a Spider. Assignment: Discard an Orc from play to play a spider from your
* draw deck or discard pile. Its twilight cost is -2 (or -4 at a forest).
*/
public class Card31_062 extends AbstractPermanent {
public Card31_062() {
super(Side.SHADOW, 2, CardType.CONDITION, Culture.SPIDER, Zone.SUPPORT, "Spider Nest");
}
@Override
public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int withTwilightRemoved, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) {
return super.checkPlayRequirements(playerId, game, self, withTwilightRemoved, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile)
&& Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Race.SPIDER);
}
@Override
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.ASSIGNMENT, self, 0)
&& PlayConditions.canSpot(game, Race.ORC)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Race.ORC));
List<Effect> possibleEffects = new LinkedList<Effect>();
possibleEffects.add(
new ChooseAndPlayCardFromDeckEffect(playerId, Race.SPIDER) {
@Override
public String getText(LotroGame game) {
return "Play a Spider from your draw deck";
}
});
if (PlayConditions.canPlayFromDiscard(playerId, game, Race.SPIDER)) {
possibleEffects.add(
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Race.SPIDER) {
@Override
public String getText(LotroGame game) {
return "Play a Spider from your discard pile";
}
});
}
action.appendEffect(
new ChoiceEffect(action, playerId, possibleEffects));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,63 @@
package com.gempukku.lotro.cards.set31.spider;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect;
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.effects.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.timing.Action;
import java.util.Collections;
import java.util.List;
/**
* Set: The Short Rest
* Side: Shadow
* Culture: Spider
* Twilight Cost: 2
* Type: Minion • Spider
* Strength: 7
* Vitality: 2
* Site: 5
* Game Text: Fierce. Skirmish: Discard an Orc to make a Spider strength +3 (or +5 if you can spot 6 companions)
* until the regroup phase.
*/
public class Card31_063 extends AbstractMinion {
public Card31_063() {
super(2, 7, 2, 5, Race.SPIDER, Culture.SPIDER, "Wicked Spider");
addKeyword(Keyword.FIERCE);
}
@Override
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SKIRMISH, self, 0)
&& PlayConditions.canDiscardFromPlay(self, game, Race.ORC)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Race.ORC));
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose a Spider", Race.SPIDER) {
@Override
protected void cardSelected(LotroGame game, PhysicalCard spider) {
if (PlayConditions.canSpot(game, 5, CardType.COMPANION)) {
action.appendEffect(
new AddUntilStartOfPhaseModifierEffect(
new StrengthModifier(self, Filters.sameCard(spider), 5), Phase.REGROUP));
} else {
action.appendEffect(
new AddUntilStartOfPhaseModifierEffect(
new StrengthModifier(self, Filters.sameCard(spider), 3), Phase.REGROUP));
}
}
});
return Collections.singletonList(action);
}
return null;
}
}