Finished Gollum culture for The Short Rest

This commit is contained in:
PhallenCassidy
2016-10-18 11:15:35 -04:00
committed by GitHub
parent 1d77b06ef7
commit a3430a230f
3 changed files with 221 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
package com.gempukku.lotro.cards.set7.gollum;
import com.gempukku.lotro.cards.AbstractEvent;
import com.gempukku.lotro.cards.actions.PlayEventAction;
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.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.effects.AddThreatsEffect;
import com.gempukku.lotro.logic.timing.Effect;
import java.util.LinkedList;
import java.util.List;
/**
* Set: The Short Rest
* Side: Shadow
* Culture: Gollum
* Twilight Cost: 0
* Type: Event • Shadow
* Game Text: Discard an orc to play Gollum from your draw deck or discard pile.
*/
public class Card7_053 extends AbstractEvent {
public Card7_053() {
super(Side.SHADOW, 0, Culture.GOLLUM, "Better Than Nothing", Phase.SHADOW);
}
@Override
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
PlayEventAction action = new PlayEventAction(self);
if (Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Race.ORC)) {
action.appendCost(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Race.ORC));
List<Effect> possibleEffects = new LinkedList<Effect>();
possibleEffects.add(
new ChooseAndPlayCardFromDeckEffect(playerId, Filters.gollum) {
@Override
public String getText(LotroGame game) {
return "Play Gollum from your draw deck";
}
});
if (PlayConditions.canPlayFromDiscard(playerId, game, Filters.gollum)) {
possibleEffects.add(
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Filters.gollum) {
@Override
public String getText(LotroGame game) {
return "Play Gollum from your discard pile";
}
});
}
action.appendEffect(
new ChoiceEffect(action, playerId, possibleEffects));
return action;
}
}
}

View File

@@ -0,0 +1,75 @@
package com.gempukku.lotro.cards.set22.gollum;
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.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.cards.effects.SelfExertEffect;
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.GameState;
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.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.List;
/**
* Set: The Short Rest
* Side: Shadow
* Culture: Gollum
* Twilight Cost: 2
* Type: Minion
* Strength: 5
* Vitality: 4
* Site: 4
* Game Text: Each times Gollum wins a skirmish, you may add a doubt. Assignment: If Gollum is not roaming,
* exert Gollum and assign him to Bilbo to make Gollum strength +1 (or +3 if at an underground site) until
* the regroup phase.
*/
public class Card22_20 extends AbstractMinion {
public Card22_20() {
super(2, 5, 4, 4, null, Culture.GOLLUM, "Gollum", "Small Slimy Creature", true);
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.winsSkirmish(game, effectResult, self)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new AddBurdenEffect(self.getOwner(), self, 1));
return Collections.singletonList(action);
}
return null;
}
@Override
protected List<? extends Action> getExtraPhaseActions(final String playerId, LotroGame game, final PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.ASSIGNMENT, self, 0)
&& PlayConditions.canExert(self, game, self)
&& !PlayConditions.canSpot(game, self, Keyword.ROAMING)) {
final ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(new SelfExertEffect(action, self));
action.appendCost(
new ChooseAndAssignCharacterToMinionEffect(action, playerId, self, Filters.name("Bilbo")));
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Gollum", Filters.name("Gollum")) {
@Override
protected void cardSelected(LotroGame game, PhysicalCard card) {
int bonus = game.getModifiersQuerying().hasKeyword(game.getGameState(), game.getGameState().getCurrentSite(), Keyword.UNDERGROUND) ? 3 : 1;
action.insertEffect(
new AddUntilEndOfPhaseModifierEffect(
new StrengthModifier(self, Filters.sameCard(card), bonus)));
}
});
}

View File

@@ -0,0 +1,85 @@
package com.gempukku.lotro.cards.set22.gollum;
OptionalTriggerAction
import com.gempukku.lotro.cards.AbstractPermanent;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.actions.PlayPermanentAction;
import com.gempukku.lotro.cards.effects.PreventableEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
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.OptionalTriggerAction;
import com.gempukku.lotro.logic.actions.RequiredTriggerAction;
import com.gempukku.lotro.logic.actions.SubAction;
import com.gempukku.lotro.logic.effects.AddTwilightEffect;
import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.UnrespondableEffect;
import java.util.Collections;
import java.util.List;
/**
* Set: The Short Rest
* Side: Shadow
* Culture: Gollum
* Twilight Cost: 2
* Type: Condition
* Game Text: Each time the fellowship moves, add (2). Response: If Bilbo exerts or takes a wound, exert
* a minion and discard a card from hand to discard a [SHIRE] card (except Bilbo). The Free Peoples player
* may discard 2 cards from hand to prevent this.
*/
public class Card22_22 extends AbstractPermanent {
public Card22_22() {
super(Side.SHADOW, 2, CardType.CONDITION, Culture.GOLLUM, Zone.SUPPORT, "Riddles in the Dark", null, true);
}
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.moves(game, effectResult)) {
RequiredTriggerAction action = new RequiredTriggerAction(self);
action.appendEffect(
new AddTwilightEffect(self, 2));
return Collections.singletonList(action);
}
return null;
}
@Override
public List<? extends ActivateCardAction> getOptionalInPlayAfterActions(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.forEachExerted(game, effectResult, Filters.name("Bilbo")) || TriggerConditions.forEachWounded(game, effectResult, Filters.name("Bilbo"))) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendCost(
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, CardType.MINION));
action.appendCost(
new ChooseAndDiscardCardsFromHandEffect(subAction, playerId, true, 1, 1));
action.appendEffect(
new PreventableEffect(action,
new UnrespondableEffect() {
@Override
public String getText(LotroGame game) {
return "Choose a SHIRE card";
}
@Override
protected void doPlayEffect(LotroGame game) {
action.appendEffect(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Culture.SHIRE));
}
}, Collections.singletonList(game.getGameState().getCurrentPlayerId()),
new PreventableEffect.PreventionCost() {
@Override
public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) {
return new ChooseAndDiscardCardsFromHandEffect(subAction, playerId, true, 2, 2);
}
}
));
}
return action;
}
}