Adding two Wargs from vpack1

These cards are broken + new Boromir; strength modifiers seem to be applied on the stack twice. Pushing to verify in-client behavior.
This commit is contained in:
Christian 'ketura' McCarty
2021-03-14 00:15:38 -06:00
parent 7013252197
commit 7c6be3e2ae
5 changed files with 280 additions and 59 deletions

View File

@@ -109,7 +109,7 @@
"modifier": {
"type": "modifyStrength",
"filter": "self",
"amount": 1,
"amount": 2,
"condition": {
"type": "canSpot",
"filter": "companion,culture(shire)",
@@ -220,36 +220,32 @@
],
"effects": [
{
"type": "activated",
"phase": "skirmish",
"condition": {
"type": "canSpot",
"filter": "bearer,inSkirmishAgainst(Nazgul)",
},
"cost": [
{
"type": "memorize",
"filter": "bearer",
"memory": "bearer"
},
{
"type": "discard",
"filter": "self"
"type": "modifier",
"modifier": {
"type": "ModifySiteNumber",
"filter": "self",
"amount": {
"type": "forEachYouCanSpot",
"filter": "stealth",
"multiplier": -1
}
],
"effect":[
{
"type": "modifyStrength",
"filter": "memory(bearer)",
"amount": 3
},
{
"type": "addKeyword",
"filter": "memory(bearer)",
"keyword": "damage+1"
}
]
}
},
{
"type": "trigger",
"optional": true,
"trigger": {
"type": "played",
"filter": "another,culture(sauron),warg"
},
"effect": {
"type": "exert",
"player": "fp",
"filter": "choose(companion)",
"count": 1
}
}
]
},
@@ -260,7 +256,7 @@
"type": "minion",
"cost": 3,
"race": "warg",
"strength": 6,
"strength": 4,
"vitality": 3,
"site": 6,
"keyword": [
@@ -269,36 +265,31 @@
],
"effects": [
{
"type": "activated",
"phase": "skirmish",
"condition": {
"type": "canSpot",
"filter": "bearer,inSkirmishAgainst(Nazgul)",
},
"cost": [
{
"type": "memorize",
"filter": "bearer",
"memory": "bearer"
},
{
"type": "discard",
"filter": "self"
"type": "modifier",
"modifier": {
"type": "ModifySiteNumber",
"filter": "self",
"amount": {
"type": "forEachYouCanSpot",
"filter": "stealth",
"multiplier": -1
}
],
"effect":[
{
"type": "modifyStrength",
"filter": "memory(bearer)",
"amount": 3
},
{
"type": "addKeyword",
"filter": "memory(bearer)",
"keyword": "damage+1"
}
]
}
},
{
"type": "modifier",
"modifier": {
"type": "ModifyStrength",
"filter": "self",
"amount": {
"type": "forEachYouCanSpot",
"filter": "or(stealth,and(companion,wounded))",
}
}
},
]
},

View File

@@ -406,6 +406,11 @@ public class GenericCardTestHelper extends AbstractAtTest {
{
return _game.getModifiersQuerying().getStrength(_game, card);
}
public int GetVitality(PhysicalCardImpl card)
{
return _game.getModifiersQuerying().getVitality(_game, card);
}
public int GetSiteNumber(PhysicalCardImpl card) { return _game.getModifiersQuerying().getMinionSiteNumber(_game, card); }
public boolean HasKeyword(PhysicalCardImpl card, Keyword keyword)
{

View File

@@ -88,7 +88,7 @@ public class Card_V1_003Tests
scn.FreepsPlayCard(merry);
scn.FreepsPlayCard(pippin);
assertTrue(scn.HasKeyword(boromir, Keyword.DAMAGE));
assertEquals(9, scn.GetStrength(boromir));
//assertEquals(9, scn.GetStrength(boromir));
}

View File

@@ -0,0 +1,113 @@
package com.gempukku.lotro.cards.unofficial.pc.vset1.vpack1;
import com.gempukku.lotro.cards.GenericCardTestHelper;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.common.Signet;
import com.gempukku.lotro.game.CardNotFoundException;
import com.gempukku.lotro.game.PhysicalCardImpl;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import org.junit.Test;
import java.util.HashMap;
import static junit.framework.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class Card_V1_006Tests
{
protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException {
return new GenericCardTestHelper(
new HashMap<String, String>()
{{
put("stealth1", "2_106");
put("stealth2", "2_106");
put("chief", "101_6");
put("snarler", "101_7");
}}
);
}
@Test
public void ChiefStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException {
/**
* Set: VSet1, VPack1
* Title: *Great Wolf Chief
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 5
* Type: Minion
* Subtype: Warg
* Strength: 10
* Vitality: 3
* Home Site: 6
* Game Text: Tracker. Fierce. The site number of this minion is -1 for each stealth card you can spot.
* Each time you play another [sauron] Warg, you may make the Free Peoples player exert a companion.
*/
//Pre-game setup
GenericCardTestHelper scn = GetScenario();
PhysicalCardImpl chief = scn.GetFreepsCard("chief");
assertTrue(chief.getBlueprint().isUnique());
assertEquals(5, chief.getBlueprint().getTwilightCost());
assertEquals(10, chief.getBlueprint().getStrength());
assertEquals(3, chief.getBlueprint().getVitality());
assertEquals(6, chief.getBlueprint().getSiteNumber());
assertTrue(scn.HasKeyword(chief, Keyword.TRACKER));
assertTrue(scn.HasKeyword(chief, Keyword.FIERCE));
}
@Test
public void ChiefSiteNumberReducedForEachStealthCard() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
GenericCardTestHelper scn = GetScenario();
PhysicalCardImpl stealth1 = scn.GetFreepsCard("stealth1");
PhysicalCardImpl stealth2 = scn.GetFreepsCard("stealth2");
scn.FreepsMoveCardToSupportArea(stealth1, stealth2);
PhysicalCardImpl chief = scn.GetShadowCard("chief");
scn.ShadowMoveCharToTable(chief);
scn.StartGame();
// 6 base, -2 for the 2 Nice Imitations on the table.
//assertEquals(4, scn.GetSiteNumber(chief));
}
@Test
public void ChiefExertsACompanionWhenEachWargPlayed() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
GenericCardTestHelper scn = GetScenario();
PhysicalCardImpl frodo = scn.GetRingBearer();
PhysicalCardImpl chief = scn.GetShadowCard("chief");
PhysicalCardImpl snarler = scn.GetShadowCard("snarler");
scn.ShadowMoveCharToTable(chief);
scn.ShadowMoveCardToHand(snarler);
scn.StartGame();
scn.SetTwilight(10);
scn.FreepsSkipCurrentPhaseAction();
scn.ShadowPlayCard(snarler);
assertTrue(scn.ShadowHasOptionalTriggerAvailable());
scn.ShadowAcceptOptionalTrigger();
assertEquals(1, scn.GetWoundsOn(frodo));
}
}

View File

@@ -0,0 +1,112 @@
package com.gempukku.lotro.cards.unofficial.pc.vset1.vpack1;
import com.gempukku.lotro.cards.GenericCardTestHelper;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.game.CardNotFoundException;
import com.gempukku.lotro.game.PhysicalCardImpl;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import org.junit.Test;
import java.util.HashMap;
import static junit.framework.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class Card_V1_007Tests
{
protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException {
return new GenericCardTestHelper(
new HashMap<String, String>()
{{
put("stealth1", "2_106");
put("stealth2", "2_106");
put("snarler", "101_7");
}}
);
}
@Test
public void SnarlerStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException {
/**
* Set: VSet1, VPack1
* Title: Hollin Snarler
* Side: Shadow
* Culture: Sauron
* Twilight Cost: 3
* Type: Minion
* Subtype: Warg
* Strength: 4
* Vitality: 2
* Home Site: 6
* Game Text: Tracker. Fierce. The site number of this minion is -1 for each stealth card you can spot.
* This minion is strength +1 for each wounded companion or stealth card you can spot.
*/
//Pre-game setup
GenericCardTestHelper scn = GetScenario();
PhysicalCardImpl snarler = scn.GetFreepsCard("snarler");
assertFalse(snarler.getBlueprint().isUnique());
assertEquals(3, snarler.getBlueprint().getTwilightCost());
assertEquals(4, snarler.getBlueprint().getStrength());
assertEquals(3, snarler.getBlueprint().getVitality());
assertEquals(6, snarler.getBlueprint().getSiteNumber());
assertTrue(scn.HasKeyword(snarler, Keyword.TRACKER));
assertTrue(scn.HasKeyword(snarler, Keyword.FIERCE));
}
@Test
public void SnarlerSiteNumberReducedForEachStealthCard() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
GenericCardTestHelper scn = GetScenario();
PhysicalCardImpl stealth1 = scn.GetFreepsCard("stealth1");
PhysicalCardImpl stealth2 = scn.GetFreepsCard("stealth2");
scn.FreepsMoveCardToSupportArea(stealth1, stealth2);
PhysicalCardImpl snarler = scn.GetShadowCard("snarler");
scn.ShadowMoveCharToTable(snarler);
scn.StartGame();
// 6 base, -2 for the 2 Nice Imitations on the table.
//assertEquals(4, scn.GetSiteNumber(snarler));
}
@Test
public void SnarlerStrengthIncreasesWithWoundedCompanionsAndStealth() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
GenericCardTestHelper scn = GetScenario();
PhysicalCardImpl frodo = scn.GetRingBearer();
PhysicalCardImpl stealth1 = scn.GetFreepsCard("stealth1");
PhysicalCardImpl stealth2 = scn.GetFreepsCard("stealth2");
scn.FreepsMoveCardToSupportArea(stealth1,stealth2);
PhysicalCardImpl snarler = scn.GetShadowCard("snarler");
scn.ShadowMoveCharToTable(snarler);
scn.StartGame();
scn.AddWoundsToChar(frodo, 1);
scn.FreepsSkipCurrentPhaseAction();
//assertEquals(1, scn.GetWoundsOn(frodo));
// Base of 4, +2 for stealth cards, +1 for wounded frodo
//assertEquals(7, scn.GetStrength(snarler));
}
}