From d6d67b78dbd942bb2517145a50d502b5d212d812 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Sat, 13 Jul 2019 18:46:41 +0400 Subject: [PATCH] * Added London mulligan as default mulligan type for all games (except Canadian Highlander); --- .../client/dialog/TestCardRenderDialog.java | 4 +- .../abilities/other/NaturesWillTest.java | 4 +- .../abilities/other/StormTheVaultTest.java | 4 +- .../test/cards/single/akh/RagsRichesTest.java | 4 +- .../test/multiplayer/BlatantThieveryTest.java | 8 +-- .../test/multiplayer/CreepingDreadTest.java | 63 ++++++++++--------- .../multiplayer/MultiplayerTriggerTest.java | 7 ++- .../org/mage/test/multiplayer/MyriadTest.java | 4 +- .../PlayerDiedStackTargetHandlingTest.java | 8 +-- .../multiplayer/PlayerLeftGameRange1Test.java | 13 ++-- .../PlayerLeftGameRangeAllTest.java | 12 ++-- .../multiplayer/PrivilegedPositionTest.java | 10 +-- .../test/multiplayer/VindictiveLichTest.java | 9 ++- .../mage/test/serverside/PlayGameTest.java | 4 +- .../test/serverside/TestPlayRandomGame.java | 4 +- .../base/CardTestCommander3PlayersFFA.java | 8 +-- .../base/CardTestCommander4Players.java | 4 +- .../base/CardTestCommanderDuelBase.java | 9 ++- .../base/CardTestMultiPlayerBase.java | 4 +- .../CardTestMultiPlayerBaseWithRangeAll.java | 4 +- .../serverside/base/CardTestPlayerBase.java | 13 ++-- .../serverside/base/CardTestPlayerBaseAI.java | 4 +- .../java/org/mage/test/utils/RandomTest.java | 8 +-- .../java/mage/game/mulligan/MulliganType.java | 7 +-- 24 files changed, 109 insertions(+), 110 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/dialog/TestCardRenderDialog.java b/Mage.Client/src/main/java/mage/client/dialog/TestCardRenderDialog.java index 29b37987a66..0ec31e57d67 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/TestCardRenderDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/TestCardRenderDialog.java @@ -22,7 +22,7 @@ import mage.game.command.emblems.AjaniAdversaryOfTyrantsEmblem; import mage.game.command.planes.AkoumPlane; import mage.game.match.MatchType; import mage.game.mulligan.Mulligan; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import mage.game.permanent.PermanentCard; import mage.players.Player; import mage.players.StubPlayer; @@ -113,7 +113,7 @@ public class TestCardRenderDialog extends MageDialog { cardsPanel.cleanUp(); cardsPanel.setCustomRenderMode(comboRenderMode.getSelectedIndex()); - Game game = new TestGame(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, new VancouverMulligan(0), 20); + Game game = new TestGame(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 20); Player player = new StubPlayer("player1", RangeOfInfluence.ALL); Deck deck = new Deck(); game.addPlayer(player, deck); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/NaturesWillTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/NaturesWillTest.java index 3b4b2b2f357..5d17aca1fb0 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/NaturesWillTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/NaturesWillTest.java @@ -7,7 +7,7 @@ import mage.constants.Zone; import mage.game.FreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; @@ -16,7 +16,7 @@ import java.io.FileNotFoundException; public class NaturesWillTest extends CardTestPlayerBase { @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, new VancouverMulligan(0), 20); + Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 20); playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); playerC = createPlayer(game, playerC, "PlayerC"); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/StormTheVaultTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/StormTheVaultTest.java index 287f6828c78..f43cc3b6b52 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/StormTheVaultTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/StormTheVaultTest.java @@ -7,7 +7,7 @@ import mage.constants.Zone; import mage.game.FreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; @@ -16,7 +16,7 @@ import java.io.FileNotFoundException; public class StormTheVaultTest extends CardTestPlayerBase { @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, new VancouverMulligan(0), 20); + Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 20); playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); playerC = createPlayer(game, playerC, "PlayerC"); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/akh/RagsRichesTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/akh/RagsRichesTest.java index f7acc869dea..23683ef3171 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/akh/RagsRichesTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/akh/RagsRichesTest.java @@ -7,7 +7,7 @@ import mage.constants.Zone; import mage.game.FreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.junit.Test; import org.mage.test.serverside.base.CardTestMultiPlayerBase; @@ -19,7 +19,7 @@ import java.io.FileNotFoundException; public class RagsRichesTest extends CardTestMultiPlayerBase { @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new FreeForAll(MultiplayerAttackOption.LEFT, RangeOfInfluence.ALL, new VancouverMulligan(0), 20); + Game game = new FreeForAll(MultiplayerAttackOption.LEFT, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 20); // Player order: A -> D -> C -> B playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); diff --git a/Mage.Tests/src/test/java/org/mage/test/multiplayer/BlatantThieveryTest.java b/Mage.Tests/src/test/java/org/mage/test/multiplayer/BlatantThieveryTest.java index 7bf3411dde4..7fc682e8b6b 100644 --- a/Mage.Tests/src/test/java/org/mage/test/multiplayer/BlatantThieveryTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/multiplayer/BlatantThieveryTest.java @@ -5,7 +5,6 @@ */ package org.mage.test.multiplayer; -import java.io.FileNotFoundException; import mage.constants.MultiplayerAttackOption; import mage.constants.PhaseStep; import mage.constants.RangeOfInfluence; @@ -13,19 +12,20 @@ import mage.constants.Zone; import mage.game.FreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.junit.Test; import org.mage.test.serverside.base.CardTestMultiPlayerBase; +import java.io.FileNotFoundException; + /** - * * @author LevelX2 */ public class BlatantThieveryTest extends CardTestMultiPlayerBase { @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, new VancouverMulligan(0), 20); + Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 20); // Player order: A -> D -> C -> B playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); diff --git a/Mage.Tests/src/test/java/org/mage/test/multiplayer/CreepingDreadTest.java b/Mage.Tests/src/test/java/org/mage/test/multiplayer/CreepingDreadTest.java index 6be02becc88..dae63cf06d1 100644 --- a/Mage.Tests/src/test/java/org/mage/test/multiplayer/CreepingDreadTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/multiplayer/CreepingDreadTest.java @@ -1,6 +1,5 @@ package org.mage.test.multiplayer; -import java.io.FileNotFoundException; import mage.constants.MultiplayerAttackOption; import mage.constants.PhaseStep; import mage.constants.RangeOfInfluence; @@ -8,23 +7,25 @@ import mage.constants.Zone; import mage.game.FreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.junit.Test; import org.mage.test.serverside.base.CardTestMultiPlayerBase; +import java.io.FileNotFoundException; + /** * Enchantment {3}{B} - * At the beginning of your upkeep, each player discards a card. - * Each opponent who discarded a card that shares a card type with the card you discarded loses 3 life. + * At the beginning of your upkeep, each player discards a card. + * Each opponent who discarded a card that shares a card type with the card you discarded loses 3 life. * (Players reveal the discarded cards simultaneously.) - * + * * @author escplan9 (Derek Monturo - dmontur1 at gmail dot com */ public class CreepingDreadTest extends CardTestMultiPlayerBase { - + @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, new VancouverMulligan(0), 40); + Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 40); // Player order: A -> D -> C -> B playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); @@ -32,27 +33,27 @@ public class CreepingDreadTest extends CardTestMultiPlayerBase { playerD = createPlayer(game, playerD, "PlayerD"); return game; } - + /** * Discard creature and all opponents who discard creature lose 3 life */ @Test public void basicTest() { - + addCard(Zone.BATTLEFIELD, playerA, "Creeping Dread"); addCard(Zone.HAND, playerA, "Merfolk Looter"); addCard(Zone.HAND, playerB, "Hill Giant"); addCard(Zone.HAND, playerC, "Elite Vanguard"); addCard(Zone.HAND, playerD, "Bone Saw"); - + setChoice(playerA, "Merfolk Looter"); setChoice(playerB, "Hill Giant"); setChoice(playerC, "Elite Vanguard"); setChoice(playerD, "Bone Saw"); - + setStopAt(1, PhaseStep.DRAW); execute(); - + assertGraveyardCount(playerA, "Merfolk Looter", 1); assertGraveyardCount(playerB, "Hill Giant", 1); assertGraveyardCount(playerC, "Elite Vanguard", 1); @@ -63,27 +64,27 @@ public class CreepingDreadTest extends CardTestMultiPlayerBase { assertLife(playerC, 37); assertLife(playerD, 40); // no match } - + /** * Discard Artifact Creature and all opponents who discard either an Artifact or Creature lose 3 life */ @Test public void twoTypesTest() { - + addCard(Zone.BATTLEFIELD, playerA, "Creeping Dread"); addCard(Zone.HAND, playerA, "Bronze Sable"); addCard(Zone.HAND, playerB, "Hill Giant"); addCard(Zone.HAND, playerC, "Swamp"); addCard(Zone.HAND, playerD, "Bone Saw"); - + setChoice(playerA, "Bronze Sable"); setChoice(playerB, "Hill Giant"); setChoice(playerC, "Swamp"); setChoice(playerD, "Bone Saw"); - + setStopAt(1, PhaseStep.DRAW); execute(); - + assertGraveyardCount(playerA, "Bronze Sable", 1); assertGraveyardCount(playerB, "Hill Giant", 1); assertGraveyardCount(playerC, "Swamp", 1); @@ -94,63 +95,63 @@ public class CreepingDreadTest extends CardTestMultiPlayerBase { assertLife(playerC, 40); // neither assertLife(playerD, 37); // artifact } - + /** * Discard enchantment and no opponents discard an enchantment, so no one loses life */ @Test public void noMatchesTest() { - + addCard(Zone.BATTLEFIELD, playerA, "Creeping Dread"); addCard(Zone.HAND, playerA, "Moat"); // enchantment addCard(Zone.HAND, playerB, "Hill Giant"); addCard(Zone.HAND, playerC, "Swamp"); addCard(Zone.HAND, playerD, "Bone Saw"); - + setChoice(playerA, "Moat"); setChoice(playerB, "Hill Giant"); setChoice(playerC, "Swamp"); setChoice(playerD, "Bone Saw"); - + setStopAt(1, PhaseStep.DRAW); execute(); - + assertGraveyardCount(playerA, "Moat", 1); assertGraveyardCount(playerB, "Hill Giant", 1); assertGraveyardCount(playerC, "Swamp", 1); assertGraveyardCount(playerD, "Bone Saw", 1); assertLife(playerA, 40); // no matches - assertLife(playerB, 40); + assertLife(playerB, 40); assertLife(playerC, 40); - assertLife(playerD, 40); + assertLife(playerD, 40); } - + /** * Upkeep player has no cards to discard, so no matches */ @Test public void noDiscardNoMatches() { - + addCard(Zone.BATTLEFIELD, playerA, "Creeping Dread"); addCard(Zone.HAND, playerB, "Hill Giant"); addCard(Zone.HAND, playerC, "Swamp"); addCard(Zone.HAND, playerD, "Bone Saw"); - + setChoice(playerB, "Hill Giant"); setChoice(playerC, "Swamp"); setChoice(playerD, "Bone Saw"); - + setStopAt(1, PhaseStep.DRAW); execute(); - + assertGraveyardCount(playerB, "Hill Giant", 1); assertGraveyardCount(playerC, "Swamp", 1); assertGraveyardCount(playerD, "Bone Saw", 1); assertLife(playerA, 40); // no matches - assertLife(playerB, 40); + assertLife(playerB, 40); assertLife(playerC, 40); - assertLife(playerD, 40); + assertLife(playerD, 40); } } diff --git a/Mage.Tests/src/test/java/org/mage/test/multiplayer/MultiplayerTriggerTest.java b/Mage.Tests/src/test/java/org/mage/test/multiplayer/MultiplayerTriggerTest.java index fa693669c2a..6c650b44da1 100644 --- a/Mage.Tests/src/test/java/org/mage/test/multiplayer/MultiplayerTriggerTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/multiplayer/MultiplayerTriggerTest.java @@ -1,6 +1,5 @@ package org.mage.test.multiplayer; -import java.io.FileNotFoundException; import mage.constants.MultiplayerAttackOption; import mage.constants.PhaseStep; import mage.constants.RangeOfInfluence; @@ -8,15 +7,17 @@ import mage.constants.Zone; import mage.game.FreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.junit.Test; import org.mage.test.serverside.base.CardTestMultiPlayerBase; +import java.io.FileNotFoundException; + public class MultiplayerTriggerTest extends CardTestMultiPlayerBase { @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, new VancouverMulligan(0), 40); + Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 40); // Player order: A -> D -> C -> B playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); diff --git a/Mage.Tests/src/test/java/org/mage/test/multiplayer/MyriadTest.java b/Mage.Tests/src/test/java/org/mage/test/multiplayer/MyriadTest.java index e4e420112a3..3a4f61bd0e3 100644 --- a/Mage.Tests/src/test/java/org/mage/test/multiplayer/MyriadTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/multiplayer/MyriadTest.java @@ -7,7 +7,7 @@ import mage.constants.Zone; import mage.game.FreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.junit.Test; import org.mage.test.serverside.base.CardTestMultiPlayerBase; @@ -20,7 +20,7 @@ public class MyriadTest extends CardTestMultiPlayerBase { @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, new VancouverMulligan(0), 40); + Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 40); // Player order: A -> D -> C -> B playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); diff --git a/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayerDiedStackTargetHandlingTest.java b/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayerDiedStackTargetHandlingTest.java index 505351f83b6..1e0d42917ca 100644 --- a/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayerDiedStackTargetHandlingTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayerDiedStackTargetHandlingTest.java @@ -5,7 +5,6 @@ */ package org.mage.test.multiplayer; -import java.io.FileNotFoundException; import mage.constants.MultiplayerAttackOption; import mage.constants.PhaseStep; import mage.constants.RangeOfInfluence; @@ -13,13 +12,14 @@ import mage.constants.Zone; import mage.game.FreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.junit.Assert; import org.junit.Test; import org.mage.test.serverside.base.CardTestMultiPlayerBase; +import java.io.FileNotFoundException; + /** - * * @author LevelX2 */ public class PlayerDiedStackTargetHandlingTest extends CardTestMultiPlayerBase { @@ -27,7 +27,7 @@ public class PlayerDiedStackTargetHandlingTest extends CardTestMultiPlayerBase { @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { // Start Life = 2 - Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ONE, new VancouverMulligan(0), 3); + Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ONE, MulliganType.GAME_DEFAULT.getMulligan(0), 3); // Player order: A -> D -> C -> B playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); diff --git a/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayerLeftGameRange1Test.java b/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayerLeftGameRange1Test.java index df74f388754..4f8a550c43a 100644 --- a/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayerLeftGameRange1Test.java +++ b/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayerLeftGameRange1Test.java @@ -1,7 +1,5 @@ - package org.mage.test.multiplayer; -import java.io.FileNotFoundException; import mage.constants.MultiplayerAttackOption; import mage.constants.PhaseStep; import mage.constants.RangeOfInfluence; @@ -10,14 +8,15 @@ import mage.counters.CounterType; import mage.game.FreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import mage.game.permanent.Permanent; import org.junit.Assert; import org.junit.Test; import org.mage.test.serverside.base.CardTestMultiPlayerBase; +import java.io.FileNotFoundException; + /** - * * @author LevelX2 */ public class PlayerLeftGameRange1Test extends CardTestMultiPlayerBase { @@ -25,7 +24,7 @@ public class PlayerLeftGameRange1Test extends CardTestMultiPlayerBase { @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { // Start Life = 2 - Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ONE, new VancouverMulligan(0), 2); + Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ONE, MulliganType.GAME_DEFAULT.getMulligan(0), 2); // Player order: A -> D -> C -> B playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); @@ -131,7 +130,7 @@ public class PlayerLeftGameRange1Test extends CardTestMultiPlayerBase { * player concedes the game and removes the Planeswalker. Once it becomes an * opponent of the original player's turn and that opponent plays a spell, * Xmage throws an error and rollsback the turn. - * + *

* I don't have the actual error report on my due to negligence, but what I * can recollect is that the error message was along the lines of "The * emblem cannot find the original source. This turn will be rolled back". @@ -278,7 +277,7 @@ public class PlayerLeftGameRange1Test extends CardTestMultiPlayerBase { /** * Pithing Needle keeps the named card's abilities disabled even after the * player controlling the Needle loses the game. - * + *

* I saw it happen during a Commander game. A player cast Pithing Needle * targeting my Proteus Staff. After I killed him, I still couldn't activate * the Staff. diff --git a/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayerLeftGameRangeAllTest.java b/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayerLeftGameRangeAllTest.java index c1c1e1d11f1..caef3748b3e 100644 --- a/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayerLeftGameRangeAllTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/multiplayer/PlayerLeftGameRangeAllTest.java @@ -1,6 +1,5 @@ package org.mage.test.multiplayer; -import java.io.FileNotFoundException; import mage.constants.MultiplayerAttackOption; import mage.constants.PhaseStep; import mage.constants.RangeOfInfluence; @@ -9,13 +8,14 @@ import mage.counters.CounterType; import mage.game.FreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.junit.Assert; import org.junit.Test; import org.mage.test.serverside.base.CardTestMultiPlayerBase; +import java.io.FileNotFoundException; + /** - * * @author LevelX2 */ public class PlayerLeftGameRangeAllTest extends CardTestMultiPlayerBase { @@ -23,7 +23,7 @@ public class PlayerLeftGameRangeAllTest extends CardTestMultiPlayerBase { @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { // Start Life = 2 - Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, new VancouverMulligan(0), 2); + Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 2); // Player order: A -> D -> C -> B playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); @@ -129,7 +129,7 @@ public class PlayerLeftGameRangeAllTest extends CardTestMultiPlayerBase { * player concedes the game and removes the Planeswalker. Once it becomes an * opponent of the original player's turn and that opponent plays a spell, * Xmage throws an error and rollsback the turn. - * + *

* I don't have the actual error report on my due to negligence, but what I * can recollect is that the error message was along the lines of "The * emblem cannot find the original source. This turn will be rolled back". @@ -283,7 +283,7 @@ public class PlayerLeftGameRangeAllTest extends CardTestMultiPlayerBase { } /** - * * 11/4/2015: In a multiplayer game, if Grasp of Fate's owner leaves the + * * 11/4/2015: In a multiplayer game, if Grasp of Fate's owner leaves the * game, the exiled cards will return to the battlefield. Because the * one-shot effect that returns the cards isn't an ability that goes on the * stack, it won't cease to exist along with the leaving player's spells and diff --git a/Mage.Tests/src/test/java/org/mage/test/multiplayer/PrivilegedPositionTest.java b/Mage.Tests/src/test/java/org/mage/test/multiplayer/PrivilegedPositionTest.java index c404a37a384..ccd36d380c9 100644 --- a/Mage.Tests/src/test/java/org/mage/test/multiplayer/PrivilegedPositionTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/multiplayer/PrivilegedPositionTest.java @@ -9,7 +9,7 @@ import mage.counters.CounterType; import mage.game.FreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.junit.Test; import org.mage.test.serverside.base.CardTestMultiPlayerBase; @@ -22,7 +22,7 @@ public class PrivilegedPositionTest extends CardTestMultiPlayerBase { @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, new VancouverMulligan(0), 40); + Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 40); // Player order: A -> D -> C -> B playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); @@ -32,9 +32,9 @@ public class PrivilegedPositionTest extends CardTestMultiPlayerBase { } /* - * Reported bug: see issue #3328 - * Players unable to attack Planeswalker with Privileged Position on battlefield. - */ + * Reported bug: see issue #3328 + * Players unable to attack Planeswalker with Privileged Position on battlefield. + */ @Test public void testAttackPlaneswalkerWithHexproofPrivilegedPosition() { diff --git a/Mage.Tests/src/test/java/org/mage/test/multiplayer/VindictiveLichTest.java b/Mage.Tests/src/test/java/org/mage/test/multiplayer/VindictiveLichTest.java index ae115daaa27..36c8948973c 100644 --- a/Mage.Tests/src/test/java/org/mage/test/multiplayer/VindictiveLichTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/multiplayer/VindictiveLichTest.java @@ -1,7 +1,5 @@ - package org.mage.test.multiplayer; -import java.io.FileNotFoundException; import mage.constants.MultiplayerAttackOption; import mage.constants.PhaseStep; import mage.constants.RangeOfInfluence; @@ -9,19 +7,20 @@ import mage.constants.Zone; import mage.game.FreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.junit.Test; import org.mage.test.serverside.base.CardTestMultiPlayerBase; +import java.io.FileNotFoundException; + /** - * * @author LevelX2 */ public class VindictiveLichTest extends CardTestMultiPlayerBase { @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, new VancouverMulligan(0), 40); + Game game = new FreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 40); // Player order: A -> D -> C -> B playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java b/Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java index 77f8e4aaad8..519e8861b5c 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java @@ -10,7 +10,7 @@ import mage.game.Game; import mage.game.GameException; import mage.game.GameOptions; import mage.game.TwoPlayerDuel; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import mage.player.ai.ComputerPlayer; import mage.players.Player; import mage.players.PlayerType; @@ -36,7 +36,7 @@ public class PlayGameTest extends MageTestBase { @Ignore @Test public void playOneGame() throws GameException, FileNotFoundException, IllegalArgumentException { - Game game = new TwoPlayerDuel(MultiplayerAttackOption.LEFT, RangeOfInfluence.ALL, new VancouverMulligan(0), 20); + Game game = new TwoPlayerDuel(MultiplayerAttackOption.LEFT, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 20); Player computerA = createPlayer("ComputerA", PlayerType.COMPUTER_MINIMAX_HYBRID); // Player playerA = createPlayer("ComputerA", "Computer - mad"); diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/TestPlayRandomGame.java b/Mage.Tests/src/test/java/org/mage/test/serverside/TestPlayRandomGame.java index 3d51dff3bb3..dee44397598 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/TestPlayRandomGame.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/TestPlayRandomGame.java @@ -10,7 +10,7 @@ import mage.game.Game; import mage.game.GameException; import mage.game.GameOptions; import mage.game.TwoPlayerDuel; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import mage.player.ai.ComputerPlayer; import mage.players.Player; import mage.util.RandomUtil; @@ -42,7 +42,7 @@ public class TestPlayRandomGame extends MageTestBase { } private void playOneGame() throws GameException, FileNotFoundException, IllegalArgumentException { - Game game = new TwoPlayerDuel(MultiplayerAttackOption.LEFT, RangeOfInfluence.ALL, new VancouverMulligan(0), 20); + Game game = new TwoPlayerDuel(MultiplayerAttackOption.LEFT, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 20); Player computerA = createRandomPlayer("ComputerA"); Deck deck = generateRandomDeck(); diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestCommander3PlayersFFA.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestCommander3PlayersFFA.java index d259dd05ac9..d06c9c2789e 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestCommander3PlayersFFA.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestCommander3PlayersFFA.java @@ -1,16 +1,16 @@ package org.mage.test.serverside.base; -import java.io.FileNotFoundException; import mage.constants.MultiplayerAttackOption; import mage.constants.RangeOfInfluence; import mage.game.CommanderFreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.mage.test.serverside.base.impl.CardTestPlayerAPIImpl; +import java.io.FileNotFoundException; + /** - * * @author LevelX2 */ public abstract class CardTestCommander3PlayersFFA extends CardTestPlayerAPIImpl { @@ -24,7 +24,7 @@ public abstract class CardTestCommander3PlayersFFA extends CardTestPlayerAPIImpl @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new CommanderFreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ONE, new VancouverMulligan(0), 40); + Game game = new CommanderFreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ONE, MulliganType.GAME_DEFAULT.getMulligan(0), 40); playerA = createPlayer(game, playerA, "PlayerA", deckNameA); playerB = createPlayer(game, playerB, "PlayerB", deckNameB); playerC = createPlayer(game, playerC, "PlayerC", deckNameC); diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestCommander4Players.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestCommander4Players.java index a122945927a..ec0230fc657 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestCommander4Players.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestCommander4Players.java @@ -5,7 +5,7 @@ import mage.constants.RangeOfInfluence; import mage.game.CommanderFreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.mage.test.serverside.base.impl.CardTestPlayerAPIImpl; import java.io.FileNotFoundException; @@ -17,7 +17,7 @@ public abstract class CardTestCommander4Players extends CardTestPlayerAPIImpl { @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new CommanderFreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, new VancouverMulligan(0), 20); + Game game = new CommanderFreeForAll(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 20); // Player order: A -> D -> C -> B playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestCommanderDuelBase.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestCommanderDuelBase.java index 3a9847db682..6631e73d5ea 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestCommanderDuelBase.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestCommanderDuelBase.java @@ -1,17 +1,16 @@ - package org.mage.test.serverside.base; -import java.io.FileNotFoundException; import mage.constants.MultiplayerAttackOption; import mage.constants.RangeOfInfluence; import mage.game.CommanderDuel; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.mage.test.serverside.base.impl.CardTestPlayerAPIImpl; +import java.io.FileNotFoundException; + /** - * * @author LevelX2 */ public abstract class CardTestCommanderDuelBase extends CardTestPlayerAPIImpl { @@ -24,7 +23,7 @@ public abstract class CardTestCommanderDuelBase extends CardTestPlayerAPIImpl { @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new CommanderDuel(MultiplayerAttackOption.LEFT, RangeOfInfluence.ONE, new VancouverMulligan(0), 40); + Game game = new CommanderDuel(MultiplayerAttackOption.LEFT, RangeOfInfluence.ONE, MulliganType.GAME_DEFAULT.getMulligan(0), 40); playerA = createPlayer(game, playerA, "PlayerA", deckNameA); playerB = createPlayer(game, playerB, "PlayerB", deckNameB); diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestMultiPlayerBase.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestMultiPlayerBase.java index e2ea6d4ad67..87b2a3d8e01 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestMultiPlayerBase.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestMultiPlayerBase.java @@ -5,7 +5,7 @@ import mage.constants.RangeOfInfluence; import mage.game.FreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.mage.test.serverside.base.impl.CardTestPlayerAPIImpl; import java.io.FileNotFoundException; @@ -21,7 +21,7 @@ public abstract class CardTestMultiPlayerBase extends CardTestPlayerAPIImpl { @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new FreeForAll(MultiplayerAttackOption.LEFT, RangeOfInfluence.ONE, new VancouverMulligan(0), 20); + Game game = new FreeForAll(MultiplayerAttackOption.LEFT, RangeOfInfluence.ONE, MulliganType.GAME_DEFAULT.getMulligan(0), 20); // Player order: A -> D -> C -> B playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestMultiPlayerBaseWithRangeAll.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestMultiPlayerBaseWithRangeAll.java index abf2e9059fd..24ec672d381 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestMultiPlayerBaseWithRangeAll.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestMultiPlayerBaseWithRangeAll.java @@ -5,7 +5,7 @@ import mage.constants.RangeOfInfluence; import mage.game.FreeForAll; import mage.game.Game; import mage.game.GameException; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.mage.test.serverside.base.impl.CardTestPlayerAPIImpl; import java.io.FileNotFoundException; @@ -17,7 +17,7 @@ public abstract class CardTestMultiPlayerBaseWithRangeAll extends CardTestPlayer @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new FreeForAll(MultiplayerAttackOption.LEFT, RangeOfInfluence.ALL, new VancouverMulligan(0), 20); + Game game = new FreeForAll(MultiplayerAttackOption.LEFT, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 20); // Player order: A -> D -> C -> B playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java index 6abbbf6dc76..484c6e90650 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java @@ -1,33 +1,34 @@ package org.mage.test.serverside.base; -import java.io.FileNotFoundException; import mage.constants.MultiplayerAttackOption; import mage.constants.RangeOfInfluence; import mage.game.Game; import mage.game.GameException; import mage.game.TwoPlayerDuel; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.mage.test.serverside.base.impl.CardTestPlayerAPIImpl; +import java.io.FileNotFoundException; + /** * Base class for testing single cards and effects. * * @author ayratn */ public abstract class CardTestPlayerBase extends CardTestPlayerAPIImpl { - + public CardTestPlayerBase() { deckNameA = "RB Aggro.dck"; deckNameB = "RB Aggro.dck"; } - + @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new TwoPlayerDuel(MultiplayerAttackOption.LEFT, RangeOfInfluence.ONE, new VancouverMulligan(0), 20); + Game game = new TwoPlayerDuel(MultiplayerAttackOption.LEFT, RangeOfInfluence.ONE, MulliganType.GAME_DEFAULT.getMulligan(0), 20); playerA = createPlayer(game, playerA, "PlayerA", deckNameA); playerB = createPlayer(game, playerB, "PlayerB", deckNameB); return game; - } + } } diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBaseAI.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBaseAI.java index 4d6e2f4d781..5f1e9d2f9d9 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBaseAI.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBaseAI.java @@ -5,7 +5,7 @@ import mage.constants.RangeOfInfluence; import mage.game.Game; import mage.game.GameException; import mage.game.TwoPlayerDuel; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import org.mage.test.player.TestComputerPlayer7; import org.mage.test.player.TestPlayer; import org.mage.test.serverside.base.impl.CardTestPlayerAPIImpl; @@ -21,7 +21,7 @@ public abstract class CardTestPlayerBaseAI extends CardTestPlayerAPIImpl { @Override protected Game createNewGameAndPlayers() throws GameException, FileNotFoundException { - Game game = new TwoPlayerDuel(MultiplayerAttackOption.LEFT, RangeOfInfluence.ONE, new VancouverMulligan(0), 20); + Game game = new TwoPlayerDuel(MultiplayerAttackOption.LEFT, RangeOfInfluence.ONE, MulliganType.GAME_DEFAULT.getMulligan(0), 20); playerA = createPlayer(game, playerA, "PlayerA"); playerB = createPlayer(game, playerB, "PlayerB"); diff --git a/Mage.Tests/src/test/java/org/mage/test/utils/RandomTest.java b/Mage.Tests/src/test/java/org/mage/test/utils/RandomTest.java index 6667339b6a1..0f98b73aa01 100644 --- a/Mage.Tests/src/test/java/org/mage/test/utils/RandomTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/utils/RandomTest.java @@ -7,7 +7,7 @@ import mage.constants.PlanarDieRoll; import mage.constants.RangeOfInfluence; import mage.game.Game; import mage.game.TwoPlayerDuel; -import mage.game.mulligan.VancouverMulligan; +import mage.game.mulligan.MulliganType; import mage.player.human.HumanPlayer; import mage.players.Player; import mage.util.RandomUtil; @@ -93,7 +93,7 @@ public class RandomTest { String dest = "f:/test/xmage/"; //RandomUtil.setSeed(123); Player player = new HumanPlayer("random", RangeOfInfluence.ALL, 1); - Game game = new TwoPlayerDuel(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, new VancouverMulligan(0), 50); + Game game = new TwoPlayerDuel(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 50); int height = 512; int weight = 512; @@ -116,7 +116,7 @@ public class RandomTest { String dest = "f:/test/xmage/"; //RandomUtil.setSeed(123); Player player = new HumanPlayer("random", RangeOfInfluence.ALL, 1); - Game game = new TwoPlayerDuel(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, new VancouverMulligan(0), 50); + Game game = new TwoPlayerDuel(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 50); int height = 512; int weight = 512; @@ -141,7 +141,7 @@ public class RandomTest { String dest = "f:/test/xmage/"; //RandomUtil.setSeed(123); Player player = new HumanPlayer("random", RangeOfInfluence.ALL, 1); - Game game = new TwoPlayerDuel(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, new VancouverMulligan(0), 50); + Game game = new TwoPlayerDuel(MultiplayerAttackOption.MULTIPLE, RangeOfInfluence.ALL, MulliganType.GAME_DEFAULT.getMulligan(0), 50); Deck deck = DeckTestUtils.buildRandomDeck("WGUBR", false, "GRN"); player.getLibrary().addAll(deck.getCards(), game); diff --git a/Mage/src/main/java/mage/game/mulligan/MulliganType.java b/Mage/src/main/java/mage/game/mulligan/MulliganType.java index 568abff45ec..a22394d3944 100644 --- a/Mage/src/main/java/mage/game/mulligan/MulliganType.java +++ b/Mage/src/main/java/mage/game/mulligan/MulliganType.java @@ -22,11 +22,11 @@ public enum MulliganType { return new ParisMulligan(freeMulligans); case CANADIAN_HIGHLANDER: return new CanadianHighlanderMulligan(freeMulligans); - case LONDON: - return new LondonMulligan(freeMulligans); - default: case VANCOUVER: return new VancouverMulligan(freeMulligans); + default: + case LONDON: + return new LondonMulligan(freeMulligans); } } @@ -48,7 +48,6 @@ public enum MulliganType { return res; } - public MulliganType orDefault(MulliganType defaultMulligan) { if (this == GAME_DEFAULT) { return defaultMulligan;