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 drdev » 12 Oct 2014, 01:53
So I just committed the really large refactoring with r27885. This affects over 200 files, so please be sure to update if you're working on anything. The main thing this refactoring introduces is the use of new CardCollection and CardCollectionView classes across the board in place of List<Card>. CardCollection extends FCollection<T> which wraps a HashSet<T> and a LinkedList<T>, allowing for O(1) lookup and faster shuffling. CardCollectionView and FCollectionView<T> are interfaces that expose only the methods of CardCollection and FCollection<T> that don't involve modifying the collection, such as isEmpty(), size(), and contains(), as well as extending Iterator<T>. This allows exposing certain methods in a read-only way while allowing more options than just those of Iterator<T>.
In addition, I completely refactored how card types are handled, replacing the use of List<String> with the CardType class that already existed in forge.core. This allows the use of the CardType.CoreType and CardType.Supertype enums to make checking for types such as Creature or Basic Land be O(1) using an EnumSet rather than doing String comparisons. It also allows checking for creature types and other subtypes using a HashSet<String> containing only subtypes instead of all types. I've also increased the flexibility of the CardType class by adding more methods as well as CardTypeView interface similar to the CardCollectionView interface which exposes only those methods that don't modify the type, such as hasType(), hasSubtype(), and hasSupertype().
The combination of these changes should make a lot of logic run much faster.
Note that there are still bugs I'm working to investigate, but I should be able to tackle those pretty quickly now that all this major refactoring is done.
In addition, I completely refactored how card types are handled, replacing the use of List<String> with the CardType class that already existed in forge.core. This allows the use of the CardType.CoreType and CardType.Supertype enums to make checking for types such as Creature or Basic Land be O(1) using an EnumSet rather than doing String comparisons. It also allows checking for creature types and other subtypes using a HashSet<String> containing only subtypes instead of all types. I've also increased the flexibility of the CardType class by adding more methods as well as CardTypeView interface similar to the CardCollectionView interface which exposes only those methods that don't modify the type, such as hasType(), hasSubtype(), and hasSupertype().
The combination of these changes should make a lot of logic run much faster.
Note that there are still bugs I'm working to investigate, but I should be able to tackle those pretty quickly now that all this major refactoring is done.
Last edited by drdev on 12 Oct 2014, 02:11, edited 1 time 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)
by ZappaZ » 12 Oct 2014, 02:07
r27886
Kazandu Blademaster did not let me put a counter on him when he entered the game.
EDIT: Playing another Kazandu Blademaster gave me a counter on the first one.
Description: I attacked with Kazandu Blademaster, only nonland card on the board besides him was a Curse of Stalked Prey on the AI side.
EDIT: Seems to happen whenever any creature attacks whoever the controller is.
EDIT2: Got this again while casting a Searing Blood on a Satyr Firedancer.
I just played Magma Jet and when I select cards in the "Scrying Window" they don't show up in card picture / card detail, those fields stay as Magma Jet.
Description: Got this when AI played a Satyr Firedancer during Main 2.
Kazandu Blademaster did not let me put a counter on him when he entered the game.
EDIT: Playing another Kazandu Blademaster gave me a counter on the first one.
Description: I attacked with Kazandu Blademaster, only nonland card on the board besides him was a Curse of Stalked Prey on the AI side.
EDIT: Seems to happen whenever any creature attacks whoever the controller is.
EDIT2: Got this again while casting a Searing Blood on a Satyr Firedancer.
- StackOverflowError | Open
- Code: Select all
Forge Version: 1.5.29-SNAPSHOT-r-1u
Operating System: Windows 7 6.1 amd64
Java Version: 1.8.0_20 Oracle Corporation
java.lang.StackOverflowError
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:1
... (truncated)
I just played Magma Jet and when I select cards in the "Scrying Window" they don't show up in card picture / card detail, those fields stay as Magma Jet.
Description: Got this when AI played a Satyr Firedancer during Main 2.
- NullPointerException | Open
- Code: Select all
Forge Version: 1.5.29-SNAPSHOT-r-1u
Operating System: Windows 7 6.1 amd64
Java Version: 1.8.0_20 Oracle Corporation
java.lang.NullPointerException
at forge.screens.match.CMatchUI.updateSingleCard(CMatchUI.java:318)
at forge.match.MatchUtil.updateCards(MatchUtil.java:320)
at forge.control.FControlGameEventHandler$1.run(FControlGameEventHandler.java:126)
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)
- NullPointerException | Open
- Code: Select all
Forge Version: 1.5.29-SNAPSHOT-r-1u
Operating System: Windows 7 6.1 amd64
Java Version: 1.8.0_20 Oracle Corporation
java.lang.NullPointerException
at forge.game.card.CardView.updateAttacking(CardView.java:139)
at forge.game.card.Card.updateAttackingForView(Card.java:403)
at forge.game.combat.Combat.addAttacker(Combat.java:170)
at forge.game.combat.Combat.addAttacker(Combat.java:147)
at forge.ai.ComputerUtilCard.canBeBlockedProfitably(ComputerUtilCard.java:645)
at forge.ai.AiAttackController.shouldAttack(AiAttackController.java:978)
at forge.ai.AiAttackController.declareAttackers(AiAttackController.java:824)
at forge.ai.ComputerUtilCard.doesSpecifiedCreatureAttackAI(ComputerUtilCard.java:592)
at forge.ai.ability.AnimateAi.canPlayAI(AnimateAi.java:173)
at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
at forge.ai.AiController.canPlaySa(AiController.java:701)
at forge.ai.AiController.canPlayAndPayFor(AiController.java:688)
at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1261)
at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1242)
at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1198)
at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:385)
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:887)
at forge.game.GameAction.startGame(GameAction.java:1338)
at forge.game.Match.startGame(Match.java:71)
at forge.match.MatchUtil$2.run(MatchUtil.java:206)
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: Bug Reports (snapshot builds)
by matrix4767 » 12 Oct 2014, 09:53
Hydra Broodmaster's token picture still doesn't show up. This must be an internal bug, so every snapshot build will have it.
- matrix4767
- Posts: 125
- Joined: 09 Sep 2014, 08:10
- Has thanked: 5 times
- Been thanked: 3 times
Re: Bug Reports (snapshot builds)
by Hanmac » 12 Oct 2014, 12:24
r27886:
StackOverflowError:
StackOverflowError:
...
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
...
Re: Bug Reports (snapshot builds)
by drdev » 12 Oct 2014, 14:23
Fixed in r27888.Hanmac wrote:r27886:
StackOverflowError:...
at forge.util.FCollection.addAll(FCollection.java:134)
at forge.util.FCollection.addAll(FCollection.java:134)
...
- drdev
- Programmer
- Posts: 1958
- Joined: 27 Jul 2013, 02:07
- Has thanked: 189 times
- Been thanked: 565 times
Re: Bug Reports (snapshot builds)
by drdev » 12 Oct 2014, 14:52
So I'm trying to investigate the bug where no "Enters the battlefield" triggered abilities are triggering anymore. Can somebody more familiar with that code provide some insight into where I might have introduced this bug? Far as I can tell, the only places adding Enters the battlefield triggers are Sunburst, Echo, and Suspend, but that can't be right.
EDIT: Never mind, I think I figured out where to look.
EDIT2: Issue with "Enters the battlefield" triggers fixed in r27889.
EDIT: Never mind, I think I figured out where to look.
EDIT2: Issue with "Enters the battlefield" triggers fixed in r27889.
- drdev
- Programmer
- Posts: 1958
- Joined: 27 Jul 2013, 02:07
- Has thanked: 189 times
- Been thanked: 565 times
Re: Bug Reports (snapshot builds)
by drdev » 12 Oct 2014, 15:56
I think I just figured out and fixed the updateSingleCard crash in r27891. Please let me know if you see it again.
- drdev
- Programmer
- Posts: 1958
- Joined: 27 Jul 2013, 02:07
- Has thanked: 189 times
- Been thanked: 565 times
Re: Bug Reports (snapshot builds)
by Fizanko » 12 Oct 2014, 16:54
r27892
The AI had Kraken Hatchling deployed
Then a turn later the AI attach Boar Umbra to it
The AI attack, but as you can see the P/T of the attacker while correctly calculated in term of damage dealt is not correctly displayed :

In fact it never correctly display (i mean there's no flickering between phases between old and updated P/T, it just stay 0/4 despite it should be 3/7 )
edit : happens with other cases.
An island enchanted by Wind Zendikon is displayed as 0/0 instead of 2/2
The AI had Kraken Hatchling deployed
Then a turn later the AI attach Boar Umbra to it
The AI attack, but as you can see the P/T of the attacker while correctly calculated in term of damage dealt is not correctly displayed :

In fact it never correctly display (i mean there's no flickering between phases between old and updated P/T, it just stay 0/4 despite it should be 3/7 )
edit : happens with other cases.
An island enchanted by Wind Zendikon is displayed as 0/0 instead of 2/2
Last edited by Fizanko on 12 Oct 2014, 17:01, edited 1 time in total.
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)
Duel Decks for Forge - Forge custom decks (updated 25/10/2014)
Re: Bug Reports (snapshot builds)
by Fizanko » 12 Oct 2014, 16:58
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)
Duel Decks for Forge - Forge custom decks (updated 25/10/2014)
Re: Bug Reports (snapshot builds)
by Fizanko » 12 Oct 2014, 17:02
still r27892

Land enchanted with Wind Zendikon has the land card and the Wind Zendikon aura teleporting around the battlefield instead of staying as one, when moving through phases

Land enchanted with Wind Zendikon has the land card and the Wind Zendikon aura teleporting around the battlefield instead of staying as one, when moving through phases
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)
Duel Decks for Forge - Forge custom decks (updated 25/10/2014)
Re: Bug Reports (snapshot builds)
by Agetian » 12 Oct 2014, 17:37
r27893: I cast Errantry on my Jhoira's Toolbox. However, the aura did not get displayed on top of the creature as I expected, instead being displayed separately on the right hand side of my battlefield. Moreover, the creature's P/T did not get visually altered, staying 1/1 instead of the expected 4/1.
- 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 ZappaZ » 12 Oct 2014, 19:33
r27893
Description: Log says "AI played Inkmoth Nexus" then this happened on the BC step.
Description: Log says "AI played Inkmoth Nexus" then this happened on the BC step.
- NullPointerException | Open
- Code: Select all
Forge Version: 1.5.29-SNAPSHOT-r-1u
Operating System: Windows 7 6.1 amd64
Java Version: 1.8.0_20 Oracle Corporation
java.lang.NullPointerException
at forge.game.card.CardView.updateAttacking(CardView.java:141)
at forge.game.card.Card.updateAttackingForView(Card.java:411)
at forge.game.combat.Combat.addAttacker(Combat.java:170)
at forge.game.combat.Combat.addAttacker(Combat.java:147)
at forge.ai.ComputerUtilCard.canBeBlockedProfitably(ComputerUtilCard.java:645)
at forge.ai.AiAttackController.shouldAttack(AiAttackController.java:978)
at forge.ai.AiAttackController.declareAttackers(AiAttackController.java:824)
at forge.ai.ComputerUtilCard.doesSpecifiedCreatureAttackAI(ComputerUtilCard.java:592)
at forge.ai.ability.AnimateAi.canPlayAI(AnimateAi.java:173)
at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
at forge.ai.AiController.canPlaySa(AiController.java:701)
at forge.ai.AiController.canPlayAndPayFor(AiController.java:688)
at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1261)
at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1242)
at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1198)
at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:385)
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:887)
at forge.game.GameAction.startGame(GameAction.java:1339)
at forge.game.Match.startGame(Match.java:71)
at forge.match.MatchUtil$2.run(MatchUtil.java:206)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Last edited by ZappaZ on 12 Oct 2014, 19:39, edited 1 time in total.
Re: Bug Reports (snapshot builds)
by ZappaZ » 12 Oct 2014, 19:39
r27893
Has Courser of Kruphix changed lately? I used to be able to mouse over the card in the battlefield and see what my top card was in its Card Detail field, now it shows only the card text.
EDIT:
Another wierd thing, I can click on my library and see the order of the cards in there.
After clicking on my library to see if thats where the top card would be shown in my question above I then noticed that the cards was being drawn in the order I saw them when clicking on my library.
Has Courser of Kruphix changed lately? I used to be able to mouse over the card in the battlefield and see what my top card was in its Card Detail field, now it shows only the card text.
EDIT:
Another wierd thing, I can click on my library and see the order of the cards in there.
After clicking on my library to see if thats where the top card would be shown in my question above I then noticed that the cards was being drawn in the order I saw them when clicking on my library.
Re: Bug Reports (snapshot builds)
by ZappaZ » 12 Oct 2014, 21:00
r27893
1. Does this Combat Log look wierd?
http://imgur.com/swjoPUj
2. Here is a strange situation:
http://imgur.com/zQ9OVoL
Last turn the AI attacked my Garruk, Caller of Beasts with his Chandra's Phoenix, now when it is my turn the "attack" arrow is still there and I cannot use any of Garruks abilities.
Also those 0/0 Forests are from Nissa, Worldwaker. They are not auto included as mana sources and has to be tapped manually.
EDIT: Not always true, sometimes they are included and tapped automatically, I have seen no pattern.
3. Nature's Revolt makes AIs Forests flicker when changing phases.
Also all lands appear as 0/0 even tho they take and do damage as the correct 2/2, I killed a few.
4. Not sure why I cannot use Garruk, Caller of Beasts abilities in this situation. It has just become my turn and nothing happens when I click on him.
EDIT: It seems that Planeswalkers abilities can only be used once and that is in the turn that you play him/her.
This might partially change my point 2. above.
http://imgur.com/HRBFntr
5. Sometimes the cards in my hand get "zoomed in" and then after a phase or two return to normal.
Zoomed: http://imgur.com/9MEQTvq
Normal: http://imgur.com/AHq1Htm
6. AI enchanted a Ajani's Pridemate with Divine Favor. When I mouse over those 2 stacked cards it is as if the enchantment is in front of the creature card. It displys correctly with the enchantment behind but the behavior when you mouse over is wrong.
1. Does this Combat Log look wierd?
http://imgur.com/swjoPUj
2. Here is a strange situation:
http://imgur.com/zQ9OVoL
Last turn the AI attacked my Garruk, Caller of Beasts with his Chandra's Phoenix, now when it is my turn the "attack" arrow is still there and I cannot use any of Garruks abilities.
Also those 0/0 Forests are from Nissa, Worldwaker. They are not auto included as mana sources and has to be tapped manually.
EDIT: Not always true, sometimes they are included and tapped automatically, I have seen no pattern.
3. Nature's Revolt makes AIs Forests flicker when changing phases.
Also all lands appear as 0/0 even tho they take and do damage as the correct 2/2, I killed a few.
4. Not sure why I cannot use Garruk, Caller of Beasts abilities in this situation. It has just become my turn and nothing happens when I click on him.
EDIT: It seems that Planeswalkers abilities can only be used once and that is in the turn that you play him/her.
This might partially change my point 2. above.
http://imgur.com/HRBFntr
5. Sometimes the cards in my hand get "zoomed in" and then after a phase or two return to normal.
Zoomed: http://imgur.com/9MEQTvq
Normal: http://imgur.com/AHq1Htm
6. AI enchanted a Ajani's Pridemate with Divine Favor. When I mouse over those 2 stacked cards it is as if the enchantment is in front of the creature card. It displys correctly with the enchantment behind but the behavior when you mouse over is wrong.
Re: Bug Reports (snapshot builds)
by drdev » 12 Oct 2014, 21:25
Thanks for all the bug reports guys. I just committed a big fix for card details so that morph cards are handled properly. I'm aware of the issue with P/T not factoring in state based effects, and that's the next thing I'm going to look into.
I do apologize for things being kind of broken at the moment, but it should all be worth it once I get things sorted out, as then I'll be able to start working on adding network support.
I do apologize for things being kind of broken at the moment, but it should all be worth it once I get things sorted out, as then I'll be able to start working on adding network support.
- drdev
- Programmer
- Posts: 1958
- Joined: 27 Jul 2013, 02:07
- Has thanked: 189 times
- Been thanked: 565 times
Who is online
Users browsing this forum: Google [Bot] and 51 guests