Migrated Uruk-hai cards in set 13 to hjson

This commit is contained in:
MarcinSc
2024-05-23 20:11:40 +07:00
parent bfe5fd2151
commit 09b141bc75
22 changed files with 442 additions and 1035 deletions

View File

@@ -1,66 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
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.cardtype.AbstractMinion;
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.effects.SelfExertEffect;
import com.gempukku.lotro.logic.modifiers.ResistanceModifier;
import com.gempukku.lotro.logic.modifiers.evaluator.CountActiveEvaluator;
import com.gempukku.lotro.logic.modifiers.evaluator.MultiplyEvaluator;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 4
* Type: Minion • Uruk-Hai
* Strength: 9
* Vitality: 3
* Site: 5
* Game Text: Damage +1. Shadow: Exert this minion and spot a Free Peoples condition to make an unbound companion
* resistance -1 for each card that has the same card title as that condition.
*/
public class Card13_158 extends AbstractMinion {
public Card13_158() {
super(4, 9, 3, 5, Race.URUK_HAI, Culture.URUK_HAI, "Assault Commander");
addKeyword(Keyword.DAMAGE, 1);
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(final String playerId, LotroGame game, final PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SHADOW, self, 0)
&& PlayConditions.canSelfExert(self, game)
&& PlayConditions.canSpot(game, Side.FREE_PEOPLE, CardType.CONDITION)) {
final ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfExertEffect(action, self));
action.appendCost(
new ChooseActiveCardEffect(self, playerId, "Choose a Free Peoples condition") {
@Override
protected void cardSelected(LotroGame game, final PhysicalCard condition) {
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose an unbound companion", Filters.unboundCompanion) {
@Override
protected void cardSelected(LotroGame game, PhysicalCard companion) {
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new ResistanceModifier(self, companion, null,
new MultiplyEvaluator(-1, new CountActiveEvaluator(Filters.name(condition.getBlueprint().getTitle()))))));
}
});
}
});
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,38 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
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.cardtype.AbstractMinion;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.modifiers.evaluator.CountCultureTokensEvaluator;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 4
* Type: Minion • Uruk-Hai
* Strength: 9
* Vitality: 2
* Site: 5
* Game Text: Damage +1. This minion is strength +1 for each Free Peoples culture token you can spot.
*/
public class Card13_159 extends AbstractMinion {
public Card13_159() {
super(4, 9, 2, 5, Race.URUK_HAI, Culture.URUK_HAI, "Assault Denizen");
addKeyword(Keyword.DAMAGE, 1);
}
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(new StrengthModifier(self, self, null, new CountCultureTokensEvaluator(Side.FREE_PEOPLE)));
}
}

View File

@@ -1,41 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
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.cardtype.AbstractMinion;
import com.gempukku.lotro.logic.modifiers.CantTakeWoundsModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.SpotCondition;
import com.gempukku.lotro.logic.modifiers.condition.AndCondition;
import com.gempukku.lotro.logic.modifiers.condition.NotCondition;
import com.gempukku.lotro.logic.modifiers.condition.PhaseCondition;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 2
* Type: Minion • Uruk-Hai
* Strength: 6
* Vitality: 1
* Site: 5
* Game Text: Damage +1. While you can spot a Free Peoples culture token, this minion cannot take wounds except during
* skirmishes.
*/
public class Card13_160 extends AbstractMinion {
public Card13_160() {
super(2, 6, 1, 5, Race.URUK_HAI, Culture.URUK_HAI, "Cavern Denizen");
addKeyword(Keyword.DAMAGE, 1);
}
@Override
public java.util.List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return java.util.Collections.singletonList(new CantTakeWoundsModifier(self,
new AndCondition(
new NotCondition(new PhaseCondition(Phase.SKIRMISH)),
new SpotCondition(Side.FREE_PEOPLE, Filters.hasAnyCultureTokens(1))),
self));
}
}

View File

@@ -1,62 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
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.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 1
* Type: Condition • Support Area
* Game Text: Skirmish: Discard this condition to make an [URUK-HAI] minion strength +1 for each of the following that
* is true: it is at a battleground site; it is skirmishing a companion who has resistance 4 or less; it is bearing
* a possession; you can spot an [URUK-HAI] minion not assigned to a skirmish.
*/
public class Card13_161 extends AbstractPermanent {
public Card13_161() {
super(Side.SHADOW, 1, CardType.CONDITION, Culture.URUK_HAI, "Endless Assault");
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SKIRMISH, self, 0)
&& PlayConditions.canSelfDiscard(self, game)) {
final ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfDiscardEffect(self));
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose an URUK-HAI minion", Culture.URUK_HAI, CardType.MINION) {
@Override
protected void cardSelected(LotroGame game, PhysicalCard minion) {
int bonus = 0;
if (PlayConditions.location(game, Keyword.BATTLEGROUND))
bonus++;
if (PlayConditions.canSpot(game, minion, Filters.inSkirmishAgainst(CardType.COMPANION, Filters.maxResistance(4))))
bonus++;
if (PlayConditions.canSpot(game, minion, Filters.hasAttached(CardType.POSSESSION)))
bonus++;
if (PlayConditions.canSpot(game, Culture.URUK_HAI, CardType.MINION, Filters.notAssignedToSkirmish))
bonus++;
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new StrengthModifier(self, minion, bonus)));
}
});
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,62 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
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.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.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.effects.AddTwilightEffect;
import com.gempukku.lotro.logic.effects.ChooseAndDiscardCardsFromHandEffect;
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 1
* Type: Condition • Support Area
* Game Text: To play, spot 2 [URUK-HAI] minions. Shadow: Discard 2 cards from hand to add (1). Regroup: Spot
* an [URUK-HAI] minion and discard this condition from play to add (3).
*/
public class Card13_162 extends AbstractPermanent {
public Card13_162() {
super(Side.SHADOW, 1, CardType.CONDITION, Culture.URUK_HAI, "Enemy Without Number");
}
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return PlayConditions.canSpot(game, 2, Culture.URUK_HAI, CardType.MINION);
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SHADOW, self, 0)
&& PlayConditions.canDiscardFromHand(game, playerId, 2, Filters.any)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 2));
action.appendEffect(
new AddTwilightEffect(self, 1));
return Collections.singletonList(action);
}
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.REGROUP, self, 0)
&& PlayConditions.canSpot(game, Culture.URUK_HAI, CardType.MINION)
&& PlayConditions.canSelfDiscard(self, game)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfDiscardEffect(self));
action.appendEffect(
new AddTwilightEffect(self, 3));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,39 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
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.cardtype.AbstractMinion;
import com.gempukku.lotro.logic.modifiers.CantDiscardFromPlayModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 4
* Type: Minion • Uruk-Hai
* Strength: 9
* Vitality: 2
* Site: 5
* Game Text: Damage +1. Lurker. (Skirmishes involving lurker minions must be resolved after any others.)
* Possessions borne by this minion cannot be discarded by Free Peoples cards.
*/
public class Card13_163 extends AbstractMinion {
public Card13_163() {
super(4, 9, 2, 5, Race.URUK_HAI, Culture.URUK_HAI, "Entranced Uruk");
addKeyword(Keyword.DAMAGE, 1);
addKeyword(Keyword.LURKER);
}
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(new CantDiscardFromPlayModifier(self, "Can't be discarded by Free Peoples cards",
Filters.and(CardType.POSSESSION, Filters.attachedTo(self)),
Filters.and(Side.FREE_PEOPLE)));
}
}

View File

@@ -1,64 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
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.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.effects.ReinforceTokenEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.PlayConditions;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 1
* Type: Condition • Support Area
* Game Text: To play, spot an [URUK-HAI] minion. When you play this, if you spot a battleground site on the adventure
* path, reinforce 3 [URUK-HAI] tokens. Each time the Free Peoples player plays the fellowships next site, you may
* discard a condition from play.
*/
public class Card13_164 extends AbstractPermanent {
public Card13_164() {
super(Side.SHADOW, 1, CardType.CONDITION, Culture.URUK_HAI, "Fearless Approach");
}
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return PlayConditions.canSpot(game, Culture.URUK_HAI, CardType.MINION);
}
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.played(game, effectResult, self)
&& PlayConditions.canSpot(game, CardType.SITE, Zone.ADVENTURE_PATH, Keyword.BATTLEGROUND)) {
RequiredTriggerAction action = new RequiredTriggerAction(self);
action.appendEffect(
new ReinforceTokenEffect(self, self.getOwner(), Token.URUK_HAI, 3));
return Collections.singletonList(action);
}
return null;
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.played(game, effectResult,
CardType.SITE,
Filters.owner(game.getGameState().getCurrentPlayerId()),
Filters.siteNumber(game.getGameState().getCurrentSiteNumber() + 1))) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.CONDITION));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,43 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
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.cardtype.AbstractMinion;
import com.gempukku.lotro.logic.modifiers.ArcheryTotalModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.modifiers.condition.LocationCondition;
import java.util.LinkedList;
import java.util.List;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 3
* Type: Minion • Uruk-Hai
* Strength: 7
* Vitality: 1
* Site: 5
* Game Text: Damage +1. While the fellowship is at a forest site, the fellowship archery total is -1. Each [ELVEN]
* companion skirmishing this minion is strength -2.
*/
public class Card13_165 extends AbstractMinion {
public Card13_165() {
super(3, 7, 1, 5, Race.URUK_HAI, Culture.URUK_HAI, "Isengard Infiltrator");
addKeyword(Keyword.DAMAGE, 1);
}
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
List<Modifier> modifiers = new LinkedList<>();
modifiers.add(
new ArcheryTotalModifier(self, Side.FREE_PEOPLE, new LocationCondition(Keyword.FOREST), -1));
modifiers.add(
new StrengthModifier(self, Filters.and(CardType.COMPANION, Culture.ELVEN, Filters.inSkirmishAgainst(self)), -2));
return modifiers;
}
}

View File

@@ -1,52 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
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.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.CostToEffectAction;
import com.gempukku.lotro.logic.actions.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
import com.gempukku.lotro.logic.effects.discount.RemoveCardsFromDiscardDiscountEffect;
import com.gempukku.lotro.logic.timing.PlayConditions;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 2
* Type: Event • Skirmish
* Game Text: You may remove from the game 4 [URUK-HAI] cards in your discard pile instead of paying the twilight cost
* for this card. Make your [URUK-HAI] minion skirmishing a companion with resistance 4 or less strength +2.
*/
public class Card13_166 extends AbstractEvent {
public Card13_166() {
super(Side.SHADOW, 2, Culture.URUK_HAI, "New Enemy", Phase.SKIRMISH);
}
@Override
public int getPotentialDiscount(LotroGame game, String playerId, PhysicalCard self) {
if (PlayConditions.canRemoveFromDiscard(self, game, playerId, 4, Culture.URUK_HAI))
return 1000;
return 0;
}
@Override
public void appendPotentialDiscountEffects(LotroGame game, CostToEffectAction action, String playerId, PhysicalCard self) {
action.appendPotentialDiscount(
new RemoveCardsFromDiscardDiscountEffect(self, playerId, 4, 1000, Culture.URUK_HAI));
}
@Override
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, 2, Filters.owner(playerId), Culture.URUK_HAI, CardType.MINION, Filters.inSkirmishAgainst(CardType.COMPANION, Filters.maxResistance(4))));
return action;
}
}

View File

@@ -1,43 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.timing.PlayConditions;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.logic.effects.ExertCharactersEffect;
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.RequiredTriggerAction;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 2
* Type: Condition • Support Area
* Game Text: While you can spot 3 [URUK-HAI] lurker minions, at the start of each skirmish involving an [URUK-HAI]
* lurker minion, each companion skirmishing that minion must exert.
*/
public class Card13_167 extends AbstractPermanent {
public Card13_167() {
super(Side.SHADOW, 2, CardType.CONDITION, Culture.URUK_HAI, "Signs of War", null, true);
}
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.startOfPhase(game, effectResult, Phase.SKIRMISH)
&& PlayConditions.canSpot(game, Culture.URUK_HAI, Keyword.LURKER, Filters.inSkirmish)
&& PlayConditions.canSpot(game, 3, Culture.URUK_HAI, CardType.MINION, Keyword.LURKER)) {
RequiredTriggerAction action = new RequiredTriggerAction(self);
action.appendEffect(
new ExertCharactersEffect(action, self, CardType.COMPANION, Filters.inSkirmish));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,36 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
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.cardtype.AbstractMinion;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 3
* Type: Minion • Uruk-Hai
* Strength: 8
* Vitality: 2
* Site: 5
* Game Text: Damage +1. When you play this, you may spot a companion who has resistance 0 to make this minion
* twilight cost -2.
*/
public class Card13_168 extends AbstractMinion {
public Card13_168() {
super(3, 8, 2, 5, Race.URUK_HAI, Culture.URUK_HAI, "Uruk Aggressor");
addKeyword(Keyword.DAMAGE, 1);
}
@Override
public int getTwilightCostModifier(LotroGame game, PhysicalCard self, PhysicalCard target) {
if (Filters.canSpot(game, CardType.COMPANION, Filters.maxResistance(0)))
return -2;
return 0;
}
}

View File

@@ -1,55 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
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.cardtype.AbstractMinion;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.ResistanceModifier;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.modifiers.condition.LocationCondition;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.LinkedList;
import java.util.List;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 4
* Type: Minion • Uruk-Hai
* Strength: 12
* Vitality: 2
* Site: 5
* Game Text: To play, spot an [URUK-HAI] minion. While the fellowship is in region 1, each Uruk-hai is damage +1. While
* the fellowship is in region 2, each companion is strength -1. While the fellowship is in region 3, each
* unbound companion is resistance -2.
*/
public class Card13_169 extends AbstractMinion {
public Card13_169() {
super(4, 12, 2, 5, Race.URUK_HAI, Culture.URUK_HAI, "Uruk Blitz", null, true);
}
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return PlayConditions.canSpot(game, Culture.URUK_HAI, CardType.MINION);
}
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
List<Modifier> modifiers = new LinkedList<>();
modifiers.add(
new KeywordModifier(self, Race.URUK_HAI, new LocationCondition(Filters.region(1)), Keyword.DAMAGE, 1));
modifiers.add(
new StrengthModifier(self, CardType.COMPANION, new LocationCondition(Filters.region(2)), -1));
modifiers.add(
new ResistanceModifier(self, Filters.unboundCompanion, new LocationCondition(Filters.region(3)), -2));
return modifiers;
}
}

View File

@@ -1,52 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
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.cardtype.AbstractMinion;
import com.gempukku.lotro.logic.effects.SelfExertEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 4
* Type: Minion • Uruk-Hai
* Strength: 9
* Vitality: 2
* Site: 5
* Game Text: Damage +1. Skirmish: If this minion is not assigned to a skirmish, you may exert it to discard
* a possession borne by a companion skirmishing another [URUK-HAI] minion.
*/
public class Card13_170 extends AbstractMinion {
public Card13_170() {
super(4, 9, 2, 5, Race.URUK_HAI, Culture.URUK_HAI, "Uruk Distractor");
addKeyword(Keyword.DAMAGE, 1);
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SKIRMISH, self, 0)
&& PlayConditions.canSpot(game, self, Filters.notAssignedToSkirmish)
&& PlayConditions.canSelfExert(self, game)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfExertEffect(action, self));
action.appendEffect(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1,
CardType.POSSESSION,
Filters.attachedTo(
CardType.COMPANION,
Filters.inSkirmishAgainst(Filters.not(self), Culture.URUK_HAI, CardType.MINION))));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,33 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
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.cardtype.AbstractMinion;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 4
* Type: Minion • Uruk-Hai
* Strength: 9
* Vitality: 2
* Site: 5
* Game Text: Damage +1. This minion is twilight cost -1 for each companion who has resistance 2 or less.
*/
public class Card13_171 extends AbstractMinion {
public Card13_171() {
super(4, 9, 2, 5, Race.URUK_HAI, Culture.URUK_HAI, "Uruk Invader");
addKeyword(Keyword.DAMAGE, 1);
}
@Override
public int getTwilightCostModifier(LotroGame game, PhysicalCard self, PhysicalCard target) {
return -Filters.countActive(game, CardType.COMPANION, Filters.maxResistance(2));
}
}

View File

@@ -1,40 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
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.cardtype.AbstractMinion;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 5
* Type: Minion • Uruk-Hai
* Strength: 15
* Vitality: 2
* Site: 5
* Game Text: This minion is damage +1 for each character in the dead pile.
*/
public class Card13_172 extends AbstractMinion {
public Card13_172() {
super(5, 15, 2, 5, Race.URUK_HAI, Culture.URUK_HAI, "Uruk Outrider");
}
@Override
public java.util.List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return java.util.Collections.singletonList(new KeywordModifier(self, self, null, Keyword.DAMAGE,
new Evaluator() {
@Override
public int evaluateExpression(LotroGame game, PhysicalCard cardAffected) {
return Filters.filter(game.getGameState().getDeadPile(game.getGameState().getCurrentPlayerId()), game, Filters.character).size();
}
}));
}
}

View File

@@ -1,59 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
import com.gempukku.lotro.logic.cardtype.AbstractMinion;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.logic.effects.PutCardFromPlayOnBottomOfDeckEffect;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
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.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.effects.KillEffect;
import com.gempukku.lotro.logic.timing.Effect;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 4
* Type: Minion • Uruk-Hai
* Strength: 8
* Vitality: 2
* Site: 5
* Game Text: Damage +1. Lurker. (Skirmishes involving lurker minions must be resolved after any others.) Each time your
* [URUK-HAI] minion is about to be killed in a skirmish, you may place that minion on the bottom of your
* draw deck instead.
*/
public class Card13_173 extends AbstractMinion {
public Card13_173() {
super(4, 8, 2, 5, Race.URUK_HAI, Culture.URUK_HAI, "Uruk Reserve");
addKeyword(Keyword.DAMAGE, 1);
addKeyword(Keyword.LURKER);
}
@Override
public List<OptionalTriggerAction> getOptionalBeforeTriggers(String playerId, LotroGame game, Effect effect, PhysicalCard self) {
if (TriggerConditions.isGettingKilled(effect, game, Filters.owner(playerId), Culture.URUK_HAI, CardType.MINION, Filters.inSkirmish)) {
final OptionalTriggerAction action = new OptionalTriggerAction(self);
KillEffect killEffect = (KillEffect) effect;
final List<PhysicalCard> charactersToBeKilled = killEffect.getCharactersToBeKilled();
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose your URUK-HAI minion", Filters.in(charactersToBeKilled), Filters.owner(playerId), Culture.URUK_HAI, CardType.MINION, Filters.inSkirmish) {
@Override
protected void cardSelected(LotroGame game, PhysicalCard card) {
action.appendEffect(
new PutCardFromPlayOnBottomOfDeckEffect(card));
}
});
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,56 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
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.cardtype.AbstractMinion;
import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.SelfExertEffect;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 5
* Type: Minion • Uruk-Hai
* Strength: 12
* Vitality: 3
* Site: 5
* Game Text: Damage +1. Skirmish: If no other minions are assigned to a skirmish, you may exert this minion twice
* to make it fierce and strength +4 until the regroup phase.
*/
public class Card13_174 extends AbstractMinion {
public Card13_174() {
super(5, 12, 3, 5, Race.URUK_HAI, Culture.URUK_HAI, "Uruk Rogue");
addKeyword(Keyword.DAMAGE, 1);
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SKIRMISH, self, 0)
&& PlayConditions.canSelfExert(self, 2, game)
&& !PlayConditions.canSpot(game, Filters.not(self), CardType.MINION, Filters.assignedToSkirmish)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfExertEffect(action, self));
action.appendCost(
new SelfExertEffect(action, self));
action.appendEffect(
new AddUntilStartOfPhaseModifierEffect(
new StrengthModifier(self, self, 4), Phase.REGROUP));
action.appendEffect(
new AddUntilStartOfPhaseModifierEffect(
new KeywordModifier(self, self, Keyword.FIERCE), Phase.REGROUP));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,49 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
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.cardtype.AbstractMinion;
import com.gempukku.lotro.logic.effects.SelfExertEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 4
* Type: Minion • Uruk-Hai
* Strength: 7
* Vitality: 3
* Site: 5
* Game Text: Damage +1. Skirmish: Exert this minion to make a companion skirmishing an [URUK-HAI] lurker minion
* strength -2.
*/
public class Card13_175 extends AbstractMinion {
public Card13_175() {
super(4, 7, 3, 5, Race.URUK_HAI, Culture.URUK_HAI, "Uruk Tactician");
addKeyword(Keyword.DAMAGE, 1);
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(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 ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, -2,
CardType.COMPANION,
Filters.inSkirmishAgainst(Culture.URUK_HAI, CardType.MINION, Keyword.LURKER)));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,59 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
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.PlayUtils;
import com.gempukku.lotro.logic.actions.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.ChooseArbitraryCardsEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.logic.timing.ExtraFilters;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collection;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 1
* Type: Event • Skirmish
* Game Text: Exert your [URUK-HAI] lurker minion to play an [URUK-HAI] hand weapon from your discard pile on your
* [URUK-HAI] minion.
*/
public class Card13_176 extends AbstractEvent {
public Card13_176() {
super(Side.SHADOW, 1, Culture.URUK_HAI, "War Machine", Phase.SKIRMISH);
}
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return PlayConditions.canExert(self, game, Filters.owner(self.getOwner()), Culture.URUK_HAI, CardType.MINION, Keyword.LURKER)
&& PlayConditions.canPlayFromDiscard(self.getOwner(), game, Culture.URUK_HAI, PossessionClass.HAND_WEAPON, ExtraFilters.attachableTo(game, Filters.owner(self.getOwner()), Culture.URUK_HAI, CardType.MINION));
}
@Override
public PlayEventAction getPlayEventCardAction(final String playerId, LotroGame game, PhysicalCard self) {
final Filter targetFilter = Filters.and(Filters.owner(playerId), Culture.URUK_HAI, CardType.MINION);
PlayEventAction action = new PlayEventAction(self);
action.appendCost(
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.owner(playerId), Culture.URUK_HAI, CardType.MINION, Keyword.LURKER));
action.appendEffect(
new ChooseArbitraryCardsEffect(playerId, "Choose card to play", game.getGameState().getDiscard(playerId),
Filters.and(
Culture.URUK_HAI, PossessionClass.HAND_WEAPON,
ExtraFilters.attachableTo(game, targetFilter)), 1, 1) {
@Override
protected void cardsSelected(LotroGame game, Collection<PhysicalCard> selectedCards) {
if (selectedCards.size() > 0) {
PhysicalCard selectedCard = selectedCards.iterator().next();
game.getActionsEnvironment().addActionToStack(PlayUtils.getPlayCardAction(game, selectedCard, 0, targetFilter, false));
}
}
});
return action;
}
}

View File

@@ -1,68 +0,0 @@
package com.gempukku.lotro.cards.set13.uruk_hai;
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.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.effects.AddTokenEffect;
import com.gempukku.lotro.logic.effects.ChoiceEffect;
import com.gempukku.lotro.logic.effects.RemoveTokenEffect;
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.PlayConditions;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* Set: Bloodlines
* Side: Shadow
* Culture: Uruk-hai
* Twilight Cost: 0
* Type: Condition • Support Area
* Game Text: When you play this, add an [URUK-HAI] token here for each wounded companion. Skirmish: Discard this from
* play or remove 2 tokens from here to make a companion skirmishing an [URUK-HAI] minion strength -1.
*/
public class Card13_177 extends AbstractPermanent {
public Card13_177() {
super(Side.SHADOW, 0, CardType.CONDITION, Culture.URUK_HAI, "Weapons of Control");
}
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.played(game, effectResult, self)) {
RequiredTriggerAction action = new RequiredTriggerAction(self);
int count = Filters.countActive(game, CardType.COMPANION, Filters.wounded);
if (count > 0)
action.appendEffect(
new AddTokenEffect(self, self, Token.URUK_HAI, count));
return Collections.singletonList(action);
}
return null;
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SKIRMISH, self, 0)) {
ActivateCardAction action = new ActivateCardAction(self);
List<Effect> possibleCosts = new LinkedList<>();
possibleCosts.add(
new RemoveTokenEffect(self, self, Token.URUK_HAI, 2));
possibleCosts.add(
new SelfDiscardEffect(self));
action.appendCost(
new ChoiceEffect(action, playerId, possibleCosts));
action.appendEffect(
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, -1, CardType.COMPANION, Filters.inSkirmishAgainst(Culture.URUK_HAI, CardType.MINION)));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -27,6 +27,30 @@
site: 5
keywords: Damage+1
effects: [
{
type: activated
phase: shadow
cost: [
{
type: exert
filter: self
}
{
type: spot
filter: choose(side(free people),condition)
memorize: spottedCondition
}
]
effect: {
type: modifyResistance
filter: choose(unbound,companion)
amount: {
type: forEachYouCanSpot
filter: nameFromMemory(spottedCondition)
multiplier: -1
}
}
}
]
gametext: <b>Damage +1</b>.<br><b>Shadow:</b> Exert this minion and spot a Free Peoples condition to make an unbound companion resistance -1 for each card that has the same card title as that condition.
lore: Fear is a potent weapon in the hands of an Uruk-hai.
@@ -66,6 +90,17 @@
site: 5
keywords: Damage+1
effects: [
{
type: modifier
modifier: {
type: modifyStrength
filter: self
amount: {
type: forEachToken
filter: side(free people)
}
}
}
]
gametext: <b>Damage +1</b>.<br>This minion is strength +1 for each Free Peoples culture token you can spot.
lore: Theories and tactics of warfare were tested upon the battlefields of Middle-earth.
@@ -105,6 +140,26 @@
site: 5
keywords: Damage+1
effects: [
{
type: modifier
modifier: {
type: cantTakeWounds
requires: [
{
type: canSpot
filter: side(free people),hasAnyTokens
}
{
type: not
requires: {
type: phase
phase: skirmish
}
}
]
filter: self
}
}
]
gametext: <b>Damage +1</b>.<br>While you can spot a Free Peoples culture token, this minion cannot take wounds except during skirmishes.
lore: Saruman uses the enemy's strength to his own advantage.
@@ -140,6 +195,62 @@
type: Condition
keywords: Support Area
effects: [
{
type: activated
phase: skirmish
cost: {
type: discard
filter: self
}
effect: {
type: modifyStrength
filter: choose(culture(uruk-hai),minion)
memorize: chosenMinion
amount: {
type: sum
source: [
{
type: condition
condition: {
type: location
filter: battleground
}
true: 1
false: 0
}
{
type: condition
condition: {
type: memoryMatches
memory: chosenMinion
filter: inSkirmishAgainst(companion,maxResistance(4))
}
true: 1
false: 0
}
{
type: condition
condition: {
type: memoryMatches
memory: chosenMinion
filter: hasAttached(possession)
}
true: 1
false: 0
}
{
type: condition
condition: {
type: canSpot
filter: culture(uruk-hai),minion,notAssignedToSkirmish
}
true: 1
false: 0
}
]
}
}
}
]
gametext: <b>Skirmish:</b> Discard this condition to make an [uruk-hai] minion strength +1 for each of the following that is true: it is at a battleground site; it is skirmishing a companion who has resistance 4 or less; it is bearing a possession; you can spot an [uruk-hai] minion not assigned to a skirmish.
lore: ""
@@ -175,6 +286,43 @@
type: Condition
keywords: Support Area
effects: [
{
type: toPlay
requires: {
type: canSpot
filter: culture(uruk-hai),minion
count: 2
}
}
{
type: activated
phase: shadow
cost: {
type: discardFromHand
forced: false
count: 2
}
effect: {
type: addTwilight
amount: 1
}
}
{
type: activated
phase: regroup
requires: {
type: canSpot
filter: culture(uruk-hai),minion
}
cost: {
type: discard
filter: self
}
effect: {
type: addTwilight
amount: 3
}
}
]
gametext: To play, spot 2 [uruk-hai] minions.<br><b>Shadow:</b> Discard 2 cards from hand to add (1).<br><b>Regroup:</b> Spot an [uruk-hai] minion and discard this condition from play to add (3).
lore: Valour could not prevent the breach of the Deeping Wall.
@@ -217,6 +365,14 @@
Lurker
]
effects: [
{
type: modifier
modifier: {
type: cantBeDiscarded
filter: possession,attachedTo(self)
by: side(free people)
}
}
]
gametext: <b>Damage +1</b>. <b>Lurker</b>. <helper>(Skirmishes involving lurker minions must be resolved after any others.)</helper><br>Possessions borne by this minion cannot be discarded by Free Peoples cards.
lore: An Uruk is disarmed only when it hurls its weapon.
@@ -252,6 +408,32 @@
type: Condition
keywords: Support Area
effects: [
{
type: toPlay
requires: {
type: canSpot
filter: culture(uruk-hai),minion
}
}
{
type: trigger
trigger: {
type: played
filter: self
}
requires: {
type: canSpot
filter: battleground,site,zone(adventure path)
}
effect: {
type: repeat
times: 3
effect: {
type: reinforceTokens
culture: uruk-hai
}
}
}
]
gametext: To play, spot an [uruk-hai] minion.<br>When you play this, if you spot a battleground site on the adventure path, reinforce 3 [uruk-hai] tokens.<br>Each time the Free Peoples player plays the fellowship's next site, you may discard a condition from play.
lore: ""
@@ -291,6 +473,26 @@
site: 5
keywords: Damage+1
effects: [
{
type: modifier
modifier: {
type: modifyArcheryTotal
requires: {
type: location
filter: forest
}
side: free people
amount: -1
}
}
{
type: modifier
modifier: {
type: modifyStrength
filter: culture(elven),companion,inSkirmishAgainst(self)
amount: -2
}
}
]
gametext: <b>Damage +1</b>.<br>While the fellowship is at a forest site, the fellowship archery total is -1.<br>Each [elven] companion skirmishing this minion is strength -2.
lore: The Uruk-hai trained to engage the enemy in its own territory.
@@ -325,16 +527,26 @@
twilight: 2
type: Event
keywords: Skirmish
effects: {
type: event
cost: {
},
effect: [
{
}
]
}
effects: [
{
type: discount
discount: {
type: ifRemoveFromDiscard
filter: culture(uruk-hai)
count: 4
}
}
{
type: event
effect: [
{
type: modifyStrength
filter: choose(culture(uruk-hai),minion,inSkirmishAgainst(companion,maxResistance(4)))
amount: 2
}
]
}
]
gametext: You may remove from the game 4 [uruk-hai] cards in your discard pile instead of paying the twilight cost for this card.<br>Make your [uruk-hai] minion skirmishing a companion with resistance 4 or less strength +2.
lore: ...goblin-soldiers of greater stature.
promotext: ""
@@ -369,6 +581,22 @@
type: Condition
keywords: Support Area
effects: [
{
type: trigger
requires: {
type: canSpot
filter: culture(uruk-hai),lurker,minion
count: 3
}
trigger: {
type: startOfSkirmishInvolving
filter: culture(uruk-hai),lurker,minion
}
effect: {
type: exert
filter: all(companion,inSkirmishAgainst(culture(uruk-hai),lurker,minion))
}
}
]
gametext: While you can spot 3 [uruk-hai] lurker minions, at the start of each skirmish involving an [uruk-hai] lurker minion, each companion skirmishing that minion must exert.
lore: Horsemen were galloping on the grass of Rohan; wolves poured from Isengard.
@@ -408,6 +636,14 @@
site: 5
keywords: Damage+1
effects: [
{
type: modifyOwnCost
requires: {
type: canSpot
filter: companion,maxResistance(0)
}
amount: -2
}
]
gametext: <b>Damage +1</b>.<br>When you play this, you may spot a companion who has resistance 0 to make this minion twilight cost -2.
lore: The defenses of the Hornburg were exploited, exposing their weakest points.
@@ -446,6 +682,50 @@
vitality: 2
site: 5
effects: [
{
type: toPlay
requires: {
type: canSpot
filter: culture(uruk-hai),minion
}
}
{
type: modifier
modifier: {
type: addKeyword
requires: {
type: location
filter: regionNumber(1)
}
filter: urukHai
keyword: damage
amount: 1
}
}
{
type: modifier
modifier: {
type: modifyStrength
requires: {
type: location
filter: regionNumber(2)
}
filter: companion
amount: -1
}
}
{
type: modifier
modifier: {
type: modifyResistance
requires: {
type: location
filter: regionNumber(3)
}
filter: unbound,companion
amount: -2
}
}
]
gametext: To play, spot an [uruk-hai] minion.<br>While the fellowship is in region 1, each Uruk-hai is <b>damage +1</b>.<br>While the fellowship is in region 2, each companion is strength -1.<br>While the fellowship is in region 3, each unbound companion is resistance -2.
lore: ""
@@ -485,6 +765,22 @@
site: 5
keywords: Damage+1
effects: [
{
type: activated
phase: skirmish
requires: {
type: canSpot
filter: self,notAssignedToSkirmish
}
cost: {
type: exert
filter: self
}
effect: {
type: discard
filter: choose(possession,attachedTo(companion,inSkirmishAgainst(another,culture(uruk-hai),minion)))
}
}
]
gametext: <b>Damage +1</b>.<br><b>Skirmish:</b> If this minion is not assigned to a skirmish, you may exert it to discard a possession borne by a companion skirmishing another [uruk-hai] minion.
lore: Wounds do not always remove the Uruk-hai from their assault.
@@ -524,6 +820,14 @@
site: 5
keywords: Damage+1
effects: [
{
type: modifyOwnCost
amount: {
type: forEachYouCanSpot
filter: companion,maxResistance(2)
multiplier: -1
}
}
]
gametext: <b>Damage +1</b>.<br>This minion is twilight cost -1 for each companion who has resistance 2 or less.
lore: To sense weakness is to assume victory.
@@ -562,6 +866,18 @@
vitality: 2
site: 5
effects: [
{
type: modifier
modifier: {
type: addKeyword
filter: self
keyword: damage
amount: {
type: forEachInDeadPile
filter: character
}
}
}
]
gametext: This minion is <b>damage +1</b> for each character in the dead pile.
lore: The lesser the enemy, the greater the rage.
@@ -604,6 +920,19 @@
Lurker
]
effects: [
{
type: trigger
optional: true
trigger: {
type: aboutToBeKilled
filter: culture(uruk-hai),minion,inSkirmish
memorize: killed
}
effect: {
type: putCardsFromPlayOnBottomOfDeck
filter: choose(memory(killed),culture(uruk-hai),minion,inSkirmish)
}
}
]
gametext: <b>Damage +1</b>. <b>Lurker</b>. <helper>(Skirmishes involving lurker minions must be resolved after any others.)</helper><br>Each time your [uruk-hai] minion is about to be killed in a skirmish, you may place that minion on the bottom of your draw deck instead.
lore: ""
@@ -643,6 +972,33 @@
site: 5
keywords: Damage+1
effects: [
{
type: activated
phase: skirmish
requires: {
type: cantSpot
filter: other,minion,assignedToSkirmish(any)
}
cost: {
type: exert
filter: self
times: 2
}
effect: [
{
type: addKeyword
filter: self
keyword: fierce
until: regroup
}
{
type: modifyStrength
filter: self
amount: 4
until: regroup
}
]
}
]
gametext: <b>Damage +1</b>.<br><b>Skirmish:</b> If no other minions are assigned to a skirmish, exert this minion twice to make it <b>fierce</b> and strength +4 until the regroup phase.
lore: Some minions prefer to fight alone.
@@ -682,6 +1038,19 @@
site: 5
keywords: Damage+1
effects: [
{
type: activated
phase: skirmish
cost: {
type: exert
filter: self
}
effect: {
type: modifyStrength
filter: choose(companion,inSkirmishAgainst(culture(uruk-hai),lurker))
amount: -2
}
}
]
gametext: <b>Damage +1</b>.<br><b>Skirmish:</b> Exert this minion to make a companion skirmishing an [uruk-hai] lurker minion strength -2.
lore: Select warriors had been tasked with advancing the assault beyond the Deeping Wall.
@@ -716,13 +1085,17 @@
twilight: 1
type: Event
keywords: Skirmish
effects: {
type: event
cost: {
},
type: exert
filter: choose(your,lurker,minion)
}
effect: [
{
type: playCardFromDiscard
filter: choose(culture(uruk-hai),hand weapon)
on: your,culture(uruk-hai),minion
}
]
}
@@ -760,6 +1133,49 @@
type: Condition
keywords: Support Area
effects: [
{
type: trigger
trigger: {
type: played
filter: self
}
effect: {
type: addTokens
culture: uruk-hai
filter: self
count: {
type: forEachYouCanSpot
filter: wounded,companion
}
}
}
{
type: activated
phase: skirmish
cost: {
type: choice
texts: [
Disard this from play
Remove 2 tokens from here
]
effects: [
{
type: discard
filter: self
}
{
type: removeTokens
filter: self
count: 2
}
]
}
effect: {
type: modifyStrength
filter: choose(companion,inSkirmishAgainst(culture(uruk-hai),minion))
amount: -1
}
}
]
gametext: When you play this, add an [uruk-hai] token here for each wounded companion.<br><b>Skirmish:</b> Discard this from play or remove 2 tokens from here to make a companion skirmishing an [uruk-hai] minion strength -1.
lore: ""

View File

@@ -14,6 +14,7 @@ import org.json.simple.JSONObject;
import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class ValueResolver {
@@ -280,13 +281,13 @@ public class ValueResolver {
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
return new SmartValueSource(environment, object,
actionContext -> (game, cardAffected) -> {
final Filterable filterable = filterableSource.getFilterable(actionContext);
int count = 0;
for (String player : game.getGameState().getPlayerOrder().getAllPlayers())
count += Filters.filter(game.getGameState().getDiscard(player), game, filterable).size();
final Filterable filterable = filterableSource.getFilterable(actionContext);
int count = 0;
for (String player : game.getGameState().getPlayerOrder().getAllPlayers())
count += Filters.filter(game.getGameState().getDiscard(player), game, filterable).size();
return count;
}
}
);
} else if (type.equalsIgnoreCase("forEachTopCardOfDeckUntilMatching")) {
FieldUtils.validateAllowedFields(object, "filter", "deck", "over", "limit", "multiplier", "divider");
@@ -586,7 +587,14 @@ public class ValueResolver {
int result = 0;
final Filterable filterable = filterableSource.getFilterable(actionContext);
for (PhysicalCard physicalCard : Filters.filterActive(game, filterable)) {
result += game.getGameState().getTokenCount(physicalCard, tokenForCulture);
if (tokenForCulture != null) {
result += game.getGameState().getTokenCount(physicalCard, tokenForCulture);
} else {
for (Map.Entry<Token, Integer> tokens : game.getGameState().getTokens(physicalCard).entrySet()) {
if (tokens.getKey().getCulture() != null)
result += tokens.getValue();
}
}
}
return multiplier * Math.min(limit, result);