From 984f567054a47c8d06ba711f8358350fdea3d84d Mon Sep 17 00:00:00 2001 From: Agetian Date: Sun, 20 Sep 2015 18:38:06 +0000 Subject: [PATCH] - Some improvements to alternate destination support in ChangeZone (also support library position override from known zones). --- .../forge/game/ability/effects/ChangeZoneEffect.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java index 4a78bf1cad3..16e77982e79 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java @@ -377,16 +377,18 @@ public class ChangeZoneEffect extends SpellAbilityEffect { ZoneType destination = ZoneType.smartValueOf(sa.getParam("Destination")); final List origin = ZoneType.listValueOf(sa.getParam("Origin")); - // changing zones for spells on the stack + boolean altDest = false; if (sa.hasParam("DestinationAlternative")) { final StringBuilder sb = new StringBuilder(); sb.append(sa.getParam("AlternativeDestinationMessage")); if (!player.getController().confirmAction(sa, PlayerActionConfirmMode.ChangeZoneToAltDestination, sb.toString())) { destination = ZoneType.smartValueOf(sa.getParam("DestinationAlternative")); + altDest = true; } } + // changing zones for spells on the stack for (final SpellAbility tgtSA : getTargetSpells(sa)) { if (!tgtSA.isSpell()) { // Catch any abilities or triggers that slip through somehow continue; @@ -439,7 +441,12 @@ public class ChangeZoneEffect extends SpellAbilityEffect { if (destination.equals(ZoneType.Library)) { // library position is zero indexed - final int libraryPosition = sa.hasParam("LibraryPosition") ? AbilityUtils.calculateAmount(hostCard, sa.getParam("LibraryPosition"), sa) : 0; + int libraryPosition = 0; + if (!altDest) { + libraryPosition = sa.hasParam("LibraryPosition") ? AbilityUtils.calculateAmount(hostCard, sa.getParam("LibraryPosition"), sa) : 0; + } else { + libraryPosition = sa.hasParam("LibraryPositionAlternative") ? Integer.parseInt(sa.getParam("LibraryPositionAlternative")) : 0; + } movedCard = game.getAction().moveToLibrary(tgtC, libraryPosition);