It is currently 17 May 2025, 17:16
   
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 Fizanko » 18 Sep 2014, 23:27

Not really a bug, but something i think that could make some people thinking the game is stuck, when playing Tablet of the Guilds

Image

Presented like that, an user could expect to just click on 2 colors and click the OK, but it does not work.
To make it work, the user must hold SHIFT then select the 2 colors.

Maybe this should be mentionned somewhere in the dialogue window to avoid misunderstanding ?
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 Fizanko » 18 Sep 2014, 23:32

another stack overflow error in r27533

Image

StackOverflowError | Open
Code: Select all
Forge Version:    1.5.28-SNAPSHOT-r-1u
Operating System: Windows XP 5.1 x86
Java Version:     1.7.0_10 Oracle Corporation

java.lang.StackOverflowError
   at java.util.regex.Pattern.clazz(Unknown Source)
   at java.util.regex.Pattern.sequence(Unknown Source)
   at java.util.regex.Pattern.expr(Unknown Source)
   at java.util.regex.Pattern.compile(Unknown Source)
   at java.util.regex.Pattern.<init>(Unknown Source)
   at java.util.regex.Pattern.compile(Unknown Source)
   at java.lang.String.split(Unknown Source)
   at java.lang.String.split(Unknown Source)
   at forge.game.zone.ZoneType.listValueOf(ZoneType.java:48)
   at forge.game.spellability.AbilityActivated.canPlay(AbilityActivated.java:96)
   at forge.ai.ComputerUtilMana$3.apply(ComputerUtilMana.java:948)
   at forge.ai.ComputerUtilMana$3.apply(ComputerUtilMana.java:943)
   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.ComputerUtilMana.getAvailableMana(ComputerUtilMana.java:943)
   at forge.ai.ComputerUtilMana.groupSourcesByManaColor(ComputerUtilMana.java:1056)
   at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:346)
   at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:80)
   at forge.ai.ComputerUtilMana.canPayManaCost(ComputerUtilMana.java:55)
   at forge.ai.ComputerUtilCost.canPayCost(ComputerUtilCost.java:378)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java
... (truncated)
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 friarsol » 19 Sep 2014, 01:45

r27538
The combat Panel lists my attacking creatures as "Blocked" even though they clearly aren't blocked. They should only be listed as blocked if a creature had been assigned to block but have since been removed. They do correctly assign damage to the defending object, so this must just be a UI display issue.
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 Fizanko » 19 Sep 2014, 02:05

I got another stack overflow error and different message in it, this time it was just the AI turn to start, it not even picked a card yet :

Image

StackOverflowError | Open
Code: Select all
Forge Version:    1.5.28-SNAPSHOT-r-1u
Operating System: Windows XP 5.1 x86
Java Version:     1.7.0_10 Oracle Corporation

java.lang.StackOverflowError
   at java.util.ArrayList.<init>(Unknown Source)
   at forge.game.card.Card.getUnhiddenKeyword(Card.java:4519)
   at forge.game.card.Card.getKeyword(Card.java:4416)
   at forge.game.card.Card.hasKeyword(Card.java:5304)
   at forge.game.zone.PlayerZone$OwnCardsActivationFilter.apply(PlayerZone.java:56)
   at forge.game.zone.PlayerZone$OwnCardsActivationFilter.apply(PlayerZone.java:53)
   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.zone.PlayerZone.getCardsPlayerCanActivate(PlayerZone.java:132)
   at forge.game.player.Player.getCardsActivableInExternalZones(Player.java:1552)
   at forge.ai.ComputerUtil.hasACardGivingHaste(ComputerUtil.java:1206)
   at forge.ai.ComputerUtil.castPermanentInMain1(ComputerUtil.java:871)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:694)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:654)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.n
... (truncated)
i forgot to mention, but when you press continue, you can't continue after a stack overflow error, the game is stuck at "waiting for opponent".
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 excessum » 19 Sep 2014, 02:26

For the stack overflow errors, I think it is due to predictSpellToCastInMain2() failing to catch PumpAllAi so it ends up in an infinite loop with canPlayAi calling itself indefinitely.
Code: Select all
 public SpellAbility predictSpellToCastInMain2(ApiType exceptSA, boolean handOnly) {
        final List<Card> cards = handOnly ? player.getCardsIn(ZoneType.Hand) : getAvailableCards();
   
        ArrayList<SpellAbility> all = getSpellAbilities(cards);
        Collections.sort(all, saComparator); // put best spells first
       
        for (final SpellAbility sa : getOriginalAndAltCostAbilities(all)) {
            if (sa.getApi() == ApiType.Counter || sa.getApi() == exceptSA) {
                continue;
            }
Adding "sa.getApi() == ApiType.PumpAll" or something like that to the if-block should fix this.
excessum
 
Posts: 177
Joined: 21 Oct 2013, 02:30
Has thanked: 0 time
Been thanked: 19 times

Re: Bug Reports (snapshot builds)

Postby Fizanko » 19 Sep 2014, 02:52

I got a concurrent error on another duel ( r27537 ) :

It was during the phase in which the game deal the actual damage ( CD phase )
Image

ConcurrentModificationException | Open
Code: Select all
Forge Version:    1.5.28-SNAPSHOT-r-1u
Operating System: Windows XP 5.1 x86
Java Version:     1.7.0_10 Oracle Corporation

java.util.ConcurrentModificationException
   at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
   at java.util.ArrayList$Itr.next(Unknown Source)
   at forge.view.ViewUtil.transformIfNotNull(ViewUtil.java:141)
   at forge.view.LocalGameView.getCardViews(LocalGameView.java:413)
   at forge.view.LocalGameView.getCombat(LocalGameView.java:183)
   at forge.view.LocalGameView.getCombat(LocalGameView.java:167)
   at forge.control.FControlGameEventHandler$2.run(FControlGameEventHandler.java:105)
   at java.awt.event.InvocationEvent.dispatch(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.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)
edit : unrelated but i noticed in the few duels i did recently that the targetting arcs are by default off or "mouseover", i have to turn the option on myself every Forge launch.
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 Agetian » 19 Sep 2014, 03:56

excessum wrote:Adding "sa.getApi() == ApiType.PumpAll" or something like that to the if-block should fix this.
Thanks for help, yes, I also think that should do it! Unfortunately, I was unable to come up with a reliable test case (even based on the screenshots above) which would allow me to confirm or deny that this is fixed, but please let me know if this happens again past r27540 - if so, I'll have to dig some more to find another solution.

EDIT: While trying to find out if this solution works or not I used an AEtherling test case (attached below). While I could not yet reproduce the stack overflow error, I was able to provoke another situation which I haven't seen for a while - that is, the AI repeatedly pumping the said AEtherling with "unblockable" until it had no mana left on its hands. Not sure if it's something I've done or not (hope not, anyway), but I can't pinpoint why that happens yet. It doesn't *always* happen, but I was able to reproduce it two times with the test case below. :(
Test case:

Code: Select all
AICardsInPlay=AEtherling; Island; Island; Island; Island; Island; Island; Island; Island; Island; Island; Island
- 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 timmermac » 19 Sep 2014, 12:36

r27533: Did the way Fireball works get changed? I wasn't asked to pick targets for it at all.

Edit: This has come up twice during opponent's upkeep phase against Aragorn 1


NoSuchElementException | Open
Code: Select all
Forge Version:    1.5.28-SNAPSHOT-r-1u
Operating System: Windows 7 6.1 x86
Java Version:     1.7.0_51 Oracle Corporation

java.util.NoSuchElementException
   at com.google.common.collect.Iterators$4.next(Iterators.java:403)
   at forge.view.CardView.nextRandomInt(CardView.java:46)
   at forge.view.CardView.reset(CardView.java:91)
   at forge.view.LocalGameView.getCardView(LocalGameView.java:396)
   at forge.view.LocalGameView$3.apply(LocalGameView.java:408)
   at forge.view.LocalGameView$3.apply(LocalGameView.java:405)
   at forge.view.ViewUtil.transformIfNotNull(ViewUtil.java:142)
   at forge.view.LocalGameView.getCardViews(LocalGameView.java:413)
   at forge.view.LocalGameView.getPlayerView(LocalGameView.java:359)
   at forge.view.LocalGameView.getPlayerView(LocalGameView.java:323)
   at forge.view.LocalGameView.getPlayerTurn(LocalGameView.java:213)
   at forge.GuiDesktop.updatePhase(GuiDesktop.java:252)
   at forge.control.FControlGameEventHandler$1.run(FControlGameEventHandler.java:88)
   at java.awt.event.InvocationEvent.dispatch(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.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)
"I just woke up, haven't had coffee, let alone a pee in 7 days, and I find out you stole my ass and made a ...mini-me! Carter, I should be irked currently, yes?" - Jack O'Neill
User avatar
timmermac
Tester
 
Posts: 1512
Joined: 17 May 2010, 20:36
Has thanked: 18 times
Been thanked: 95 times

Re: Bug Reports (snapshot builds)

Postby psilo » 19 Sep 2014, 13:52

Not sure if these crash reports should be posted here or somewhere else, sorry if this is wrong section.

Description: game crashed in 1v1 commander made, when opponent played land, Nykthos I think.

NullPointerException | Open
Code: Select all
Forge Version:    1.5.26-r27298Mu (mixed revisions detected; please update from the root directory)
Operating System: Windows 7 6.1 x86
Java Version:     1.7.0_65 Oracle Corporation

java.lang.NullPointerException
   at forge.ai.ComputerUtilMana$ManaProducingCard.addAbility(ComputerUtilMana.java:110)
   at forge.ai.ComputerUtilMana$ManaProducingCard.<init>(ComputerUtilMana.java:92)
   at forge.ai.ComputerUtilMana.sortManaAbilities(ComputerUtilMana.java:130)
   at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:387)
   at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:79)
   at forge.ai.ComputerUtilMana.canPayManaCost(ComputerUtilMana.java:54)
   at forge.ai.ComputerUtilCost.canPayCost(ComputerUtilCost.java:378)
   at forge.ai.AiController.canPlayAndPayFor(AiController.java:678)
   at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1225)
   at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1206)
   at forge.ai.AiController.choooseSpellAbilityToPlay(AiController.java:1162)
   at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:415)
   at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:1012)
   at forge.game.GameAction.startGame(GameAction.java:1559)
   at forge.game.Match.startGame(Match.java:81)
   at forge.control.FControl$4.run(FControl.java:447)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
psilo
 
Posts: 9
Joined: 19 Sep 2014, 13:48
Has thanked: 1 time
Been thanked: 0 time

Re: Bug Reports (snapshot builds)

Postby KrazyTheFox » 19 Sep 2014, 16:12

psilo wrote:Not sure if these crash reports should be posted here or somewhere else, sorry if this is wrong section.

Description: game crashed in 1v1 commander made, when opponent played land, Nykthos I think.

NullPointerException | Open
Code: Select all
Forge Version:    1.5.26-r27298Mu (mixed revisions detected; please update from the root directory)
Operating System: Windows 7 6.1 x86
Java Version:     1.7.0_65 Oracle Corporation

java.lang.NullPointerException
   at forge.ai.ComputerUtilMana$ManaProducingCard.addAbility(ComputerUtilMana.java:110)
   at forge.ai.ComputerUtilMana$ManaProducingCard.<init>(ComputerUtilMana.java:92)
   at forge.ai.ComputerUtilMana.sortManaAbilities(ComputerUtilMana.java:130)
   at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:387)
   at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:79)
   at forge.ai.ComputerUtilMana.canPayManaCost(ComputerUtilMana.java:54)
   at forge.ai.ComputerUtilCost.canPayCost(ComputerUtilCost.java:378)
   at forge.ai.AiController.canPlayAndPayFor(AiController.java:678)
   at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1225)
   at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1206)
   at forge.ai.AiController.choooseSpellAbilityToPlay(AiController.java:1162)
   at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:415)
   at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:1012)
   at forge.game.GameAction.startGame(GameAction.java:1559)
   at forge.game.Match.startGame(Match.java:81)
   at forge.control.FControl$4.run(FControl.java:447)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
This was fixed a while ago. You can grab a much newer version here: http://www.krazyweb.net/forge/
User avatar
KrazyTheFox
Programmer
 
Posts: 725
Joined: 18 Mar 2014, 23:51
Has thanked: 66 times
Been thanked: 226 times

Re: Bug Reports (snapshot builds)

Postby timmermac » 19 Sep 2014, 17:10

I'm not sure if this is a bug or not. I am attempting to change the number of cards sold in the shop, but the settings aren't taking. I'm starting a new quest every time I change the preferences. First I tried 250 C/U/R. Nope. Just basic lands in the shop. Then I tried 100 C/U/R. uh-uh. Still just basic lands in the shop. This is with r27533.
"I just woke up, haven't had coffee, let alone a pee in 7 days, and I find out you stole my ass and made a ...mini-me! Carter, I should be irked currently, yes?" - Jack O'Neill
User avatar
timmermac
Tester
 
Posts: 1512
Joined: 17 May 2010, 20:36
Has thanked: 18 times
Been thanked: 95 times

Re: Bug Reports (snapshot builds)

Postby Fizanko » 19 Sep 2014, 19:39

Played 2 duels with Speed vs Cunning with the r27546 snapshot from Chris H. , with me as Speed and the AI as Cunning and didn't obtained the Stack Overflow error.

Will try a bit more duels in this duel deck to see if it's just me lucky or if fortunately Agetian and excessum fix is working nicely.
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 ZappaZ » 19 Sep 2014, 22:33

r27555

If i start a game from the constructed screen after setting
the first player as AI and the second as Human I get stuck on the first
step, be it Play/Draw or Keep/Mulligan.
Stuck meaning that nothing happens when I press the Play/Draw etc buttons in the bottom left corner.
I can still change to Home and Deck editor tabs.

Play/Draw
If I press the X on the Game tab up top and choose concede it will be
the same as pressing Play, the next time I do it is the same as Keep
and after that the AI will mulligan every time I Concede.
If I mulligan the AI down to 0 this way the log will say that we both
Conceded and it will be a draw.

This behavior is not present the 1.5.26 Beta so I'm guessing it's unintentional?
Last edited by ZappaZ on 20 Sep 2014, 01:06, edited 1 time in total.
ZappaZ
 
Posts: 92
Joined: 26 Jul 2014, 05:37
Has thanked: 26 times
Been thanked: 2 times

Re: Bug Reports (snapshot builds)

Postby ZappaZ » 19 Sep 2014, 22:48

r27555


Description: AI attacking with Lavaclaw Reaches, got this on the declare blockers step.
http://imgur.com/XGxAcWU

ArithmeticException | Open
Code: Select all
Forge Version:    1.5.28-SNAPSHOT-r-1u
Operating System: Windows 7 6.1 amd64
Java Version:     1.8.0_20 Oracle Corporation

java.lang.ArithmeticException: / by zero
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:591)
   at forge.ai.ability.PumpAi.canPlayAI(PumpAi.java:180)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.AiController.canPlayAndPayFor(AiController.java:680)
   at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1248)
   at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1229)
   at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1185)
   at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:415)
   at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:1019)
   at forge.game.GameAction.startGame(GameAction.java:1569)
   at forge.game.Match.startGame(Match.java:81)
   at forge.control.FControl$4.run(FControl.java:495)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)


And sometimes the AI likes to play lands like Hallowed Fountain and paying the
Life cost and then not actually tap the land for mana, I have noticed this a couple
of times when it plays a land like that as the first land of the game.


Description: Got this during AI upkeep.
http://imgur.com/ADNqTMh

StackOverflowError | Open
Code: Select all
Forge Version:    1.5.28-SNAPSHOT-r-1u
Operating System: Windows 7 6.1 amd64
Java Version:     1.8.0_20 Oracle Corporation

java.lang.StackOverflowError
   at forge.game.player.Player.getCardsIn(Player.java:1457)
   at forge.ai.ComputerUtilMana.getAvailableMana(ComputerUtilMana.java:941)
   at forge.ai.ComputerUtilMana.groupSourcesByManaColor(ComputerUtilMana.java:1056)
   at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:346)
   at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:80)
   at forge.ai.ComputerUtilMana.canPayManaCost(ComputerUtilMana.java:55)
   at forge.ai.ComputerUtilCost.canPayCost(ComputerUtilCost.java:378)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640
... (truncated)


Description: Just won the game as seen in the following screenshot.
http://imgur.com/iQDbszn

ConcurrentModificationException | Open
Code: Select all
Forge Version:    1.5.28-SNAPSHOT-r-1u
Operating System: Windows 7 6.1 amd64
Java Version:     1.8.0_20 Oracle Corporation

java.util.ConcurrentModificationException
   at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
   at java.util.ArrayList$Itr.next(Unknown Source)
   at java.util.Collections$UnmodifiableCollection$1.next(Unknown Source)
   at forge.game.Game.getCardsIn(Game.java:449)
   at forge.game.card.Card.canBeShownTo(Card.java:8919)
   at forge.player.PlayerControllerHuman$GameView.mayShowCard(PlayerControllerHuman.java:1455)
   at forge.view.LocalGameView.getCardView(LocalGameView.java:382)
   at forge.view.LocalGameView$3.apply(LocalGameView.java:408)
   at forge.view.LocalGameView$3.apply(LocalGameView.java:405)
   at forge.view.ViewUtil.transformIfNotNull(ViewUtil.java:142)
   at forge.view.LocalGameView.getCardViews(LocalGameView.java:413)
   at forge.view.LocalGameView.getPlayerView(LocalGameView.java:359)
   at forge.view.LocalGameView.getPlayerView(LocalGameView.java:323)
   at forge.view.LocalGameView$2.apply(LocalGameView.java:307)
   at forge.view.LocalGameView$2.apply(LocalGameView.java:304)
   at forge.view.ViewUtil.transformIfNotNull(ViewUtil.java:142)
   at forge.view.LocalGameView.getPlayerViews(LocalGameView.java:312)
   at forge.control.FControlGameEventHandler$11.run(FControlGameEventHandler.java:425)
   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)



Description: AI is attacking using a Platinum Angel equipped with 2 Skullclamp:s.
http://imgur.com/5saoTc8

IllegalArgumentException | Open
Code: Select all
Forge Version:    1.5.28-SNAPSHOT-r-1u
Operating System: Windows 7 6.1 amd64
Java Version:     1.8.0_20 Oracle Corporation

java.lang.IllegalArgumentException: Can't add attribute to 0-length text
   at java.text.AttributedString.addAttribute(Unknown Source)
   at forge.view.arcane.util.OutlinedLabel.paint(OutlinedLabel.java:125)
   at javax.swing.JComponent.paintChildren(Unknown Source)
   at forge.view.arcane.CardPanel.paintChildren(CardPanel.java:356)
   at javax.swing.JComponent.paint(Unknown Source)
   at forge.view.arcane.CardPanel.paint(CardPanel.java:300)
   at javax.swing.JComponent.paintChildren(Unknown Source)
   at javax.swing.JComponent.paint(Unknown Source)
   at javax.swing.JComponent.paintChildren(Unknown Source)
   at javax.swing.JComponent.paint(Unknown Source)
   at javax.swing.JViewport.paint(Unknown Source)
   at javax.swing.JComponent.paintChildren(Unknown Source)
   at javax.swing.JComponent.paint(Unknown Source)
   at forge.toolbox.FScrollPane.paint(FScrollPane.java:83)
   at javax.swing.JComponent.paintChildren(Unknown Source)
   at javax.swing.JComponent.paint(Unknown Source)
   at javax.swing.JComponent.paintChildren(Unknown Source)
   at javax.swing.JComponent.paint(Unknown Source)
   at javax.swing.JComponent.paintChildren(Unknown Source)
   at javax.swing.JComponent.paint(Unknown Source)
   at javax.swing.JComponent.paintChildren(Unknown Source)
   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.BufferStrategyPaintManager.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$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$1300(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)



Description: AI Going from Upkeep to Draw.
http://imgur.com/AHOfZ3a

StackOverflowError | Open
Code: Select all
Forge Version:    1.5.28-SNAPSHOT-r-1u
Operating System: Windows 7 6.1 amd64
Java Version:     1.8.0_20 Oracle Corporation

java.lang.StackOverflowError
   at forge.game.cost.Cost.isReusuableResource(Cost.java:482)
   at forge.ai.ComputerUtilMana.getAIPlayableMana(ComputerUtilMana.java:1180)
   at forge.ai.ComputerUtilMana$3.apply(ComputerUtilMana.java:946)
   at forge.ai.ComputerUtilMana$3.apply(ComputerUtilMana.java:943)
   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.ComputerUtilMana.getAvailableMana(ComputerUtilMana.java:943)
   at forge.ai.ComputerUtilMana.groupSourcesByManaColor(ComputerUtilMana.java:1056)
   at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:346)
   at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:80)
   at forge.ai.ComputerUtilMana.canPayManaCost(ComputerUtilMana.java:55)
   at forge.ai.ComputerUtilCost.canPayCost(ComputerUtilCost.java:378)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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.PumpAiBase.getPumpCreatures(PumpAiBase.java:634)
   at forge.ai.ability.PumpAllAi.canPlayAI(PumpAllAi.java:123)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.canPlaySa(AiController.java:688)
   at forge.ai.ability.CharmAi.chooseOptionsAi(CharmAi.java:61)
   at forge.ai.ability.CharmAi.canPlayAI(CharmAi.java:30)
   at forge.ai.SpellAbilityAi.canPlayAIWithSubs(SpellAbilityAi.java:23)
   at forge.ai.AiController.canPlaySa(AiController.java:698)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:658)
   at forge.ai.AiController.predictSpellToCastInMain2(AiController.java:640)
   at forge.ai.ability.PumpAiBase.shouldPumpCard(PumpAiBase.java:450)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:637)
   at forge.ai.ability.PumpAiBase$3.apply(PumpAiBase.java:634)
   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 f
... (truncated)



Description: Started a Constructed game with 2 AI players, won the coin toss but the OK/Cancel buttons was faded out, pressed the X on the Game tab up top and conceded 2 times (now the log shows that both AI players have kept their hands) and got this while conceding a third time.
Tried some more and this only happens when I win the cointoss.

NullPointerException | Open
Code: Select all
Forge Version:    1.5.28-SNAPSHOT-r-1u
Operating System: Windows 7 6.1 amd64
Java Version:     1.8.0_20 Oracle Corporation

java.lang.NullPointerException
   at forge.game.GameAction.runOpeningHandActions(GameAction.java:1690)
   at forge.game.GameAction.startGame(GameAction.java:1561)
   at forge.game.Match.startGame(Match.java:81)
   at forge.control.FControl$4.run(FControl.java:495)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
ZappaZ
 
Posts: 92
Joined: 26 Jul 2014, 05:37
Has thanked: 26 times
Been thanked: 2 times

Re: Bug Reports (snapshot builds)

Postby friarsol » 20 Sep 2014, 02:20

friarsol wrote:r27538
The combat Panel lists my attacking creatures as "Blocked" even though they clearly aren't blocked. They should only be listed as blocked if a creature had been assigned to block but have since been removed. They do correctly assign damage to the defending object, so this must just be a UI display issue.
I thought I saw a commit where someone was trying to fix this, but it's definitely not fixed. I'm not sure what the logic is doing, but it definitely isn't doing what I expect here.

As you can see, somehow this attacker is marked as "blocked" in the Combat panel, even though I haven't even been able to declare blockers yet.

http://i.imgur.com/9TCH1ui.jpg

As far as I can tell this "CombatView" is pretty flawed in it's implementation of what "blocked" is.
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: MercyNupe and 37 guests


Who is online

In total there are 38 users online :: 1 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: MercyNupe and 37 guests

Login Form