Replaced "choose(bearer)" with "bearer" to avoid flashing the bearer card

This commit is contained in:
marcin.sciesinski
2019-09-14 21:59:18 -07:00
parent 36ba88cd0f
commit ea38101161
14 changed files with 53 additions and 32 deletions

View File

@@ -162,7 +162,7 @@
"text": "Would you like to heal bearer?",
"effect": {
"type": "heal",
"filter": "choose(bearer)"
"filter": "bearer"
}
},
{
@@ -170,7 +170,7 @@
"text": "Would you like to heal bearer?",
"effect": {
"type": "heal",
"filter": "choose(bearer)"
"filter": "bearer"
}
}
]
@@ -182,7 +182,7 @@
},
"effect": {
"type": "exert",
"filter": "choose(bearer)"
"filter": "bearer"
}
}
]

View File

@@ -509,7 +509,7 @@
"effects": [
{
"type": "exert",
"filter": "choose(bearer)"
"filter": "bearer"
},
{
"type": "discardFromHand",
@@ -520,7 +520,7 @@
},
"effect": {
"type": "modifyStrength",
"filter": "choose(bearer)",
"filter": "bearer",
"amount": 1
}
}
@@ -886,7 +886,7 @@
},
"cost": {
"type": "exert",
"filter": "choose(bearer)"
"filter": "bearer"
},
"effect": {
"type": "modifyArcheryTotal",
@@ -1029,7 +1029,7 @@
},
"cost": {
"type": "exert",
"filter": "choose(bearer)"
"filter": "bearer"
},
"effect": {
"type": "discardCardAtRandomFromHand",

View File

@@ -225,7 +225,7 @@
],
"cost": {
"type": "exert",
"filter": "choose(bearer)"
"filter": "bearer"
},
"effect": [
{

View File

@@ -50,7 +50,7 @@
},
"effect": {
"type": "modifyStrength",
"filter": "choose(bearer)",
"filter": "bearer",
"amount": 3
}
}
@@ -190,7 +190,7 @@
"effects": [
{
"type": "exert",
"filter": "choose(bearer)"
"filter": "bearer"
},
{
"type": "returnToHand",
@@ -1161,7 +1161,7 @@
},
"effect": {
"type": "heal",
"filter": "choose(bearer)"
"filter": "bearer"
}
}
]

View File

@@ -107,7 +107,7 @@
"optional": true,
"cost": {
"type": "exert",
"filter": "choose(bearer)"
"filter": "bearer"
},
"effect": {
"type": "wound",

View File

@@ -305,7 +305,7 @@
"phase": "maneuver",
"cost": {
"type": "exert",
"filter": "choose(bearer)",
"filter": "bearer",
"times": 2
},
"effect": {
@@ -697,7 +697,7 @@
},
"effect": {
"type": "preventWound",
"filter": "choose(bearer)"
"filter": "bearer"
}
}
},
@@ -901,7 +901,7 @@
"phase": "skirmish",
"cost": {
"type": "exert",
"filter": "choose(bearer)"
"filter": "bearer"
},
"effect": {
"type": "modifyStrength",

View File

@@ -15,7 +15,7 @@
},
"effect": {
"type": "modifyStrength",
"filter": "choose(bearer)",
"filter": "bearer",
"amount": 2
}
}
@@ -271,7 +271,7 @@
"phase": "skirmish",
"cost": {
"type": "exert",
"filter": "choose(bearer)"
"filter": "bearer"
},
"effect": {
"type": "preventable",
@@ -334,7 +334,7 @@
"phase": "skirmish",
"cost": {
"type": "exert",
"filter": "choose(bearer)"
"filter": "bearer"
},
"effect": {
"type": "choice",

View File

@@ -482,7 +482,7 @@
},
"effect": {
"type": "preventWound",
"filter": "choose(bearer)"
"filter": "bearer"
}
}
]

View File

@@ -138,7 +138,7 @@
{
"type": "exert",
"player": "fp",
"filter": "choose(bearer)"
"filter": "bearer"
}
]
}

View File

@@ -47,7 +47,7 @@
"effects": [
{
"type": "exert",
"filter": "choose(bearer)"
"filter": "bearer"
},
{
"type": "discardCardAtRandomFromHand",

View File

@@ -30,7 +30,7 @@
},
"cost": {
"type": "exert",
"filter": "choose(bearer)"
"filter": "bearer"
},
"effect": {
"type": "putOnRing"
@@ -916,7 +916,7 @@
"phase": "skirmish",
"cost": {
"type": "exert",
"filter": "choose(bearer)",
"filter": "bearer",
"memorize": "bearer"
},
"effect": {

View File

@@ -361,7 +361,7 @@
},
"effect": {
"type": "preventWound",
"filter": "choose(bearer)"
"filter": "bearer"
}
}
]
@@ -725,7 +725,7 @@
},
"effect": {
"type": "returnToHand",
"filter": "choose(bearer)"
"filter": "bearer"
}
}
]
@@ -744,7 +744,7 @@
"phase": "skirmish",
"cost": {
"type": "exert",
"filter": "choose(bearer)",
"filter": "bearer",
"times": 2
},
"effect": {
@@ -760,7 +760,7 @@
},
"effect": {
"type": "returnToHand",
"filter": "choose(bearer)"
"filter": "bearer"
}
}
]
@@ -792,7 +792,7 @@
},
"effect": {
"type": "returnToHand",
"filter": "choose(bearer)"
"filter": "bearer"
}
}
]
@@ -822,7 +822,7 @@
},
"cost": {
"type": "exert",
"filter": "choose(bearer)"
"filter": "bearer"
},
"effect": {
"type": "discard",

View File

@@ -42,7 +42,8 @@ public class DefaultActionContext implements ActionContext {
@Override
public void setCardMemory(String memory, PhysicalCard card) {
cardMemory.removeAll(memory);
cardMemory.put(memory, card);
if (card != null)
cardMemory.put(memory, card);
}
@Override

View File

@@ -26,8 +26,6 @@ import java.util.LinkedList;
import java.util.List;
public class CardResolver {
public static EffectAppender resolveStackedCards(String type, ValueSource countSource, FilterableSource stackedOn,
String memory, String choicePlayer, String choiceText, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
return resolveStackedCards(type, null, countSource, stackedOn, memory, choicePlayer, choiceText, environment);
@@ -418,6 +416,28 @@ public class CardResolver {
};
}
};
} else if (type.equals("bearer")) {
return new DelayedAppender() {
@Override
public boolean isPlayableInFull(ActionContext actionContext) {
final PhysicalCard attachedTo = actionContext.getSource().getAttachedTo();
if (attachedTo == null)
return false;
if (playabilityFilter != null)
return PlayConditions.isActive(actionContext.getGame(), attachedTo, playabilityFilter.getFilterable(actionContext));
return true;
}
@Override
protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) {
return new UnrespondableEffect() {
@Override
protected void doPlayEffect(LotroGame game) {
actionContext.setCardMemory(memory, actionContext.getSource().getAttachedTo());
}
};
}
};
} else if (type.startsWith("memory(") && type.endsWith(")")) {
String sourceMemory = type.substring(type.indexOf("(") + 1, type.lastIndexOf(")"));
return new DelayedAppender() {