Elrond, HtGG errata + tests

This commit is contained in:
Christian 'ketura' McCarty
2023-05-22 22:26:58 -05:00
parent 1793a67268
commit 3b53cdecd1
2 changed files with 191 additions and 0 deletions

View File

@@ -1,5 +1,91 @@
{
73_13: {
cardInfo: {
//Either a full URL, or a subpath for the PC image server
imagePath: errata/LOTR-EN03S013.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_13
//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: 3R13
rarity: R
setNum: "3"
cardNum: 13
// Standard, Masterwork, Tengwar, FullArt, etc. Top-level cards are always Standard.
style: Standard
}
title: Elrond
subtitle: Herald to Gil-galad
unique: true
side: Free Peoples
culture: Elven
twilight: 4
type: Ally
allyHome: fellowship,3
race: Elf
strength: 8
vitality: 4
effects: [
{
type: Trigger
text: Would you like to add (2) to heal a home 3 ally twice?
optional: true,
trigger: {
type: StartOfTurn
},
effect: {
type: CostToEffect
cost: {
type: AddTwilight
amount: 2
}
effect: {
type: heal
count: 1
times: 2
filter: choose(ally,allyHome(fellowship,3))
}
}
}
{
type: Activated
phase: regroup
cost: {
type: exert
times: 2
filter: self
}
effect: {
type: heal
count: 1
filter: choose(companion)
}
}
]
gametext: At the start of each of your turns, you may add (2) to spot an ally whose home site is 3 and heal that ally twice. <br><b>Regroup:</b> Exert Elrond twice to heal a companion.
lore: “Venerable he seemed as a king crowned with many winters, and yet hale as a tried warrior....”
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: {
}
}
}
53_17: {
cardInfo: {
//Either a full URL, or a subpath for the PC image server

View File

@@ -0,0 +1,105 @@
package com.gempukku.lotro.cards.unofficial.pc.errata.set03;
import com.gempukku.lotro.cards.GenericCardTestHelper;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.CardNotFoundException;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import org.junit.Test;
import java.util.HashMap;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class Card_03_013_ErrataTests
{
protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException {
return new GenericCardTestHelper(
new HashMap<>()
{{
put("elrond", "73_13");
// put other cards in here as needed for the test case
}},
GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo,
GenericCardTestHelper.FOTRRing
);
}
@Test
public void ElrondStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException {
/**
* Set: 3
* Title: Elrond, Herald to Gil-galad
* Unique: True
* Side: FREE_PEOPLE
* Culture: Elven
* Twilight Cost: 4
* Type: ally
* Subtype: Elf
* Strength: 8
* Vitality: 4
* Site Number: 3
* Game Text: At the start of each of your turns, you may add (2) to spot an ally whose home site is 3 and heal that ally twice.
* <b>Regroup:</b> Exert Elrond twice to heal a companion.
*/
//Pre-game setup
var scn = GetScenario();
var elrond = scn.GetFreepsCard("elrond");
assertTrue(elrond.getBlueprint().isUnique());
assertEquals(Side.FREE_PEOPLE, elrond.getBlueprint().getSide());
assertEquals(Culture.ELVEN, elrond.getBlueprint().getCulture());
assertEquals(CardType.ALLY, elrond.getBlueprint().getCardType());
assertEquals(Race.ELF, elrond.getBlueprint().getRace());
assertEquals(4, elrond.getBlueprint().getTwilightCost());
assertEquals(8, elrond.getBlueprint().getStrength());
assertEquals(4, elrond.getBlueprint().getVitality());
assertEquals(3, elrond.getBlueprint().getAllyHomeSiteNumbers()[0]);
}
@Test
public void AtTheStartOfTurnAdds2toHealAHome3AllyTwice() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var elrond = scn.GetFreepsCard("elrond");
scn.FreepsMoveCharToTable(elrond);
scn.StartGame();
scn.AddWoundsToChar(elrond, 3);
assertEquals(0, scn.GetTwilight());
assertTrue(scn.FreepsHasOptionalTriggerAvailable());
scn.FreepsAcceptOptionalTrigger();
assertEquals(2, scn.GetTwilight());
assertEquals(1, scn.GetWoundsOn(elrond));
}
@Test
public void RegroupActionExertsElrondTwiceToHealCompanionOnce() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var frodo = scn.GetRingBearer();
var elrond = scn.GetFreepsCard("elrond");
scn.FreepsMoveCharToTable(elrond);
scn.StartGame();
scn.FreepsDeclineOptionalTrigger();
scn.AddWoundsToChar(frodo, 3);
scn.SkipToPhase(Phase.REGROUP);
assertEquals(0, scn.GetWoundsOn(elrond));
assertEquals(3, scn.GetWoundsOn(frodo));
assertTrue(scn.FreepsActionAvailable(elrond));
scn.FreepsUseCardAction(elrond);
assertEquals(2, scn.GetWoundsOn(elrond));
assertEquals(2, scn.GetWoundsOn(frodo));
}
}