Add Shadows and Hunter block errata
This commit is contained in:
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user