mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 03:08:02 +00:00
Fix ETB effects not triggering during simulation and add a test.
This commit is contained in:
@@ -94,6 +94,7 @@ public class GameCopier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void copyGameState(Game newGame) {
|
private void copyGameState(Game newGame) {
|
||||||
|
newGame.setAge(origGame.getAge());
|
||||||
for (ZoneType zone : ZONES) {
|
for (ZoneType zone : ZONES) {
|
||||||
for (Card card : origGame.getCardsIn(zone)) {
|
for (Card card : origGame.getCardsIn(zone)) {
|
||||||
addCard(newGame, zone, card);
|
addCard(newGame, zone, card);
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import forge.ai.LobbyPlayerAi;
|
|||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
import forge.game.GameRules;
|
import forge.game.GameRules;
|
||||||
|
import forge.game.GameStage;
|
||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
import forge.game.Match;
|
import forge.game.Match;
|
||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
@@ -33,6 +34,7 @@ public class GameSimulatorTest extends TestCase {
|
|||||||
GameRules rules = new GameRules(GameType.Constructed);
|
GameRules rules = new GameRules(GameType.Constructed);
|
||||||
Match match = new Match(rules, players);
|
Match match = new Match(rules, players);
|
||||||
Game game = new Game(players, rules, match);
|
Game game = new Game(players, rules, match);
|
||||||
|
game.setAge(GameStage.Play);
|
||||||
|
|
||||||
if (!initialized) {
|
if (!initialized) {
|
||||||
GuiBase.setInterface(new GuiDesktop());
|
GuiBase.setInterface(new GuiDesktop());
|
||||||
@@ -172,4 +174,30 @@ public class GameSimulatorTest extends TestCase {
|
|||||||
Card bearCopy = findCardWithName(simGame, bearCardName);
|
Card bearCopy = findCardWithName(simGame, bearCardName);
|
||||||
assertEquals(1, bearCopy.getAmountOfKeyword("Lifelink"));
|
assertEquals(1, bearCopy.getAmountOfKeyword("Lifelink"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testEtbTriggers() {
|
||||||
|
Game game = initAndCreateGame();
|
||||||
|
Player p = game.getPlayers().get(1);
|
||||||
|
addCard("Black Knight", p);
|
||||||
|
for (int i = 0; i < 5; i++)
|
||||||
|
addCard("Swamp", p);
|
||||||
|
|
||||||
|
String merchantCardName = "Gray Merchant of Asphodel";
|
||||||
|
IPaperCard paperCard = FModel.getMagicDb().getCommonCards().getCard(merchantCardName);
|
||||||
|
Card c = Card.fromPaperCard(paperCard, p);
|
||||||
|
p.getZone(ZoneType.Hand).add(c);
|
||||||
|
game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p);
|
||||||
|
game.getAction().checkStateEffects(true);
|
||||||
|
|
||||||
|
SpellAbility playMerchantSa = c.getSpellAbilities().get(0);
|
||||||
|
playMerchantSa.setActivatingPlayer(p);
|
||||||
|
|
||||||
|
GameSimulator sim = new GameSimulator(game);
|
||||||
|
int origScore = sim.getScoreForOrigGame();
|
||||||
|
int score = sim.simulateSpellAbility(playMerchantSa);
|
||||||
|
assertTrue(String.format("score=%d vs. origScore=%d", score, origScore), score > origScore);
|
||||||
|
Game simGame = sim.getSimulatedGameState();
|
||||||
|
assertEquals(24, simGame.getPlayers().get(1).getLife());
|
||||||
|
assertEquals(16, simGame.getPlayers().get(0).getLife());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user