From bf7b53452c12642c9304ec6c60320fe6a4e2511e Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 05:05:09 +0000 Subject: [PATCH] Small tweaks for Haunting Echoes: - AI should only cast if graveyard has something to remove. - Checks if the card is non-basic land before looping through library to speed up removal. --- src/forge/CardFactory.java | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/forge/CardFactory.java b/src/forge/CardFactory.java index fd4b89816a2..0cfe6f0f08b 100644 --- a/src/forge/CardFactory.java +++ b/src/forge/CardFactory.java @@ -18104,10 +18104,17 @@ public class CardFactory implements NewConstants { @Override public boolean canPlayAI() { - String player = getTargetPlayer(); - PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player); - CardList libList = new CardList(lib.getCards()); - return libList.size() > 0; + // Haunting Echoes shouldn't be cast if only basic land in graveyard or library is empty + CardList graveyard = AllZoneUtil.getPlayerGraveyard("Human"); + CardList library = AllZoneUtil.getPlayerCardsInLibrary("Human"); + int graveCount = graveyard.size(); + graveyard = graveyard.filter(new CardListFilter() { + public boolean addCard(Card c) { + return c.isBasicLand(); + } + }); + + return ((graveCount - graveyard.size() > 0) && library.size() > 0); } @Override @@ -18125,14 +18132,14 @@ public class CardFactory implements NewConstants { for(int j = 0; j < grv; j++) { Card g = grvList.get(j); - for(int i = 0; i < max; i++) { - Card c = libList.get(i); - if(c.getName().equals(g.getName()) && !g.getType().contains("Basic")) { - lib.remove(c); - exiled.add(c); - } - } if(!g.getType().contains("Basic")) { + for(int i = 0; i < max; i++) { + Card c = libList.get(i); + if(c.getName().equals(g.getName())) { + lib.remove(c); + exiled.add(c); + } + } grave.remove(g); exiled.add(g); }