Re: Current Known Bugs list
`timmermac wrote:The picture SVAR for Ramosian Revivalist has it going to Hell's Caretaker instead. Fixed on my local copy.
Thank you, one more bug fixed.
High Quality Resources for Collectible Card Games and Home of the CCGHQ Team
https://www.slightlymagic.net/forum/
https://www.slightlymagic.net/forum/viewtopic.php?f=26&t=787
`timmermac wrote:The picture SVAR for Ramosian Revivalist has it going to Hell's Caretaker instead. Fixed on my local copy.
fixed. thanks.Corwin72 wrote:build 4363
Skyshroud Ridgeback should not be rare. It should be common.
matchRewardBase=11
matchRewardTotalWins=0.3
matchRewardNoLosses=50An error has occured. You can copy/paste this message or save it to a file.
Please report this, plus what you tried to do, to:
http://www.slightlymagic.net/forum/viewforum.php?f=26
If you don't want to register an account, you can mail it directly to
mtgerror@yahoo.com
There is an error in the card code for Lurking Informant:
Version:
Forge -- official beta: $Date: 2010-09-14 08:34:27 -0400 (Tue, 14 Sep 2010) $, SVN revision: $Revision: 2039 $
OS: Mac OS X Version: 10.6.5 Architecture: x86_64
Java Version: 1.6.0_22 Vendor: Apple Inc.
Detailed error trace:
java.lang.RuntimeException: AllZone : getZone() invalid parameters Library null
at forge.AllZone.getZone(AllZone.java:107)
at forge.CardFactory_Creatures$4.canPlayAI(CardFactory_Creatures.java:172)
at forge.ComputerAI_General.getPlayable(ComputerAI_General.java:172)
at forge.ComputerAI_General.getOtherPhases(ComputerAI_General.java:159)
at forge.ComputerAI_General.stackResponse(ComputerAI_General.java:286)
at forge.ComputerAI_General.stack_not_empty(ComputerAI_General.java:279)
at forge.ComputerAI_Input.think(ComputerAI_Input.java:68)
at forge.ComputerAI_Input.showMessage(ComputerAI_Input.java:31)
at forge.GuiInput.setInput(GuiInput.java:27)
at forge.GuiInput.update(GuiInput.java:21)
at java.util.Observable.notifyObservers(Observable.java:142)
at java.util.Observable.notifyObservers(Observable.java:98)
at forge.MyObservable.updateObservers(MyObservable.java:9)
at forge.Phase.nextPhase(Phase.java:433)
at forge.Phase.nextPhase(Phase.java:436)
at forge.Input_Cleanup.showMessage(Input_Cleanup.java:28)
at forge.GuiInput.setInput(GuiInput.java:27)
at forge.GuiInput.update(GuiInput.java:21)
at java.util.Observable.notifyObservers(Observable.java:142)
at java.util.Observable.notifyObservers(Observable.java:98)
at forge.MyObservable.updateObservers(MyObservable.java:9)
at forge.Phase.nextPhase(Phase.java:433)
at forge.GuiDisplay3$26.actionPerformed(GuiDisplay3.java:814)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener$Actions.actionPerformed(BasicButtonListener.java:287)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1639)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2851)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2886)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2814)
at java.awt.Component.processEvent(Component.java:6129)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4714)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676)
at java.awt.Component.dispatchEventImpl(Component.java:4586)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Yikes. I fixed a similar error in Suffer the Past earlier today, but it looks like Lurking Informant may have larger problems.Chris H. wrote:When the AI uses the Lurking Informant ability the following error exception appears:
`slapshot5 wrote:Yikes. I fixed a similar error in Suffer the Past earlier today, but it looks like Lurking Informant may have larger problems.
I'll take a hack at fixing it up.
//*************** START *********** START **************************
else if (cardName.equals("Lurking Informant")) {
final SpellAbility a1 = new Ability_Tap(card, "2") {
private static final long serialVersionUID = 1446529067071763245L;
@Override
public void resolve() {
Player player;
if (card.getController().isHuman()) {
player = getTargetPlayer();
} else {
player = AllZone.HumanPlayer;
}
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, player);
CardList libList = new CardList(lib.getCards());
Card c = libList.get(0);
String[] choices = {"Yes", "No"};
if (card.getController().equals(AllZone.HumanPlayer)) {
Object o = AllZone.Display.getChoice("Mill " + c.getName() + " ?", choices);
if(o.equals("Yes")) {
lib.remove(c);
grave.add(c);
}
} else {
CardList landlist = new CardList();
landlist.addAll(AllZone.Human_Battlefield.getCards());
// i have no better idea how AI could use it then letting draw unneeded lands
// this part will be good place to use card values lists or card values deck info
if (countLands(card) > 5 && !c.getType().contains("Land")) {
lib.remove(c);
grave.add(c);
}
if (countLands(card) <= 5) {
lib.remove(c);
grave.add(c);
}
}
}// resolve
private int countLands(Card c) {
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, c.getController());
CardList lands = new CardList(play.getCards());
lands = lands.getType("Land");
return lands.size();
}
@Override
public boolean canPlayAI() {
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, AllZone.HumanPlayer);
CardList libList = new CardList(lib.getCards());
return libList.size() > 0;
}
};//SpellAbility
card.addSpellAbility(a1);
a1.setDescription("2, tap: Look at the top card of target player's library. You may put that card into that player's graveyard.");
a1.setStackDescription("Lurking Informant ability");
a1.setBeforePayMana(new Input_PayManaCost(a1));
a1.setBeforePayMana(CardFactoryUtil.input_targetPlayer(a1));
}//*************** END ************ END **************************Welcome digorymuck!digorymuck wrote:The AI had "Sootwalkers" in play, and whenever it attacked I was unable to assign a blocker to it. It's supposed to be unblockable by white creatures only, but it seems to be currently coded as if it were unblockable in general.