diff --git a/res/cards.txt b/res/cards.txt index ea55bc3b0ab..0faf87bfb7c 100644 --- a/res/cards.txt +++ b/res/cards.txt @@ -1,3 +1,9 @@ +Door to Nothingness +5 +Artifact +no text +Comes into play tapped. + Cruel Edict 1 B Sorcery diff --git a/res/main.properties b/res/main.properties index 0e1ed39c4dd..acc426ed424 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: 74 +program/version=MTG Forge -- official beta: 09/11/02, SVN revision: 77 tokens--file=AllTokens.txt diff --git a/src/forge/CardFactory.java b/src/forge/CardFactory.java index db87ec52187..3b250438910 100644 --- a/src/forge/CardFactory.java +++ b/src/forge/CardFactory.java @@ -16577,6 +16577,26 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase(); card.clearSpellAbility(); card.addSpellAbility(spell); }//*************** END ************ END ************************** + //*************** START *********** START ************************** + else if (cardName.equals("Door to Nothingness")) + { + Ability_Tap ab1 = new Ability_Tap(card, "G G R R B B U U W W") + { + /** + * + */ + private static final long serialVersionUID = 6665327569823149191L; + public void resolve() { + AllZone.GameAction.getPlayerLife(getTargetPlayer()).setLife(0); + } + public boolean canPlayAI(){return true;} + }; + ab1.setChooseTargetAI(CardFactoryUtil.AI_targetHuman()); + ab1.setBeforePayMana(CardFactoryUtil.input_targetPlayer(ab1)); + ab1.setDescription("WWUUBBRRGG, tap, sacrifice Door to Nothingness: Target player loses the game."); + card.addSpellAbility(ab1); + }//*************** END ************ END ************************** + // Cards with Cycling abilities // -1 means keyword "Cycling" not found diff --git a/src/forge/Gui_DeckEditor_Menu.java b/src/forge/Gui_DeckEditor_Menu.java index 31f14f137a7..151e36db875 100644 --- a/src/forge/Gui_DeckEditor_Menu.java +++ b/src/forge/Gui_DeckEditor_Menu.java @@ -10,6 +10,7 @@ import java.io.FileOutputStream; import java.io.FileWriter; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; +import java.nio.channels.FileChannel; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; @@ -296,10 +297,22 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants { return filter; }//getFileFilter() + private FileFilter dckFilter = new FileFilter(){ + + public boolean accept(File f) { + return f.getName().endsWith(".dck") || f.isDirectory(); + } + + public String getDescription() { + return "Simple Deck File .dck"; + } + + }; private File getImportFilename() { JFileChooser chooser = new JFileChooser(previousDirectory); + chooser.addChoosableFileFilter(dckFilter); chooser.addChoosableFileFilter(getFileFilter()); int returnVal = chooser.showOpenDialog(null); @@ -328,6 +341,27 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants { File file = getImportFilename(); if(file == null) return; + else if (file.getName().endsWith(".dck")) + { + try { + FileChannel srcChannel = new FileInputStream(file).getChannel(); + File dst = new File(ForgeProps.getFile(NEW_DECKS).getAbsolutePath() + java.io.File.pathSeparator + (file.getName())); + if(!dst.createNewFile()) + { + JOptionPane.showMessageDialog(null, "Cannot import deck " + file.getName() + ", a deck currently has that name."); + return; + } + FileChannel dstChannel = new FileOutputStream(dst).getChannel(); + dstChannel.transferFrom(srcChannel, 0, srcChannel.size()); + srcChannel.close(); + dstChannel.close(); + JOptionPane.showMessageDialog(null, file.getName() + "imported succesfully. Restart the deck editor to see it."); + } catch (Exception ex) { + ErrorViewer.showError(ex); + throw new RuntimeException("Gui_DeckEditor_Menu : importDeck() error, " + ex); + } + return; + } Object check = null; diff --git a/src/forge/ManaPool.java b/src/forge/ManaPool.java index 2e61f33482f..c9a7eb0d6df 100644 --- a/src/forge/ManaPool.java +++ b/src/forge/ManaPool.java @@ -134,6 +134,7 @@ public class ManaPool extends Card } int containsColor(char color) { + sortContents(); if(!has.contains(color + "")) return 0; int res = has.lastIndexOf(color) - has.indexOf(color) + 1; if(!isSnow()) res += smp.containsColor(color); diff --git a/src/forge/NewDeckIO.java b/src/forge/NewDeckIO.java index e2afe73478e..8bf639c38fd 100755 --- a/src/forge/NewDeckIO.java +++ b/src/forge/NewDeckIO.java @@ -201,7 +201,11 @@ public class NewDeckIO implements DeckIO { throw new RuntimeException("DeckIO : read() error, " + ex.getMessage()); } } - + public Deck parseDeck(File f)//cast(in case read is private for a good reason) + { + try{return read(new BufferedReader(new FileReader(f)));} + catch(Exception e){return null;} + } private Deck read(BufferedReader in) throws IOException { String line;