diff --git a/res/main.properties b/res/main.properties index 5e8b7c8d1b7..8dcfb356b66 100644 --- a/res/main.properties +++ b/res/main.properties @@ -1,6 +1,6 @@ program/mail=mtgrares@yahoo.com program/forum=http://www.slightlymagic.net/forum/viewforum.php?f=26 -program/version=MTG Forge -- official beta: 09/11/02, SVN revision: 71 +program/version=MTG Forge -- official beta: 09/11/02, SVN revision: 73 tokens--file=AllTokens.txt diff --git a/src/forge/Ability_Triggered.java b/src/forge/Ability_Triggered.java index 5ee1a396704..f75695e131d 100644 --- a/src/forge/Ability_Triggered.java +++ b/src/forge/Ability_Triggered.java @@ -41,9 +41,9 @@ public class Ability_Triggered extends Ability implements Command { public void execute() { resolve(); } - public CardList triggerFor(CardList c) + public boolean triggerFor(Card c) { - return c.getValidCards(restrictions); + return !(new CardList(c)).getValidCards(restrictions).isEmpty(); } public boolean triggerOnZoneChange(String sourceZone, String destinationZone) { diff --git a/src/forge/CardList.java b/src/forge/CardList.java index 9a776dee69e..14224ef3267 100644 --- a/src/forge/CardList.java +++ b/src/forge/CardList.java @@ -12,8 +12,8 @@ public class CardList implements Iterable //private LinkedList list = new LinkedList(); public CardList() {} - public CardList(Card c[]) { addAll(c);} - public CardList(Object c[]) {addAll(c);} + public CardList(Card... c) { addAll(c);} + public CardList(Object[] c) {addAll(c);} // cardColor is like "R" or "G", returns a new CardList that is a subset of current CardList public CardList getColor(String cardColor) diff --git a/src/forge/GameAction.java b/src/forge/GameAction.java index d16a8041827..de4b564c30a 100644 --- a/src/forge/GameAction.java +++ b/src/forge/GameAction.java @@ -887,7 +887,7 @@ private Card getCurrentCard(int ID) //changes AllZone.Computer_Library private Card[] smoothComputerManaCurve(Card[] in) { - CardList library = new CardList(in); + CardList library = new CardList(in); library.shuffle(); //remove all land, keep non-basicland in there, shuffled @@ -900,6 +900,8 @@ private Card getCurrentCard(int ID) //effectively use them very well land = threadLand(land); + try + { //mana weave, total of 7 land library.add(7, land.get(0)); library.add(8, land.get(1)); @@ -909,6 +911,12 @@ private Card getCurrentCard(int ID) library.add(13, land.get(5)); library.add(16, land.get(6)); + } + catch(NullPointerException e) + { + System.err.println("Error: cannot smooth mana curve, not enough land"); + return in; + } //add the rest of land to the end of the deck for(int i = 0; i < land.size(); i++) diff --git a/src/forge/GuiDisplay3.java b/src/forge/GuiDisplay3.java index 9a9c1bd0837..ada876f2b21 100644 --- a/src/forge/GuiDisplay3.java +++ b/src/forge/GuiDisplay3.java @@ -233,7 +233,8 @@ public class GuiDisplay3 extends JFrame implements Display, NewConstants, NewCon //returned Object could be null public T getChoiceOptional(String message, T[] choices) { - ListChooser c = new ListChooser(message, 0, 1, choices); + if(choices == null || choices.length == 0) return null; + ListChooser c = new ListChooser(message, 0, 1, choices); final JList list = c.getJList(); if(choices[0] instanceof Card) { list.addListSelectionListener(new ListSelectionListener() { diff --git a/src/forge/InputControl.java b/src/forge/InputControl.java index c926c614587..b71cec8f466 100644 --- a/src/forge/InputControl.java +++ b/src/forge/InputControl.java @@ -9,9 +9,16 @@ package forge; private Input input; static int n = 0; - public void setInput(Input in) + public void setInput(final Input in) { - input = in; + if(!(input == null || input instanceof Input_StackNotEmpty)) + AllZone.Stack.add(new Ability(AllZone.ManaPool, "no cost", "Delayed Input")//TODO: source other than mp? + { + public void resolve() { + AllZone.InputControl.setInput(in); + } + }); + else input = in; updateObservers(); } public void resetInput() diff --git a/src/forge/MagicStack.java b/src/forge/MagicStack.java index 4997380bdf5..04505b04c18 100644 --- a/src/forge/MagicStack.java +++ b/src/forge/MagicStack.java @@ -13,8 +13,8 @@ public class MagicStack extends MyObservable public void add(SpellAbility sp) { - if(sp instanceof Ability_Mana) sp.resolve(); else - push(sp); + if(sp instanceof Ability_Mana || sp instanceof Ability_Triggered)//TODO make working triggered abilities! + sp.resolve(); else push(sp); } public int size() {