mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
Merge branch 'newBranch' into 'master'
Fix Amass ability (Woodland Champion and Dreadhorde Invasion) See merge request core-developers/forge!2279
This commit is contained in:
@@ -8,6 +8,7 @@ import forge.game.card.Card;
|
|||||||
import forge.game.card.CardCollectionView;
|
import forge.game.card.CardCollectionView;
|
||||||
import forge.game.card.CardLists;
|
import forge.game.card.CardLists;
|
||||||
import forge.game.card.CardPredicates;
|
import forge.game.card.CardPredicates;
|
||||||
|
import forge.game.card.CardZoneTable;
|
||||||
import forge.game.card.CounterType;
|
import forge.game.card.CounterType;
|
||||||
import forge.game.card.token.TokenInfo;
|
import forge.game.card.token.TokenInfo;
|
||||||
import forge.game.event.GameEventTokenCreated;
|
import forge.game.event.GameEventTokenCreated;
|
||||||
@@ -44,6 +45,17 @@ public class AmassEffect extends SpellAbilityEffect {
|
|||||||
final int amount = AbilityUtils.calculateAmount(card, sa.getParamOrDefault("Num", "1"), sa);
|
final int amount = AbilityUtils.calculateAmount(card, sa.getParamOrDefault("Num", "1"), sa);
|
||||||
final boolean remember = sa.hasParam("RememberAmass");
|
final boolean remember = sa.hasParam("RememberAmass");
|
||||||
|
|
||||||
|
boolean useZoneTable = true;
|
||||||
|
CardZoneTable triggerList = sa.getChangeZoneTable();
|
||||||
|
if (triggerList == null) {
|
||||||
|
triggerList = new CardZoneTable();
|
||||||
|
useZoneTable = false;
|
||||||
|
}
|
||||||
|
if (sa.hasParam("ChangeZoneTable")) {
|
||||||
|
sa.setChangeZoneTable(triggerList);
|
||||||
|
useZoneTable = true;
|
||||||
|
}
|
||||||
|
|
||||||
// create army token if needed
|
// create army token if needed
|
||||||
if (CardLists.count(activator.getCardsIn(ZoneType.Battlefield), CardPredicates.isType("Army")) == 0) {
|
if (CardLists.count(activator.getCardsIn(ZoneType.Battlefield), CardPredicates.isType("Army")) == 0) {
|
||||||
final String tokenScript = "b_0_0_zombie_army";
|
final String tokenScript = "b_0_0_zombie_army";
|
||||||
@@ -54,9 +66,16 @@ public class AmassEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
// Should this be catching the Card that's returned?
|
// Should this be catching the Card that's returned?
|
||||||
Card c = game.getAction().moveToPlay(tok, sa);
|
Card c = game.getAction().moveToPlay(tok, sa);
|
||||||
|
if (c.getZone() != null) {
|
||||||
|
triggerList.put(ZoneType.None, c.getZone().getZoneType(), c);
|
||||||
|
}
|
||||||
c.updateStateForView();
|
c.updateStateForView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!useZoneTable) {
|
||||||
|
triggerList.triggerChangesZoneAll(game);
|
||||||
|
triggerList.clear();
|
||||||
|
}
|
||||||
game.fireEvent(new GameEventTokenCreated());
|
game.fireEvent(new GameEventTokenCreated());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2093,4 +2093,34 @@ public class GameSimulatorTest extends SimulationTestCase {
|
|||||||
assertEquals(1, numForest);
|
assertEquals(1, numForest);
|
||||||
assertEquals(0, simGame.getPlayers().get(1).getCardsIn(ZoneType.Battlefield).size());
|
assertEquals(0, simGame.getPlayers().get(1).getCardsIn(ZoneType.Battlefield).size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testAmassTrigger() {
|
||||||
|
Game game = initAndCreateGame();
|
||||||
|
Player p = game.getPlayers().get(0);
|
||||||
|
String WCname = "Woodland Champion";
|
||||||
|
addCard(WCname, p);
|
||||||
|
for (int i = 0; i < 5; i++)
|
||||||
|
addCard("Island", p);
|
||||||
|
|
||||||
|
String CardName = "Eternal Skylord";
|
||||||
|
Card c = addCardToZone(CardName, p, ZoneType.Hand);
|
||||||
|
game.getPhaseHandler().devModeSet(PhaseType.MAIN1, p);
|
||||||
|
game.getAction().checkStateEffects(true);
|
||||||
|
|
||||||
|
SpellAbility playSa = c.getSpellAbilities().get(0);
|
||||||
|
playSa.setActivatingPlayer(p);
|
||||||
|
|
||||||
|
GameSimulator sim = createSimulator(game, p);
|
||||||
|
int origScore = sim.getScoreForOrigGame().value;
|
||||||
|
int score = sim.simulateSpellAbility(playSa).value;
|
||||||
|
assertTrue(String.format("score=%d vs. origScore=%d", score, origScore), score > origScore);
|
||||||
|
|
||||||
|
Game simGame = sim.getSimulatedGameState();
|
||||||
|
|
||||||
|
Card simWC = findCardWithName(simGame, WCname);
|
||||||
|
|
||||||
|
assertEquals(1, simWC.getPowerBonusFromCounters());
|
||||||
|
assertEquals(3, simGame.getPlayers().get(0).getCreaturesInPlay().size());
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user