Bug Reports (snapshot builds)
Post MTG Forge Related Programming Questions Here
Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins
Re: Bug Reports (snapshot builds)
by timmermac » 30 May 2014, 17:55
Krazy, I've seen a message that may be similar. Can you post a screenshot of the one you got?
"I just woke up, haven't had coffee, let alone a pee in 7 days, and I find out you stole my ass and made a ...mini-me! Carter, I should be irked currently, yes?" - Jack O'Neill
Re: Bug Reports (snapshot builds)
by friarsol » 30 May 2014, 18:49
This is a common misconception. Planeswalkers are not allowed to be targeted in this scenario.KrazyTheFox wrote:Some guy decided he needed to do the equivalent of lightning bolt me. I had two planeswalkers out (Jace Beleren and Venser, the Sojourner) and the AI did not target them.
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Bug Reports (snapshot builds)
by KrazyTheFox » 30 May 2014, 18:56
Huh. Good to know. Goes to show just how often I play decks with direct damage spells.friarsol wrote:This is a common misconception. Planeswalkers are not allowed to be targeted in this scenario.KrazyTheFox wrote:Some guy decided he needed to do the equivalent of lightning bolt me. I had two planeswalkers out (Jace Beleren and Venser, the Sojourner) and the AI did not target them.

-
KrazyTheFox - Programmer
- Posts: 725
- Joined: 18 Mar 2014, 23:51
- Has thanked: 66 times
- Been thanked: 226 times
Re: Bug Reports (snapshot builds)
by friarsol » 30 May 2014, 19:04
Yea, a lot of people shortcut it by saying they target the Planeswalker, but what they mean is: "I target you, on resolution I'll redirect the damage to your Plesnwalker" that'd be the same thing as activating a Sneak Attack and immediately showing the creature you are going to play instead of waiting for your opponent to give you the go ahead. Much better to wait till the spell resolves before providing the important information.KrazyTheFox wrote:Huh. Good to know. Goes to show just how often I play decks with direct damage spells.
The issue here is that the wrong player is being given the option to redirect the damage.
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Bug Reports (snapshot builds)
by timmermac » 30 May 2014, 19:19
using first 1.5.19 snapshot. Opponent has a tapped Spirit token. I am not allowed to Death Stroke it. Screenshot attached of battlefield
"I just woke up, haven't had coffee, let alone a pee in 7 days, and I find out you stole my ass and made a ...mini-me! Carter, I should be irked currently, yes?" - Jack O'Neill
Re: Bug Reports (snapshot builds)
by friarsol » 30 May 2014, 19:44
It has hexproof from the Drogskol Captain the AI just cast.timmermac wrote:using first 1.5.19 snapshot. Opponent has a tapped Spirit token. I am not allowed to Death Stroke it. Screenshot attached of battlefield
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Bug Reports (snapshot builds)
by timmermac » 30 May 2014, 20:28

"I just woke up, haven't had coffee, let alone a pee in 7 days, and I find out you stole my ass and made a ...mini-me! Carter, I should be irked currently, yes?" - Jack O'Neill
Re: Bug Reports (snapshot builds)
by KrazyTheFox » 31 May 2014, 20:36
Watching a game between two AIs, one of them played Drekavac.
Entered Dev Mode and opened that AI's hand:
And here's the other AI's hand, since it may be relevant:
- NullPointerException | Open
- Code: Select all
Game-0 > java.lang.NullPointerException
at forge.ai.ability.TokenAi.canPlayAI(TokenAi.java:194)
at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
at forge.ai.AiController.canPlaySa(AiController.java:648)
at forge.ai.AiController.canPlayAndPayFor(AiController.java:635)
at forge.ai.AiController.chooseSpellAbilyToPlay(AiController.java:1164)
at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1145)
at forge.ai.AiController.choooseSpellAbilityToPlay(AiController.java:1096)
at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:410)
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:973)
at forge.game.GameAction.startGame(GameAction.java:1536)
at forge.game.Match.startGame(Match.java:81)
at forge.control.FControl$4.run(FControl.java:441)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Entered Dev Mode and opened that AI's hand:
And here's the other AI's hand, since it may be relevant:
-
KrazyTheFox - Programmer
- Posts: 725
- Joined: 18 Mar 2014, 23:51
- Has thanked: 66 times
- Been thanked: 226 times
Re: Bug Reports (snapshot builds)
by excessum » 01 Jun 2014, 04:51
I have been getting the following error after the AI declares attackers in r26104. I can verify that reverting back to r26082 resolves this. The attached game-state is an example scenario and I have seen the same error in normal Constructed games.
- IllegalStateException | Open
- Code: Select all
Forge Version: SVN
Operating System: Windows 7 6.1 amd64
Java Version: 1.7.0_51 Oracle Corporation
java.lang.IllegalStateException: forge.screens.match.CMatchUI.setUsedToPay must be accessed from the event dispatch thread.
at forge.FThreads.assertExecutedByEdt(FThreads.java:23)
at forge.screens.match.CMatchUI.setUsedToPay(CMatchUI.java:322)
at forge.GuiDesktop.setUsedToPay(GuiDesktop.java:343)
at forge.match.input.InputBlock.setCurrentAttacker(InputBlock.java:142)
at forge.match.input.InputBlock.<init>(InputBlock.java:57)
at forge.player.PlayerControllerHuman.declareBlockers(PlayerControllerHuman.java:605)
at forge.game.phase.PhaseHandler.declareBlockersTurnBasedAction(PhaseHandler.java:546)
at forge.game.phase.PhaseHandler.onPhaseBegin(PhaseHandler.java:294)
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:1017)
at forge.game.GameAction.startGame(GameAction.java:1536)
at forge.game.Match.startGame(Match.java:81)
at forge.control.FControl$4.run(FControl.java:441)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
- Attachments
-
gamestate.txt
- (451 Bytes) Downloaded 200 times
Re: Bug Reports (snapshot builds)
by Agetian » 01 Jun 2014, 05:04
r26106: I'm getting this crash when Forge is loading (it was fine in r26103):
- NullPointerException | Open
- Code: Select all
Forge Version: 1.5.19-SNAPSHOT-r26105
Operating System: Linux 3.8.0-26-generic amd64
Java Version: 1.7.0_51 Oracle Corporation
java.lang.NullPointerException
at forge.screens.home.quest.CSubmenuQuestDraft.initialize(CSubmenuQuestDraft.java:85)
at forge.view.FView.initialize(FView.java:121)
at forge.control.FControl$3.run(FControl.java:243)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
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)
- Agetian
- Programmer
- Posts: 3486
- Joined: 14 Mar 2011, 05:58
- Has thanked: 683 times
- Been thanked: 569 times
Re: Bug Reports (snapshot builds)
by drdev » 01 Jun 2014, 05:05
Fixed in r26107excessum wrote:I have been getting the following error after the AI declares attackers in r26104. I can verify that reverting back to r26082 resolves this. The attached game-state is an example scenario and I have seen the same error in normal Constructed games.
- IllegalStateException | Open
- Code: Select all
Forge Version: SVN
Operating System: Windows 7 6.1 amd64
Java Version: 1.7.0_51 Oracle Corporation
java.lang.IllegalStateException: forge.screens.match.CMatchUI.setUsedToPay must be accessed from the event dispatch thread.
at forge.FThreads.assertExecutedByEdt(FThreads.java:23)
at forge.screens.match.CMatchUI.setUsedToPay(CMatchUI.java:322)
at forge.GuiDesktop.setUsedToPay(GuiDesktop.java:343)
at forge.match.input.InputBlock.setCurrentAttacker(InputBlock.java:142)
at forge.match.input.InputBlock.<init>(InputBlock.java:57)
at forge.player.PlayerControllerHuman.declareBlockers(PlayerControllerHuman.java:605)
at forge.game.phase.PhaseHandler.declareBlockersTurnBasedAction(PhaseHandler.java:546)
at forge.game.phase.PhaseHandler.onPhaseBegin(PhaseHandler.java:294)
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:1017)
at forge.game.GameAction.startGame(GameAction.java:1536)
at forge.game.Match.startGame(Match.java:81)
at forge.control.FControl$4.run(FControl.java:441)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
- drdev
- Programmer
- Posts: 1958
- Joined: 27 Jul 2013, 02:07
- Has thanked: 189 times
- Been thanked: 565 times
Re: Bug Reports (snapshot builds)
by KrazyTheFox » 01 Jun 2014, 05:10
Looking into it.Agetian wrote:r26106: I'm getting this crash when Forge is loading (it was fine in r26103):- Agetian
- NullPointerException | Open
- Code: Select all
Forge Version: 1.5.19-SNAPSHOT-r26105
Operating System: Linux 3.8.0-26-generic amd64
Java Version: 1.7.0_51 Oracle Corporation
java.lang.NullPointerException
at forge.screens.home.quest.CSubmenuQuestDraft.initialize(CSubmenuQuestDraft.java:85)
at forge.view.FView.initialize(FView.java:121)
at forge.control.FControl$3.run(FControl.java:243)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
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)
Edit: Should now be fixed in r26110. If not, can you give me your quest save folder?
-
KrazyTheFox - Programmer
- Posts: 725
- Joined: 18 Mar 2014, 23:51
- Has thanked: 66 times
- Been thanked: 226 times
Re: Bug Reports (snapshot builds)
by Agetian » 01 Jun 2014, 05:46
Yep, that fixed it. Thanks!
By the way, the new Draft Tournaments are an awesome idea, thanks for implementing it! 
- Agetian


- Agetian
- Agetian
- Programmer
- Posts: 3486
- Joined: 14 Mar 2011, 05:58
- Has thanked: 683 times
- Been thanked: 569 times
Re: Bug Reports (snapshot builds)
by Marek14 » 01 Jun 2014, 12:31
I don't think that's true. You, as the planeswalkers' controller, are being given a choice which replacement effect you want to apply first. Once you apply it, it's AI's turn to decide whether it wants to redirect damage to that particular planeswalker or not. If not, the second replacement effect is evaluated and the damage can be redirected to the second planeswalker.friarsol wrote:Yea, a lot of people shortcut it by saying they target the Planeswalker, but what they mean is: "I target you, on resolution I'll redirect the damage to your Plesnwalker" that'd be the same thing as activating a Sneak Attack and immediately showing the creature you are going to play instead of waiting for your opponent to give you the go ahead. Much better to wait till the spell resolves before providing the important information.KrazyTheFox wrote:Huh. Good to know. Goes to show just how often I play decks with direct damage spells.
The issue here is that the wrong player is being given the option to redirect the damage.
Re: Bug Reports (snapshot builds)
by friarsol » 01 Jun 2014, 17:06
Ah, I guess the way it was written was unclear. But that certainly could be the case, the controller isn't choosing which Planeswalker will be damaged, just which redirection gets handled first.Marek14 wrote:I don't think that's true. You, as the planeswalkers' controller, are being given a choice which replacement effect you want to apply first. Once you apply it, it's AI's turn to decide whether it wants to redirect damage to that particular planeswalker or not. If not, the second replacement effect is evaluated and the damage can be redirected to the second planeswalker.
After running the scenario the dialog that pops up does say "Choose which replacement effect to apply" although it should be more specific about which Planeswalker each replacement is referring to. So it looks like Marek read the scenario more closely than I did.
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Who is online
Users browsing this forum: Larrytof and 24 guests