Finished Sauron cards

This commit is contained in:
marcin.sciesinski
2019-08-07 15:29:36 -07:00
parent a107a8a9ce
commit cfc733cc07
19 changed files with 920 additions and 1 deletions

View File

@@ -0,0 +1,69 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
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.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.CantTakeWoundsModifier;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.timing.Action;
import java.util.Collections;
import java.util.List;
/**
* Title: *Mordor Archer Captain
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 7
* Type: Minion - Orc
* Strength: 13
* Vitality: 4
* Home: 6
* Card Number: 1R222
* Game Text: Archer. Mordor Archer Captain's twilight cost is -1 for each [SAURON] archer you can spot.
* Archery: Exert Mordor Archer Captain twice and spot an unbound companion. That companion may not take wounds during the archery phase.
*/
public class Card40_222 extends AbstractMinion {
public Card40_222() {
super(7, 13, 4, 6, Race.ORC, Culture.SAURON, "Mordor Archer Captain", null, true);
addKeyword(Keyword.ARCHER);
}
@Override
public int getTwilightCostModifier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard self) {
return -Filters.countActive(gameState, modifiersQuerying, Culture.SAURON, Keyword.ARCHER);
}
@Override
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, final PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.ARCHERY, self, 0)
&& PlayConditions.canSelfExert(self, 2, game)) {
final ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, 2, self));
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose unbound companion", Filters.unboundCompanion) {
@Override
protected void cardSelected(LotroGame game, PhysicalCard card) {
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new CantTakeWoundsModifier(self, card)));
}
});
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,58 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
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.LotroGame;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
import com.gempukku.lotro.logic.effects.ChooseAndHealCharactersEffect;
import com.gempukku.lotro.logic.timing.Effect;
import java.util.Collections;
import java.util.List;
/**
* Title: Orc Bowcaster
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 1
* Type: Minion - Orc
* Strength: 5
* Vitality: 1
* Home: 6
* Card Number: 1C225
* Game Text: Archer. To play, spot a [SAURON] minion.
* Response: If this minion is about to be killed during the archery phase, discard it to heal another [SAURON] archer.
*/
public class Card40_225 extends AbstractMinion {
public Card40_225() {
super(1, 5, 1, 6, Race.ORC, Culture.SAURON, "Orc Bowcaster");
addKeyword(Keyword.ARCHER);
}
@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.canSpot(game, Culture.SAURON, CardType.MINION);
}
@Override
public List<? extends ActivateCardAction> getOptionalInPlayBeforeActions(String playerId, LotroGame game, Effect effect, PhysicalCard self) {
if (TriggerConditions.isGettingKilled(effect, game, self)
&& PlayConditions.isPhase(game, Phase.ARCHERY)
&& PlayConditions.canSelfDiscard(self, game)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfDiscardEffect(self));
action.appendEffect(
new ChooseAndHealCharactersEffect(action, playerId, 1, 1, Culture.SAURON, Keyword.ARCHER, Filters.not(self)));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,47 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.modifiers.conditions.AndCondition;
import com.gempukku.lotro.cards.modifiers.conditions.NotCondition;
import com.gempukku.lotro.cards.modifiers.conditions.SpotCulturesCondition;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
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;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.SpotCondition;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import java.util.Collections;
import java.util.List;
/**
* Title: Orc Brute
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 3
* Type: Minion - Orc
* Strength: 8
* Vitality: 3
* Home: 6
* Card Number: 1C226
* Game Text: While you can spot another [SAURON] minion and cannot spot more than 2 Free Peoples cultures, this minion is strength +2.
*/
public class Card40_226 extends AbstractMinion {
public Card40_226() {
super(3, 8, 3, 6, Race.ORC, Culture.SAURON, "Orc Brute");
}
@Override
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
StrengthModifier modifier = new StrengthModifier(self, self,
new AndCondition(
new SpotCondition(Culture.SAURON, CardType.MINION, Filters.not(self)),
new NotCondition(new SpotCulturesCondition(3, Side.FREE_PEOPLE))), 2);
return Collections.singletonList(modifier);
}
}

View File

@@ -0,0 +1,43 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.modifiers.ArcheryTotalModifier;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.common.Race;
import com.gempukku.lotro.common.Side;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.SpotCondition;
import java.util.Collections;
import java.util.List;
/**
* Title: *Orc Marskman
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 2
* Type: Minion - Orc
* Strength: 6
* Vitality: 3
* Home: 6
* Card Number: 1C227
* Game Text: Tracker. Archer. While you can spot 3 trackers, the minion archery total is +1.
*/
public class Card40_227 extends AbstractMinion {
public Card40_227() {
super(2, 6, 3, 6, Race.ORC, Culture.SAURON, "Orc Marksman", null, true);
addKeyword(Keyword.TRACKER);
addKeyword(Keyword.ARCHER);
}
@Override
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
ArcheryTotalModifier modifier = new ArcheryTotalModifier(self, Side.SHADOW,
new SpotCondition(3, Keyword.TRACKER), 1);
return Collections.singletonList(modifier);
}
}

View File

@@ -0,0 +1,55 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.common.CardType;
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.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect;
import com.gempukku.lotro.logic.effects.RemoveThreatsEffect;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.List;
/**
* Title: Orc Miscreant
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 3
* Type: Minion - Orc
* Strength: 8
* Vitality: 3
* Home: 6
* Card Number: 1C228
* Game Text: At the start of each skirmish involving this minion, you may remove a threat and spot another [SAURON] Orc
* to wound a companion this minion is skirmishing.
*/
public class Card40_228 extends AbstractMinion {
public Card40_228() {
super(3, 8, 3, 6, Race.ORC, Culture.SAURON, "Orc Miscreant");
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.startOfPhase(game, effectResult, Phase.SKIRMISH)
&& PlayConditions.canSpot(game, self, Filters.inSkirmish)
&& PlayConditions.canRemoveThreat(game, self, 1)
&& PlayConditions.canSpot(game, self, Culture.SAURON, Race.ORC, Filters.not(self))) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendCost(
new RemoveThreatsEffect(self, 1));
action.appendEffect(
new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.COMPANION, Filters.inSkirmishAgainst(self)));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,48 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.modifiers.conditions.AndCondition;
import com.gempukku.lotro.cards.modifiers.conditions.NotCondition;
import com.gempukku.lotro.cards.modifiers.conditions.SpotCulturesCondition;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
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;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.SpotCondition;
import java.util.Collections;
import java.util.List;
/**
* Title: Orc Monstrosity
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 4
* Type: Minion - Orc
* Strength: 11
* Vitality: 3
* Home: 6
* Card Number: 1R229
* Game Text: While you can spot another [SAURON] Orc and cannot spot more than 2 Free Peoples cultures, this minion is damage +1.
*/
public class Card40_229 extends AbstractMinion {
public Card40_229() {
super(4, 11, 3, 6, Race.ORC, Culture.SAURON,"Orc Monstrosity");
}
@Override
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
KeywordModifier modifier = new KeywordModifier(self, self,
new AndCondition(
new SpotCondition(Culture.SAURON, Race.ORC, Filters.not(self)),
new NotCondition(new SpotCulturesCondition(3, Side.FREE_PEOPLE))
), Keyword.DAMAGE, 1);
return Collections.singletonList(modifier);
}
}

View File

@@ -0,0 +1,49 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.modifiers.conditions.AndCondition;
import com.gempukku.lotro.cards.modifiers.conditions.NotCondition;
import com.gempukku.lotro.cards.modifiers.conditions.SpotCulturesCondition;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
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;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.SpotCondition;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import java.util.Collections;
import java.util.List;
/**
* Title: Orc Ravager
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 3
* Type: Minion - Orc
* Strength: 9
* Vitality: 3
* Home: 6
* Card Number: 1U230
* Game Text: Tracker. While you can spot another [SAURON] Orc and cannot spot more than 2 Free Peoples cultures,
* each character skirmishing this minion is strength -1.
*/
public class Card40_230 extends AbstractMinion {
public Card40_230() {
super(3, 9, 3, 6, Race.ORC, Culture.SAURON, "Orc Ravager");
addKeyword(Keyword.TRACKER);
}
@Override
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
StrengthModifier modifier = new StrengthModifier(self, Filters.inSkirmishAgainst(self),
new AndCondition(
new SpotCondition(Culture.SAURON, Race.ORC, Filters.not(self)),
new NotCondition(new SpotCulturesCondition(3, Side.FREE_PEOPLE))), -1);
return Collections.singletonList(modifier);
}
}

View File

@@ -0,0 +1,68 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.SelfExertEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndDiscardCardsFromPlayEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
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.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.List;
/**
* Title: *Orc Raveners
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 4
* Type: Minion - Orc
* Strength: 11
* Vitality: 3
* Home: 6
* Card Number: 1R231
* Game Text: Tracker. When you play this minion, you may spot another [SAURON] minion to discard a condition.
* Maneuver: Exert this minion twice to play a [SAURON] condition from your discard pile.
*/
public class Card40_231 extends AbstractMinion {
public Card40_231() {
super(4, 11, 3, 6, Race.ORC, Culture.SAURON, "Orc Raveners", null, true);
addKeyword(Keyword.TRACKER);
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.played(game, effectResult, self)
&& PlayConditions.canSpot(game, Culture.SAURON, CardType.MINION, Filters.not(self))) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.CONDITION));
return Collections.singletonList(action);
}
return null;
}
@Override
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.MANEUVER, self, 0)
&& PlayConditions.canSelfExert(self, 2, game)
&& PlayConditions.canPlayFromDiscard(playerId, game, Culture.SAURON, CardType.CONDITION)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, 2, self));
action.appendEffect(
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Culture.SAURON, CardType.CONDITION));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,51 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
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.GameUtils;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
import com.gempukku.lotro.logic.timing.Action;
import java.util.Collections;
import java.util.List;
/**
* Title: Orc Savage
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 2
* Type: Minion - Orc
* Strength: 7
* Vitality: 2
* Home: 6
* Card Number: 1C232
* Game Text: Tracker. Regroup: Spot another [SAURON] Orc and discard this minion to make the Free Peoples player exert a companion.
*/
public class Card40_232 extends AbstractMinion {
public Card40_232() {
super(2, 7, 2, 6, Race.ORC, Culture.SAURON, "Orc Savage");
addKeyword(Keyword.TRACKER);
}
@Override
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.REGROUP, self, 0)
&& PlayConditions.canSpot(game, Culture.SAURON, Race.ORC, Filters.not(self))
&& PlayConditions.canSelfDiscard(self, game)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfDiscardEffect(self));
action.appendEffect(
new ChooseAndExertCharactersEffect(action, GameUtils.getFreePeoplePlayer(game), 1, 1, CardType.COMPANION));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,57 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.effects.SelfExertEffect;
import com.gempukku.lotro.cards.modifiers.RoamingPenaltyModifier;
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.ChooseAndWoundCharactersEffect;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.timing.Action;
import java.util.Collections;
import java.util.List;
/**
* Title: Orc Scouting Party
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 4
* Type: Minion - Orc
* Strength: 9
* Vitality: 3
* Home: 6
* Card Number: 1R233
* Game Text: Tracker. The roaming penalty for each [SAURON] minion is -1. Skirmish: Exert this minion to wound a character it is skirmishing.
*/
public class Card40_233 extends AbstractMinion {
public Card40_233() {
super(4, 9, 3, 6, Race.ORC, Culture.SAURON, "Orc Scouting Party");
addKeyword(Keyword.TRACKER);
}
@Override
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
RoamingPenaltyModifier modifier = new RoamingPenaltyModifier(self, Filters.and(Culture.SAURON, CardType.MINION), -1);
return Collections.singletonList(modifier);
}
@Override
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SKIRMISH, self, 0)
&& PlayConditions.canSelfExert(self, game)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfExertEffect(action, self));
action.appendEffect(
new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, Filters.character, Filters.inSkirmishAgainst(self)));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,60 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
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.cards.modifiers.DoesNotAddToArcheryTotalModifier;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
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.actions.ActivateCardAction;
import com.gempukku.lotro.logic.timing.Action;
import java.util.Collections;
import java.util.List;
/**
* Title: Orc Sharpshooter
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 2
* Type: Minion - Orc
* Strength: 7
* Vitality: 2
* Home: 6
* Card Number: 1C234
* Game Text: Tracker. Archer.
* Archery: Spot 3 trackers and exert this minion to exert an unbound companion; this minion does not add to the minion archery total.
*/
public class Card40_234 extends AbstractMinion {
public Card40_234() {
super(2, 7, 2, 6, Race.ORC, Culture.SAURON, "Orc Sharpshooter");
addKeyword(Keyword.TRACKER);
addKeyword(Keyword.ARCHER);
}
@Override
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.ARCHERY, self, 0)
&& PlayConditions.canSpot(game, 3, Keyword.TRACKER)
&& PlayConditions.canSelfExert(self, game)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfExertEffect(action, self));
action.appendEffect(
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.unboundCompanion));
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new DoesNotAddToArcheryTotalModifier(self, self)));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,44 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.modifiers.SidePlayerCantPlayPhaseEventsOrSpecialAbilitiesModifier;
import com.gempukku.lotro.cards.modifiers.conditions.AndCondition;
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.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.SpotCondition;
import java.util.Collections;
import java.util.List;
/**
* Title: *Orc Skulker
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 3
* Type: Minion - Orc
* Strength: 9
* Vitality: 3
* Home: 6
* Card Number: 1U235
* Game Text: Tracker.
* While you can spot 3 trackers, the Free Peoples player may not play skirmish events or use skirmish special abilities
* in skirmishes involving this minion.
*/
public class Card40_235 extends AbstractMinion {
public Card40_235() {
super(3, 9, 3, 6, Race.ORC, Culture.SAURON, "Orc Skulker", null, true);
addKeyword(Keyword.TRACKER);
}
@Override
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
SidePlayerCantPlayPhaseEventsOrSpecialAbilitiesModifier modifier = new SidePlayerCantPlayPhaseEventsOrSpecialAbilitiesModifier(
self, new AndCondition(new SpotCondition(3, Keyword.TRACKER), new SpotCondition(self, Filters.inSkirmish)),
Side.FREE_PEOPLE, Phase.SKIRMISH);
return Collections.singletonList(modifier);
}
}

View File

@@ -0,0 +1,41 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.common.Race;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.SpotCondition;
import java.util.Collections;
import java.util.List;
/**
* Title: Orc Stalker
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 4
* Type: Minion - Orc
* Strength: 10
* Vitality: 3
* Home: 6
* Card Number: 1C236
* Game Text: Tracker. While you can spot 3 trackers, this minion is fierce.
*/
public class Card40_236 extends AbstractMinion {
public Card40_236() {
super(4, 10, 3, 6, Race.ORC, Culture.SAURON, "Orc Stalker");
addKeyword(Keyword.TRACKER);
}
@Override
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
KeywordModifier modifier = new KeywordModifier(self, self,
new SpotCondition(3, Keyword.TRACKER), Keyword.FIERCE, 1);
return Collections.singletonList(modifier);
}
}

View File

@@ -0,0 +1,53 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.ExertCharactersEffect;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
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.actions.RequiredTriggerAction;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.results.AssignAgainstResult;
import com.gempukku.lotro.logic.timing.results.AssignedToSkirmishResult;
import java.util.Collections;
import java.util.List;
/**
* Title: *Orc Villain
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 3
* Type: Minion - Orc
* Strength: 8
* Vitality: 3
* Home: 6
* Card Number: 1R237
* Game Text: While you can spot another [SAURON] minion and cannot spot more than 2 Free Peoples cultures, each time
* this minion is assigned to skirmish a companion, that companion must exert.
*/
public class Card40_237 extends AbstractMinion {
public Card40_237() {
super(3, 8, 3, 6, Race.ORC, Culture.SAURON, "Orc Villain", null, true);
}
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.assignedAgainst(game, effectResult, null, CardType.COMPANION, self)
&& PlayConditions.canSpot(game, Culture.SAURON, CardType.MINION, Filters.not(self))
&& !PlayConditions.canSpotFPCultures(game, 3, self.getOwner())) {
AssignAgainstResult assignedResult = (AssignAgainstResult) effectResult;
RequiredTriggerAction action = new RequiredTriggerAction(self);
action.appendEffect(
new ExertCharactersEffect(action, self, CardType.COMPANION, Filters.in(assignedResult.getAgainst())));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,51 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractPermanent;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.effects.SelfDiscardEffect;
import com.gempukku.lotro.cards.modifiers.evaluator.ForEachThreatEvaluator;
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.effects.AddTwilightEffect;
import com.gempukku.lotro.logic.timing.Action;
import java.util.Collections;
import java.util.List;
/**
* Title: *Sauron's Forces
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 3
* Type: Condition - Support Area
* Card Number: 1U238
* Game Text: To play, spot a [SAURON] Orc. Shadow: Discard this condition to add (1) for each threat.
*/
public class Card40_238 extends AbstractPermanent {
public Card40_238() {
super(Side.SHADOW, 3, CardType.CONDITION, Culture.SAURON, Zone.SUPPORT, "Sauron's Forces", null, true);
}
@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.canSpot(game, Culture.SAURON, Race.ORC);
}
@Override
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SHADOW, self, 0)
&& PlayConditions.canSelfDiscard(self, game)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfDiscardEffect(self));
action.appendEffect(
new AddTwilightEffect(self, new ForEachThreatEvaluator()));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,45 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractEvent;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.actions.PlayEventAction;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Side;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.GameUtils;
import com.gempukku.lotro.logic.effects.AddThreatsEffect;
/**
* Title: Shadow in the East
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 1
* Type: Event - Maneuver
* Card Number: 1C239
* Game Text: Spot a [SAURON] minion to add a threat. Add an additional threat for each Free Peoples culture less than 4 you can spot.
*/
public class Card40_239 extends AbstractEvent {
public Card40_239() {
super(Side.SHADOW, 1, Culture.SAURON, "Shadow in the East", Phase.MANEUVER);
}
@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.canSpot(game, Culture.SAURON, CardType.MINION);
}
@Override
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
PlayEventAction action = new PlayEventAction(self);
int fpCulturesCount = GameUtils.getSpottableFPCulturesCount(game.getGameState(), game.getModifiersQuerying(), playerId);
int threatCount = 1 + Math.max(0, 4 - fpCulturesCount);
action.appendEffect(
new AddThreatsEffect(playerId, self, threatCount));
return action;
}
}

View File

@@ -0,0 +1,37 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractEvent;
import com.gempukku.lotro.cards.actions.PlayEventAction;
import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
import com.gempukku.lotro.cards.modifiers.evaluator.ForEachThreatEvaluator;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Side;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
/**
* Title: Threat of Mordor
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 1
* Type: Event - Skirmish
* Card Number: 1C241
* Game Text: Make a [SAURON] minion strength +1 for each threat.
*/
public class Card40_241 extends AbstractEvent {
public Card40_241() {
super(Side.SHADOW, 1, Culture.SAURON, "Threat of Mordor", Phase.SKIRMISH);
}
@Override
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId,
new ForEachThreatEvaluator(), Culture.SAURON, CardType.MINION));
return action;
}
}

View File

@@ -0,0 +1,40 @@
package com.gempukku.lotro.cards.set40.sauron;
import com.gempukku.lotro.cards.AbstractEvent;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.actions.PlayEventAction;
import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
import com.gempukku.lotro.cards.modifiers.conditions.NotCondition;
import com.gempukku.lotro.cards.modifiers.conditions.SpotCulturesCondition;
import com.gempukku.lotro.cards.modifiers.evaluator.ConditionEvaluator;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Side;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
/**
* Title: War Cry of Mordor
* Set: Second Edition
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 1
* Type: Event - Skirmish
* Card Number: 1C242
* Game Text: Make a [SAURON] minion strength +2 (or strength +3 if you cannot spot more than 2 Free Peoples cultures.)
*/
public class Card40_242 extends AbstractEvent {
public Card40_242() {
super(Side.SHADOW, 1, Culture.SAURON, "War Cry of Mordor", Phase.SKIRMISH);
}
@Override
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId,
new ConditionEvaluator(2, 3, new NotCondition(new SpotCulturesCondition(3, Side.FREE_PEOPLE))), Culture.SAURON, CardType.MINION));
return action;
}
}

View File

@@ -254,4 +254,7 @@ gl_theOneRing,1_2
40_192,1_218
40_200,2_80
40_215,1_246
40_220,1_250
40_220,1_250
40_223,1_261
40_223,1_262
40_240,1_279