From b93cafe7078f5d01bdf122d76dfd09dc67eb6eaf Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Wed, 30 Apr 2014 20:23:50 +0200 Subject: [PATCH] * Quarry Colossus / Unexpectedly Absent - Fixed that card was not moved to the correct position inlibrary. --- .../commander2013/UnexpectedlyAbsent.java | 51 +++++++++++-------- .../sets/journeyintonyx/QuarryColossus.java | 23 +++++---- 2 files changed, 43 insertions(+), 31 deletions(-) diff --git a/Mage.Sets/src/mage/sets/commander2013/UnexpectedlyAbsent.java b/Mage.Sets/src/mage/sets/commander2013/UnexpectedlyAbsent.java index d0fa4212bde..974176181ef 100644 --- a/Mage.Sets/src/mage/sets/commander2013/UnexpectedlyAbsent.java +++ b/Mage.Sets/src/mage/sets/commander2013/UnexpectedlyAbsent.java @@ -28,6 +28,8 @@ package mage.sets.commander2013; import java.util.ArrayList; +import java.util.Deque; +import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.UUID; @@ -100,31 +102,38 @@ class UnexpectedlyAbsentEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(this.getTargetPointer().getFirst(game, source)); - if (permanent != null) { - Player owner = game.getPlayer(permanent.getOwnerId()); - if (owner != null) { - int xValue = Math.min(source.getManaCostsToPay().getX(), owner.getLibrary().size()); - Cards cards = new CardsImpl(Zone.PICK); - List cardIds = new ArrayList<>(); - for (int i = 0; i < xValue; i++) { - Card card = owner.getLibrary().getFromTop(game); - cards.add(card); - cardIds.add(card.getId()); - } - // return cards back to library - permanent.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true); - ListIterator l = cardIds.listIterator(); - while(l.hasPrevious()) { - UUID cardId = l.previous(); - Card card = cards.get(cardId, game); - if (card != null) { - card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true); + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + Permanent permanent = game.getPermanent(this.getTargetPointer().getFirst(game, source)); + if (permanent != null) { + Player owner = game.getPlayer(permanent.getOwnerId()); + if (owner != null) { + int xValue = Math.min(source.getManaCostsToPay().getX(), owner.getLibrary().size()); + Cards cards = new CardsImpl(Zone.PICK); + Deque cardIds = new LinkedList<>(); + for (int i = 0; i < xValue; i++) { + Card card = owner.getLibrary().removeFromTop(game); + cards.add(card); + cardIds.push(card.getId()); } + // return cards back to library + game.informPlayers(new StringBuilder(controller.getName()) + .append(" puts ").append(permanent.getName()) + .append(" beneath the top ").append(xValue) + .append(" cards of ").append(owner.getName()).append("'s library").toString()); + permanent.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true); + while(!cardIds.isEmpty()) { + UUID cardId = cardIds.poll(); + Card card = cards.get(cardId, game); + if (card != null) { + card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true); + } + } + return true; } - return true; } } + return false; } } diff --git a/Mage.Sets/src/mage/sets/journeyintonyx/QuarryColossus.java b/Mage.Sets/src/mage/sets/journeyintonyx/QuarryColossus.java index 75cc01f4243..5eb98f81c1a 100644 --- a/Mage.Sets/src/mage/sets/journeyintonyx/QuarryColossus.java +++ b/Mage.Sets/src/mage/sets/journeyintonyx/QuarryColossus.java @@ -27,10 +27,10 @@ */ package mage.sets.journeyintonyx; -import java.util.ArrayList; -import java.util.List; -import java.util.ListIterator; +import java.util.Deque; +import java.util.LinkedList; import java.util.UUID; +import java.util.logging.Logger; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -106,17 +106,20 @@ class QuarryColossusReturnLibraryEffect extends OneShotEffect cardIds = new ArrayList<>(); + Deque cardIds = new LinkedList<>(); for (int i = 0; i < xValue; i++) { - Card card = owner.getLibrary().getFromTop(game); + Card card = owner.getLibrary().removeFromTop(game); cards.add(card); - cardIds.add(card.getId()); + cardIds.push(card.getId()); } // return cards back to library - controller.moveCardToLibraryWithInfo(permanent, source.getSourceId(), game, Zone.BATTLEFIELD, true); - ListIterator libraryCards = cardIds.listIterator(); - while(libraryCards.hasPrevious()) { - UUID cardId = libraryCards.previous(); + permanent.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true); + game.informPlayers(new StringBuilder(controller.getName()) + .append(" puts ").append(permanent.getName()) + .append(" beneath the top ").append(xValue) + .append(" cards of ").append(owner.getName()).append("'s library").toString()); + while(!cardIds.isEmpty()) { + UUID cardId = cardIds.poll(); Card card = cards.get(cardId, game); if (card != null) { card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true);