Added V2 Flood Insurance cards

- added self selector to PlayCardFromDrawDeck
This commit is contained in:
Christian 'ketura' McCarty
2024-11-04 16:43:58 -06:00
parent 59122c9bd3
commit 2cfd477ea8
17 changed files with 353 additions and 73 deletions

View File

@@ -841,7 +841,7 @@
cost: [ cost: [
{ {
type: addThreats type: addThreats
amount: any amount: 0-9
} }
] ]
} }

View File

@@ -230,26 +230,64 @@
culture: Dunland culture: Dunland
twilight: 0 twilight: 0
type: Event type: Event
timewords: Response timewords: Shadow
effects: [ effects: [
{ {
type: responseEvent type: event
trigger: { requires: {
type: CanSpotTwilight
amount: 25
} }
cost: { cost: {
type: SendMessage type: RemoveTwilight
text: Placeholder effect for development. amount: 10
} }
effect: [ effect: [
{ {
type: SendMessage type: TakeControlOfSite
text: Placeholder effect for development. }
{
type: TakeControlOfSite
}
{
type: TakeControlOfSite
}
{
type: RemoveFromTheGame
select: self
} }
] ]
} }
{
type: ActivatedInDiscard
phase: Shadow
requires: [
{
type: canSelfBePlayed
}
]
effect: {
type: playCardFromDiscard
select: self
}
}
{
type: ActivatedInDrawDeck
phase: Shadow
requires: [
{
type: canSelfBePlayed
}
]
effect: {
type: PlayCardFromDrawDeck
select: self
shuffle: true
showAll: true
}
}
] ]
gametext: At the start of the Shadow phase, spot 25 twilight tokens and remove 10 to take control of 3 sites, then remove this from the game. This event may be played from your draw deck or discard pile. gametext: Spot 25 twilight tokens and remove 10 to take control of 3 sites, then remove this from the game. This event may be played from your draw deck or discard pile.
lore: "" lore: ""
promotext: "" promotext: ""
alts: { alts: {

View File

@@ -20,26 +20,59 @@
culture: Gollum culture: Gollum
twilight: 0 twilight: 0
type: Event type: Event
timewords: Response timewords: Shadow
effects: [ effects: [
{ {
type: responseEvent type: event
trigger: { requires: {
type: CanSpotTwilight
amount: 25
} }
cost: { cost: {
type: SendMessage type: RemoveTwilight
text: Placeholder effect for development. amount: 10
} }
effect: [ effect: [
{ {
type: SendMessage type: DrawCards
text: Placeholder effect for development. count: 8
}
{
type: RemoveFromTheGame
select: self
} }
] ]
} }
{
type: ActivatedInDiscard
phase: Shadow
requires: [
{
type: canSelfBePlayed
}
]
effect: {
type: playCardFromDiscard
select: self
}
}
{
type: ActivatedInDrawDeck
phase: Shadow
requires: [
{
type: canSelfBePlayed
}
]
effect: {
type: PlayCardFromDrawDeck
select: self
shuffle: true
showAll: true
}
}
] ]
gametext: At the start of the Shadow phase, spot 25 twilight tokens and remove 10 to draw 8 cards, then remove this from the game. This event may be played from your draw deck or discard pile. gametext: Spot 25 twilight tokens and remove 10 to draw 8 cards, then remove this from the game. This event may be played from your draw deck or discard pile.
lore: "" lore: ""
promotext: "" promotext: ""
alts: { alts: {

View File

@@ -275,26 +275,63 @@
culture: Isengard culture: Isengard
twilight: 0 twilight: 0
type: Event type: Event
timewords: Response timewords: Shadow
effects: [ effects: [
{ {
type: responseEvent type: event
trigger: { requires: {
type: CanSpotTwilight
amount: 25
} }
cost: { cost: {
type: SendMessage type: RemoveTwilight
text: Placeholder effect for development. amount: 10
} }
effect: [ effect: [
{ {
type: SendMessage type: Exert
text: Placeholder effect for development. select: all(character)
}
{
type: Exert
select: all(character,MinTwilight(4))
}
{
type: RemoveFromTheGame
select: self
} }
] ]
} }
{
type: ActivatedInDiscard
phase: Shadow
requires: [
{
type: canSelfBePlayed
}
]
effect: {
type: playCardFromDiscard
select: self
}
}
{
type: ActivatedInDrawDeck
phase: Shadow
requires: [
{
type: canSelfBePlayed
}
]
effect: {
type: PlayCardFromDrawDeck
select: self
shuffle: true
showAll: true
}
}
] ]
gametext: At the start of the Shadow phase, spot 25 twilight tokens and remove 10 to exert each character once (or twice if it costs (4) or more), then remove this from the game. This event may be played from your draw deck or discard pile. gametext: Spot 25 twilight tokens and remove 10 to exert each character once (or twice if it costs (4) or more), then remove this from the game. This event may be played from your draw deck or discard pile.
lore: "" lore: ""
promotext: "" promotext: ""
alts: { alts: {

View File

@@ -408,26 +408,85 @@
culture: Moria culture: Moria
twilight: 0 twilight: 0
type: Event type: Event
timewords: Response timewords: Shadow
effects: [ effects: [
{ {
type: responseEvent type: event
trigger: { requires: {
type: CanSpotTwilight
amount: 25
} }
cost: { cost: {
type: SendMessage type: RemoveTwilight
text: Placeholder effect for development. amount: 10
} }
effect: [ effect: [
{ {
type: SendMessage type: Repeat
text: Placeholder effect for development. times: 4
effect: {
type: Choice
texts: [
Take a Shadow condition into hand from your draw deck
Take a Shadow condition into hand from your discard pile
Pass
]
effects: [
{
type: PutCardsFromDeckIntoHand
select: choose(side(shadow),condition)
shuffle: true
reveal: true
showAll: true
}
{
type: PutCardsFromDiscardIntoHand
discard: you
select: choose(side(shadow),condition)
}
{
type: SendMessage
text: "{you} declines to take a Shadow condition into hand."
}
]
}
}
{
type: RemoveFromTheGame
select: self
} }
] ]
} }
{
type: ActivatedInDiscard
phase: Shadow
requires: [
{
type: canSelfBePlayed
}
]
effect: {
type: playCardFromDiscard
select: self
}
}
{
type: ActivatedInDrawDeck
phase: Shadow
requires: [
{
type: canSelfBePlayed
}
]
effect: {
type: PlayCardFromDrawDeck
select: self
shuffle: true
showAll: true
}
}
] ]
gametext: At the start of the Shadow phase, spot 25 twilight tokens and remove 10 to take up to 4 Shadow conditions into hand from your draw deck or discard pile, then remove this from the game. This event may be played from your draw deck or discard pile. gametext: Spot 25 twilight tokens and remove 10 to take up to 4 Shadow conditions into hand from your draw deck or discard pile, then remove this from the game. This event may be played from your draw deck or discard pile.
lore: "" lore: ""
promotext: "" promotext: ""
alts: { alts: {

View File

@@ -20,26 +20,61 @@
culture: Raider culture: Raider
twilight: 0 twilight: 0
type: Event type: Event
timewords: Response timewords: Shadow
effects: [ effects: [
{ {
type: responseEvent type: event
trigger: { requires: {
type: CanSpotTwilight
amount: 25
} }
cost: { cost: {
type: SendMessage type: RemoveTwilight
text: Placeholder effect for development. amount: 10
} }
effect: [ effect: [
{ {
type: SendMessage type: modifyArcheryTotal
text: Placeholder effect for development. side: shadow
amount: 6
until: regroup
}
{
type: RemoveFromTheGame
select: self
} }
] ]
} }
{
type: ActivatedInDiscard
phase: Shadow
requires: [
{
type: canSelfBePlayed
}
]
effect: {
type: playCardFromDiscard
select: self
}
}
{
type: ActivatedInDrawDeck
phase: Shadow
requires: [
{
type: canSelfBePlayed
}
]
effect: {
type: PlayCardFromDrawDeck
select: self
shuffle: true
showAll: true
}
}
] ]
gametext: At the start of the Shadow phase, spot 25 twilight tokens and remove 10 to make the minion archery total +6 until the regroup phase, then remove this from the game. This event may be played from your draw deck or discard pile. gametext: Spot 25 twilight tokens and remove 10 to make the minion archery total +6 until the regroup phase, then remove this from the game. This event may be played from your draw deck or discard pile.
lore: "" lore: ""
promotext: "" promotext: ""
alts: { alts: {

View File

@@ -20,26 +20,59 @@
culture: Wraith culture: Wraith
twilight: 0 twilight: 0
type: Event type: Event
timewords: Response timewords: Shadow
effects: [ effects: [
{ {
type: responseEvent type: event
trigger: { requires: {
type: CanSpotTwilight
amount: 25
} }
cost: { cost: {
type: SendMessage type: RemoveTwilight
text: Placeholder effect for development. amount: 10
} }
effect: [ effect: [
{ {
type: SendMessage type: addThreats
text: Placeholder effect for development. amount: 0-9
}
{
type: RemoveFromTheGame
select: self
} }
] ]
} }
{
type: ActivatedInDiscard
phase: Shadow
requires: [
{
type: canSelfBePlayed
}
]
effect: {
type: playCardFromDiscard
select: self
}
}
{
type: ActivatedInDrawDeck
phase: Shadow
requires: [
{
type: canSelfBePlayed
}
]
effect: {
type: PlayCardFromDrawDeck
select: self
shuffle: true
showAll: true
}
}
] ]
gametext: At the start of the Shadow phase, spot 25 twilight tokens and remove 10 to add up to 9 threats, then remove this from the game. This event may be played from your draw deck or discard pile. gametext: Spot 25 twilight tokens and remove 10 to add up to 9 threats, then remove this from the game. This event may be played from your draw deck or discard pile.
lore: "" lore: ""
promotext: "" promotext: ""
alts: { alts: {

View File

@@ -20,26 +20,69 @@
culture: Sauron culture: Sauron
twilight: 0 twilight: 0
type: Event type: Event
timewords: Response timewords: Shadow
effects: [ effects: [
{ {
type: responseEvent type: event
trigger: { requires: {
type: CanSpotTwilight
amount: 25
} }
cost: { cost: {
type: SendMessage type: RemoveTwilight
text: Placeholder effect for development. amount: 10
} }
effect: [ effect: [
{ {
type: SendMessage type: Repeat
text: Placeholder effect for development. times: 3
effect: {
type: Optional
text: Would you like to play another minion from your draw deck costing (5) or more?
effect: {
type: PlayCardFromDrawDeck
select: choose(minion,MinTwilight(5))
shuffle: true
showAll: true
}
}
}
{
type: RemoveFromTheGame
select: self
} }
] ]
} }
{
type: ActivatedInDiscard
phase: Shadow
requires: [
{
type: canSelfBePlayed
}
]
effect: {
type: playCardFromDiscard
select: self
}
}
{
type: ActivatedInDrawDeck
phase: Shadow
requires: [
{
type: canSelfBePlayed
}
]
effect: {
type: PlayCardFromDrawDeck
select: self
shuffle: true
showAll: true
}
}
] ]
gametext: At the start of the Shadow phase, spot 25 twilight tokens to play up to 3 minions from your draw deck costing (5) or more, then remove this from the game. This event may be played from your draw deck or discard pile. gametext: Spot 25 twilight tokens to play up to 3 minions from your draw deck costing (5) or more, then remove this from the game. This event may be played from your draw deck or discard pile.
lore: "" lore: ""
promotext: "" promotext: ""
alts: { alts: {

View File

@@ -328,7 +328,9 @@ public class CardResolver {
return actionContext.getGame().getGameState().getDeck(deckId); return actionContext.getGame().getGameState().getDeck(deckId);
}; };
if (type.startsWith("memory(") && type.endsWith(")")) { if (type.equals("self")) {
return resolveSelf(choiceFilter, choiceFilter, countSource, memory, cardSource);
} else if (type.startsWith("memory(") && type.endsWith(")")) {
return resolveMemoryCards(type, choiceFilter, choiceFilter, countSource, memory, cardSource); return resolveMemoryCards(type, choiceFilter, choiceFilter, countSource, memory, cardSource);
} else if (type.startsWith("all(") && type.endsWith(")")) { } else if (type.startsWith("all(") && type.endsWith(")")) {
return resolveAllCards(type, choiceFilter, memory, environment, cardSource); return resolveAllCards(type, choiceFilter, memory, environment, cardSource);

View File

@@ -52,7 +52,7 @@ public class Card_V2_005_Tests
assertEquals(Side.SHADOW, card.getBlueprint().getSide()); assertEquals(Side.SHADOW, card.getBlueprint().getSide());
assertEquals(Culture.DUNLAND, card.getBlueprint().getCulture()); assertEquals(Culture.DUNLAND, card.getBlueprint().getCulture());
assertEquals(CardType.EVENT, card.getBlueprint().getCardType()); assertEquals(CardType.EVENT, card.getBlueprint().getCardType());
assertTrue(scn.hasTimeword(card, Timeword.RESPONSE)); assertTrue(scn.hasTimeword(card, Timeword.SHADOW));
assertEquals(0, card.getBlueprint().getTwilightCost()); assertEquals(0, card.getBlueprint().getTwilightCost());
} }

View File

@@ -52,7 +52,7 @@ public class Card_V2_015_Tests
assertEquals(Side.SHADOW, card.getBlueprint().getSide()); assertEquals(Side.SHADOW, card.getBlueprint().getSide());
assertEquals(Culture.GOLLUM, card.getBlueprint().getCulture()); assertEquals(Culture.GOLLUM, card.getBlueprint().getCulture());
assertEquals(CardType.EVENT, card.getBlueprint().getCardType()); assertEquals(CardType.EVENT, card.getBlueprint().getCardType());
assertTrue(scn.hasTimeword(card, Timeword.RESPONSE)); assertTrue(scn.hasTimeword(card, Timeword.SHADOW));
assertEquals(0, card.getBlueprint().getTwilightCost()); assertEquals(0, card.getBlueprint().getTwilightCost());
} }

View File

@@ -52,7 +52,7 @@ public class Card_V2_022_Tests
assertEquals(Side.SHADOW, card.getBlueprint().getSide()); assertEquals(Side.SHADOW, card.getBlueprint().getSide());
assertEquals(Culture.ISENGARD, card.getBlueprint().getCulture()); assertEquals(Culture.ISENGARD, card.getBlueprint().getCulture());
assertEquals(CardType.EVENT, card.getBlueprint().getCardType()); assertEquals(CardType.EVENT, card.getBlueprint().getCardType());
assertTrue(scn.hasTimeword(card, Timeword.RESPONSE)); assertTrue(scn.hasTimeword(card, Timeword.SHADOW));
assertEquals(0, card.getBlueprint().getTwilightCost()); assertEquals(0, card.getBlueprint().getTwilightCost());
} }

View File

@@ -52,7 +52,7 @@ public class Card_V2_042_Tests
assertEquals(Side.SHADOW, card.getBlueprint().getSide()); assertEquals(Side.SHADOW, card.getBlueprint().getSide());
assertEquals(Culture.MORIA, card.getBlueprint().getCulture()); assertEquals(Culture.MORIA, card.getBlueprint().getCulture());
assertEquals(CardType.EVENT, card.getBlueprint().getCardType()); assertEquals(CardType.EVENT, card.getBlueprint().getCardType());
assertTrue(scn.hasTimeword(card, Timeword.RESPONSE)); assertTrue(scn.hasTimeword(card, Timeword.SHADOW));
assertEquals(0, card.getBlueprint().getTwilightCost()); assertEquals(0, card.getBlueprint().getTwilightCost());
} }

View File

@@ -52,7 +52,7 @@ public class Card_V2_043_Tests
assertEquals(Side.SHADOW, card.getBlueprint().getSide()); assertEquals(Side.SHADOW, card.getBlueprint().getSide());
assertEquals(Culture.RAIDER, card.getBlueprint().getCulture()); assertEquals(Culture.RAIDER, card.getBlueprint().getCulture());
assertEquals(CardType.EVENT, card.getBlueprint().getCardType()); assertEquals(CardType.EVENT, card.getBlueprint().getCardType());
assertTrue(scn.hasTimeword(card, Timeword.RESPONSE)); assertTrue(scn.hasTimeword(card, Timeword.SHADOW));
assertEquals(0, card.getBlueprint().getTwilightCost()); assertEquals(0, card.getBlueprint().getTwilightCost());
} }

View File

@@ -52,7 +52,7 @@ public class Card_V2_044_Tests
assertEquals(Side.SHADOW, card.getBlueprint().getSide()); assertEquals(Side.SHADOW, card.getBlueprint().getSide());
assertEquals(Culture.WRAITH, card.getBlueprint().getCulture()); assertEquals(Culture.WRAITH, card.getBlueprint().getCulture());
assertEquals(CardType.EVENT, card.getBlueprint().getCardType()); assertEquals(CardType.EVENT, card.getBlueprint().getCardType());
assertTrue(scn.hasTimeword(card, Timeword.RESPONSE)); assertTrue(scn.hasTimeword(card, Timeword.SHADOW));
assertEquals(0, card.getBlueprint().getTwilightCost()); assertEquals(0, card.getBlueprint().getTwilightCost());
} }

View File

@@ -52,7 +52,7 @@ public class Card_V2_057_Tests
assertEquals(Side.SHADOW, card.getBlueprint().getSide()); assertEquals(Side.SHADOW, card.getBlueprint().getSide());
assertEquals(Culture.SAURON, card.getBlueprint().getCulture()); assertEquals(Culture.SAURON, card.getBlueprint().getCulture());
assertEquals(CardType.EVENT, card.getBlueprint().getCardType()); assertEquals(CardType.EVENT, card.getBlueprint().getCardType());
assertTrue(scn.hasTimeword(card, Timeword.RESPONSE)); assertTrue(scn.hasTimeword(card, Timeword.SHADOW));
assertEquals(0, card.getBlueprint().getTwilightCost()); assertEquals(0, card.getBlueprint().getTwilightCost());
} }

View File

@@ -27,7 +27,7 @@ public class Card_V2_070_Tests
put("site2", "1_327"); put("site2", "1_327");
put("site3", "1_337"); put("site3", "1_337");
put("site4", "1_343"); put("site4", "1_343");
put("site5", "102_66"); put("site5", "102_70");
put("site6", "1_351"); put("site6", "1_351");
put("site7", "1_353"); put("site7", "1_353");
put("site8", "1_356"); put("site8", "1_356");