It is currently 17 May 2025, 17:26
   
Text Size

Bug Reports (snapshot builds)

Post MTG Forge Related Programming Questions Here

Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins

Re: Bug Reports (snapshot builds)

Postby krevett » 20 Aug 2014, 18:10

Or just revert to the old system when you hit end turn the phase pause when the AI attacks or plays a spell? This way you have all the time needed for an answer. Since the implementation of this delay I don't use this button anymore...
krevett
 
Posts: 109
Joined: 21 Feb 2012, 22:24
Location: France
Has thanked: 18 times
Been thanked: 9 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 20 Aug 2014, 18:22

krevett wrote:Or just revert to the old system when you hit end turn the phase pause when the AI attacks or plays a spell? This way you have all the time needed for an answer. Since the implementation of this delay I don't use this button anymore...
Yes this might be a good idea too, at least as an option.
I agree that the only time this button is useful as it is right now is when you're tapped out and have no other abilities (e.g. the ones activated purely by tapping) that you may want to consider in response to the opponent's action.

- Agetian
Agetian
Programmer
 
Posts: 3486
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 569 times

Re: Bug Reports (snapshot builds)

Postby Fizanko » 20 Aug 2014, 19:24

I just noticed that the quest challenge decks are available in the Preconstructed game mode if you set the deck list to "Quest Opponent Decks" .

Instead of the name of the deck you have the deck listed as questxxx with xxx being the number/id assigned to the challenge.

The problem is that if you select one of those list questxxx decks for yourself or for the AI, when you press Start you have :

Description: [describe what you were doing when the crash occurred]

NoSuchElementException | Open
Code: Select all
Forge Version:    1.5.25-SNAPSHOT-r27084 (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.util.NoSuchElementException
   at com.google.common.collect.AbstractIterator.next(AbstractIterator.java:154)
   at com.google.common.collect.Iterators.find(Iterators.java:712)
   at com.google.common.collect.Iterables.find(Iterables.java:642)
   at forge.deck.DeckgenUtil.getQuestEvent(DeckgenUtil.java:93)
   at forge.deckchooser.FDeckChooser.getPlayer(FDeckChooser.java:233)
   at forge.screens.home.sanctioned.CSubmenuConstructed.startGame(CSubmenuConstructed.java:193)
   at forge.screens.home.sanctioned.CSubmenuConstructed.access$100(CSubmenuConstructed.java:46)
   at forge.screens.home.sanctioned.CSubmenuConstructed$2.actionPerformed(CSubmenuConstructed.java:158)
   at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
   at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
   at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
   at java.awt.Component.processMouseEvent(Unknown Source)
   at javax.swing.JComponent.processMouseEvent(Unknown Source)
   at java.awt.Component.processEvent(Unknown Source)
   at java.awt.Container.processEvent(Unknown Source)
   at java.awt.Component.dispatchEventImpl(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Window.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(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.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.awt.EventQueue$4.run(Unknown Source)
   at java.awt.EventQueue$4.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)
So if it's not possible to have the challenge decks playable, maybe making it so they aren't listed in the "Opponent Quest Decks" would solve the problem.

I never noticed they were available prior this snapshot since i play Forge, so i can't say if they worked before or if the bug is new.
probably outdated by now so you should avoid : Innistrad world for Forge (updated 17/11/2014)
Duel Decks for Forge - Forge custom decks (updated 25/10/2014)
User avatar
Fizanko
Tester
 
Posts: 780
Joined: 07 Feb 2014, 11:24
Has thanked: 155 times
Been thanked: 94 times

Re: Bug Reports (snapshot builds)

Postby drdev » 20 Aug 2014, 19:26

How about this. What if I made it so spells/abilities on the stack already when you click End Turn are auto-yielded, but it doesn't auto-yield if a new spell or activated ability goes on the stack after that. That way you can use the End Turn button to auto-yield to a storm spell nicely and avoid needing to manually OK abilities at end of turn, but aren't caught off guard by a spell or ability you didn't expect. I could also try to make it smart enough to still yield to new spells if you have nothing you can do in response (aka, no spell you can cast or abilities you can activate).

Would that alleviate everyone's concerns without adding unnecessary settings? Or would people still want settings to tweak the delays?

As for the issue with skipping the attack phase for must-attack creatures, should you still be given the option to declare other attackers, are should it just auto-attack with only those creatures that must attack and not prompt you for any input?
Last edited by drdev on 20 Aug 2014, 19:46, edited 3 times in total.
drdev
Programmer
 
Posts: 1958
Joined: 27 Jul 2013, 02:07
Has thanked: 189 times
Been thanked: 565 times

Re: Bug Reports (snapshot builds)

Postby Fizanko » 20 Aug 2014, 19:33

To my surprise i became used to the slightly slower delay, so i'm not sure what would be a better choice, assuming there's any.
probably outdated by now so you should avoid : Innistrad world for Forge (updated 17/11/2014)
Duel Decks for Forge - Forge custom decks (updated 25/10/2014)
User avatar
Fizanko
Tester
 
Posts: 780
Joined: 07 Feb 2014, 11:24
Has thanked: 155 times
Been thanked: 94 times

Re: Bug Reports (snapshot builds)

Postby Thesaguy » 20 Aug 2014, 23:33

I don't think the "lifelink" on the card Eternal Thirst (M15) is working.
I don't seem to get any life from it.
Thesaguy
 
Posts: 31
Joined: 07 Oct 2010, 19:37
Has thanked: 3 times
Been thanked: 8 times

Re: Bug Reports (snapshot builds)

Postby friarsol » 21 Aug 2014, 00:05

Thesaguy wrote:I don't think the "lifelink" on the card Eternal Thirst (M15) is working.
I don't seem to get any life from it.
Works fine for me. Are you sure there aren't any cards in play that prevent you from gaining life?
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Bug Reports (snapshot builds)

Postby friarsol » 21 Aug 2014, 01:21

Got the following crash in an AI vs AI game:

AI had an Apostle's Blessing in hand, and two fairly non-descript creatures in play.

NullPointerException | Open
Code: Select all
Forge Version:    SVN
Operating System: Windows 8 6.2 amd64
Java Version:     1.7.0_51 Oracle Corporation

java.lang.NullPointerException
   at forge.ai.AiAttackController.toProtectAttacker(AiAttackController.java:1092)
   at forge.ai.ability.ProtectAi$1.apply(ProtectAi.java:146)
   at forge.ai.ability.ProtectAi$1.apply(ProtectAi.java:107)
   at com.google.common.collect.Iterators$7.computeNext(Iterators.java:647)
   at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
   at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
   at com.google.common.collect.Iterators.addAll(Iterators.java:356)
   at com.google.common.collect.Lists.newArrayList(Lists.java:147)
   at com.google.common.collect.Lists.newArrayList(Lists.java:129)
   at forge.game.card.CardLists.filter(CardLists.java:225)
   at forge.ai.ability.ProtectAi.getProtectCreatures(ProtectAi.java:107)
   at forge.ai.ability.ProtectAi.protectTgtAI(ProtectAi.java:248)
   at forge.ai.ability.ProtectAi.canPlayAI(ProtectAi.java:231)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:650)
   at forge.ai.AiController.canPlayAndPayFor(AiController.java:637)
   at forge.ai.AiController.chooseSpellAbilyToPlay(AiController.java:1173)
   at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1154)
   at forge.ai.AiController.choooseSpellAbilityToPlay(AiController.java:1110)
   at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:415)
   at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:1012)
   at forge.game.GameAction.startGame(GameAction.java:1558)
   at forge.game.Match.startGame(Match.java:81)
   at forge.control.FControl$4.run(FControl.java:447)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
   at java.lang.Thread.run(Thread.java:744)
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 21 Aug 2014, 03:52

drdev wrote:How about this. What if I made it so spells/abilities on the stack already when you click End Turn are auto-yielded, but it doesn't auto-yield if a new spell or activated ability goes on the stack after that. That way you can use the End Turn button to auto-yield to a storm spell nicely and avoid needing to manually OK abilities at end of turn, but aren't caught off guard by a spell or ability you didn't expect. I could also try to make it smart enough to still yield to new spells if you have nothing you can do in response (aka, no spell you can cast or abilities you can activate).

Would that alleviate everyone's concerns without adding unnecessary settings? Or would people still want settings to tweak the delays?

As for the issue with skipping the attack phase for must-attack creatures, should you still be given the option to declare other attackers, are should it just auto-attack with only those creatures that must attack and not prompt you for any input?
Thr proposal about not yielding to new spells and abilities sounds very reasonable, i think it'll work just fine. As far as attacking goes - not sure, to be honest. Probably it's ok not to stop cause the player wanted to explicitly end the turn, but if blockers are declared by the opponent (e.g. for the auto-attacking creature), i think it's worth to stop and let the player respond, like with the other new events.
Agetian
Programmer
 
Posts: 3486
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 569 times

Re: Bug Reports (snapshot builds)

Postby krevett » 21 Aug 2014, 07:44

I agree with Agetian, I think there's no need to have multiple options for handling this just make it so that the human player can't be surprised by something he didn't expect. And as suggested adding a pause if blockers are declared to adjust is a good idea!
krevett
 
Posts: 109
Joined: 21 Feb 2012, 22:24
Location: France
Has thanked: 18 times
Been thanked: 9 times

Re: Bug Reports (snapshot builds)

Postby excessum » 21 Aug 2014, 12:22

friarsol wrote:Got the following crash in an AI vs AI game:

AI had an Apostle's Blessing in hand, and two fairly non-descript creatures in play.
I have no idea what is causing this or the earlier version in viewtopic.php?f=26&t=14610&p=153946&hilit=goblin+wizard#p153946. I did not see errors with Goblin Wizard granting itself protection and attacking even with the original version of my code in r26262. Similarly, I do not see any errors with Apostle's Blessing in the HEAD revision.

Do you still remember the exact board state? AiAttackController.java:1092 is referring to "color" in the switch block and I fail to see how you can get a null pointer at that stage.
excessum
 
Posts: 177
Joined: 21 Oct 2013, 02:30
Has thanked: 0 time
Been thanked: 19 times

Re: Bug Reports (snapshot builds)

Postby friarsol » 21 Aug 2014, 13:56

excessum wrote:Do you still remember the exact board state? AiAttackController.java:1092 is referring to "color" in the switch block and I fail to see how you can get a null pointer at that stage.
It was a draft tournament with Scars of Mirrodin decks, and it was fast forwarding through the AI match, so I wasn't watching that closely. The active player had two creatures, neither of which seemed to have any relevant abilities. The defending player had two blockers. Don't know which colors the blocker had, since that's probably the information that is being looked up. Maybe one was an artifact so it was coming back as colorless?
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Bug Reports (snapshot builds)

Postby fmartel » 21 Aug 2014, 16:39

Hello all. In playing a Gauntlet, in the middle of a game I got this crash.

NullPointerException | Open
Code: Select all
Forge Version:    1.5.24-r27072
Operating System: Windows 7 6.1 amd64
Java Version:     1.8.0_11 Oracle Corporation

java.lang.NullPointerException
   at forge.game.ability.AbilityUtils.applyAbilityTextChangeEffects(AbilityUtils.java:1521)
   at forge.game.ability.AbilityUtils.getDefinedCards(AbilityUtils.java:84)
   at forge.ai.ComputerUtilCombat.predictPowerBonusOfAttacker(ComputerUtilCombat.java:1133)
   at forge.ai.ComputerUtilCombat.damageIfUnblocked(ComputerUtilCombat.java:127)
   at forge.ai.AiAttackController.declareAttackers(AiAttackController.java:690)
   at forge.ai.AiController.declareAttackers(AiController.java:1126)
   at forge.ai.PlayerControllerAi.declareAttackers(PlayerControllerAi.java:405)
   at forge.game.phase.PhaseHandler.declareAttackersTurnBasedAction(PhaseHandler.java:474)
   at forge.game.phase.PhaseHandler.onPhaseBegin(PhaseHandler.java:291)
   at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:1060)
   at forge.game.GameAction.startGame(GameAction.java:1558)
   at forge.game.Match.startGame(Match.java:81)
   at forge.control.FControl$4.run(FControl.java:442)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
fmartel
 
Posts: 281
Joined: 31 Dec 2013, 19:27
Location: Québec City
Has thanked: 8 times
Been thanked: 4 times

Re: Bug Reports (snapshot builds)

Postby Nanaki404 » 21 Aug 2014, 19:53

Forge Version: 1.5.23-r26900

Mana Reflection seems to produce too much mana when using mana abilities during the casting of a spell (i.e., with 1 mana reflection in play, if I try to play a spell, each land tapped reduce the remaining cost by 4 instead of 2).
Happens both with lands and creatures (such as Rofellos, Llanowar Emissary).

If I have several (n) Mana Reflection, instead of procuding 2^n mana, it produces twice that (2^(n+1)), so as if I had one more.
Nanaki404
 
Posts: 3
Joined: 07 Aug 2014, 22:11
Has thanked: 0 time
Been thanked: 0 time

Re: Bug Reports (snapshot builds)

Postby fmartel » 21 Aug 2014, 20:04

this is when playing a contructed format "vanguard" (I think)

ConcurrentModificationException | Open
Code: Select all
Forge Version:    1.5.24-r27072
Operating System: Windows 7 6.1 amd64
Java Version:     1.8.0_11 Oracle Corporation

java.util.ConcurrentModificationException
   at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
   at java.util.ArrayList$Itr.next(Unknown Source)
   at com.google.common.collect.AbstractMapBasedMultimap$Itr.next(AbstractMapBasedMultimap.java:1150)
   at forge.game.combat.Combat.getAttackers(Combat.java:197)
   at forge.screens.match.TargetingOverlay.addArcsForCard(TargetingOverlay.java:234)
   at forge.screens.match.TargetingOverlay.assembleArcs(TargetingOverlay.java:139)
   at forge.screens.match.TargetingOverlay.access$100(TargetingOverlay.java:48)
   at forge.screens.match.TargetingOverlay$OverlayPanel.paintComponent(TargetingOverlay.java:354)
   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$3.run(Unknown Source)
   at javax.swing.RepaintManager$3.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.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$1100(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$400(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)
fmartel
 
Posts: 281
Joined: 31 Dec 2013, 19:27
Location: Québec City
Has thanked: 8 times
Been thanked: 4 times

PreviousNext

Return to Developer's Corner

Who is online

Users browsing this forum: No registered users and 37 guests


Who is online

In total there are 37 users online :: 0 registered, 0 hidden and 37 guests (based on users active over the past 10 minutes)
Most users ever online was 4143 on 23 Jan 2024, 08:21

Users browsing this forum: No registered users and 37 guests

Login Form