Migrated Shire cards in set 11 to hjson

This commit is contained in:
MarcinSc
2024-05-17 20:38:22 +07:00
parent 6d572c8072
commit 8a85533374
18 changed files with 230 additions and 709 deletions

View File

@@ -1,33 +0,0 @@
package com.gempukku.lotro.cards.set11.shire;
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.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
import com.gempukku.lotro.logic.modifiers.evaluator.CountActiveEvaluator;
/**
* Set: Shadows
* Side: Free
* Culture: Shire
* Twilight Cost: 0
* Type: Event • Skirmish
* Game Text: For each dwelling and forest site on the adventure path, make a Hobbit strength +1.
*/
public class Card11_161 extends AbstractEvent {
public Card11_161() {
super(Side.FREE_PEOPLE, 0, Culture.SHIRE, "Concerning Hobbits", Phase.SKIRMISH);
}
@Override
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId,
new CountActiveEvaluator(CardType.SITE, Zone.ADVENTURE_PATH, Filters.or(Keyword.DWELLING, Keyword.FOREST)), Race.HOBBIT));
return action;
}
}

View File

@@ -1,41 +0,0 @@
package com.gempukku.lotro.cards.set11.shire;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filter;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.CancelSkirmishEffect;
/**
* Set: Shadows
* Side: Free
* Culture: Shire
* Twilight Cost: 2
* Type: Event • Skirmish
* Game Text: Stealth. Cancel a skirmish involving a Hobbit and a minion whose strength is lower than that Hobbit's
* resistance.
*/
public class Card11_162 extends AbstractEvent {
public Card11_162() {
super(Side.FREE_PEOPLE, 2, Culture.SHIRE, "Crouched Down", Phase.SKIRMISH);
addKeyword(Keyword.STEALTH);
}
@Override
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new CancelSkirmishEffect(Race.HOBBIT,
new Filter() {
@Override
public boolean accepts(LotroGame game, PhysicalCard physicalCard) {
int resistance = game.getModifiersQuerying().getResistance(game, physicalCard);
return Filters.inSkirmishAgainst(CardType.MINION, Filters.lessStrengthThan(resistance)).accepts(game, physicalCard);
}
}));
return action;
}
}

View File

@@ -1,37 +0,0 @@
package com.gempukku.lotro.cards.set11.shire;
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.AbstractCompanion;
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.Collections;
import java.util.List;
/**
* Set: Shadows
* Side: Free
* Culture: Shire
* Twilight Cost: 1
* Type: Companion • Hobbit
* Strength: 3
* Vitality: 3
* Resistance: 8
* Game Text: While Farmer Maggot is at a dwelling or forest site, he is strength +4.
*/
public class Card11_163 extends AbstractCompanion {
public Card11_163() {
super(1, 3, 3, 8, Culture.SHIRE, Race.HOBBIT, null, "Farmer Maggot", "Hobbit of the Marish", true);
}
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(new StrengthModifier(self, self, new LocationCondition(Filters.or(Keyword.DWELLING, Keyword.FOREST)), 4));
}
}

View File

@@ -1,55 +0,0 @@
package com.gempukku.lotro.cards.set11.shire;
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
import com.gempukku.lotro.logic.timing.PlayConditions;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.SelfExertEffect;
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.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.List;
/**
* Set: Shadows
* Side: Free
* Culture: Shire
* Twilight Cost: 0
* Type: Companion • Hobbit
* Strength: 3
* Vitality: 4
* Resistance: 10
* Game Text: Ring-bearer. Ring-bound. At the start of the regroup phase, you may exert Frodo to make him gain muster
* until the end of the regroup phase. (At the start of the regroup phase, you may discard a card from hand to draw
* a card.)
*/
public class Card11_164 extends AbstractCompanion {
public Card11_164() {
super(0, 3, 4, 10, Culture.SHIRE, Race.HOBBIT, null, "Frodo", "Protected by Many", true);
addKeyword(Keyword.CAN_START_WITH_RING);
addKeyword(Keyword.RING_BOUND);
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP)
&& PlayConditions.canSelfExert(self, game)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendCost(
new SelfExertEffect(action, self));
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new KeywordModifier(self, self, Keyword.MUSTER)));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,46 +0,0 @@
package com.gempukku.lotro.cards.set11.shire;
import com.gempukku.lotro.logic.cardtype.AbstractAttachable;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.logic.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.RequiredTriggerAction;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.List;
/**
* Set: Shadows
* Side: Free
* Culture: Shire
* Twilight Cost: 4
* Type: Condition
* Game Text: Toil 2. (For each [SHIRE] character you exert when playing this, its twilight cost is -2.) Bearer must be
* a Hobbit. Limit 1 per bearer. Each time the fellowship moves from a dwelling or forest site, remove (1).
*/
public class Card11_165 extends AbstractAttachable {
public Card11_165() {
super(Side.FREE_PEOPLE, CardType.CONDITION, 4, Culture.SHIRE, null, "Habits of Home");
addKeyword(Keyword.TOIL, 2);
}
@Override
public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
return Filters.and(Race.HOBBIT, Filters.not(Filters.hasAttached(Filters.name(getTitle()))));
}
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.movesFrom(game, effectResult, Filters.or(Keyword.DWELLING, Keyword.FOREST))) {
RequiredTriggerAction action = new RequiredTriggerAction(self);
action.appendEffect(
new RemoveTwilightEffect(1));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,46 +0,0 @@
package com.gempukku.lotro.cards.set11.shire;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.CancelSkirmishEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.logic.timing.PlayConditions;
/**
* Set: Shadows
* Side: Free
* Culture: Shire
* Twilight Cost: 1
* Type: Event • Skirmish
* Game Text: Stealth. If the fellowship is at a dwelling site, exert 2 Hobbits to cancel a skirmish involving a Hobbit.
* At any other site, exert 2 Hobbits to make a Hobbit strength +3.
*/
public class Card11_167 extends AbstractEvent {
public Card11_167() {
super(Side.FREE_PEOPLE, 1, Culture.SHIRE, "Incognito", Phase.SKIRMISH);
addKeyword(Keyword.STEALTH);
}
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return PlayConditions.canExert(self, game, 1, 2, Race.HOBBIT);
}
@Override
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
PlayEventAction action = new PlayEventAction(self);
action.appendCost(
new ChooseAndExertCharactersEffect(action, playerId, 2, 2, Race.HOBBIT));
if (PlayConditions.location(game, Keyword.DWELLING))
action.appendEffect(
new CancelSkirmishEffect(Race.HOBBIT));
else
action.appendEffect(
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, 3, Race.HOBBIT));
return action;
}
}

View File

@@ -1,39 +0,0 @@
package com.gempukku.lotro.cards.set11.shire;
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.cardtype.AbstractCompanion;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.modifiers.evaluator.CountActiveEvaluator;
import com.gempukku.lotro.logic.modifiers.evaluator.MultiplyEvaluator;
import java.util.Collections;
import java.util.List;
/**
* Set: Shadows
* Side: Free
* Culture: Shire
* Twilight Cost: 1
* Type: Companion • Hobbit
* Strength: 3
* Vitality: 4
* Resistance: 9
* Game Text: For each other unbound companion assigned to a skirmish, Merry is strength +2.
*/
public class Card11_168 extends AbstractCompanion {
public Card11_168() {
super(1, 3, 4, 9, Culture.SHIRE, Race.HOBBIT, null, "Merry", "Loyal Companion", true);
}
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(new StrengthModifier(self, self, null,
new MultiplyEvaluator(2,
new CountActiveEvaluator(Filters.not(self), Filters.unboundCompanion, Filters.assignedToSkirmish))));
}
}

View File

@@ -1,38 +0,0 @@
package com.gempukku.lotro.cards.set11.shire;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.RemoveBurdenEffect;
import com.gempukku.lotro.logic.timing.PlayConditions;
/**
* Set: Shadows
* Side: Free
* Culture: Shire
* Twilight Cost: 6
* Type: Event • Fellowship
* Game Text: Toil 2. (For each [SHIRE] character you exert when playing this, its twilight cost is -2.) Spot 2 [SHIRE]
* companions to remove 2 burdens.
*/
public class Card11_169 extends AbstractEvent {
public Card11_169() {
super(Side.FREE_PEOPLE, 6, Culture.SHIRE, "The More, The Merrier", Phase.FELLOWSHIP);
addKeyword(Keyword.TOIL, 2);
}
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return PlayConditions.canSpot(game, 2, Culture.SHIRE, CardType.COMPANION);
}
@Override
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new RemoveBurdenEffect(playerId, self, 2));
return action;
}
}

View File

@@ -1,48 +0,0 @@
package com.gempukku.lotro.cards.set11.shire;
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.ActivateCardAction;
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
import com.gempukku.lotro.logic.effects.ReplaceInSkirmishEffect;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Shadows
* Side: Free
* Culture: Shire
* Twilight Cost: 1
* Type: Companion • Hobbit
* Strength: 3
* Vitality: 4
* Resistance: 9
* Game Text: Skirmish: If Pippin is not assigned to a skirmish, spot an unbound companion who has less resistance than
* Pippin to have Pippin replace him or her in a skirmish.
*/
public class Card11_170 extends AbstractCompanion {
public Card11_170() {
super(1, 3, 4, 9, Culture.SHIRE, Race.HOBBIT, null, "Pippin", "Brave Decoy", true);
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)
&& Filters.notAssignedToSkirmish.accepts(game, self)) {
final int pippinResistance = game.getModifiersQuerying().getResistance(game, self);
if (PlayConditions.canSpot(game, Filters.unboundCompanion, Filters.maxResistance(pippinResistance - 1), Filters.inSkirmish)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendEffect(
new ReplaceInSkirmishEffect(self, Filters.unboundCompanion, Filters.maxResistance(pippinResistance - 1)));
return Collections.singletonList(action);
}
}
return null;
}
}

View File

@@ -1,68 +0,0 @@
package com.gempukku.lotro.cards.set11.shire;
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.AbstractAttachableFPPossession;
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.RemoveBurdenEffect;
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
import com.gempukku.lotro.logic.modifiers.OverwhelmedByMultiplierModifier;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.Collections;
import java.util.List;
/**
* Set: Shadows
* Side: Free
* Culture: Shire
* Twilight Cost: 1
* Type: Possession • Box
* Resistance: +2
* Game Text: Bearer must be a Hobbit. Fellowship: Discard this possession to remove a burden. Skirmish: If bearer is
* an unbound Hobbit, discard this possession to prevent him or her from being overwhelmed unless his or her strength
* is tripled.
*/
public class Card11_171 extends AbstractAttachableFPPossession {
public Card11_171() {
super(1, 0, 0, Culture.SHIRE, PossessionClass.BOX, "Salt from the Shire");
}
@Override
public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
return Race.HOBBIT;
}
@Override
public int getResistance() {
return 2;
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.FELLOWSHIP, self)
&& PlayConditions.canSelfDiscard(self, game)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfDiscardEffect(self));
action.appendEffect(
new RemoveBurdenEffect(playerId, self, 1));
return Collections.singletonList(action);
}
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)
&& PlayConditions.canSelfDiscard(self, game)
&& PlayConditions.canSpot(game, Filters.hasAttached(self), Filters.unboundCompanion)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfDiscardEffect(self));
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new OverwhelmedByMultiplierModifier(self, self.getAttachedTo(), 3)));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,38 +0,0 @@
package com.gempukku.lotro.cards.set11.shire;
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.AbstractCompanion;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.ResistanceModifier;
import java.util.Collections;
import java.util.List;
/**
* Set: Shadows
* Side: Free
* Culture: Shire
* Twilight Cost: 2
* Type: Companion • Hobbit
* Strength: 3
* Vitality: 4
* Resistance: 10
* Game Text: Ring-bound. Each other companion is resistance +1.
*/
public class Card11_172 extends AbstractCompanion {
public Card11_172() {
super(2, 3, 4, 10, Culture.SHIRE, Race.HOBBIT, null, "Sam", "Steadfast Friend", true);
addKeyword(Keyword.RING_BOUND);
}
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(new ResistanceModifier(self, Filters.and(CardType.COMPANION, Filters.not(self)), 1));
}
}

View File

@@ -1,75 +0,0 @@
package com.gempukku.lotro.cards.set11.shire;
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.cardtype.AbstractAttachableFPPossession;
import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.effects.ExertCharactersEffect;
import com.gempukku.lotro.logic.effects.RemoveBurdenEffect;
import com.gempukku.lotro.logic.modifiers.ResistanceModifier;
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: Shadows
* Side: Free
* Culture: Shire
* Twilight Cost: 1
* Type: Possession • Hand Weapon
* Strength: +2
* Game Text: Bearer must be Bilbo, Frodo, or Sam. Maneuver: If bearer is Bilbo or Frodo, exert him to make another
* companion resistance +2 until the regroup phase. If bearer is Sam, each time he wins a skirmish, you may remove
* a burden.
*/
public class Card11_173 extends AbstractAttachableFPPossession {
public Card11_173() {
super(1, 2, 0, Culture.SHIRE, PossessionClass.HAND_WEAPON, "Sting", "Weapon of Heritage", true);
}
@Override
public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
return Filters.or(Filters.name("Bilbo"), Filters.frodo, Filters.sam);
}
@Override
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) {
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.MANEUVER, self)
&& Filters.or(Filters.name("Bilbo"), Filters.frodo).accepts(game, self.getAttachedTo())
&& PlayConditions.canExert(self, game, self.getAttachedTo())) {
final ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new ExertCharactersEffect(action, self, self.getAttachedTo()));
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose a companion", CardType.COMPANION, Filters.not(self.getAttachedTo())) {
@Override
protected void cardSelected(LotroGame game, PhysicalCard card) {
action.appendEffect(
new AddUntilStartOfPhaseModifierEffect(
new ResistanceModifier(self, card, 2), Phase.REGROUP));
}
});
return Collections.singletonList(action);
}
return null;
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.winsSkirmish(game, effectResult, Filters.hasAttached(self), Filters.sam)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new RemoveBurdenEffect(playerId, self, 1));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -1,32 +0,0 @@
package com.gempukku.lotro.cards.set11.shire;
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.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
import com.gempukku.lotro.logic.modifiers.evaluator.CountActiveEvaluator;
/**
* Set: Shadows
* Side: Free
* Culture: Shire
* Twilight Cost: 1
* Type: Event • Skirmish
* Game Text: Make a Hobbit strength +1 for each companion who has resistance 7 or more.
*/
public class Card11_174 extends AbstractEvent {
public Card11_174() {
super(Side.FREE_PEOPLE, 1, Culture.SHIRE, "Sworn Companion", Phase.SKIRMISH);
}
@Override
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, new CountActiveEvaluator(CardType.COMPANION, Filters.minResistance(7)), Race.HOBBIT));
return action;
}
}

View File

@@ -1,50 +0,0 @@
package com.gempukku.lotro.cards.set11.shire;
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;
import com.gempukku.lotro.logic.actions.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.effects.ForEachYouSpotEffect;
import com.gempukku.lotro.logic.modifiers.ResistanceModifier;
/**
* Set: Shadows
* Side: Free
* Culture: Shire
* Twilight Cost: 0
* Type: Event • Skirmish
* Game Text: Spot X Hobbits to make an unbound Hobbit resistance +X.
*/
public class Card11_175 extends AbstractEvent {
public Card11_175() {
super(Side.FREE_PEOPLE, 0, Culture.SHIRE, "A Task Now to Be Done", Phase.SKIRMISH);
}
@Override
public PlayEventAction getPlayEventCardAction(final String playerId, final LotroGame game, final PhysicalCard self) {
final PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new ForEachYouSpotEffect(playerId, Race.HOBBIT) {
@Override
protected void spottedCards(final int spotCount) {
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose an unbound Hobbit", Filters.unboundCompanion, Race.HOBBIT) {
@Override
protected void cardSelected(LotroGame game, PhysicalCard card) {
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new ResistanceModifier(self, card, spotCount)));
}
});
}
});
return action;
}
}

View File

@@ -1,33 +0,0 @@
package com.gempukku.lotro.cards.set11.shire;
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.PlayEventAction;
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
import com.gempukku.lotro.logic.effects.ChooseAndHealCharactersEffect;
/**
* Set: Shadows
* Side: Free
* Culture: Shire
* Twilight Cost: 0
* Type: Event • Regroup
* Game Text: Heal a Hobbit for each minion you spot.
*/
public class Card11_176 extends AbstractEvent {
public Card11_176() {
super(Side.FREE_PEOPLE, 0, Culture.SHIRE, "Unharmed", Phase.REGROUP);
}
@Override
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
PlayEventAction action = new PlayEventAction(self);
int count = Filters.countActive(game, CardType.MINION);
for (int i = 0; i < count; i++)
action.appendEffect(
new ChooseAndHealCharactersEffect(action, playerId, 0, 1, Race.HOBBIT));
return action;
}
}

View File

@@ -22,13 +22,16 @@
twilight: 0
type: Event
keywords: Skirmish
effects: {
type: event
cost: {
},
effect: [
{
type: modifyStrength
filter: choose(hobbit)
amount: {
type: forEachYouCanSpot
filter: or(dwelling,forest),zone(adventure path)
}
}
]
}
@@ -68,13 +71,20 @@
Stealth
Skirmish
]
effects: {
type: event
cost: {
},
effect: [
{
type: memorizeNumber
memory: hobbitResistance
amount: {
type: forEachResistance
filter: hobbit,inSkirmish
}
}
{
type: cancelSkirmish
filter: hobbit,inSkirmishAgainst(minion,strengthLessThan(memory(hobbitResistance)))
}
]
}
@@ -116,6 +126,18 @@
vitality: 3
resistance: 8
effects: [
{
type: modifier
modifier: {
type: modifyStrength
requires: {
type: location
filter: or(dwelling,forest)
}
filter: self
amount: 4
}
}
]
gametext: While Farmer Maggot is at a dwelling or forest site, he is strength +4.
lore: I didn't like the looks of him; and when Grip came out, he took one sniff and let out a yelp as if he had been stung....'
@@ -155,11 +177,27 @@
vitality: 4
resistance: 10
keywords: [
Ring-bearer
Ring-bound
CAN_START_WITH_RING
Ring-Bound
Can Start With Ring
]
effects: [
{
type: trigger
optional: true
trigger: {
type: startOfPhase
phase: regroup
}
cost: {
type: exert
filter: self
}
effect: {
type: addKeyword
filter: self
keyword: muster
}
}
]
gametext: <b>Ring-bearer</b>. <b>Ring-bound</b>.<br>At the start of the regroup phase, you may exert Frodo to make him gain <b>muster</b> until the end of the regroup phase. <helper>(At the start of the regroup phase, you may discard a card from hand to draw a card.)</helper>
lore: I will take the Ring... though I do not know the way.'
@@ -193,9 +231,20 @@
culture: Shire
twilight: 4
type: Condition
#target: a Hobbit
target: hobbit,not(hasAttached(title(Habits of Home)))
keywords: Toil 2
effects: [
{
type: trigger
trigger: {
type: movesFrom
filter: or(dwelling,forest)
}
effect: {
type: removeTwilight
amount: 1
}
}
]
gametext: <b>Toil 2</b>. <helper>(For each [shire] character you exert when playing this, its twilight cost is -2.)</helper><br>Bearer must be a Hobbit. Limit 1 per bearer.<br>Each time the fellowship moves from a dwelling or forest site, remove (1).
lore: What about second breakfast?'
@@ -231,9 +280,7 @@
type: Possession
strength: 2
itemclass: Hand weapon
#target: a Hobbit
effects: [
]
target: hobbit
gametext: Bearer must be a Hobbit.
lore: Strap these on....'
promotext: ""
@@ -270,13 +317,29 @@
Stealth
Skirmish
]
effects: {
type: event
cost: {
},
type: exert
filter: choose(hobbit)
count: 2
}
effect: [
{
type: if
condition: {
type: location
filter: dwelling
}
true: {
type: cancelSkirmish
filter: hobbit
}
false: {
type: modifyStrength
filter: choose(hobbit)
amount: 3
}
}
]
}
@@ -318,6 +381,18 @@
vitality: 4
resistance: 9
effects: [
{
type: modifier
modifier: {
type: modifyStrength
filter: self
amount: {
type: forEachYouCanSpot
filter: other,unbound,companion,assignedToSkirmish(any)
multiplier: 2
}
}
}
]
gametext: For each other unbound companion assigned to a skirmish, Merry is strength +2.
lore: We can't leave Frodo! Pippin and I always intended to go wherever he went, and we still do.'
@@ -355,13 +430,17 @@
Toil 2
Fellowship
]
effects: {
type: event
cost: {
},
requires: {
type: canSpot
filter: culture(shire),companion
count: 2
}
effect: [
{
type: removeBurdens
amount: 2
}
]
}
@@ -403,6 +482,25 @@
vitality: 4
resistance: 9
effects: [
{
type: activated
phase: skirmish
requires: [
{
type: canSpot
filter: self,notAssignedToSkirmish
}
{
type: canSpot
filter: unbound,companion,resistanceLessThanFilter(self)
}
]
effect: {
type: replaceInSkirmish
filter: unbound,companion,resistanceLessThanFilter(self)
with: self
}
}
]
gametext: <b>Skirmish:</b> If Pippin is not assigned to a skirmish, spot an unbound companion who has less resistance than Pippin to have Pippin replace him or her in a skirmish.
lore: Merry and he had drawn their swords, but the Orcs did not wish to fight....
@@ -438,8 +536,43 @@
type: Possession
resistance: 2
itemclass: Box
#target: a Hobbit
target: hobbit
effects: [
{
type: activated
phase: fellowship
cost: {
type: discard
filter: self
}
effect: {
type: removeBurdens
}
}
{
type: activated
phase: skirmish
requires: {
type: canSpot
filter: bearer,unbound,hobbit
}
cost: [
{
type: memorizeActive
memory: bearer
filter: bearer
}
{
type: discard
filter: self
}
]
effect: {
type: alterOverwhelmMultiplier
filter: memory(bearer)
multiplier: 3
}
}
]
gametext: Bearer must be a Hobbit.<br><b>Fellowship:</b> Discard this possession to remove a burden.<br><b>Skirmish:</b> If bearer is an unbound Hobbit, discard this possession to prevent him or her from being overwhelmed unless his or her strength is tripled.
lore: ""
@@ -480,6 +613,14 @@
resistance: 10
keywords: Ring-bound
effects: [
{
type: modifier
modifier: {
type: modifyResistance
filter: other,companion
amount: 1
}
}
]
gametext: <b>Ring-bound</b>.<br>Each other companion is resistance +1.
lore: I'm coming too, or neither of us is going. I'll knock holes in all the boats first.'
@@ -516,8 +657,37 @@
type: Possession
strength: 2
itemclass: Hand weapon
#target: title(Bilbo, Frodo, or Sam)
target: or(title(Bilbo),title(Frodo),title(Sam))
effects: [
{
type: activated
phase: maneuver
requires: {
type: canSpot
filter: bearer,or(title(Bilbo),title(Frodo))
}
cost: {
type: exert
filter: bearer
}
effect: {
type: modifyResistance
filter: choose(not(bearer),companion)
amount: 2
until: regroup
}
}
{
type: trigger
optional: true
trigger: {
type: winsSkirmish
filter: bearer,title(Sam)
}
effect: {
type: removeBurdens
}
}
]
gametext: Bearer must be Bilbo, Frodo, or Sam.<br><b>Maneuver:</b> If bearer is Bilbo or Frodo, exert him to make another companion resistance +2 until the regroup phase. If bearer is Sam, each time he wins a skirmish, you may remove a burden.
lore: This blade has dealt many wounds, by many hands.
@@ -552,13 +722,16 @@
twilight: 1
type: Event
keywords: Skirmish
effects: {
type: event
cost: {
},
effect: [
{
type: modifyStrength
filter: choose(hobbit)
amount: {
type: forEachYouCanSpot
filter: companion,minResistance(7)
}
}
]
}
@@ -595,13 +768,18 @@
twilight: 0
type: Event
keywords: Skirmish
effects: {
type: event
cost: {
},
effect: [
{
type: chooseHowManyToSpot
filter: hobbit
memorize: spotCount
}
{
type: modifyResistance
filter: choose(unbound,hobbit)
amount: memory(spotCount)
}
]
}
@@ -638,13 +816,20 @@
twilight: 0
type: Event
keywords: Regroup
effects: {
type: event
cost: {
},
effect: [
{
type: repeat
times: {
type: forEachYouCanSpot
filter: minion
}
effect: {
type: heal
filter: choose(hobbit)
count: 0-1
}
}
]
}

View File

@@ -1053,7 +1053,7 @@ public class BuiltLotroCardBlueprint implements LotroCardBlueprint {
}
private static Set<String> frodosWithNon10Resistance = Sets.newHashSet("Resolute Hobbit");
private static Set<String> samsWithNon5Resistance = Sets.newHashSet("Loyal Friend", "Dropper of Eaves", "Humble Halfling");
private static Set<String> samsWithNon5Resistance = Sets.newHashSet("Loyal Friend", "Dropper of Eaves", "Humble Halfling", "Steadfast Friend");
public void validateConsistency() throws InvalidCardDefinitionException {
if (title == null)

View File

@@ -430,6 +430,21 @@ public class FilterFactory {
return (actionContext) -> Filters.regionNumberBetweenInclusive(min, max);
});
parameterFilters.put("resistancelessthanfilter",
(parameter, environment) -> {
FilterableSource filter = environment.getFilterFactory().createFilter(parameter, environment);
return (actionContext) -> {
Filterable filterable = filter.getFilterable(actionContext);
return new Filter() {
@Override
public boolean accepts(LotroGame game, PhysicalCard physicalCard) {
int resistance = game.getModifiersQuerying().getResistance(game, physicalCard);
return Filters.countActive(game, filterable, Filters.maxResistance(resistance - 1)) > 0;
}
};
};
});
parameterFilters.put("resistancelessthan",
(parameter, environment) -> {
final ValueSource valueSource = ValueResolver.resolveEvaluator(parameter, environment);