Page 2 of 11

Re: Forge Beta: 09-12-2014 ver 1.5.26

PostPosted: 13 Sep 2014, 16:14
by Agetian
Ok, the issues above related to Extort cards and to Sphinx's Revelation were hopefully fixed (unless I broke something else in the process, though I theoretically shouldn't have). Is it possible to please snapshot r27343 and, if it proves stable enough, put it up here as a hot fix for some issues (also fixes Kodama of the Center Tree, draft rotation, and an AI-related NPE)? (might be one of our last snapshots, or maybe the last snapshot, before the reintegration of the GUI refactoring branch, which will require additional testing and tweaking). Thanks.

- Agetian

Re: Forge Beta: 09-12-2014 ver 1.5.26

PostPosted: 13 Sep 2014, 16:24
by drdev
Fizanko wrote:Launch Forge
Constructed Mode
1 player
1 AI
Enable " Archenemy "
Click "Select Scheme" and set "Generate" (or anything else)
Click "Scheme Deck Editor"

this is then generated :

NullPointerException | Open
Code: Select all
Forge Version:    1.5.26-r27298Mu (mixed revisions detected; please update from the root directory)
Operating System: Windows XP 5.1 x86
Java Version:     1.7.0_10 Oracle Corporation

java.lang.NullPointerException
   at forge.screens.deckeditor.VDeckEditorUI$1.run(VDeckEditorUI.java:39)
   at java.awt.event.InvocationEvent.dispatch(Unknown Source)
   at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
   at java.awt.EventQueue.access$200(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$1.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)
edit : tested it in 1.5.25 and same kind of error, so at least it's not one of the new problem to 1.5.26
This is now fixed and will be working in the next Snapshot build.

Re: Forge Beta: 09-12-2014 ver 1.5.26

PostPosted: 13 Sep 2014, 16:30
by Agetian
The issue I reported above with Extirpate appears to be "cosmetic" - the card functions correctly (it shows you the correct library) but it phrases the title of the window incorrectly (it says "Your library" even though you're looking at the opponent's library).

- Agetian

Re: Forge Beta: 09-12-2014 ver 1.5.26

PostPosted: 13 Sep 2014, 16:52
by KrazyTheFox
Those fixes are in this snapshot build: http://www.krazyweb.net/forge/forge-gui-desktop-1.5.28-SNAPSHOT-r27347.tar.bz2

OSX users will need to extract the archive and run forge.command.

Re: Forge Beta: 09-12-2014 ver 1.5.26

PostPosted: 13 Sep 2014, 17:25
by drdev
Fizanko wrote:there's a big nasty problem with Shrine of Boundless Growth in 1.5.26 (and very likely to happen for all other cards doing something similar) that didn't happened in 1.5.25.

The situation :

You have 3 lands on the battlefield, you have Shrine of Boundless Growth (with 1 charge on it) and wants to play a 3 mana creature.

Expected is that you play the 3 lands to play that 3 mana creatures, so you can get Shrine of Boundless Growth to continue to grow more charge counters so when your big ones come, you can play it earlier than what your lands would allow it.
It's what happens in 1.5.25

But in current 1.5.26 version it's not what happens.

You select the 3 mana creature, press spacebar or press OK to pay the 3 mana and the game will sacrifice Shrine of Boundless Growth and use 2 lands ! instead of using the 3 lands.

edit : played several more duels both in 1.5.26 and 1.5.25 with the same deck featuring 4 Shrine of Boundless Growth and indeed 1.5.26 will sacrifice it everytime instead of playings lands as it should when you play a creature that do not need the sacrifice of that card.
1.5.25 does not have this problem and will prioritize the lands to get the mana as it should.
I've refactored the AI logic used to sort which abilities are used when pressing Auto, so this should be fixed. Non-undoable mana abilities such as the Shrines should now only be used as a last resort. This fix will be available with the next snapshot build.

Re: Forge Beta: 09-12-2014 ver 1.5.26

PostPosted: 13 Sep 2014, 17:41
by KrazyTheFox
drdev wrote:This fix will be available with the next snapshot build.
http://www.krazyweb.net/forge/forge-gui-desktop-1.5.28-SNAPSHOT-r27348.tar.bz2

Re: Forge Beta: 09-12-2014 ver 1.5.26

PostPosted: 13 Sep 2014, 17:52
by Fizanko
Thank you very much gentlemen.

Re: Forge Beta: 09-12-2014 ver 1.5.26

PostPosted: 13 Sep 2014, 18:50
by Chris H.
I was able to build a snapshot based on rev 27348 and was able to deploy it to the cardforge site:

forge-gui-desktop-1.5.28-20140913.183421-2.tar.bz2

forge-gui-desktop-1.5.28-20140913.183421-2-osx.tar.bz2

Re: Forge Beta: 09-12-2014 ver 1.5.26

PostPosted: 13 Sep 2014, 19:17
by antekm
Opponent reanimated artifact creature with Dance of the Dead. I stole control of it. During upkeep I was asked if I want to pay cost 1B to untap it. Said yes, and 2 mana was tapped but not from me but from the opponent.

Re: Forge Beta: 09-12-2014 ver 1.5.26

PostPosted: 14 Sep 2014, 02:41
by Rooger
I'm getting this error whenever the AI plays Nykthos, Shrine to Nyx

NullPointerException | Open
Code: Select all
Forge Version:    1.5.26-r27298Mu (mixed revisions detected; please update from the root directory)
Operating System: Windows 8.1 6.3 amd64
Java Version:     1.8.0_20 Oracle Corporation

java.lang.NullPointerException
   at forge.ai.ComputerUtilMana$ManaProducingCard.addAbility(ComputerUtilMana.java:110)
   at forge.ai.ComputerUtilMana$ManaProducingCard.<init>(ComputerUtilMana.java:92)
   at forge.ai.ComputerUtilMana.sortManaAbilities(ComputerUtilMana.java:130)
   at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:387)
   at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:79)
   at forge.ai.ComputerUtilMana.canPayManaCost(ComputerUtilMana.java:54)
   at forge.ai.ComputerUtilCost.canPayCost(ComputerUtilCost.java:378)
   at forge.ai.AiController.canPlayAndPayFor(AiController.java:678)
   at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1225)
   at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1206)
   at forge.ai.AiController.choooseSpellAbilityToPlay(AiController.java:1162)
   at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:415)
   at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:1012)
   at forge.game.GameAction.startGame(GameAction.java:1559)
   at forge.game.Match.startGame(Match.java:81)
   at forge.control.FControl$4.run(FControl.java:447)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)

Re: Forge Beta: 09-12-2014 ver 1.5.26

PostPosted: 14 Sep 2014, 02:52
by KrazyTheFox
Rooger wrote:I'm getting this error whenever the AI plays Nykthos, Shrine to Nyx

NullPointerException | Open
Code: Select all
Forge Version:    1.5.26-r27298Mu (mixed revisions detected; please update from the root directory)
Operating System: Windows 8.1 6.3 amd64
Java Version:     1.8.0_20 Oracle Corporation

java.lang.NullPointerException
   at forge.ai.ComputerUtilMana$ManaProducingCard.addAbility(ComputerUtilMana.java:110)
   at forge.ai.ComputerUtilMana$ManaProducingCard.<init>(ComputerUtilMana.java:92)
   at forge.ai.ComputerUtilMana.sortManaAbilities(ComputerUtilMana.java:130)
   at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:387)
   at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:79)
   at forge.ai.ComputerUtilMana.canPayManaCost(ComputerUtilMana.java:54)
   at forge.ai.ComputerUtilCost.canPayCost(ComputerUtilCost.java:378)
   at forge.ai.AiController.canPlayAndPayFor(AiController.java:678)
   at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1225)
   at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1206)
   at forge.ai.AiController.choooseSpellAbilityToPlay(AiController.java:1162)
   at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:415)
   at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:1012)
   at forge.game.GameAction.startGame(GameAction.java:1559)
   at forge.game.Match.startGame(Match.java:81)
   at forge.control.FControl$4.run(FControl.java:447)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
That has been fixed and you can download a snapshot build with that fix here: http://www.krazyweb.net/forge/forge-gui-desktop-1.5.28-SNAPSHOT-r27366.tar.bz2

Re: Forge Beta: 09-12-2014 ver 1.5.26

PostPosted: 14 Sep 2014, 03:05
by Rooger
Oh, ok cool, thanks for the quick reply :)

Re: Forge Beta: 09-12-2014 ver 1.5.26

PostPosted: 14 Sep 2014, 04:15
by Marek14
This was in previous version, but might still persist since it's an unlikely situation: the cards with {2/C} mana symbols don't work with cost reductions properly.

According to Comprehensive Rules, when paying a hybrid cost (or Phyrexian cost), there should be a step where every hybrid symbol is reduced to one of its sides, thus getting a normal, non-hybrid payment (it's also done when hybrid cost should be used for gaining mana, as with Elemental Resonance, or for cost reduction, as with the offering ability). Forge simply allows to pay these symbols in multiple ways, but that causes a problem with cost reductions. (In my case, it was Reaper King + Cloud Key.)

Haven't tested it, but I wonder if there's also a problem with normal hybrid mana and reductions such as Edgewalker or Nekrataal Avatar.

Re: Forge Beta: 09-12-2014 ver 1.5.26

PostPosted: 14 Sep 2014, 11:11
by donluca
Description: I played a Balustrade Spy, it resolved, then I passed the turn and at the beginning of my end turn this exception came up.

ConcurrentModificationException | Open
Code: Select all
Forge Version:    1.5.26-r27298Mu (mixed revisions detected; please update from the root directory)
Operating System: Mac OS X 10.9.4 x86_64
Java Version:     1.7.0_65 Oracle Corporation

java.util.ConcurrentModificationException
   at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)
   at java.util.ArrayList$Itr.next(ArrayList.java:831)
   at forge.game.card.Card.getHiddenExtrinsicKeyword(Card.java:4807)
   at forge.game.card.Card.getKeyword(Card.java:4420)
   at forge.game.card.Card.hasKeyword(Card.java:5286)
   at forge.game.card.Card.isSick(Card.java:3160)
   at forge.view.arcane.CardPanel.paintChildren(CardPanel.java:395)
   at javax.swing.JComponent.paint(JComponent.java:1063)
   at forge.view.arcane.CardPanel.paint(CardPanel.java:291)
   at javax.swing.JComponent.paintChildren(JComponent.java:887)
   at javax.swing.JComponent.paint(JComponent.java:1063)
   at javax.swing.JComponent.paintChildren(JComponent.java:887)
   at javax.swing.JComponent.paint(JComponent.java:1063)
   at javax.swing.JViewport.paint(JViewport.java:731)
   at javax.swing.JComponent.paintChildren(JComponent.java:887)
   at javax.swing.JComponent.paint(JComponent.java:1063)
   at forge.toolbox.FScrollPane.paint(FScrollPane.java:83)
   at javax.swing.JComponent.paintChildren(JComponent.java:887)
   at javax.swing.JComponent.paint(JComponent.java:1063)
   at javax.swing.JComponent.paintChildren(JComponent.java:887)
   at javax.swing.JComponent.paint(JComponent.java:1063)
   at javax.swing.JComponent.paintChildren(JComponent.java:887)
   at javax.swing.JComponent.paint(JComponent.java:1063)
   at javax.swing.JComponent.paintChildren(JComponent.java:887)
   at javax.swing.JComponent.paint(JComponent.java:1063)
   at javax.swing.JComponent.paintChildren(JComponent.java:887)
   at javax.swing.JComponent.paint(JComponent.java:1063)
   at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
   at javax.swing.JComponent.paintChildren(JComponent.java:887)
   at javax.swing.JComponent.paint(JComponent.java:1063)
   at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
   at javax.swing.JComponent.paintChildren(JComponent.java:887)
   at javax.swing.JComponent.paint(JComponent.java:1063)
   at javax.swing.JComponent.paintToOffscreen(JComponent.java:5219)
   at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1529)
   at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1452)
   at javax.swing.RepaintManager.paint(RepaintManager.java:1249)
   at javax.swing.JComponent._paintImmediately(JComponent.java:5167)
   at javax.swing.JComponent.paintImmediately(JComponent.java:4978)
   at javax.swing.RepaintManager$3.run(RepaintManager.java:808)
   at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
   at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
   at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
   at javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
   at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1677)
   at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
   at java.awt.EventQueue.access$200(EventQueue.java:103)
   at java.awt.EventQueue$3.run(EventQueue.java:694)
   at java.awt.EventQueue$3.run(EventQueue.java:692)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Re: Forge Beta: 09-12-2014 ver 1.5.26

PostPosted: 14 Sep 2014, 11:36
by antekm
Prototype Portal - no matter what is the casting cost of imprinted artifact, I can choose 0 and it will work.

Gorilla Shaman - I can choose any number for X and it will work (no matter of real casting cost of artifact)

I think in such cases (where X depends on some target, not my choice) X should be set automatically (so eg. I choose artifact for GS and I have to pay specific cost, not choose X first)