Main Deck: Gundabad culture

This commit is contained in:
PhallenCassidy
2016-11-30 12:45:57 -05:00
committed by GitHub
parent 5b6837c528
commit e6aa9125fa
9 changed files with 540 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
package com.gempukku.lotro.cards.set30.gundabad;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.actions.PlayPermanentAction;
import com.gempukku.lotro.cards.effects.SelfDiscardEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
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.ActivateCardAction;
import com.gempukku.lotro.logic.timing.Action;
import java.util.LinkedList;
import java.util.List;
/**
* Set: Main Deck
* Side: Shadow
* Culture: Gundabad
* Twilight Cost: 2
* Type: Minion • Orc
* Strength: 7
* Vitality: 2
* Site: 3
* Game Text: Damage +1. To play, exert an Orc. Shadow: Discard Fimbul from play to play a minion from your draw deck.
*/
public class Card30_033 extends AbstractMinion {
public Card30_033() {
super(3, 7, 2, 3, Race.ORC, Culture.GUNDABAD, "Fimbul", "Orkish Assassin", true);
addKeyword(Keyword.DAMAGE, 1);
}
@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)
&& PlayConditions.canExert(self, game, Race.ORC);
}
@Override
public PlayPermanentAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
final PlayPermanentAction action = super.getPlayCardAction(playerId, game, self, twilightModifier, ignoreRoamingPenalty);
action.appendCost(
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Race.ORC));
return action;
}
@Override
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SHADOW, self, 0)) {
List<ActivateCardAction> actions = new LinkedList<ActivateCardAction>();
if (PlayConditions.canSelfDiscard(self, game)) {
ActivateCardAction action = new ActivateCardAction(self);
action.setText("Play a minion from your draw deck");
action.appendCost(
new SelfDiscardEffect(self));
action.appendEffect(
new ChooseAndPlayCardFromDeckEffect(playerId, CardType.MINION));
actions.add(action);
}
return actions;
}
return null;
}
}

View File

@@ -0,0 +1,45 @@
package com.gempukku.lotro.cards.set30.gundabad;
import com.gempukku.lotro.cards.AbstractPermanent;
import com.gempukku.lotro.cards.PlayConditions;
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.effects.ChooseAndDiscardCardsFromHandEffect;
import com.gempukku.lotro.logic.timing.Action;
import java.util.Collections;
import java.util.List;
/**
* Set: The Main Deck
* Side: Shadow
* Culture: Gundabad
* Twilight Cost: 3
* Type: Condition
* Game Text: Plays to your support area. Shadow: Discard 3 cards from hand to play an Orc from your discard
* pile.
*/
public class Card30_034 extends AbstractPermanent {
public Card30_034() {
super(Side.SHADOW, 3, CardType.CONDITION, Culture.GUNDABAD, Zone.SUPPORT, "Hatred Rekindled");
}
@Override
public List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SHADOW, self, 0)
&& game.getGameState().getHand(playerId).size() >= 3
// You have to be able to play an Orc from discard to use it
&& PlayConditions.canPlayFromDiscard(playerId, game, Race.ORC)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 3));
action.appendEffect(
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Race.ORC));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,43 @@
package com.gempukku.lotro.cards.set30.gundabad;
import com.gempukku.lotro.cards.AbstractEvent;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.actions.PlayEventAction;
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.Race;
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;
/**
* Set: Main Deck
* Side: Shadow
* Culture: Gundabad
* Twilight Cost: 0
* Type: Event
* Game Text: Shadow: Play an Orc from your discard pile.
*/
public class Card30_035 extends AbstractEvent {
public Card30_035() {
super(Side.SHADOW, 0, Culture.GUNDABAD, "Host of Thousands", Phase.SHADOW);
}
@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)
// There has to be playable Orc in discard pile to be able to use "Host of Thousands"
&& PlayConditions.canPlayFromDiscard(playerId, game, Race.ORC);
}
@Override
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Race.ORC));
return action;
}
}

View File

@@ -0,0 +1,48 @@
package com.gempukku.lotro.cards.set30.gundabad;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.effects.RemoveTwilightEffect;
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.effects.ChooseAndWoundCharactersEffect;
import com.gempukku.lotro.logic.timing.Action;
import java.util.Collections;
import java.util.List;
/**
* Set: Main Deck
* Side: Shadow
* Culture: Gundabad
* Twilight Cost: 2
* Type: Minion • Orc
* Strength: 6
* Vitality: 2
* Site: 3
* Game Text: Archer. When Narzug is killed or discarded from play (except during the regroup phase), you may remove
* (3) to wound an ally twice.
*/
public class Card30_036 extends AbstractMinion {
public Card30_036() {
super(2, 6, 2, 3, Race.ORC, Culture.GUNDABAD, "Narzug", "Orkish Assassin", true);
addKeyword(Keyword.ARCHER);
}
@Override
public OptionalTriggerAction getDiscardedFromPlayOptionalTrigger(String playerId, LotroGame game, PhysicalCard self) {
if ((game.getGameState().getCurrentPhase() != Phase.REGROUP)
&& (game.getGameState().getTwilightPool() >= 3)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendCost(
new RemoveTwilightEffect(3));
action.appendEffect(
new ChooseAndWoundCharactersEffect(action, self.getOwner(), 1, 1, 2, CardType.ALLY));
return action;
}
return null;
}
}

View File

@@ -0,0 +1,65 @@
package com.gempukku.lotro.cards.set30.gundabad;
import com.gempukku.lotro.cards.AbstractPermanent;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.ExhaustCharacterEffect;
import com.gempukku.lotro.cards.effects.SelfDiscardEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndPutCardFromDiscardOnTopOfDeckEffect;
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.GameState;
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.modifiers.ModifiersQuerying;
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.List;
/**
* Set: Main Deck
* Side: Shadow
* Culture: Gundabad
* Twilight Cost: 2
* Type: Condition • Support Area
* Game Text: If there is a [DWARVEN] companion in the dead pile, each [DWARVEN] companion comes into play exhausted.
* Regroup: Place a Shadow card (except Smaug) from your discard pile on top of your draw deck. Discard this condition.
*/
public class Card30_037 extends AbstractPermanent {
public Card30_037() {
super(Side.SHADOW, 2, CardType.CONDITION, Culture.GUNDABAD, Zone.SUPPORT, "Not at Home", null, true);
}
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.played(game, effectResult, CardType.COMPANION, Culture.DWARVEN)
&& Filters.filter(game.getGameState().getDeadPile(game.getGameState().getCurrentPlayerId()), game.getGameState(), game.getModifiersQuerying(), Filters.and(CardType.COMPANION, Culture.DWARVEN)).size() > 0) {
PlayCardResult playCardResult = (PlayCardResult) effectResult;
RequiredTriggerAction action = new RequiredTriggerAction(self);
action.appendEffect(
new ExhaustCharacterEffect(self, action, playCardResult.getPlayedCard()));
return Collections.singletonList(action);
}
return null;
}
@Override
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.REGROUP, self, 0)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendEffect(
new ChooseAndPutCardFromDiscardOnTopOfDeckEffect(action, playerId, 1, 1, Filters.not(Filters.name("Smaug"))));
action.appendEffect(
new SelfDiscardEffect(self));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,70 @@
package com.gempukku.lotro.cards.set30.gundabad;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.ExhaustCharacterEffect;
import com.gempukku.lotro.cards.effects.RemoveTwilightEffect;
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.OptionalTriggerAction;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.List;
/**
* Set: Main Deck
* Side: Shadow
* Culture: Gundabad
* Twilight Cost: 3
* Type: Minion • Orc
* Strength: 8
* Vitality: 2
* Site: 3
* Game Text: When you play this minion, you may spot 4 [DWARVEN] followers to exhaust a [DWARVEN] companion.
* Maneuver: Spot 7 companions and remove (2) to wound a companion (except Bilbo).
*/
public class Card30_038 extends AbstractMinion {
public Card30_038() {
super(3, 8, 2, 3, Race.ORC, Culture.GUNDABAD, "Orkish Marauder");
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.played(game, effectResult, self)
&& PlayConditions.canSpot(game, 4, Culture.DWARVEN, CardType.FOLLOWER)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose a companion (except Bilbo)", CardType.COMPANION, Culture.DWARVEN) {
@Override
protected void cardSelected(LotroGame game, PhysicalCard card) {
action.insertEffect(
new ExhaustCharacterEffect(self, action, card));
}
});
return Collections.singletonList(action);
}
return null;
}
@Override
public List<? extends Action> getExtraPhaseActions(final String playerId, LotroGame game, final PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.MANEUVER, self, 2)
&& PlayConditions.canSpot(game, 7, CardType.COMPANION)) {
final ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(new RemoveTwilightEffect(2));
action.appendEffect(
new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.COMPANION, Filters.not(Filters.name("Bilbo"))));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,69 @@
package com.gempukku.lotro.cards.set30.gundabad;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.effects.AddBurdenEffect;
import com.gempukku.lotro.cards.effects.ChoiceEffect;
import com.gempukku.lotro.cards.effects.OptionalEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndAssignCharacterToMinionEffect;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Race;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.GameUtils;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
import com.gempukku.lotro.logic.decisions.MultipleChoiceAwaitingDecision;
import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect;
import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect;
import com.gempukku.lotro.cards.effects.SelfDiscardEffect;
import com.gempukku.lotro.logic.effects.StackActionEffect;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.Effect;
import java.util.Collections;
import java.util.List;
/**
* Set: Main Deck
* Side: Shadow
* Culture: Gundabad
* Twilight Cost: 2
* Type: Minion • Orc
* Strength: 6
* Vitality: 2
* Site: 3
* Game Text: Assignment: Assign this minion to skirmish Bilbo. The Free Peoples player may add a burden to
* discard this minion.
*/
public class Card30_039 extends AbstractMinion {
public Card30_039() {
super(2, 6, 2, 3, Race.ORC, Culture.GUNDABAD, "Orkish Aggressor");
}
@Override
protected List<? extends Action> getExtraPhaseActions(final String playerId, LotroGame game, final PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.ASSIGNMENT, self, 0)) {
final ActivateCardAction action = new ActivateCardAction(self);
action.appendEffect(
new ChooseAndAssignCharacterToMinionEffect(action, playerId, self, Filters.name("Bilbo")));
String fpPlayer = game.getGameState().getCurrentPlayerId();
action.appendEffect(
new PlayoutDecisionEffect(game.getGameState().getCurrentPlayerId(),
new MultipleChoiceAwaitingDecision(1, "Do you want to add a doubt to discard this minion?", new String[]{"Yes", "No"}) {
@Override
protected void validDecisionMade(int index, String result) {
if (result.equals("Yes")) {
action.insertCost(
new AddBurdenEffect(self.getOwner(), self, 1));
action.appendEffect(
new SelfDiscardEffect(self));
}
}
}));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,85 @@
package com.gempukku.lotro.cards.set30.gundabad;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.AddUntilEndOfTurnModifierEffect;
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.OptionalTriggerAction;
import com.gempukku.lotro.logic.decisions.MultipleChoiceAwaitingDecision;
import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect;
import com.gempukku.lotro.logic.effects.PlaySiteEffect;
import com.gempukku.lotro.cards.effects.SelfExertEffect;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.List;
/**
* Set: Shadows
* Side: Shadow
* Culture: Gundabad
* Twilight Cost: 4
* Type: Minion • Orc
* Strength: 8
* Vitality: 3
* Site: 3
* Game Text: When you play this minion, you may play the fellowship's next site (replacing an opponent's site
* if necessary). Shadow: Exert this minion twice to make each site on the adventure path gain battleground,
* mountain, forest, or underground until the end of the turn.
*/
public class Card30_040 extends AbstractMinion {
public Card30_040() {
super(4, 8, 3, 3, Race.ORC, Culture.GUNDABAD, "Watchful Orc");
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.played(game, effectResult, self)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new PlaySiteEffect(action, playerId, null, game.getGameState().getCurrentSiteNumber() + 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.REGROUP, self, 0)
&& PlayConditions.canExert(self, game, 2, self)) {
final ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfExertEffect(action, self));
action.appendCost(
new SelfExertEffect(action, self));
action.appendEffect(
new PlayoutDecisionEffect(self.getOwner(),
new MultipleChoiceAwaitingDecision(1, "Choose type", new String[]{"battleground", "mountain", "forest", "underground"}) {
@Override
protected void validDecisionMade(int index, String result) {
Keyword keyword;
if (index == 0)
keyword = Keyword.BATTLEGROUND;
else if (index == 1)
keyword = Keyword.MOUNTAIN;
else if (index == 2)
keyword = Keyword.FOREST;
else
keyword = Keyword.UNDERGROUND;
action.appendEffect(
new AddUntilEndOfTurnModifierEffect(
new KeywordModifier(self, Filters.and(CardType.SITE, Zone.ADVENTURE_PATH), keyword)));
}
}));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,49 @@
package com.gempukku.lotro.cards.set30.gundabad;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.effects.RemoveTwilightEffect;
import com.gempukku.lotro.cards.effects.SelfDiscardEffect;
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.timing.Action;
import java.util.Collections;
import java.util.List;
/**
* Set: Main Deck
* Side: Shadow
* Culture: Gundabad
* Twilight Cost: 1
* Type: Minion • Orc
* Strength: 5
* Vitality: 2
* Site: 3
* Game Text: Maneuver: Remove (3) and discard this minion from play to discard a follower.
*/
public class Card30_041 extends AbstractMinion {
public Card30_041() {
super(1, 5, 2, 3, Race.ORC, Culture.GUNDABAD, "Yazneg", "Orkish Assassin", true);
}
@Override
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.MANEUVER, self, 3)
&& PlayConditions.canSelfDiscard(self, game)) {
final ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new RemoveTwilightEffect(3));
action.appendCost(
new SelfDiscardEffect(self));
action.appendEffect(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.FOLLOWER));
return Collections.singletonList(action);
}
return null;
}
}