From ca510897b09fe66142ddc516280eeac4f8f0b28f Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 02:51:31 +0000 Subject: [PATCH] - Umezawa's Jitte is now Legendary, Auramancer a Wizard. - Fixed an issue with the AI countering spells that trigger on cast (Sigil of the Empty Throne, Standstill, etc.). - Timetwister shouldn't show up in both graveyards anymore. - Figure of Destiny's 2nd and 3rd abilities should work if the creature has changeling, plus a check for the prerequisites is performed on resolution. - Fixed Dryad Arbor / Mutavault / Mishra's Factory summoning sickness issues. - Fixed Umara Raptor manacost. - Added Vasiliy's Deck editor filter, and it works now! It's much easier to find cards now with the card text search feature. - Fetching Bound in Silence with a rebel should be allowed to be attached to any creature. - Demonic Tutor shouldn't be castable with other spells on the stack anymore. - Added a property for token images (currently set to 'pics/tokens' - just set to 'pics' to keep it the way it always was). --- .gitattributes | 2 + res/cards.txt | 8 +- res/gui/display_layout.xml | 8 +- res/main.properties | 5 +- src/forge/Ability_Mana.java | 7 +- src/forge/CardFactory.java | 8 +- src/forge/CardFactoryUtil.java | 20 + src/forge/CardFactory_Creatures.java | 78 +-- src/forge/CardFilter.java | 197 ++++++++ src/forge/GUI_Filter.java | 108 ++++- src/forge/GUI_Quest_Filter.java | 587 +++++++++++++++++++++++ src/forge/GameAction.java | 31 ++ src/forge/GuiDisplayUtil.java | 9 +- src/forge/Gui_DeckEditor_Menu.java | 7 +- src/forge/Gui_Quest_DeckEditor.java | 76 ++- src/forge/Gui_Quest_DeckEditor_Menu.java | 149 ++++++ src/forge/ImageCache.java | 9 +- src/forge/MagicStack.java | 7 +- src/forge/properties/NewConstants.java | 1 + 19 files changed, 1227 insertions(+), 90 deletions(-) create mode 100644 src/forge/CardFilter.java create mode 100644 src/forge/GUI_Quest_Filter.java diff --git a/.gitattributes b/.gitattributes index cfeccf80957..fbef06e730d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -106,6 +106,7 @@ src/forge/CardFactory_Creatures.java -text svneol=native#text/plain src/forge/CardFactory_Equipment.java -text svneol=native#text/plain src/forge/CardFactory_Lands.java -text svneol=native#text/plain src/forge/CardFactory_Planeswalkers.java -text svneol=native#text/plain +src/forge/CardFilter.java -text svneol=native#text/plain src/forge/CardList.java svneol=native#text/plain src/forge/CardListFilter.java svneol=native#text/plain src/forge/CardListUtil.java svneol=native#text/plain @@ -143,6 +144,7 @@ src/forge/EndOfTurn.java svneol=native#text/plain src/forge/ExternalPanel.java svneol=native#text/plain src/forge/FileUtil.java -text svneol=native#text/plain src/forge/GUI_Filter.java -text svneol=native#text/plain +src/forge/GUI_Quest_Filter.java -text svneol=native#text/plain src/forge/GameAction.java svneol=native#text/plain src/forge/GameActionUtil.java svneol=native#text/plain src/forge/GenerateConstructedDeck.java svneol=native#text/plain diff --git a/res/cards.txt b/res/cards.txt index a43fdb86efa..b797e6a942f 100644 --- a/res/cards.txt +++ b/res/cards.txt @@ -164,7 +164,7 @@ no text Umezawa's Jitte 2 -Artifact Equipment +Legendary Artifact Equipment Whenever equipped creature deals combat damage, put two charge counters on Umezawa's Jitte. Vendilion Clique @@ -404,7 +404,7 @@ This card can't be the target of spells or abilities your opponents control. Auramancer 2 W -Creature Human +Creature Human Wizard When Auramancer enters the battlefield, you may return target card from your graveyard to your hand. 2/2 @@ -1407,7 +1407,7 @@ no text tap: add U Umara Raptor -1 U +2 U Creature Bird Ally Whenever Umara Raptor or another Ally enters the battlefield under your control, you may put a +1/+1 counter on Umara Raptor. 1/1 @@ -12071,8 +12071,8 @@ no cost Land Creature Forest Dryad no text 1/1 -tap: add G Dryad Arbor is green. +tap: add G Sliversmith 2 diff --git a/res/gui/display_layout.xml b/res/gui/display_layout.xml index 6e437ee922b..e65fdd2d83e 100644 --- a/res/gui/display_layout.xml +++ b/res/gui/display_layout.xml @@ -28,7 +28,7 @@ 0 0 244 - 144 + 143 @@ -47,7 +47,7 @@ 0 - 144 + 143 244 10 @@ -62,9 +62,9 @@ 0 - 154 + 153 244 - 175 + 176 diff --git a/res/main.properties b/res/main.properties index c56af6b006c..6d9f7081e83 100644 --- a/res/main.properties +++ b/res/main.properties @@ -1,6 +1,6 @@ program/mail=mtgerror@yahoo.com program/forum=http://www.slightlymagic.net/forum/viewforum.php?f=26 -program/version=MTG Forge -- official beta: 09/11/25, SVN revision: 102 +program/version=MTG Forge -- official beta: 09/11/25, SVN revision: 103 tokens--file=AllTokens.txt @@ -23,4 +23,5 @@ quest--properties=quest/quest.properties lang--transparent-properties=lang/lang.properties -image/base--file=pics \ No newline at end of file +image/base--file=pics +image/token--file=pics/tokens \ No newline at end of file diff --git a/src/forge/Ability_Mana.java b/src/forge/Ability_Mana.java index 0e9bd08e6d7..fa5defa8f13 100644 --- a/src/forge/Ability_Mana.java +++ b/src/forge/Ability_Mana.java @@ -155,9 +155,12 @@ abstract public class Ability_Mana extends SpellAbility implements java.io.Seria return !(card.hasSickness() && isTapAbility()); if(card.isCreature() && (!card.hasSickness() || !isTapAbility())) - return true; + return true; + //Dryad Arbor, Mishra's Factory, Mutavault, ... + else if (card.isCreature() && card.isLand() && card.hasSickness()) + return false; else if(card.isArtifact() || card.isGlobalEnchantment() || card.isLand()) - return true; + return true; } return false; } diff --git a/src/forge/CardFactory.java b/src/forge/CardFactory.java index 00daedc6860..fd85cd017d4 100644 --- a/src/forge/CardFactory.java +++ b/src/forge/CardFactory.java @@ -3307,8 +3307,10 @@ public class CardFactory implements NewConstants { for(int i = 0; i < 7; i++) AllZone.GameAction.drawCard(player); - library.remove(card); - grave.add(card); + if (card.getController().equals(player)) { + library.remove(card); + grave.add(card); + } } // Simple, If computer has two or less playable cards remaining in hand play Timetwister @@ -5424,7 +5426,7 @@ public class CardFactory implements NewConstants { PlayerZone library = AllZone.getZone(Constant.Zone.Library, card.getController()); return library.getCards().length != 0 && AllZone.Phase.getActivePlayer().equals(card.getController()) - && !AllZone.Phase.getPhase().equals("End of Turn"); + && !AllZone.Phase.getPhase().equals("End of Turn") && super.canPlay(); } public boolean canPlayAI() { diff --git a/src/forge/CardFactoryUtil.java b/src/forge/CardFactoryUtil.java index d9c000d45e2..a28c0653fb1 100644 --- a/src/forge/CardFactoryUtil.java +++ b/src/forge/CardFactoryUtil.java @@ -1139,6 +1139,26 @@ public class CardFactoryUtil Card rebel = (Card)o; lib.remove(rebel); play.add(rebel); + if (rebel.isAura()) + { + Object obj = null; + if (rebel.getKeyword().contains("Enchant creature")) + { + PlayerZone oppPlay = AllZone.getZone(Constant.Zone.Play, Constant.Player.Computer); + CardList creats = new CardList(play.getCards()); + creats.addAll(oppPlay.getCards()); + creats = creats.getType("Creature"); + obj = AllZone.Display.getChoiceOptional("Pick a creature to attach "+rebel.getName() + " to",creats.toArray() ); + } + if (obj != null) + { + Card target = (Card)obj; + if(AllZone.GameAction.isCardInPlay(target)) { + rebel.enchantCard(target); + } + } + + } } } AllZone.GameAction.shuffle(sourceCard.getController()); diff --git a/src/forge/CardFactory_Creatures.java b/src/forge/CardFactory_Creatures.java index a883926ba02..2c32a7221cc 100644 --- a/src/forge/CardFactory_Creatures.java +++ b/src/forge/CardFactory_Creatures.java @@ -14886,28 +14886,30 @@ public class CardFactory_Creatures { { public void resolve() { - boolean artifact = false; - card.setBaseAttack(4); - card.setBaseDefense(4); - - card.removeIntrinsicKeyword("Flying"); - card.removeIntrinsicKeyword("First Strike"); - - if (card.isArtifact()) - artifact = true; - - card.setType(new ArrayList()); - if (artifact) - card.addType("Artifact"); - card.addType("Creature"); - card.addType("Kithkin"); - card.addType("Spirit"); - card.addType("Warrior"); + if (card.getType().contains("Spirit") || card.getKeyword().contains("Changeling")) { + boolean artifact = false; + card.setBaseAttack(4); + card.setBaseDefense(4); + + card.removeIntrinsicKeyword("Flying"); + card.removeIntrinsicKeyword("First Strike"); + + if (card.isArtifact()) + artifact = true; + + card.setType(new ArrayList()); + if (artifact) + card.addType("Artifact"); + card.addType("Creature"); + card.addType("Kithkin"); + card.addType("Spirit"); + card.addType("Warrior"); + } } public boolean canPlay() { - return card.getType().contains("Spirit"); + return card.getType().contains("Spirit") || card.getKeyword().contains("Changeling"); } public boolean canPlayAI() @@ -14926,28 +14928,30 @@ public class CardFactory_Creatures { { public void resolve() { - boolean artifact = false; - card.setBaseAttack(8); - card.setBaseDefense(8); - - card.addIntrinsicKeyword("Flying"); - card.addIntrinsicKeyword("First Strike"); - - if (card.isArtifact()) - artifact = true; - - card.setType(new ArrayList()); - if (artifact) - card.addType("Artifact"); - card.addType("Creature"); - card.addType("Kithkin"); - card.addType("Spirit"); - card.addType("Warrior"); - card.addType("Avatar"); + if (card.getType().contains("Warrior") || card.getKeyword().contains("Changeling")) { + boolean artifact = false; + card.setBaseAttack(8); + card.setBaseDefense(8); + + card.addIntrinsicKeyword("Flying"); + card.addIntrinsicKeyword("First Strike"); + + if (card.isArtifact()) + artifact = true; + + card.setType(new ArrayList()); + if (artifact) + card.addType("Artifact"); + card.addType("Creature"); + card.addType("Kithkin"); + card.addType("Spirit"); + card.addType("Warrior"); + card.addType("Avatar"); + } } public boolean canPlay() { - return card.getType().contains("Warrior"); + return card.getType().contains("Warrior") || card.getKeyword().contains("Changeling"); } public boolean canPlayAI() { diff --git a/src/forge/CardFilter.java b/src/forge/CardFilter.java new file mode 100644 index 00000000000..7582b71aba0 --- /dev/null +++ b/src/forge/CardFilter.java @@ -0,0 +1,197 @@ +package forge; + +public class CardFilter { + + + public CardList CardListNameFilter(CardList all, String name) + { + Card CardName = new Card(); + String s; + s=""; + CardList listFilter = new CardList(); + for(int i=0;i=0) + { + listFilter.add(CardName); + + } + + } + + return listFilter; + } + + public CardList CardListTextFilter(CardList all, String name) + { + Card CardName = new Card(); + String s; + s=""; + CardList listFilter = new CardList(); + for(int i=0;i=0) + { + listFilter.add(CardName); + + } + + } + + return listFilter; + } + + + public CardList CardListColorFilter(CardList all, String name) + { + Card CardName = new Card(); + CardList listFilter = new CardList(); + + if(name=="black"){ + for(int i=0;i