From 19dae61e1edc137cfd19fbb9e2cf9f3be9ebc97b Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 02:47:32 +0000 Subject: [PATCH] Due to unforseen complications, the Ability_Triggered class has been deactivated, however, InputControl was modified to delay any stacked inputs via stack(So it is possible to use two targeted ETFs with DotH or make use of LTF of creatures you sacrifice as part of a cost. --- res/main.properties | 2 +- src/forge/Ability_Triggered.java | 4 ++-- src/forge/CardList.java | 4 ++-- src/forge/GameAction.java | 10 +++++++++- src/forge/GuiDisplay3.java | 3 ++- src/forge/InputControl.java | 11 +++++++++-- src/forge/MagicStack.java | 4 ++-- 7 files changed, 27 insertions(+), 11 deletions(-) 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() {