diff --git a/Mage.Sets/src/mage/sets/gatecrash/MurderInvestigation.java b/Mage.Sets/src/mage/sets/gatecrash/MurderInvestigation.java index 7a620867dc5..724a577325e 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/MurderInvestigation.java +++ b/Mage.Sets/src/mage/sets/gatecrash/MurderInvestigation.java @@ -28,10 +28,6 @@ package mage.sets.gatecrash; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Rarity; -import mage.constants.Zone; import mage.abilities.Ability; import mage.abilities.common.DiesAttachedTriggeredAbility; import mage.abilities.dynamicvalue.DynamicValue; @@ -39,9 +35,12 @@ import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; -import mage.game.permanent.token.SoldierToken; import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; @@ -65,7 +64,6 @@ public class MurderInvestigation extends CardImpl { Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); - // When enchanted creature dies, put X 1/1 white Soldier creature tokens onto the battlefield, where X is its power. this.addAbility(new DiesAttachedTriggeredAbility(new CreateTokenEffect(new SoldierToken(), new AttachedPermanentPowerCount()), "enchanted creature")); } diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestPlayerBase.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestPlayerBase.java index fa63d725c85..e4c59450462 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestPlayerBase.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestPlayerBase.java @@ -43,12 +43,12 @@ public abstract class MageTestPlayerBase { protected Pattern pattern = Pattern.compile("([a-zA-Z]*):([\\w]*):([a-zA-Z ,\\-.!'\\d]*):([\\d]*)(:\\{tapped\\})?"); - protected Map> handCards = new HashMap>(); - protected Map> battlefieldCards = new HashMap>(); - protected Map> graveyardCards = new HashMap>(); - protected Map> libraryCards = new HashMap>(); + protected Map> handCards = new HashMap<>(); + protected Map> battlefieldCards = new HashMap<>(); + protected Map> graveyardCards = new HashMap<>(); + protected Map> libraryCards = new HashMap<>(); - protected Map> commands = new HashMap>(); + protected Map> commands = new HashMap<>(); protected TestPlayer playerA; protected TestPlayer playerB; @@ -90,7 +90,7 @@ public abstract class MageTestPlayerBase { * battlefield:ComputerB:Tine Shrike:0 * graveyard:ComputerB:Tine Shrike:1 */ - protected List expectedResults = new ArrayList(); + protected List expectedResults = new ArrayList<>(); protected static final String TESTS_PATH = "tests" + File.separator; @@ -148,8 +148,9 @@ public abstract class MageTestPlayerBase { private static void deleteSavedGames() { File directory = new File("saved/"); - if (!directory.exists()) + if (!directory.exists()) { directory.mkdirs(); + } File[] files = directory.listFiles( new FilenameFilter() { @Override @@ -170,7 +171,9 @@ public abstract class MageTestPlayerBase { try { while (scanner.hasNextLine()) { String line = scanner.nextLine().trim(); - if (line == null || line.isEmpty() || line.startsWith("#")) continue; + if (line == null || line.isEmpty() || line.startsWith("#")) { + continue; + } if (line.startsWith("$include")) { includeFrom(line); continue; @@ -273,7 +276,7 @@ public abstract class MageTestPlayerBase { if (handCards.containsKey(player)) { return handCards.get(player); } - List hand = new ArrayList(); + List hand = new ArrayList<>(); handCards.put(player, hand); return hand; } @@ -282,7 +285,7 @@ public abstract class MageTestPlayerBase { if (graveyardCards.containsKey(player)) { return graveyardCards.get(player); } - List grave = new ArrayList(); + List grave = new ArrayList<>(); graveyardCards.put(player, grave); return grave; } @@ -291,7 +294,7 @@ public abstract class MageTestPlayerBase { if (libraryCards.containsKey(player)) { return libraryCards.get(player); } - List library = new ArrayList(); + List library = new ArrayList<>(); libraryCards.put(player, library); return library; } @@ -300,7 +303,7 @@ public abstract class MageTestPlayerBase { if (battlefieldCards.containsKey(player)) { return battlefieldCards.get(player); } - List battlefield = new ArrayList(); + List battlefield = new ArrayList<>(); battlefieldCards.put(player, battlefield); return battlefield; } @@ -309,7 +312,7 @@ public abstract class MageTestPlayerBase { if (commands.containsKey(player)) { return commands.get(player); } - Map command = new HashMap(); + Map command = new HashMap<>(); commands.put(player, command); return command; } diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java index 43dcec4b9af..6f76a26b7a7 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java @@ -228,6 +228,7 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement /** * Define turn number and step to stop the game on. + * The game stops after executing the step * @param turn * @param step */ diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 958ab77b101..164fc253c5f 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -1100,7 +1100,9 @@ public abstract class GameImpl> implements Game, Serializa } finally { if (top != null) { state.getStack().remove(top); - state.handleSimultaneousEvent(this); + while (state.hasSimultaneousEvents()) { + state.handleSimultaneousEvent(this); + } } } } diff --git a/Mage/src/mage/game/GameOptions.java b/Mage/src/mage/game/GameOptions.java index 85d60e4f0cb..63ba1888368 100644 --- a/Mage/src/mage/game/GameOptions.java +++ b/Mage/src/mage/game/GameOptions.java @@ -11,7 +11,7 @@ import mage.constants.PhaseStep; */ public class GameOptions implements Serializable { - private static GameOptions defInstance = new GameOptions(); + private static final GameOptions defInstance = new GameOptions(); public static GameOptions getDefault() { return defInstance; diff --git a/Mage/src/mage/game/stack/Spell.java b/Mage/src/mage/game/stack/Spell.java index 83cef4d736e..af9589b2f4a 100644 --- a/Mage/src/mage/game/stack/Spell.java +++ b/Mage/src/mage/game/stack/Spell.java @@ -235,7 +235,6 @@ public class Spell> implements StackObject, Card { if (this.getSpellAbility() instanceof BestowAbility) { updateOptionalCosts(0); result = card.putOntoBattlefield(game, fromZone, ability.getId(), controllerId); - game.getState().handleSimultaneousEvent(game); return result; } else { //20091005 - 608.2b @@ -246,7 +245,6 @@ public class Spell> implements StackObject, Card { } else { updateOptionalCosts(0); result = card.putOntoBattlefield(game, fromZone, ability.getId(), controllerId); - game.getState().handleSimultaneousEvent(game); return result; } } diff --git a/Mage/src/mage/game/stack/StackObject.java b/Mage/src/mage/game/stack/StackObject.java index 4aa6b618e80..18ac6e9b3ca 100644 --- a/Mage/src/mage/game/stack/StackObject.java +++ b/Mage/src/mage/game/stack/StackObject.java @@ -28,13 +28,12 @@ package mage.game.stack; +import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.game.Controllable; import mage.game.Game; -import java.util.UUID; - public interface StackObject extends MageObject, Controllable { boolean resolve(Game game); diff --git a/Mage/src/mage/game/turn/Phase.java b/Mage/src/mage/game/turn/Phase.java index 916351fd83e..34fc79967e9 100644 --- a/Mage/src/mage/game/turn/Phase.java +++ b/Mage/src/mage/game/turn/Phase.java @@ -108,12 +108,13 @@ public abstract class Phase> implements Serializable { return false; } currentStep = step; - if (!game.isSimulation() && checkStopOnStepOption(game)) { - return false; - } if (!game.getState().getTurnMods().skipStep(activePlayerId, getStep().getType())) { playStep(game); } + if (!game.isSimulation() && checkStopOnStepOption(game)) { + return false; + } + } if (game.isPaused() || game.gameOver(null)) { return false;