Updated yuletide playtest errata. Added log output indicating when a player chooses to prevent preventable actions.

This commit is contained in:
Christian 'ketura' McCarty
2023-12-28 16:07:36 -06:00
parent 098dfef71d
commit 7b347b982d
7 changed files with 262 additions and 8 deletions

View File

@@ -1,5 +1,4 @@
{ {
53_38: { 53_38: {
cardInfo: { cardInfo: {
//Either a full URL, or a subpath for the PC image server //Either a full URL, or a subpath for the PC image server

View File

@@ -0,0 +1,88 @@
{
71_139: {
cardInfo: {
//Either a full URL, or a subpath for the PC image server
imagePath: errata/LOTR-EN01E139.2.jpg
//If this is true, then all gameplay-related info outside this cardInfo definition
// will be ignored and the java class loaded instead.
javaClass: false
//This instructs the blueprint generator to insert this card as an alt of the listed
// parent blueprint. Can of course be ommitted if not an errata or promo.
parent: 1_139
//This is the tree path to use within the alts structure on the parent.
// Can of course be ommitted if parent is null.
parentPath: errata/pc
//Versioning differentiates releases within a particular alt path, such as PC errata
// version 1 vs version 2. PC version 2 will not conflict with, say, Decipher version 2.
//Top-level cards should always be version 0.
version: 3
collInfo: 1R139
rarity: R
setNum: "1"
cardNum: 139
// Standard, Masterwork, Tengwar, FullArt, etc. Top-level cards are always Standard.
style: Standard
}
title: Savagery To Match Their Numbers
culture: isengard
twilight: 1
type: event
keyword: skirmish
effects: {
type: event
effect: {
type: choice
texts: [
Make an Uruk-hai strength +2
Make an Uruk-hai strength +2 (and +2 more and fierce until the regroup phase)
]
effects: [
{
type: modifyStrength
filter: choose(uruk-hai)
amount: 2
}
{
type: conditional
requires: {
type: canSpot
count: 5
filter: companion
}
effect: [
{
type: modifyStrength
filter: choose(uruk-hai)
amount: 2
memorize: chosenUrukHai
}
{
type: modifyStrength
filter: memory(chosenUrukHai)
amount: 2
until: start(regroup)
}
{
type: addKeyword
filter: memory(chosenUrukHai)
keyword: fierce
until: start(regroup)
}
]
}
]
}
}
gametext: <b>Skirmish:</b> Make an Uruk-hai strength +2.\If you can spot 5 companions, also make it <b>fierce</b> and strength +2 more until the regroup phase).
lore: Uruk-hai match their enemies' strength with their own feral rage.
promotext: ""
alts: {
//These are just CardInfo objects
promos: {
}
//These are full card definitions, with redundant info that is the same as the original card ommitted
errata: {
}
}
}
}

View File

@@ -0,0 +1,70 @@
{
73_41: {
cardInfo: {
//Either a full URL, or a subpath for the PC image server
imagePath: errata/LOTR-EN03E041.1_card.jpg
//If this is true, then all gameplay-related info outside this cardInfo definition
// will be ignored and the java class loaded instead.
javaClass: false
//This instructs the blueprint generator to insert this card as an alt of the listed
// parent blueprint. Can of course be ommitted if not an errata or promo.
parent: 3_41
//This is the tree path to use within the alts structure on the parent.
// Can of course be ommitted if parent is null.
parentPath: errata/pc
//Versioning differentiates releases within a particular alt path, such as PC errata
// version 1 vs version 2. PC version 2 will not conflict with, say, Decipher version 2.
//Top-level cards should always be version 0.
version: 1
collInfo: 3R41
rarity: R
setNum: "3"
cardNum: 41
// Standard, Masterwork, Tengwar, FullArt, etc. Top-level cards are always Standard.
style: Standard
}
title: Gondor Bowmen
unique: false
side: Free Peoples
culture: Gondor
twilight: 1
type: Condition
keyword: [
tale
support area
]
effects: [
{
type: Activated
phase: Archery
cost: [
{
type: Exert
filter: choose(culture(gondor),companion)
}
{
type: Discard
filter: self
}
]
effect: {
type: ModifyArcheryTotal
side: freeps
amount: 2
}
}
]
gametext: Tale.<br>Archery: Exert a [gondor] companion and discard this condition to make the fellowship archery total +2.
lore: Arrows of the Last Alliance brought death to Sauron's forces.
promotext: ""
alts: {
//These are just CardInfo objects
promos: {
}
//These are full card definitions, with redundant info that is the same as the original card ommitted
errata: {
}
}
}
}

View File

@@ -72,7 +72,7 @@
effect: { effect: {
type: Optional type: Optional
player: freeps player: freeps
text: Would you like to discard 2 cards from hand matching {bearer}'s culture to discard Too Great and Terrible? text: Would you like to discard 1 card from hand matching {bearer}'s culture to discard Too Great and Terrible?
effect: { effect: {
type: CostToEffect type: CostToEffect
cost: { cost: {
@@ -80,7 +80,7 @@
player: freeps player: freeps
hand: freeps hand: freeps
forced: false forced: false
count: 2 count: 1
filter: choose(CultureFromMemory(bearer)) filter: choose(CultureFromMemory(bearer))
} }
effect: { effect: {
@@ -94,7 +94,7 @@
] ]
} }
] ]
gametext: To play, exert a [ringwraith] minion. Bearer must be a companion or ally. Bearer cannot be exerted by Free Peoples cards.<br>At the start of the regroup phase, the Free Peoples player may discard 2 cards from hand of bearer's culture to discard this condition. gametext: To play, exert a [ringwraith] minion. Bearer must be a companion or ally. Bearer cannot be exerted by Free Peoples cards.<br>At the start of the regroup phase, the Free Peoples player may discard 1 card from hand of bearer's culture to discard this condition.
lore: “I do not wish to become like the Dark Lord himself.'” lore: “I do not wish to become like the Dark Lord himself.'”
promotext: "" promotext: ""
alts: { alts: {

View File

@@ -61,7 +61,7 @@
type: Choice type: Choice
texts: [ texts: [
Make Aragorn damage +1 Make Aragorn damage +1
Make Aragorn defender +1 Make Aragorn an archer
Make Aragorn strength +2 Make Aragorn strength +2
] ]
effects: [ effects: [
@@ -75,8 +75,7 @@
{ {
type: AddKeyword type: AddKeyword
filter: self filter: self
keyword: defender keyword: archer
amount: 1
until: start(regroup) until: start(regroup)
} }
{ {
@@ -89,7 +88,7 @@
} }
} }
] ]
gametext: When you play Aragorn, you may take an Elf with a twilight cost of 2 or less into hand from your draw deck.<br>Maneuver: Discard an [elven] card from hand to make Aragorn <b>damage +1</b>, <b>defender +1</b>, or strength +2 until the regroup phase. gametext: When you play Aragorn, you may take an Elf with a twilight cost of 2 or less into hand from your draw deck.<br>Maneuver: Discard an [elven] card from hand to make Aragorn <b>damage +1</b>, <b>archer</b>, or strength +2 until the regroup phase.
lore: "'I gave Hope to the Dúnedain, I have kept no hope for myself.'" lore: "'I gave Hope to the Dúnedain, I have kept no hope for myself.'"
promotext: "" promotext: ""
alts: { alts: {

View File

@@ -0,0 +1,95 @@
{
87_24: {
cardInfo: {
//Either a full URL, or a subpath for the PC image server
imagePath: errata/LOTR-EN17E024.1_card.jpg
//If this is true, then all gameplay-related info outside this cardInfo definition
// will be ignored and the java class loaded instead.
javaClass: false
//This instructs the blueprint generator to insert this card as an alt of the listed
// parent blueprint. Can of course be ommitted if not an errata or promo.
parent: 17_24
//This is the tree path to use within the alts structure on the parent.
// Can of course be ommitted if parent is null.
parentPath: errata/pc
//Versioning differentiates releases within a particular alt path, such as PC errata
// version 1 vs version 2. PC version 2 will not conflict with, say, Decipher version 2.
//Top-level cards should always be version 0.
version: 1
collInfo: 17R24
rarity: R
setNum: "17"
cardNum: 24
// Standard, Masterwork, Tengwar, FullArt, etc. Top-level cards are always Standard.
style: Standard
}
title: Shadowfax
subtitle: Greatest of the Mearas
unique: true
side: Free Peoples
culture: Gandalf
twilight: 2
type: Possession
strength: 1
vitality: 1
resistance: 1
itemclass: Mount
target: culture(gandalf),wizard
effects: [
{
type: Trigger
optional: false
trigger: {
type: Played
filter: self
}
effect: {
type: Discard
filter: all(attachedTo(bearer),or(possession,weapon))
}
}
{
type: modifier
modifier: {
type: CantBear
filter: bearer
cardFilter: hand weapon
}
}
{
type: Trigger
optional: true
trigger: {
type: Moves
}
cost: [
{
type: exert
filter: bearer
times: 1
}
{
type: AddThreats
amount: 1
}
]
effect: {
type: RemoveBurdens
amount: 1
}
}
]
gametext: Bearer must be a [gandalf] Wizard.<br>When you play this, discard all other possessions and weapons on bearer. Bearer may not bear a hand weapon.<br>Each time the fellowship moves, you may exert bearer and add a threat to remove a burden.
lore: ""
promotext: ""
alts: {
//These are just CardInfo objects
promos: {
}
//These are full card definitions, with redundant info that is the same as the original card ommitted
errata: {
}
}
}
}

View File

@@ -49,6 +49,7 @@ public class PreventableAppenderProducer implements EffectAppenderProducer {
new YesNoDecision(textToUse) { new YesNoDecision(textToUse) {
@Override @Override
protected void yes() { protected void yes() {
actionContext.getGame().getGameState().sendMessage(GameUtils.SubstituteText("{" + player + "} chooses to prevent.", actionContext));
DelegateActionContext delegate = new DelegateActionContext(actionContext, DelegateActionContext delegate = new DelegateActionContext(actionContext,
preventingPlayer, actionContext.getGame(), actionContext.getSource(), actionContext.getEffectResult(), preventingPlayer, actionContext.getGame(), actionContext.getSource(), actionContext.getEffectResult(),
actionContext.getEffect()); actionContext.getEffect());
@@ -61,6 +62,7 @@ public class PreventableAppenderProducer implements EffectAppenderProducer {
protected void doPlayEffect(LotroGame game) { protected void doPlayEffect(LotroGame game) {
// If the prevention was not carried out, need to do the original action anyway // If the prevention was not carried out, need to do the original action anyway
if (!subAction.wasCarriedOut()) { if (!subAction.wasCarriedOut()) {
game.getGameState().sendMessage(GameUtils.SubstituteText("{" + player + "} attempted to prevent, but could not carry it out.", actionContext));
for (EffectAppender effectAppender : effectAppenders) for (EffectAppender effectAppender : effectAppenders)
effectAppender.appendEffect(false, subAction, actionContext); effectAppender.appendEffect(false, subAction, actionContext);
} }
@@ -79,6 +81,7 @@ public class PreventableAppenderProducer implements EffectAppenderProducer {
@Override @Override
protected void no() { protected void no() {
actionContext.getGame().getGameState().sendMessage(GameUtils.SubstituteText("{" + player + "} decides not to prevent.", actionContext));
for (EffectAppender effectAppender : effectAppenders) for (EffectAppender effectAppender : effectAppenders)
effectAppender.appendEffect(false, subAction, actionContext); effectAppender.appendEffect(false, subAction, actionContext);
} }