mirror of
https://github.com/magefree/mage.git
synced 2026-01-10 04:42:07 -08:00
parent
329f7fd609
commit
166d898168
2 changed files with 56 additions and 14 deletions
|
|
@ -1,8 +1,8 @@
|
|||
|
||||
package org.mage.test.rollback;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
|
|
@ -74,4 +74,54 @@ public class DemonicPactTest extends CardTestPlayerBase {
|
|||
assertLife(playerB, 16);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Rollback problem with Pact of Negation etc [cards] #4659
|
||||
*
|
||||
* Potential bug here for [Pact of Negation] and similar cards with 0 cost
|
||||
* and demand to pay or lose the next turn.
|
||||
*
|
||||
* So can you check the following scenario where I think the game is buggy:
|
||||
* an opponent casts pact of negation on my turn, his next turn he requests
|
||||
* a rollback to beginning of his turn -- bingo I'm a winner and he loses
|
||||
* the game. The log says I'm the winner and the opponent lost and that is
|
||||
* immediately after rollback request.
|
||||
*/
|
||||
|
||||
@Test
|
||||
public void testPactOfNegationRollback() {
|
||||
addCard(Zone.HAND, playerA, "Silvercoat Lion", 1);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Plains", 2);
|
||||
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Island", 5);
|
||||
// Counter target spell.
|
||||
// At the beginning of your next upkeep, pay {3}{U}{U}. If you don't, you lose the game.
|
||||
addCard(Zone.HAND, playerB, "Pact of Negation"); // Instant {0}
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Silvercoat Lion");
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, "Pact of Negation", "Silvercoat Lion", "Silvercoat Lion");
|
||||
|
||||
setChoice(playerB, "Yes");
|
||||
|
||||
rollbackTurns(2, PhaseStep.PRECOMBAT_MAIN, playerB, 0);
|
||||
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(2, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertAllCommandsUsed();
|
||||
|
||||
|
||||
assertGraveyardCount(playerA, "Silvercoat Lion", 1);
|
||||
assertGraveyardCount(playerB, "Pact of Negation", 1);
|
||||
|
||||
Assert.assertTrue("Player A is still in game", playerA.isInGame());
|
||||
Assert.assertTrue("Player B is still in game", playerB.isInGame());
|
||||
|
||||
assertTappedCount("Island", true, 5);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue