Add Shadows and Hunter block errata

This commit is contained in:
Troy Biesterfeld
2021-04-24 22:00:39 -05:00
parent c3b74aa8dc
commit d6483d5c09
5 changed files with 195 additions and 1 deletions

View File

@@ -0,0 +1,108 @@
{
"81_31": {
"title": "Final Account",
"culture": "gandalf",
"cost": 1,
"type": "event",
"keyword": "fellowship",
"effects": {
"type": "event",
"cost": [
{
"type": "exert",
"filter": "choose(culture(gandalf),wizard)"
},
{
"type": "discardFromHand",
"forced": false
}
],
"effect": {
"type": "putCardsFromDiscardIntoHand",
"filter": "choose(side(shadow))"
}
}
},
"81_100": {
"title": "Strange-looking Men",
"culture": "men",
"cost": 4,
"type": "minion",
"race": "man",
"strength": 10,
"vitality": 2,
"site": 4,
"effects": {
"type": "trigger",
"optional": true,
"trigger": {
"type": "startOfPhase",
"phase": "maneuver"
},
"cost": {
"type": "exert",
"filter": "self"
},
"effect": {
"type": "transfer",
"filter": "choose(or(possession,condition)),attachedTo(character)",
"where": "choose(any)",
"checkTarget": true
}
}
},
"81_114": {
"title": "*Demoralized",
"culture": "orc",
"cost": 1,
"type": "condition",
"keyword": "support area",
"condition": {
"type": "canSpot",
"filter": "culture(orc),minion"
},
"effects": {
"type": "trigger",
"trigger": {
"type": "exerts",
"filter": "companion"
},
"effect": {
"type": "addTwilight",
"amount": {
"type": "condition",
"condition": {
"type": "canSpot",
"filter": "companion",
"count": 6
},
"true": 2,
"false": 1
}
}
}
},
"81_132": {
"title": "Orkish Smith",
"culture": "orc",
"cost": 2,
"type": "minion",
"race": "orc",
"strength": 6,
"vitality": 1,
"site": 4,
"effects": {
"type": "trigger",
"optional": true,
"trigger": {
"type": "played",
"filter": "self"
},
"effect": {
"type": "shuffleCardsFromDiscardIntoDrawDeck",
"filter": "choose(culture(orc),condition)",
"count": "0-2"
}
}
}
}

View File

@@ -0,0 +1,33 @@
{
"83_188": {
"title": "Courtyard Parapet",
"type": "site",
"block": "Shadows and onwards",
"cost": 0,
"keyword": "Dwelling",
"direction": "left",
"effects": [
{
"type": "trigger",
"trigger": {
"type": "movesTo",
"filter": "self"
},
"condition": {
"type": "location",
"filter": "siteinregion2"
},
"cost": {
"type": "discardFromHand",
"hand": "shadowPlayer",
"player": "shadowPlayer",
"forced": false,
"count": 2
},
"effect": {
"type": "addBurdens"
}
}
]
}
}

View File

@@ -0,0 +1,45 @@
{
"85_64": {
"title": "*Madril",
"subtitle": "Defender of Osgiliath",
"culture": "gondor",
"cost": 2,
"type": "companion",
"race": "man",
"strength": 5,
"vitality": 3,
"resistance": 6,
"keyword": [
"Ranger",
"Hunter"
],
"effects": [
{
"type": "modifyOwnCost",
"condition": {
"type": "canSpot",
"count": 2,
"filter": "culture(gondor),ranger"
},
"amount": -2
},
{
"type": "trigger",
"optional": true,
"trigger": {
"type": "startOfPhase",
"phase": "maneuver"
},
"condition": {
"type": "canSpotThreats"
},
"effect": {
"type": "modifySiteNumber",
"filter": "all(minion)",
"amount": 1,
"until": "start(regroup)"
}
}
]
}
}

View File

@@ -16,6 +16,7 @@ import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.logic.actions.CostToEffectAction;
import com.gempukku.lotro.logic.effects.TransferPermanentEffect;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.RuleUtils;
import org.json.simple.JSONObject;
import java.util.Collection;
@@ -25,10 +26,11 @@ import java.util.List;
public class Transfer implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(effectObject, "filter", "where");
FieldUtils.validateAllowedFields(effectObject, "filter", "where", "checkTarget");
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter");
final String where = FieldUtils.getString(effectObject.get("where"), "where");
final boolean checkTarget = FieldUtils.getBoolean(effectObject.get("checkTarget"), "checkTarget", false);
MultiEffectAppender result = new MultiEffectAppender();
@@ -44,6 +46,10 @@ public class Transfer implements EffectAppenderProducer {
// Can't be transferred to card it's already attached to
if (transferredCard.getAttachedTo() == physicalCard)
return false;
// Optionally check target against original target filter
if (checkTarget && !RuleUtils.getFullValidTargetFilter(transferredCard.getOwner(), game, transferredCard).accepts(game, physicalCard))
return false;
return actionContext.getGame().getModifiersQuerying().canHaveTransferredOn(game, transferredCard, physicalCard);
}, actionContext -> Filters.any,
ValueResolver.resolveEvaluator(1, environment), "_temp2", "you", "Choose cards to transfer to", environment));

View File

@@ -67,6 +67,8 @@ public class FilterFactory {
(actionContext -> Filters.siteNumber(actionContext.getGame().getGameState().getCurrentSiteNumber())));
simpleFilters.put("siteincurrentregion",
(actionContext) -> Filters.siteInCurrentRegion);
simpleFilters.put("siteinregion2",
(actionContext) -> Filters.and(CardType.SITE, Filters.region(2)));
simpleFilters.put("idinstored",
(actionContext ->
new Filter() {