diff --git a/forge-game/src/main/java/forge/game/trigger/Trigger.java b/forge-game/src/main/java/forge/game/trigger/Trigger.java index ddf2a0b02e2..50b22760d90 100644 --- a/forge-game/src/main/java/forge/game/trigger/Trigger.java +++ b/forge-game/src/main/java/forge/game/trigger/Trigger.java @@ -264,6 +264,13 @@ public abstract class Trigger extends TriggerReplacementBase { } } + if (this.mapParams.containsKey("TurnCount")) { + int turn = Integer.parseInt(this.mapParams.get("TurnCount")); + if (phaseHandler.getTurn() != turn) { + return false; + } + } + return true; } /** diff --git a/forge-gui/src/main/java/forge/puzzle/Puzzle.java b/forge-gui/src/main/java/forge/puzzle/Puzzle.java index 6d550b87b4b..4bca5845607 100644 --- a/forge-gui/src/main/java/forge/puzzle/Puzzle.java +++ b/forge-gui/src/main/java/forge/puzzle/Puzzle.java @@ -80,6 +80,12 @@ public class Puzzle extends GameState implements InventoryItem, Comparable { return FModel.getMagicDb().getCommonCards().getCard(cardName); } + public void setupMaxPlayerHandSize(Game game, int maxHandSize) { + for(Player p : game.getPlayers()) { + p.setMaxHandSize(maxHandSize); + } + } + public void addGoalEnforcement(Game game) { Player human = null; for(Player p : game.getPlayers()) { @@ -96,21 +102,21 @@ public class Puzzle extends GameState implements InventoryItem, Comparable { goalCard.addType("Effect"); goalCard.setOracleText(getGoalDescription()); - { - final String loseTrig = "Mode$ Phase | Phase$ Cleanup | TriggerZones$ Command | Static$ True | " + - "ValidPlayer$ You | TriggerDescription$ At the beginning of your cleanup step, you lose the game."; - final String loseEff = "DB$ LosesGame | Defined$ You"; + final String loseTrig = "Mode$ Phase | Phase$ Cleanup | TriggerZones$ Command | Static$ True | " + + "TurnCount$ " + turns + " | TriggerDescription$ At the beginning of your cleanup step, you lose the game."; + final String loseEff = "DB$ LosesGame | Defined$ You"; - final Trigger loseTrigger = TriggerHandler.parseTrigger(loseTrig, goalCard, true); + final Trigger loseTrigger = TriggerHandler.parseTrigger(loseTrig, goalCard, true); + + loseTrigger.setOverridingAbility(AbilityFactory.getAbility(loseEff, goalCard)); + goalCard.addTrigger(loseTrigger); - loseTrigger.setOverridingAbility(AbilityFactory.getAbility(loseEff, goalCard)); - goalCard.addTrigger(loseTrigger); - } human.getZone(ZoneType.Command).add(goalCard); } @Override protected void applyGameOnThread(final Game game) { + setupMaxPlayerHandSize(game, 7); super.applyGameOnThread(game); addGoalEnforcement(game); }