Help implement FOTR block errata

This commit is contained in:
Troy Biesterfeld
2021-03-10 03:43:33 -06:00
parent 862d90d42e
commit 1a2593bb2c
12 changed files with 561 additions and 192 deletions

View File

@@ -66,8 +66,8 @@
},
"effect": {
"type": "heal",
"filter": "choose(another,ally,allyHome(fellowship,6))",
"count": "0-2"
"filter": "choose(ally,allyHome(fellowship,6))",
"count": "0-3"
}
},
{
@@ -92,7 +92,7 @@
"culture": "gandalf",
"cost": 1,
"type": "ally",
"allyHome": "fellowship,1",
"allyHome": "fellowship,3",
"race": "man",
"strength": 2,
"vitality": 2,
@@ -103,32 +103,90 @@
"effects": {
"type": "activated",
"phase": "fellowship",
"cost": {
"type": "exert",
"filter": "self"
},
"effect": [
"cost": [
{
"type": "discardFromHand",
"forced": false,
"count": "0-3",
"memorize": "discardedCards"
"type": "exert",
"filter": "self"
},
{
"type": "drawCards",
"count": {
"type": "forEachInMemory",
"memory": "discardedCards"
}
"type": "discardFromHand",
"forced": false
}
]
],
"effect": {
"type": "drawCards"
}
}
},
"51_108": {
"title": "*No Stranger to the Shadows",
"culture": "gondor",
"cost": 0,
"type": "condition",
"keyword": [
"stealth"
],
"target": "ranger",
"effects": {
"type": "modifier",
"modifier": {
"type": "modifyCost",
"filter": "site",
"amount": -1
}
}
},
"51_138": {
"title": "Saruman's Snows",
"culture": "isengard",
"cost": 2,
"type": "condition",
"keyword": [
"spell",
"weather"
],
"target": "site",
"effects": [
{
"type": "extraCost",
"cost": {
"type": "exert",
"filter": "choose(culture(isengard),minion)"
}
},
{
"type": "modifier",
"modifier": {
"type": "cantPlayPhaseEventsOrPhaseSpecialAbilities",
"condition": [
{
"type": "location",
"filter": "hasAttached(self)"
},
{
"type": "canSpot",
"filter": "culture(isengard),minion,inSkirmish"
}
],
"phase": "skirmish"
}
},
{
"type": "trigger",
"trigger": {
"type": "endOfTurn"
},
"effect": {
"type": "discard",
"filter": "self"
}
}
]
},
"51_139": {
"title": "Savagery To Match Their Numbers",
"culture": "isengard",
"cost": 0,
"cost": 1,
"type": "event",
"keyword": "skirmish",
"effects": {
@@ -137,7 +195,7 @@
"type": "choice",
"texts": [
"Make an Uruk-hai strength +2",
"Make an Uruk-hai fierce until the regroup phase, and strength +4 (this skirmish)"
"Make an Uruk-hai strength +4, and fierce until the regroup phase"
],
"effects": [
{
@@ -171,7 +229,6 @@
}
}
},
"51_195": {
"title": "*Relics of Moria",
"culture": "moria",
@@ -192,7 +249,6 @@
}
}
},
"51_234": {
"title": "*Úlairë Nertëa",
"subtitle": "Messenger of Dol Guldur",
@@ -218,16 +274,15 @@
},
"effect": {
"type": "optional",
"text": "Would you like to play minion from your discard?",
"text": "Would you like to play a wraith minion from your discard?",
"effect": {
"type": "playCardFromDiscard",
"filter": "choose(nazgul)"
"filter": "choose(culture(wraith),minion)"
}
}
}
}
},
"51_248": {
"title": "Forces of Mordor",
"culture": "sauron",
@@ -240,21 +295,16 @@
"type": "exert",
"filter": "choose(culture(sauron),minion)"
},
"cost": {
"type": "chooseHowManyToSpot",
"filter": "culture(sauron),minion",
"memorize": "spottedCount"
},
"effect": {
"type": "addTwilight",
"amount": {
"type": "forEachYouCanSpot",
"filter": "culture(sauron),orc",
"limit": 3
}
}
}
},
"51_311": {
"title": "*Sam",
"subtitle": "Son of Hamfast",
@@ -273,13 +323,11 @@
"cost": [
{
"type": "exert",
"filter": "self",
"times": 1
"filter": "self"
},
{
"type": "exert",
"filter": "choose(another,companion)",
"times": 1
"filter": "choose(another,companion)"
}
],
"effect": {
@@ -300,32 +348,6 @@
}
]
},
"51_108": {
"title": "*No Stranger to the Shadows",
"culture": "gondor",
"cost": 0,
"type": "condition",
"keyword": [
"stealth"
],
"target": "ranger,not(hasAttached(name(No Stranger to the Shadows)))",
"effects": {
"type": "modifier",
"modifier": {
"type": "modifyCost",
"filter": "site",
"amount": -1
}
}
},
"51_313": {
"title": "*Sting",
"culture": "shire",
@@ -350,13 +372,13 @@
"hand": "shadowPlayer",
"forced": true,
"memorize": "revealedCards",
"count":2
"count": 4
},
{
"type": "removeTwilight",
"amount": {
"type": "cardPhaseLimit",
"limit": 2,
"limit": 2,
"amount": {
"type": "forEachMatchingInMemory",
"memory": "revealedCards",
@@ -368,13 +390,12 @@
]
}
},
"51_316": {
"title": "*A Talent for Not Being Seen",
"title": "A Talent for Not Being Seen",
"culture": "shire",
"cost": 0,
"type": "condition",
"target": "or(name(Merry),name(Pippin))",
"target": "or(name(Merry),name(Pippin)),not(hasAttached(name(A Talent for Not Being Seen)))",
"keyword": [
"stealth"
],
@@ -383,22 +404,8 @@
"modifier": {
"type": "modifyCost",
"filter": "site",
"amount": {
"type": "condition",
"condition": {
"type": "cantSpot",
"filter": "companion,not(hobbit)"
},
"true": -1,
"false": 0
}
"amount": -1
}
}
},
}
}

View File

@@ -1,7 +1,7 @@
{
"52_32": {
"52_32": {
"side": "free_people",
"cost": 0,
"cost": 1,
"strength": 1,
"culture": "Gondor",
"possession": "Hand Weapon",
@@ -17,7 +17,7 @@
"phase": "skirmish",
"condition": {
"type": "canSpot",
"filter": "bearer,inSkirmishAgainst(Nazgul)",
"filter": "bearer,inSkirmishAgainst(Nazgul)"
},
"cost": [
{
@@ -30,7 +30,7 @@
"filter": "self"
}
],
"effect":[
"effect": [
{
"type": "modifyStrength",
"filter": "memory(bearer)",
@@ -42,10 +42,123 @@
"keyword": "damage+1"
}
]
},
}
]
},
"52_75": {
"title": "*Bill Ferny",
"subtitle": "Swarthy Sneering Fellow",
"culture": "wraith",
"cost": 2,
"type": "minion",
"race": "man",
"strength": 4,
"vitality": 1,
"site": 2,
"effects": [
{
"type": "modifier",
"modifier": {
"type": "removeKeyword",
"filter": "nazgul",
"keyword": "roaming"
}
},
{
"type": "modifier",
"modifier": {
"type": "cantBeAssignedToSkirmishByFpPlayer",
"condition": {
"type": "canSpot",
"filter": "hobbit"
},
"filter": "self"
}
},
{
"type": "trigger",
"trigger": {
"type": "condition",
"condition": {
"type": "location",
"filter": "underground"
}
},
"effect": {
"type": "discard",
"filter": "self"
}
}
]
},
"52_101": {
"title": "*Filibert Bolger",
"subtitle": "Wily Rascal",
"culture": "shire",
"cost": 1,
"type": "ally",
"allyHome": "fellowship,1",
"race": "hobbit",
"strength": 1,
"vitality": 2,
"effects": {
"type": "activated",
"phase": "skirmish",
"cost": [
{
"type": "exert",
"filter": "choose(hobbit,companion,not(ring bearer))",
"times": 2,
"memorize": "exertedHobbit"
}
],
"effect": {
"type": "cancelSkirmish",
"filter": "memory(exertedHobbit),infierceskirmish"
}
}
},
"52_108": {
"title": "*O Elbereth! Gilthoniel!",
"culture": "shire",
"cost": 1,
"type": "condition",
"strength": 1,
"keyword": "tale",
"target": "ring bearer",
"effects": {
"type": "activated",
"phase": "skirmish",
"cost": [
{
"type": "memorize",
"filter": "bearer",
"memory": "bearer"
},
{
"type": "discard",
"filter": "self"
}
],
"effect": {
"type": "choice",
"texts": [
"Make the Ring-bearer strength +3 if skirmishing a Nazgul",
"Take off The One Ring"
],
"effects": [
{
"type": "modifyStrength",
"filter": "memory(bearer),inSkirmishAgainst(nazgul)",
"amount": 3
},
{
"type": "takeOffRing"
}
]
}
}
},
"52_121": {
"title": "*Gimli",
"subtitle": "Dwarf of the Mountain-race",
@@ -58,15 +171,27 @@
"resistance": 6,
"signet": "frodo",
"keyword": "damage+1",
"effects": {
"type": "modifier",
"modifier": {
"type": "modifyCost",
"filter": "underground,site",
"amount": -1
"effects": [
{
"type": "modifier",
"modifier": {
"type": "modifyCost",
"filter": "underground,site",
"amount": -1
}
},
{
"type": "modifier",
"modifier": {
"type": "modifyStrength",
"amount": 1,
"condition": {
"type": "location",
"filter": "underground"
},
"filter": "self"
}
}
}
},
]
}
}

View File

@@ -1,7 +1,73 @@
{
"53_42": {
"53_17": {
"title": "*Galadriel",
"subtitle": "Lady of the Golden Wood",
"culture": "elven",
"cost": 3,
"type": "ally",
"allyHome": "fellowship,6",
"race": "elf",
"strength": 3,
"vitality": 3,
"effects": [
{
"type": "trigger",
"optional": true,
"trigger": {
"type": "startOfTurn"
},
"effect": {
"type": "heal",
"filter": "another,elf"
}
},
{
"type": "activated",
"phase": "fellowship",
"cost": {
"type": "exert",
"filter": "self",
"times": 2
},
"effect": {
"type": "playNextSite",
"filter": "forest"
}
}
]
},
"53_38": {
"title": "*Aragorn",
"subtitle": "Heir to the White City",
"culture": "Gondor",
"type": "companion",
"race": "Man",
"cost": 4,
"strength": 8,
"vitality": 4,
"resistance": 6,
"signet": "frodo",
"keyword": [
"Ranger"
],
"effects": {
"type": "trigger",
"trigger": {
"type": "moves"
},
"condition": {
"type": "phase",
"phase": "fellowship"
},
"effect": {
"type": "removeTwilight",
"amount": 1
}
}
},
"53_42": {
"side": "free_people",
"cost": 0,
"cost": 1,
"culture": "Gondor",
"title": "*Horn of Boromir",
"type": "possession",
@@ -12,32 +78,76 @@
"cost": [
{
"type": "exert",
"filter": "bearer",
"times": 1
"filter": "bearer"
},
{
"type": "discard",
"filter": "self",
},
"filter": "self"
}
],
"effect":[
"effect": [
{
"type": "modifyStrength",
"type": "spot",
"filter": "choose(ally)",
"amount": 3,
"until": "start(regroup)",
"memorize": "summonedAlly"
"memorize": "chosenAlly"
},
{
"type": "addModifier",
"modifier": {
"type": "modifyStrength",
"filter": "memory(chosenAlly)",
"amount": 3,
"until": "start(regroup)"
}
},
{
"type": "allyCanParticipateInArcheryFireAndSkirmishes",
"filter": "memory(summonedAlly)",
"filter": "memory(chosenAlly)",
"until": "start(regroup)"
}
]
}
},
"53_67": {
"title": "*The Palantir of Orthanc",
"culture": "isengard",
"cost": 0,
"type": "artifact",
"possession": "palantir",
"keyword": "support area",
"condition": {
"type": "canSpot",
"filter": "culture(isengard),minion"
},
"effects": {
"type": "activated",
"phase": "shadow",
"cost": [
{
"type": "removeTwilight",
"amount": 2
},
{
"type": "canSpot",
"count": 2,
"memorize": "culture(isengard),minion"
}
],
"effect": [
{
"type": "revealRandomCardsFromHand",
"forced": true,
"hand": "fp",
"count": 1,
"memorize": "revealedCard"
},
{
"type": "putCardsFromHandOnTopOfDeck",
"filter": "choose(memory(revealedCard))"
}
]
}
},
"53_68": {
"side": "shadow",
"site": 4,
@@ -50,13 +160,6 @@
"title": "*Saruman",
"type": "minion",
"effects": [
{
"type": "modifier",
"modifier": {
"type": "cantbeassignedtoskirmish",
"filter": "self"
}
},
{
"type": "modifier",
"modifier": {
@@ -68,6 +171,27 @@
}
}
},
{
"type": "modifier",
"modifier": {
"type": "cantbeassignedtoskirmish",
"filter": "self"
}
},
{
"type": "activated",
"phase": "maneuver",
"cost": {
"type": "exert",
"filter": "self"
},
"effect": {
"type": "addKeyword",
"filter": "choose(uruk-hai)",
"keyword": "fierce",
"until": "start(regroup)"
}
},
{
"type": "activatedTrigger",
"trigger": {
@@ -76,73 +200,25 @@
},
"cost": {
"type": "exert",
"filter": "self",
"times": 1
"filter": "self"
},
"effect":
{
"type": "preventWound",
"filter": "choose(uruk-hai)"
}
},
{
"type": "activated",
"phase": "maneuver",
"cost": {
"type": "exert",
"filter": "self",
"times": 1
},
"effect": {
"type": "addKeyword",
"filter": "choose(uruk-hai)",
"keyword": "fierce",
"until": "start(regroup)"
}
},
}
]
},
"53_38": {
"side": "free_people",
"title": "*Aragorn",
"subtitle": "Heir to the White City",
"culture": "Gondor",
"type": "companion",
"race": "Man",
"cost": 4,
"strength": 8,
"vitality": 4,
"resistance": 6,
"signet": "frodo",
"keyword": [
"Ranger",
],
"effects": {
"type": "trigger",
"optional": false,
"trigger": {
"type": "movesfrom"
},
"condition": {
"type": "phase",
"phase": "fellowship"
},
"effect": {
"type": "removeTwilight",
"amount": 1
}
}
},
"53_106": {
"title": "*Bill the Pony",
"culture": "Shire",
"side": "free_people",
"cost": 0,
"type": "possession",
"possession": "Pony",
"keyword": [
"stealth"
],
"target": "name(Sam)",
"effects": [
{
@@ -157,22 +233,62 @@
"type": "trigger",
"trigger": {
"type": "condition",
"condition": [
{
"type": "location",
"filter": "underground"
},
{
"type": "canSpot",
"filter": "self,attachedTo(companion)"
}
]
"condition": {
"type": "location",
"filter": "underground"
}
},
"effect": {
"type": "discard",
"filter": "self"
}
}
]
},
]
},
"53_108": {
"title": "Frying Pan",
"culture": "Shire",
"cost": 1,
"type": "possession",
"possession": "hand weapon",
"strength": 1,
"target": "hobbit",
"effects": {
"type": "activated",
"phase": "skirmish",
"cost": {
"type": "exert",
"filter": "bearer"
},
"effect": {
"type": "wound",
"filter": "choose(orc,inSkirmishAgainst(bearer))"
}
}
},
"53_113": {
"title": "*The Shire Countryside",
"culture": "shire",
"cost": 1,
"type": "condition",
"keyword": "support area",
"condition": {
"type": "canSpot",
"count": 2,
"filter": "culture(shire),companion"
},
"effects": {
"type": "trigger",
"optional": true,
"trigger": {
"type": "removesBurden",
"filter": "not(hobbit)"
},
"effect": {
"type": "heal",
"count": "0-2",
"filter": "choose(companion)"
}
}
}
}

View File

@@ -2,10 +2,14 @@ package com.gempukku.lotro.cards.build.field.effect.appender;
import com.gempukku.lotro.cards.build.ActionContext;
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
import com.gempukku.lotro.cards.build.FilterableSource;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
import com.gempukku.lotro.common.Filterable;
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.CostToEffectAction;
@@ -16,23 +20,44 @@ import org.json.simple.JSONObject;
public class PlayNextSite implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(effectObject, "memorize");
FieldUtils.validateAllowedFields(effectObject, "filter", "memorize");
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter", "any");
final String memorize = FieldUtils.getString(effectObject.get("memorize"), "memorize");
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
return new DelayedAppender() {
@Override
public boolean isPlayableInFull(ActionContext actionContext) {
final LotroGame game = actionContext.getGame();
final int currentSiteNumber = game.getGameState().getCurrentSiteNumber();
final PhysicalCard nextSite = game.getGameState().getSite(currentSiteNumber + 1);
return currentSiteNumber < 9
&& (nextSite == null || game.getModifiersQuerying().canReplaceSite(game, actionContext.getPerformingPlayer(), nextSite));
final int nextSiteNumber = game.getGameState().getCurrentSiteNumber() + 1;
final PhysicalCard nextSite = game.getGameState().getSite(nextSiteNumber);
final Filterable filterable = filterableSource.getFilterable(actionContext);
final String playerId = actionContext.getPerformingPlayer();
if (nextSiteNumber > 9 || nextSiteNumber < 1)
return false;
if (nextSite != null && !game.getModifiersQuerying().canReplaceSite(game, actionContext.getPerformingPlayer(), nextSite))
return false;
if (game.getFormat().isOrderedSites()) {
Filter printedSiteNumber = new Filter() {
@Override
public boolean accepts(LotroGame game, PhysicalCard physicalCard) {
return physicalCard.getBlueprint().getSiteNumber() == nextSiteNumber;
}
};
return Filters.filter(game.getGameState().getAdventureDeck(playerId), game, Filters.and(filterable, printedSiteNumber)).size() > 0;
} else {
return Filters.filter(game.getGameState().getAdventureDeck(playerId), game, filterable).size() > 0;
}
}
@Override
protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) {
return new PlayNextSiteEffect(action, actionContext.getPerformingPlayer()) {
final Filterable filterable = filterableSource.getFilterable(actionContext);
return new PlayNextSiteEffect(action, actionContext.getPerformingPlayer(), filterable) {
@Override
protected void sitePlayedCallback(PhysicalCard site) {
if (memorize != null) {

View File

@@ -41,6 +41,7 @@ public class FilterFactory {
simpleFilters.put("unwounded", (actionContext) -> Filters.unwounded);
simpleFilters.put("exhausted", (actionContext) -> Filters.exhausted);
simpleFilters.put("inskirmish", (actionContext) -> Filters.inSkirmish);
simpleFilters.put("infierceskirmish", (actionContext) -> Filters.inFierceSkirmish);
simpleFilters.put("inplay", (actionContext) -> Filters.inPlay);
simpleFilters.put("notassignedtoskirmish",
(actionContext) -> Filters.notAssignedToSkirmish);

View File

@@ -0,0 +1,34 @@
package com.gempukku.lotro.cards.build.field.effect.modifier;
import com.gempukku.lotro.cards.build.*;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.cards.build.field.effect.appender.MultiEffectAppender;
import com.gempukku.lotro.logic.modifiers.CantBeAssignedToSkirmishModifier;
import com.gempukku.lotro.logic.modifiers.FreePeoplePlayerMayNotAssignCharacterModifier;
import com.gempukku.lotro.logic.modifiers.Modifier;
import org.json.simple.JSONObject;
public class FreePeoplePlayerMayNotAssignCharacter implements ModifierSourceProducer {
@Override
public ModifierSource getModifierSource(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(effectObject, "filter", "condition");
final JSONObject[] conditionArray = FieldUtils.getObjectArray(effectObject.get("condition"), "condition");
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter");
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);
MultiEffectAppender result = new MultiEffectAppender();
return new ModifierSource() {
@Override
public Modifier getModifier(ActionContext actionContext) {
return new FreePeoplePlayerMayNotAssignCharacterModifier(actionContext.getSource(),
new RequirementCondition(requirements, actionContext),
filterableSource.getFilterable(actionContext));
}
};
}
}

View File

@@ -4,6 +4,7 @@ import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.ModifierSource;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.logic.modifiers.FreePeoplePlayerMayNotAssignCharacterModifier;
import org.json.simple.JSONObject;
import java.util.HashMap;
@@ -55,6 +56,7 @@ public class ModifierSourceFactory {
modifierProducers.put("allycanparticipateinarcheryfireandskirmishes", new AllyCanParticipateInArcheryFireAndSkirmishes());
modifierProducers.put("cantlookorrevealhand", new CantLookOrRevealHand());
modifierProducers.put("cantbeassignedtoskirmish", new CantBeAssignedToSkirmish());
modifierProducers.put("fpplayermaynotassigncharacter", new FreePeoplePlayerMayNotAssignCharacter());
}
public ModifierSource getModifier(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {

View File

@@ -0,0 +1,33 @@
package com.gempukku.lotro.cards.build.field.effect.trigger;
import com.gempukku.lotro.cards.build.ActionContext;
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
import com.gempukku.lotro.cards.build.FilterableSource;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import org.json.simple.JSONObject;
public class RemovesBurden implements TriggerCheckerProducer {
@Override
public TriggerChecker getTriggerChecker(JSONObject value, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(value, "filter");
String filter = FieldUtils.getString(value.get("filter"), "filter", "any");
final FilterableSource sourceFilter = environment.getFilterFactory().generateFilter(filter, environment);
return new TriggerChecker() {
@Override
public boolean accepts(ActionContext actionContext) {
return TriggerConditions.removedBurden(actionContext.getGame(), actionContext.getEffectResult(),
sourceFilter.getFilterable(actionContext));
}
@Override
public boolean isBefore() {
return false;
}
};
}
}

View File

@@ -39,6 +39,7 @@ public class TriggerCheckerFactory {
triggerCheckers.put("discardfromhand", new DiscardFromHand());
triggerCheckers.put("putsonring", new PutsOnRing());
triggerCheckers.put("addsburden", new AddsBurden());
triggerCheckers.put("removesburden", new RemovesBurden());
triggerCheckers.put("addsthreat", new AddsThreat());
triggerCheckers.put("transferred", new Transferred());
triggerCheckers.put("killed", new Killed());

View File

@@ -431,6 +431,18 @@ public class Filters {
}
};
public static final Filter inFierceSkirmish = new Filter() {
@Override
public boolean accepts(LotroGame game, PhysicalCard physicalCard) {
Skirmish skirmish = game.getGameState().getSkirmish();
if (skirmish != null && game.getGameState().isFierceSkirmishes()) {
return (skirmish.getFellowshipCharacter() == physicalCard)
|| skirmish.getShadowCharacters().contains(physicalCard);
}
return false;
}
};
public static final Filter inPlay = new Filter() {
@Override
public boolean accepts(LotroGame game, PhysicalCard physicalCard) {

View File

@@ -1,5 +1,6 @@
package com.gempukku.lotro.logic.effects;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.timing.Action;
@@ -8,6 +9,10 @@ public class PlayNextSiteEffect extends PlaySiteEffect {
super(action, playerId, null, 0);
}
public PlayNextSiteEffect(Action action, String playerId, Filterable... extraSiteFilters) {
super(action, playerId, null, 0, extraSiteFilters);
}
@Override
protected int getSiteNumberToPlay(LotroGame game) {
return game.getGameState().getCurrentSiteNumber() + 1;

View File

@@ -108,6 +108,14 @@ public class TriggerConditions {
return false;
}
public static boolean removedBurden(LotroGame game, EffectResult effectResult, Filterable... sourceFilters) {
if (effectResult.getType() == EffectResult.Type.REMOVE_BURDEN) {
RemoveBurdenResult burdenResult = (RemoveBurdenResult) effectResult;
return (Filters.and(sourceFilters).accepts(game, burdenResult.getSource()));
}
return false;
}
public static boolean addedThreat(LotroGame game, EffectResult effectResult, Filterable... sourceFilters) {
if (effectResult.getType() == EffectResult.Type.ADD_THREAT) {
AddThreatResult burdenResult = (AddThreatResult) effectResult;