It is currently 24 May 2025, 09:24
   
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 moomarc » 28 May 2013, 11:38

Sloth wrote:
moomarc wrote:Thanks for the quick fix Sloth. Just came across another issue while testing further that I can't explain. I attacked the AI with a Dwarven Berserker and Alley Grifters. I then cast a Curtain of Light for the AI on each creature. The Berserker still dealt the combat damage while the Grifters were correctly didn't. I tested further on successive turns attacking with each individually then being blocked by the curtain, and each time the Berserker still dealt damage.
This is correct, Dwarven Berserker has trample.
#-o That makes sense. Thanks for clarifying (and glad my stupidity helped point out a way to make the AI smarter).
-Marc
User avatar
moomarc
Pixel Commander
 
Posts: 2091
Joined: 04 Jun 2010, 15:22
Location: Johannesburg, South Africa
Has thanked: 371 times
Been thanked: 372 times

Re: Bug Reports (snapshot builds)

Postby Max mtg » 28 May 2013, 13:02

Consider revised edition of input system: r21779 "No more concurrency".

My todo: (1) collect used threads when game ends, (2) Karn Liberated ultimate, (3) Game over under mind control, (4) AI vs AI is too fast
Single class for single responsibility.
Max mtg
Programmer
 
Posts: 1997
Joined: 02 Jul 2011, 14:26
Has thanked: 173 times
Been thanked: 334 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 28 May 2013, 13:37

Tried r21780, got this crash when starting a match (probably not connected to the previous issues), I restarted the game and tried another match and the second time it didn't crash:

IllegalArgumentException | Open
Code: Select all
Forge Version:    1.3.17-SNAPSHOT-r21780
Operating System: Linux 3.7.0-7-generic amd64
Java Version:     1.7.0_21 Oracle Corporation

java.lang.IllegalArgumentException: No element named EndCombat in enum PhaseType
   at forge.game.phase.PhaseType.smartValueOf(PhaseType.java:68)
   at forge.game.phase.PhaseType.parseRange(PhaseType.java:91)
   at forge.card.spellability.SpellAbilityRestriction.setRestrictions(SpellAbilityRestriction.java:133)
   at forge.card.ability.AbilityFactory.makeRestrictions(AbilityFactory.java:294)
   at forge.card.ability.AbilityFactory.getAbility(AbilityFactory.java:201)
   at forge.card.ability.AbilityFactory.getAbility(AbilityFactory.java:110)
   at forge.card.cardfactory.CardFactoryUtil.addAbilityFactoryAbilities(CardFactoryUtil.java:2191)
   at forge.card.cardfactory.CardFactory.buildAbilities(CardFactory.java:292)
   at forge.card.cardfactory.CardFactory.getCard(CardFactory.java:238)
   at forge.item.CardPrinted.toForgeCard(CardPrinted.java:249)
   at forge.game.GameNew.preparePlayerLibrary(GameNew.java:137)
   at forge.game.GameNew.newGame(GameNew.java:263)
   at forge.game.MatchState.startRound(MatchState.java:108)
   at forge.gui.home.sanctioned.CSubmenuConstructed$6.run(CSubmenuConstructed.java:134)
   at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
   at java.awt.EventQueue.access$200(EventQueue.java:103)
   at java.awt.EventQueue$3.run(EventQueue.java:688)
   at java.awt.EventQueue$3.run(EventQueue.java:686)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
   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
Agetian
Programmer
 
Posts: 3486
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 569 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 28 May 2013, 13:44

By the way, the new input seems good so far, just played a couple matches, no threading-related issues yet, and overall the input seems a tad bit faster somehow. Good job, thanks, Max!

- 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 Max mtg » 28 May 2013, 13:46

it's unrelated to previous issues, use a different deck or r21781

Agetian wrote:By the way, the new input seems good so far, just played a couple matches, no threading-related issues yet, and overall the input seems a tad bit faster somehow. Good job, thanks, Max!
There won't be any more threading issues - there remains only one thread that can manage inputs.
Yes, it is faster, because AI no longer uses inputs, and phases when players have no priority are skipped without updating UI.

Great, then the next beta will be "the best Forge ever"... again :)
Single class for single responsibility.
Max mtg
Programmer
 
Posts: 1997
Joined: 02 Jul 2011, 14:26
Has thanked: 173 times
Been thanked: 334 times

Re: Bug Reports (snapshot builds)

Postby lzy » 28 May 2013, 15:02

Description: Crash when copy the spell ture/burn using Melek, Izzet Paragon's ability, I cast just the burn part without fuse
by the way the fuse option should not appear when you cast a spell from a library

java. lang. RuntimeException: Not found which part to choose for ability Burn deals 2 damage to target creature or player. from card Burn (794)
at forge. Card. setSplitStateToPlayAbility(Card. java:8233)
at forge. game. player. HumanPlay. playSaWithoutPayingManaCost(HumanPlay. java:199)
at forge. game. player. PlayerControllerHuman. playSpellAbilityForFree(PlayerControllerHuman. java:111)
at forge. card. cardfactory. CardFactory. copySpellontoStack(CardFactory. java:214)
at forge. card. ability. effects. CopySpellAbilityEffect. resolve(CopySpellAbilityEffect. java:147)
at forge. card. ability. AbilityApiBased. resolve(AbilityApiBased. java:62)
at forge. card. ability. AbilityUtils. resolveApiAbility(AbilityUtils. java:1057)
at forge. card. ability. AbilityUtils. resolve(AbilityUtils. java:1034)
at forge. card. spellability. HumanPlaySpellAbility. fillRequirements(HumanPlaySpellAbility. java:108)
at forge. game. player. HumanPlay. playSpellAbilityNoStack(HumanPlay. java:241)
at forge. card. trigger. WrappedAbility. resolve(WrappedAbility. java:367)
at forge. card. ability. AbilityUtils. resolveApiAbility(AbilityUtils. java:1057)
at forge. card. ability. AbilityUtils. resolve(AbilityUtils. java:1034)
at forge. game. zone. MagicStack. resolveStack(MagicStack. java:618)
at forge. game. phase. PhaseHandler. startFirstTurn(PhaseHandler. java:747)
at forge. game. GameAction. mulligan(GameAction. java:1496)
at forge. game. MatchState$1. run(MatchState. java:128)
at java. util. concurrent. ThreadPoolExecutor. runWorker(Unknown Source)
at java. util. concurrent. ThreadPoolExecutor$Worker. run(Unknown Source)
at java. lang. Thread. run(Unknown Source)
lzy
 
Posts: 3
Joined: 06 Feb 2013, 15:21
Has thanked: 0 time
Been thanked: 0 time

Re: Bug Reports (snapshot builds)

Postby mark » 28 May 2013, 19:44

I used Griselbrand to draw 2x7 cards in the AI's turn and in the AI's cleanup phase I am forced to discard my cards.
mark
 
Posts: 138
Joined: 28 Dec 2011, 11:32
Has thanked: 6 times
Been thanked: 11 times

Re: Bug Reports (snapshot builds)

Postby tojammot » 28 May 2013, 22:59

Description: [describe what you were doing when the crash occurred]
-I was dueling and just killed the opponents creature. This error happens all the time but only on my 2nd quest, not my 1st

NullPointerException | Open
Code: Select all
Forge Version:    1.3.16-r21506
Operating System: Windows 7 6.1 amd64
Java Version:     1.7.0_13 Oracle Corporation

java.lang.NullPointerException
   at java.util.TreeMap.getEntry(Unknown Source)
   at java.util.TreeMap.containsKey(Unknown Source)
   at java.util.TreeMap$KeySet.contains(Unknown Source)
   at forge.Card.hasProperty(Card.java:6026)
   at forge.Card.isValid(Card.java:5162)
   at forge.GameEntity.isValid(GameEntity.java:295)
   at forge.card.trigger.TriggerChangesZone.performTest(TriggerChangesZone.java:78)
   at forge.card.trigger.TriggerHandler.runSingleTrigger(TriggerHandler.java:328)
   at forge.card.trigger.TriggerHandler.runWaitingTrigger(TriggerHandler.java:252)
   at forge.card.trigger.TriggerHandler.runWaitingTriggers(TriggerHandler.java:193)
   at forge.game.GameAction.checkStateEffects(GameAction.java:1059)
   at forge.game.phase.PhaseHandler.handleBeginPhase(PhaseHandler.java:351)
   at forge.gui.InputProxy$1.run(InputProxy.java:69)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
tojammot
 
Posts: 195
Joined: 06 Jun 2008, 07:38
Has thanked: 1 time
Been thanked: 3 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 29 May 2013, 06:46

r21787: got this NPE:

Description: entered the Declare Attackers phase, might have already clicked on the first attacker (or not - I played fast so I'm not sure which came first, the exception or me declaring the attacker).

NullPointerException | Open
Code: Select all
Forge Version:    1.3.17-SNAPSHOT-r21787
Operating System: Linux 3.7.0-7-generic amd64
Java Version:     1.7.0_21 Oracle Corporation

java.lang.NullPointerException
   at forge.game.phase.CombatUtil.canAttackNextTurn(CombatUtil.java:910)
   at forge.game.phase.CombatUtil.canAttack(CombatUtil.java:821)
   at forge.game.phase.CombatUtil.canAttack(CombatUtil.java:807)
   at forge.control.input.InputAttack.onCardSelected(InputAttack.java:134)
   at forge.control.input.InputBase.selectCard(InputBase.java:70)
   at forge.gui.InputProxy.selectCard(InputProxy.java:121)
   at forge.gui.match.nonsingleton.CField.cardclickAction(CField.java:193)
   at forge.gui.match.nonsingleton.CField.access$7(CField.java:182)
   at forge.gui.match.nonsingleton.CField$8.mousePressed(CField.java:87)
   at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280)
   at java.awt.Component.processMouseEvent(Component.java:6502)
   at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
   at java.awt.Component.processEvent(Component.java:6270)
   at java.awt.Container.processEvent(Container.java:2229)
   at java.awt.Component.dispatchEventImpl(Component.java:4861)
   at java.awt.Container.dispatchEventImpl(Container.java:2287)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
   at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4489)
   at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
   at java.awt.Container.dispatchEventImpl(Container.java:2273)
   at java.awt.Window.dispatchEventImpl(Window.java:2719)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
   at java.awt.EventQueue.access$200(EventQueue.java:103)
   at java.awt.EventQueue$3.run(EventQueue.java:688)
   at java.awt.EventQueue$3.run(EventQueue.java:686)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
   at java.awt.EventQueue$4.run(EventQueue.java:702)
   at java.awt.EventQueue$4.run(EventQueue.java:700)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
   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)

Postby moomarc » 29 May 2013, 09:44

Trying to concede in any multiplayer variant does nothing on the first few clicks then crashes with this NPE. Works fine in regular constructed matches.

NullPointerException | Open
Code: Select all
Forge Version:    SVN
Operating System: Windows 7 6.1 x86
Java Version:     1.6.0_35 Sun Microsystems Inc.

java.lang.NullPointerException
   at forge.gui.match.controllers.CDock.concede(CDock.java:91)
   at forge.control.FControl$2.windowClosing(FControl.java:144)
   at java.awt.Window.processWindowEvent(Unknown Source)
   at javax.swing.JFrame.processWindowEvent(Unknown Source)
   at java.awt.Window.processEvent(Unknown Source)
   at java.awt.Component.dispatchEventImpl(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$400(Unknown Source)
   at java.awt.EventQueue$2.run(Unknown Source)
   at java.awt.EventQueue$2.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(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.AccessControlContext$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)
-Marc
User avatar
moomarc
Pixel Commander
 
Posts: 2091
Joined: 04 Jun 2010, 15:22
Location: Johannesburg, South Africa
Has thanked: 371 times
Been thanked: 372 times

Re: Bug Reports (snapshot builds)

Postby Max mtg » 29 May 2013, 10:02

Incorrect cleanup request and Howling Mine hanging the game - both fixed
Single class for single responsibility.
Max mtg
Programmer
 
Posts: 1997
Joined: 02 Jul 2011, 14:26
Has thanked: 173 times
Been thanked: 334 times

Re: Bug Reports (snapshot builds)

Postby friarsol » 30 May 2013, 03:10

r21828

AI cast Anoint on his Jolrael's Centaur. Since the Centaur has Shroud this is an illegal target and he shouldn't be allowed to do that. (The Anoint fizzled upon resolution.)
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 Chris H. » 30 May 2013, 12:08

Description: I doubled clicked on the "Merrow Riverways" deck in the constructed mode deck editor after selecting the "Decks from quest shop" button.

NoSuchElementException | Open
Code: Select all
Forge Version:    SVN
Operating System: Mac OS X 10.7.5 x86_64
Java Version:     1.6.0_45 Apple Inc.

java.util.NoSuchElementException
   at com.google.common.collect.AbstractIterator.next(AbstractIterator.java:154)
   at com.google.common.collect.Iterators.find(Iterators.java:775)
   at com.google.common.collect.Iterables.find(Iterables.java:646)
   at forge.deck.DeckgenUtil.getQuestEvent(DeckgenUtil.java:123)
   at forge.deck.DeckgenUtil.showDecklist(DeckgenUtil.java:227)
   at forge.gui.toolbox.FDeckChooser$1.mouseClicked(FDeckChooser.java:67)
   at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
   at java.awt.Component.processMouseEvent(Component.java:6385)
   at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
   at java.awt.Component.processEvent(Component.java:6147)
   at java.awt.Container.processEvent(Container.java:2083)
   at java.awt.Component.dispatchEventImpl(Component.java:4744)
   at java.awt.Container.dispatchEventImpl(Container.java:2141)
   at java.awt.Component.dispatchEvent(Component.java:4572)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)
   at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4289)
   at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)
   at java.awt.Container.dispatchEventImpl(Container.java:2127)
   at java.awt.Window.dispatchEventImpl(Window.java:2489)
   at java.awt.Component.dispatchEvent(Component.java:4572)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:710)
   at java.awt.EventQueue.access$400(EventQueue.java:82)
   at java.awt.EventQueue$2.run(EventQueue.java:669)
   at java.awt.EventQueue$2.run(EventQueue.java:667)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
   at java.awt.EventQueue$3.run(EventQueue.java:683)
   at java.awt.EventQueue$3.run(EventQueue.java:681)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:680)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
User avatar
Chris H.
Forge Moderator
 
Posts: 6320
Joined: 04 Nov 2008, 12:11
Location: Mac OS X Yosemite
Has thanked: 644 times
Been thanked: 643 times

Re: Bug Reports (snapshot builds)

Postby Diogenes » 31 May 2013, 01:19

Last Rites generates a prompt to "discard 1 card" on resolution. There does not seem to be a way to discard more than one card. Mouse-over friendly - Last Rites.

If you select a card to discard, you may force the opponent to discard one (and only one) non-land card of your choice. If you click the "OK" button on the prompt, you will not discard any cards from your own hand and are able to force the opponent to discard any or all of the non-land cards in their hand.
Diogenes
 
Posts: 201
Joined: 12 Jul 2012, 00:54
Has thanked: 39 times
Been thanked: 23 times

Re: Bug Reports (snapshot builds)

Postby friarsol » 31 May 2013, 02:12

AI vs AI ends after game 2 (Can't press continue) even if both players have won one game. This wasn't the case yesterday or the day before perhaps.

Edit: Ok I just ran another one and it didn't happen. I don't know what was going on.
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

PreviousNext

Return to Developer's Corner

Who is online

Users browsing this forum: No registered users and 20 guests


Who is online

In total there are 20 users online :: 0 registered, 0 hidden and 20 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 20 guests

Login Form