Page 217 of 487

Re: Bug Reports (snapshot builds)

PostPosted: 18 Sep 2014, 23:27
by Fizanko
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 ?

Re: Bug Reports (snapshot builds)

PostPosted: 18 Sep 2014, 23:32
by Fizanko
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)

Re: Bug Reports (snapshot builds)

PostPosted: 19 Sep 2014, 01:45
by friarsol
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.

Re: Bug Reports (snapshot builds)

PostPosted: 19 Sep 2014, 02:05
by Fizanko
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".

Re: Bug Reports (snapshot builds)

PostPosted: 19 Sep 2014, 02:26
by excessum
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.

Re: Bug Reports (snapshot builds)

PostPosted: 19 Sep 2014, 02:52
by Fizanko
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.

Re: Bug Reports (snapshot builds)

PostPosted: 19 Sep 2014, 03:56
by Agetian
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

Re: Bug Reports (snapshot builds)

PostPosted: 19 Sep 2014, 12:36
by timmermac
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)

Re: Bug Reports (snapshot builds)

PostPosted: 19 Sep 2014, 13:52
by psilo
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)

Re: Bug Reports (snapshot builds)

PostPosted: 19 Sep 2014, 16:12
by KrazyTheFox
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/

Re: Bug Reports (snapshot builds)

PostPosted: 19 Sep 2014, 17:10
by timmermac
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.

Re: Bug Reports (snapshot builds)

PostPosted: 19 Sep 2014, 19:39
by Fizanko
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.

Re: Bug Reports (snapshot builds)

PostPosted: 19 Sep 2014, 22:33
by ZappaZ
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?

Re: Bug Reports (snapshot builds)

PostPosted: 19 Sep 2014, 22:48
by ZappaZ
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)

Re: Bug Reports (snapshot builds)

PostPosted: 20 Sep 2014, 02:20
by friarsol
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.