diff --git a/forge-game/src/main/java/forge/game/zone/Zone.java b/forge-game/src/main/java/forge/game/zone/Zone.java index 6e887369fd2..35f9f785410 100644 --- a/forge-game/src/main/java/forge/game/zone/Zone.java +++ b/forge-game/src/main/java/forge/game/zone/Zone.java @@ -77,7 +77,7 @@ public class Zone implements java.io.Serializable, Iterable { } public final void add(final Card c, final Integer index) { - add(c, null, null); + add(c, index, null); } public void add(final Card c, final Integer index, final Card latestState) { diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 4f12d185493..ad37ec775f2 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -1937,6 +1937,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont private SpellAbility lastAddedSA; private boolean lastTrigs; private boolean lastSummoningSickness; + private boolean lastTopOfTheLibrary; private DevModeCheats() { } @@ -2347,9 +2348,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont game.getAction().invoke(new Runnable() { @Override public void run() { - if (targetZone != ZoneType.Battlefield) { - game.getAction().moveTo(targetZone, forgeCard, null); - } else { + if (targetZone == ZoneType.Battlefield) { if (noTriggers) { if (forgeCard.isPermanent() && !forgeCard.isAura()) { if (forgeCard.isCreature()) { @@ -2405,6 +2404,18 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont // playSa could fire some triggers game.getStack().addAllTriggeredAbilitiesToStack(); } + } else if (targetZone == ZoneType.Library) { + if (!repeatLast) { + lastTopOfTheLibrary = getGui().confirm(forgeCard.getView(), + TextUtil.concatWithSpace("Should", forgeCard.toString(), "be added to the top or to the bottom of the library?"), true, Arrays.asList("Top", "Bottom")); + } + if (lastTopOfTheLibrary) { + game.getAction().moveToLibrary(forgeCard, null, null); + } else { + game.getAction().moveToBottomOfLibrary(forgeCard, null, null); + } + } else { + game.getAction().moveTo(targetZone, forgeCard, null); } lastAdded = f;