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 jje4th » 01 May 2016, 23:02
Thanks for the feedback! I've been rethinking and testing the fix as well. Turns out it still may be more tricky.
Sinister concoction apparently should trigger The Gitrog Monster twice:
http://magicjudge.tumblr.com/post/14263 ... the-gitrog
That means we need to track the instance of each cost effect inside an SpellAbility rather than just the ability itself. Just creating the StackInstance earlier likely isn't enough. (Note that my fix also doesn't handle this situation correctly either).
I'll think about this more.
Sinister concoction apparently should trigger The Gitrog Monster twice:
http://magicjudge.tumblr.com/post/14263 ... the-gitrog
That means we need to track the instance of each cost effect inside an SpellAbility rather than just the ability itself. Just creating the StackInstance earlier likely isn't enough. (Note that my fix also doesn't handle this situation correctly either).
I'll think about this more.
Re: Bug Reports (snapshot builds)
by friarsol » 02 May 2016, 00:52
It'd be nice to get a definitive answer, since I got the opposite response from a different judge that also runs a "Ask judges questions" place. There's about 3 different scenarios I can think of that need clarification.jje4th wrote:Thanks for the feedback! I've been rethinking and testing the fix as well. Turns out it still may be more tricky.
Sinister concoction apparently should trigger The Gitrog Monster twice:
http://magicjudge.tumblr.com/post/14263 ... the-gitrog
That means we need to track the instance of each cost effect inside an SpellAbility rather than just the ability itself. Just creating the StackInstance earlier likely isn't enough. (Note that my fix also doesn't handle this situation correctly either).
I'll think about this more.
Sinister Concoction - Do two lands from different costs provide 2 triggers
Keldon Arsonist - Do two lands from the same/combined cost provide 2 triggers
Brutal Suppression + Lin Sivvi - Do two lands from two separate additional costs provide 2 triggers
As far as our implementation goes, if we assign the StackInstance, whether it's a Cost or Effect, and what type of cost or effect, we should be able to uniquely identify using those three aspects. (Resolved mana abilities should be the effect of their own SI, not whatever SA is being paid for)
[[I'm going to spawn this discussion off into a new thread, but... uhh.. Game of Thrones is on, and I have my priorities]]
- 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 VileTouch » 02 May 2016, 03:36
i don't know what the ai was trying to do, but i do remember the cards. a quick grep will surely help with pinpointing the exact deck.friarsol wrote:VileTouch wrote:friarsol wrote:Any idea what the AI was trying to cast (or even have the decklist)? I'll wrap this stack description with exception handling, so we can try to figure out what's causing it, and fix the AI.
oh... on that vein, would it be possible to show somewhere what deck is the AI using when you give it a random deck? (not generated)
"He traded sand for skins, skins for gold, gold for life. In the end, he traded life for sand." - Afari, Tales
Re: Bug Reports (snapshot builds)
by Out0fAmmo » 02 May 2016, 05:02
I was playing an Elf deck versus a Thopter/Gifts deck. Had the error occur while the AI attacked with some tokens. I was able to finish the game after it happened.
- ConcurrentModificationException | Open
- Code: Select all
Forge Version: 1.5.51-r-1
Operating System: Windows 7 6.1 x86
Java Version: 1.8.0_91 Oracle Corporation
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode(Unknown Source)
at java.util.HashMap$KeyIterator.next(Unknown Source)
at java.util.AbstractCollection.addAll(Unknown Source)
at java.util.HashSet.<init>(Unknown Source)
at forge.game.combat.CombatView.getAttackers(CombatView.java:61)
at forge.screens.match.TargetingOverlay.addArcsForCard(TargetingOverlay.java:279)
at forge.screens.match.TargetingOverlay.assembleArcs(TargetingOverlay.java:160)
at forge.screens.match.TargetingOverlay.access$700(TargetingOverlay.java:57)
at forge.screens.match.TargetingOverlay$OverlayPanel.paintComponent(TargetingOverlay.java:389)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JLayeredPane.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JLayeredPane.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager$4.run(Unknown Source)
at javax.swing.RepaintManager$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.access$1200(Unknown Source)
at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
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)
-
Out0fAmmo - Posts: 2
- Joined: 25 Dec 2012, 05:15
- Has thanked: 0 time
- Been thanked: 0 time
Re: Bug Reports (snapshot builds)
by tjtillman » 03 May 2016, 06:22
Old build r31177
CPU played Pale Rider of Trostad on Turn 2, discarded Gisa's Bidding, but had no mana to cast it. Afterward Gisa's Bidding remained in exile, whereas it should've gone to the graveyard.
Also occurred in another game, CPU discarded Gisa's Bidding to transform Heir of Falkenrath. CPU did not have enough mana to cast Gisa's Bidding and it remained in exile.
CPU played Pale Rider of Trostad on Turn 2, discarded Gisa's Bidding, but had no mana to cast it. Afterward Gisa's Bidding remained in exile, whereas it should've gone to the graveyard.
Also occurred in another game, CPU discarded Gisa's Bidding to transform Heir of Falkenrath. CPU did not have enough mana to cast Gisa's Bidding and it remained in exile.
Re: Bug Reports (snapshot builds)
by flupo42 » 03 May 2016, 14:55
Forge Beta: 04-13-2016 ver 1.5.51
1:
Cankerous Thirst –
I don't remember if AI spent Death mana on the spell but the Prompt log did have an action on stack about it targeting my Kindly Stranger with the -3/-3 effect and empowered his Deathspore Thallid. Stranger did not die from it, and had no counters visible on it. Deathspore Thallid became 4/4 for attack. Not sure it if matters but Kindly Stranger had Leaonin Bola attached to it at the time. Happened during AI attack phase.
(as an addition in terms of how AI uses the card - I played many duels against a deck that had this and AI always used it as out of combat removal, rather than playing it as a combat trick to get a 2 for 1 kill with it)
2:
I use Rise from the Grave to put AI's Rampaging Balloths under my control.
AI played The Great Aurora. The Balloths are removed from the board along with everything else.
I picked 6 lands from the drawn cards.
bug part A) Each of MY lands triggered Rampaging Balloths' Landfall, despite the Balloths no longer being on the battlefield
bug part B)
worse it triggered on behalf of AI – meaning the opponent got the creature tokens.
It was definitely my lands because I put down 6 and AI put down 4 lands, and it recieved 6 tokens.
1:
Cankerous Thirst –
I don't remember if AI spent Death mana on the spell but the Prompt log did have an action on stack about it targeting my Kindly Stranger with the -3/-3 effect and empowered his Deathspore Thallid. Stranger did not die from it, and had no counters visible on it. Deathspore Thallid became 4/4 for attack. Not sure it if matters but Kindly Stranger had Leaonin Bola attached to it at the time. Happened during AI attack phase.
(as an addition in terms of how AI uses the card - I played many duels against a deck that had this and AI always used it as out of combat removal, rather than playing it as a combat trick to get a 2 for 1 kill with it)
2:
I use Rise from the Grave to put AI's Rampaging Balloths under my control.
AI played The Great Aurora. The Balloths are removed from the board along with everything else.
I picked 6 lands from the drawn cards.
bug part A) Each of MY lands triggered Rampaging Balloths' Landfall, despite the Balloths no longer being on the battlefield
bug part B)
worse it triggered on behalf of AI – meaning the opponent got the creature tokens.
It was definitely my lands because I put down 6 and AI put down 4 lands, and it recieved 6 tokens.
Re: Bug Reports (snapshot builds)
by friarsol » 03 May 2016, 15:09
This isn't a bug. Spells have to target before mana is paid. So these are conditional effects. Additionally, please read the link in my signature about bug reports.flupo42 wrote:Forge Beta: 04-13-2016 ver 1.5.51
1:
Cankerous Thirst –
I don't remember if AI spent Death mana on the spell but the Prompt log did have an action on stack about it targeting my Kindly Stranger with the -3/-3 effect and empowered his Deathspore Thallid. Stranger did not die from it, and had no counters visible on it. Deathspore Thallid became 4/4 for attack. Not sure it if matters but Kindly Stranger had Leaonin Bola attached to it at the time. Happened during AI attack phase.
- 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 treaver » 03 May 2016, 15:53
When i win a game in quest mode.The Forge error and dead.
Description: [describe what you were doing when the crash occurred]
Description: [describe what you were doing when the crash occurred]
- NullPointerException | Open
- Code: Select all
Forge Version: 1.5.53-SNAPSHOT-r31186
Operating System: Windows 7 6.1 amd64
Java Version: 1.8.0_91 Oracle Corporation
java.lang.NullPointerException
at java.util.TreeMap.getEntry(Unknown Source)
at java.util.TreeMap.get(Unknown Source)
at forge.game.GameView.getAnteResult(GameView.java:204)
at forge.quest.QuestWinLoseController$1.run(QuestWinLoseController.java:95)
at forge.screens.match.ViewWinLose.showRewards(ViewWinLose.java:271)
at forge.quest.QuestWinLoseController.showRewards(QuestWinLoseController.java:90)
at forge.screens.match.QuestWinLose.populateCustomPanel(QuestWinLose.java:58)
at forge.screens.match.ViewWinLose.<init>(ViewWinLose.java:151)
at forge.screens.match.CMatchUI.finishGame(CMatchUI.java:641)
at forge.control.FControlGameEventHandler$1.run(FControlGameEventHandler.java:116)
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: Bug Reports (snapshot builds)
by VileTouch » 05 May 2016, 00:52
alright, i was able to reproduce it (after many matches!). The deck in question is Mortal Coilfriarsol wrote:Any idea what the AI was trying to cast (or even have the decklist)? I'll wrap this stack description with exception handling, so we can try to figure out what's causing it, and fix the AI.
what the AI was trying to do was to Fate Transfer the counters out of it's stolen Herald of War.
something similar happens when Leech Bonder (in the same deck) activates it's ability.
if you don't have this deck for whatever reason here it is.
- | Open
- Code: Select all
[shop]
WinsToUnlock=0
Credits=1200
MinDifficulty=0
MaxDifficulty=5
[metadata]
Name=Mortal Coil
Description=Like to exploit weakness? Then grab the "Mortal Coil" deck! This deck focuses on tricks you can pull with -1/-1 counters. Of course, the most basic "trick" is simply to put them on your opponent's creatures, which Grim Poppet, Torture, and Incremental Blight do with ease. But you're cleverer than that!
Deck Type=constructed
Set=SHM
Image=mortal_coil.jpg
[main]
12 Island|SHM
12 Swamp|SHM
2 Chainbreaker|SHM
1 Faerie Macabre|SHM
3 Gravelgill Axeshark|SHM
1 Grim Poppet|SHM
1 Inkfathom Infiltrator|SHM
1 Inkfathom Witch|SHM
2 Leech Bonder|SHM
1 Loch Korrigan|SHM
1 Oona's Gatewarden|SHM
1 River Kelpie|SHM
1 Sickle Ripper|SHM
2 Wanderbrine Rootcutters|SHM
2 Wasp Lancer|SHM
3 Wingrattle Scarecrow|SHM
1 Biting Tether|SHM
2 Fate Transfer|SHM
1 Gloomlance|SHM
1 Gnarled Effigy|SHM
1 Helm of the Ghastlord|SHM
1 Incremental Blight|SHM
2 River's Grasp|SHM
2 Scarscale Ritual|SHM
1 Torture|SHM
2 Trip Noose|SHM
[sideboard]
Last edited by VileTouch on 05 May 2016, 21:07, edited 1 time in total.
"He traded sand for skins, skins for gold, gold for life. In the end, he traded life for sand." - Afari, Tales
Re: Bug Reports (snapshot builds)
by AppleQueso » 05 May 2016, 11:27
Playing constructed: my game will freeze fairly often on the mobile version whenever I'm playing Abzan Company (doesn't matter what deck I'm playing against). Whenever I assemble the infinite life combo of Viscera Seer+Melira+Kitchen Finks and start sacking Finks, my game will freeze on "Waiting for Opponent". Conceding the game does nothing for me. Usually the only fix to get forge out of this freeze for me is to restart my phone.
I have version 1.5.52.001 Alpha. Playing on Galaxy Note 3 if that helps any. Will try to get a screenshot of it asap.
I have version 1.5.52.001 Alpha. Playing on Galaxy Note 3 if that helps any. Will try to get a screenshot of it asap.
- AppleQueso
- Posts: 5
- Joined: 29 Jul 2015, 14:12
- Has thanked: 1 time
- Been thanked: 0 time
- AppleQueso
- Posts: 5
- Joined: 29 Jul 2015, 14:12
- Has thanked: 1 time
- Been thanked: 0 time
Re: Bug Reports (snapshot builds)
by Hanmac » 05 May 2016, 19:56
r31180: tested with but should still be there with r31194
AI does have shroud because Ivory Mask.
then AI does cast Time Stretch, trying to target itself, but it does frizzle.
AI should not cast that spell because it can't target itself. (or a befriended player)
AI does have shroud because Ivory Mask.
then AI does cast Time Stretch, trying to target itself, but it does frizzle.
AI should not cast that spell because it can't target itself. (or a befriended player)
Re: Bug Reports (snapshot builds)
by VileTouch » 06 May 2016, 22:25
Ok, so after last time i'm affraid to ask, but if opponent has Suppression Field and you have a planeswalker, but you refuse to pay
to activate it's ability, is the loyalty counter supposed to change, even though the action was cancelled?. this happens with all planeswalkers and it is possible to abuse this to get infinite amounts of loyalty.

"He traded sand for skins, skins for gold, gold for life. In the end, he traded life for sand." - Afari, Tales
Re: Bug Reports (snapshot builds)
by friarsol » 07 May 2016, 03:02
Some of our costs don't have "undoability" so when you cancel them, they don't do anything in reverse. I'm not sure if add/remove counters is one of them. They probably shouldn't be if so.VileTouch wrote:Ok, so after last time i'm affraid to ask, but if opponent has Suppression Field and you have a planeswalker, but you refuse to payto activate it's ability, is the loyalty counter supposed to change, even though the action was cancelled?. this happens with all planeswalkers and it is possible to abuse this to get infinite amounts of loyalty.
Also, I wouldn't be afraid to ask, we were just trying to make sure you understood the rule correctly since you were being so adamant about it.
- 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 Hanmac » 07 May 2016, 09:56
i try to build newest r31196
because i wanted to fix some error with the Color CardView one some cards.
because i wanted to fix some error with the Color CardView one some cards.
i don't know if its a error on forge or on my system ...forge-core/src/main/java/forge/util/collect/FCollection.java:[335,38]
incompatible types: java.util.ArrayList<capture#1 of ? extends T> cannot be converted to java.util.List<T>
Who is online
Users browsing this forum: No registered users and 15 guests