New version seems quite good so far, and thank you for finally adding
Wilt-Leaf Liege.
Couple minor things I've noticed, and they date back before this version:
-
Yomiji, Who Bars the Way should cost 5WW instead of 4WW.
-
Extinguish should cost 1U instead of 2U.
-
Seasoned Marshal should be a Soldier, not a Knight.
-
Spindrift Drake should be a Drake, not a Harpy Mercenary (someone probably used
Molting Harpy as a template when making this and missed this detail).
- Whenever the AI uses cards that ask to specify a creature type (
Cover of Darkness, for instance), the creature type chosen is
always Sliver. There should be some way to improve this, like picking a creature type at random or (for cards beneficial to the AI) choosing the most common creature type of creatures in its deck. Then again, either one would likely be a programming nightmare, so... bucket list that

Also, one Forge crash I got (latest beta): AI (generated deck) has a
Plains and a
Lotus Petal in play. I attempt to cast
Knight of Meadowgrain, AI attempts to counter it (apparently, I couldn't see with what) and Forge threw up the following exception:
- Code: Select all
null
Version:
Forge -- official beta: $Date: 2010-05-01 03:21:42 -0400 (Sat, 01 May 2010) $, SVN revision: $Revision: 916 $
OS: Windows XP Version: 5.1 Architecture: x86
Java Version: 1.6.0_21 Vendor: Sun Microsystems Inc.
Detailed error trace:
java.lang.NullPointerException
at forge.CardFactory$4.canPlay(CardFactory.java:435)
at forge.CardFactory$4.canPlayAI(CardFactory.java:305)
at forge.ComputerAI_counterSpells2$1.addCard(ComputerAI_counterSpells2.java:65)
at forge.CardList.filter(CardList.java:231)
at forge.ComputerAI_counterSpells2.getPlayableCounterSpells(ComputerAI_counterSpells2.java:58)
at forge.ComputerAI_counterSpells2.counter_Spell(ComputerAI_counterSpells2.java:11)
at forge.MagicStack.push(MagicStack.java:282)
at forge.MagicStack.add(MagicStack.java:126)
at forge.Input_PayManaCost.done(Input_PayManaCost.java:85)
at forge.Input_PayManaCost.showMessage(Input_PayManaCost.java:106)
at forge.Input_PayManaCost.selectCard(Input_PayManaCost.java:61)
at forge.GuiInput.selectCard(GuiInput.java:48)
at forge.GuiDisplay4$10.mousePressed(GuiDisplay4.java:410)
at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)