Page 4 of 4

Re: Forge Release 12/09/2018 ver 1.6.19

PostPosted: 19 Jan 2019, 19:29
by DCCoach
Description: Setting up a constructed deck (me) vs. random constructed deck (AI) game; for the AI I chose *all* of the options for random decks.

IMPORTANT: this isn't a routine Null Pointer Exception error, not at all; I've never seen Forge do anything like this.

While setting up that match, when I chose the options and submitted that Forge popped up an error message about creating/opening decks with 5 colors? Sorry I didn't keep the message.

BIG BAD: this error message would NOT go away. I clicked OK, it came back with another similar message. Tried again, same thing. Clicked X on window frame, same thing. Tried closing Forge via the task bar. Nope. Tried a number of other things, then finally tried Task Manager, which, to my surprise, wasn't even showing Forge, so nothing doing there (maybe it was the java app running, I didn't think of that until just now ... oops). Anyway, I tried starting Forge again, got a different error message and when I acknowledged that, it returned to the original error message. I may have tried a few other things but ultimately I ended up rebooting the machine, which finally got rid of the problem. When I started Forge again, I got the Null Pointer Exception message below.

Hope this helps.

NullPointerException | Open
Code: Select all
Forge Version:    1.6.4-r-1
Operating System: Windows 10 10.0 amd64
Java Version:     1.8.0_191 Oracle Corporation


java.lang.NullPointerException
   at forge.toolbox.FSkin$SkinFont.measureTextWidth(FSkin.java:962)
   at forge.view.FTitleBar.updatePreferredSize(FTitleBar.java:53)
   at forge.view.FTitleBar.setTitle(FTitleBar.java:38)
   at forge.view.FTitleBar.<init>(FTitleBar.java:20)
   at forge.view.FDialog.<init>(FDialog.java:94)
   at forge.view.FDialog.<init>(FDialog.java:78)
   at forge.toolbox.FOptionPane.<init>(FOptionPane.java:141)
   at forge.toolbox.FOptionPane.showOptionDialog(FOptionPane.java:82)
   at forge.GuiDesktop.showOptionDialog(GuiDesktop.java:137)
   at forge.util.gui.SOptionPane.showOptionDialog(SOptionPane.java:63)
   at forge.util.gui.SOptionPane.showMessageDialog(SOptionPane.java:33)
   at forge.deck.DeckgenUtil.colorCheck(DeckgenUtil.java:405)
   at forge.deck.ColorDeckGenerator.getDeck(ColorDeckGenerator.java:63)
   at forge.deckchooser.FDeckChooser.getDeck(FDeckChooser.java:202)
   at forge.screens.home.VLobby.selectMainDeck(VLobby.java:425)
   at forge.screens.home.VLobby.access$200(VLobby.java:71)
   at forge.screens.home.VLobby$3.run(VLobby.java:337)
   at forge.itemmanager.DeckManager$1.valueChanged(DeckManager.java:84)
   at forge.itemmanager.views.ItemView.onSelectionChange(ItemView.java:278)
   at forge.itemmanager.views.ItemListView$ItemTableModel$1.valueChanged(ItemListView.java:620)
   at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
   at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
   at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
   at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
   at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
   at javax.swing.DefaultListSelectionModel.addSelectionInterval(Unknown Source)
   at javax.swing.JTable.addRowSelectionInterval(Unknown Source)
   at forge.itemmanager.views.ItemListView.onSetSelectedIndices(ItemListView.java:306)
   at forge.itemmanager.views.ItemView.setSelectedItems(ItemView.java:216)
   at forge.itemmanager.views.ItemView.setSelectedItems(ItemView.java:205)
   at forge.itemmanager.ItemManager.setSelectedItems(ItemManager.java:583)
   at forge.itemmanager.ItemManager.setSelectedStrings(ItemManager.java:636)
   at forge.deckchooser.FDeckChooser.restoreSavedState(FDeckChooser.java:382)
   at forge.deckchooser.FDeckChooser.populate(FDeckChooser.java:228)
   at forge.screens.home.CLobby.initialize(CLobby.java:78)
   at forge.screens.home.sanctioned.CSubmenuConstructed.initialize(CSubmenuConstructed.java:44)
   at forge.view.FView.initialize(FView.java:125)
   at forge.control.FControl$3.run(FControl.java:262)
   at java.awt.event.InvocationEvent.dispatch(Unknown Source)
   at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
   at java.awt.EventQueue.access$500(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(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)

Re: Forge Release 12/09/2018 ver 1.6.19

PostPosted: 21 Jan 2019, 08:11
by ZachAttack498
I have a bug fix to report:This may just be a problem on android but isochron scepter does not work at all... I can't select a instant with less than 2 mana cost at all.

Android version 1.6.19.004

Re: Forge Release 12/09/2018 ver 1.6.19

PostPosted: 22 Jan 2019, 01:23
by AStrangerIsHere
First post here, so hello everyone. I noticed a bug with Crush of Tentacles: it doesn't create any token when the surge cost is paid. I have some older version of Forge, and it seems the problem date back to (at least) the 1.15 version. The 1.9 works fine though.

Re: Forge Release 12/09/2018 ver 1.6.19

PostPosted: 22 Jan 2019, 22:45
by gos
Spectra Ward is giving protection from itself, so it falls off immediately.

Hollow One 's cost reduction is not working with discard (tested with Bazaar of Baghdad).

Re: Forge Release 12/09/2018 ver 1.6.19

PostPosted: 23 Jan 2019, 02:03
by friarsol
gos wrote:Hollow One 's cost reduction is not working with discard (tested with Bazaar of Baghdad).
I believe this is somehow only on Android. That doesn't make any sense to me, but it seems to work fine whenever i test it on Desktop

Re: Forge Release 12/09/2018 ver 1.6.19

PostPosted: 23 Jan 2019, 09:38
by gos
friarsol wrote:
gos wrote:Hollow One 's cost reduction is not working with discard (tested with Bazaar of Baghdad).
I believe this is somehow only on Android. That doesn't make any sense to me, but it seems to work fine whenever i test it on Desktop
I was playing on desktop. I was casting 1 of the cards I discarded to Bazaar of Baghdad with madness on both occasions I observed the bug (as far as I can recall).

I just reproduced the bug.
Turn 1: Play Bazaar of Baghdad. Activate Bazaar of Baghdad. Discard Wonder, Vengevine and Basking Rootwalla. Play Basking Rootwalla for its madness cost. Try to cast Hollow One for free - not possible.
Turn 2: Activate Bazaar of Baghdad. Discard Vengevine and 2 other cards. Try to cast Hollow One for free - not possible.

So, casting the Basking Rootwalla seems to be irrelevant.

Here is the decklist I was playing with:

Code: Select all
[metadata]
Name=swiftwarkite2 - Survival
[general]
constructed
[main]
1 Ancestral Recall
4 Basking Rootwalla
2 Bayou
4 Bazaar of Baghdad
1 Black Lotus
4 Deathrite Shaman
1 Elvish Spirit Guide
1 Flusterstorm
4 Force of Will
1 Forest
4 Hollow One
2 Leovold, Emissary of Trest
4 Mental Misstep
1 Mox Emerald
1 Mox Jet
1 Mox Sapphire
1 Phantasmal Image
1 Savannah
1 Squee, Goblin Nabob
4 Survival of the Fittest
1 Sylvan Library
1 Time Walk
2 Tropical Island
1 Trygon Predator
4 Vengevine
4 Windswept Heath
1 Wonder
3 Wooded Foothills
[sideboard]
2 Abrupt Decay
3 Containment Priest
3 Energy Flux
4 Leyline of the Void
1 Mindbreak Trap
2 Stony Silence

Re: Forge Release 12/09/2018 ver 1.6.19

PostPosted: 25 Jan 2019, 18:23
by lindleya1
Issue with Chandra Ablaze, at least on android. Am away from my PC at the moment so can't test the desktop version. Issue is that when activating the ultimate, there is no option to not cast spells, it forces you to play every one that is in the graveyard, even if you don't want to. When you select a spell it asks "Do you want to cast <spellname>?" But if you press No, it just takes you back to the list of spells with the same spell still in the list. And there is no way out of the list until you have chosen Yes to casting all of the spells.

Re: Forge Release 12/09/2018 ver 1.6.19

PostPosted: 26 Jan 2019, 03:49
by lindleya1
Molten Disaster has split second even if it wasn't kicked

Re: Forge Release 12/09/2018 ver 1.6.19

PostPosted: 26 Jan 2019, 18:47
by lindleya1
Stitcher's Graft doesn't sacrifice the creature when it gets destroyed. The trigger went on the stack, but the creature survived

Re: Forge Release 12/09/2018 ver 1.6.19

PostPosted: 28 Jan 2019, 12:53
by gos
My opponent tapped one of my creatures with Telekinesis. It's 7 turns later. It still hasn't untapped.

Re: Forge Release 12/09/2018 ver 1.6.19

PostPosted: 29 Jan 2019, 07:39
by Nekoatl
If a creature enters the battlefield as a copy of Chronozoa, when that creature dies, 2 copies are supposed to be created (http://gatherer.wizards.com/Pages/Card/ ... eid=111066). However, this doesn't seem to happen in forge.

Steps:

1) Cast Chronozoa.
2) Cast Phantasmal Image, copying Chronozoa.
3) Wait for the final time counter to be removed from the copy.

Expected:

2 Chronozoa tokens are created with "When this creature becomes the target of a spell or ability, sacrifice it.".

Actual:

No tokens are created.

Re: Forge Release 12/09/2018 ver 1.6.19

PostPosted: 29 Jan 2019, 11:59
by trombonesjones
It seems cards with death touch don’t work, deal damage regularly but don’t kill the other creature. Also, maybe an old one, but tablet of the guild pact does not let you select a color and then crashes the game

Re: Forge Release 12/09/2018 ver 1.6.19

PostPosted: 29 Jan 2019, 17:37
by Aetherbird
Just out of curiosity: what is breaking once functional mechanics? I see plenty of feedback about things that were fine once?
It's still an awesome piece of software but some things seem to be without reason....

Re: Forge Release 12/09/2018 ver 1.6.19

PostPosted: 30 Jan 2019, 07:49
by RumbleBBU
Aetherbird wrote:Just out of curiosity: what is breaking once functional mechanics? I see plenty of feedback about things that were fine once?
When you have a distributed software project like this with a lot of contributors (and no strong team leadership), things like this just happen. There are multiple paths that lead to broken (previously working) functionality. One, a new card mechanic requires something that Forge doesn't currently support. Something needs to be tweaked, something needs to be added. Done. Oops, accidentally broke a dozen older cards while doing that.

Another possibility. Dozens of people have contributed to the codebase, each with their personal coding style and mentality. Hence, some portions of code are different from the others, and the entirety is suboptimal from the code performance and maintenance viewpoint. Some kind soul decides to refactor a large part of the class tree to make it neater and more efficient. Done. Oops, a very common functionality just stopped working.

Yet another possibility. A kind soul tries to fix a particularly annoying bug (possibly a result of either of the above). Done. Oops, the fix introduced a handful of even worse bugs to the codebase.

Or someone wants to add a cool new feature. Done. Oops, again.

All of these things can happen. They are normal in a project like this.

That said, I tend to agree that Forge releases have, almost as a rule, been disappointingly buggy. The latest stable (as in "no annoying/game-breaking bugs") version that I'm using is 1.6.1 from 2017 (Amonkhet block). The one before that (and even stabler than 1.6.1) was the Theros block version from 2014 - I forget the release number, possibly 1.5.17. The other versions in between and after that have been simply too buggy in some game functionality I really want to have to replace either as my 'play' version. Not a particularly flattering track record, I'm afraid.

In the other software projects I have participated in, we used to go through code freeze and rigorous testing before a public release. And if something major went unnoticed in our testing phase, we did a separate bugfix release (typically not needed very often).

I'm not suggesting that Forge should necessarily go the same route. The playtesting required would be immense due to the complexity of the game. A clearly stated code-freeze/bugfixes-only phase maybe two weeks before a public release might help. Another possibility is of course to release a bugfix update a week or two after a public release, when the major bugs have been reported and sorted out. I would love to help in this department, but realistically, I have a life outside MtG/Forge and no time (at least at the moment).

But I do notice that Agetian sometimes makes bugfix releases of the Android port some time after a public release. Maybe it would not be too much of an effort to package the same version as a bugfix release for desktop computers at the same time?