Bug Reports (snapshot builds)
Post MTG Forge Related Programming Questions Here
Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins
Re: Bug Reports (snapshot builds)
by myk » 10 Mar 2013, 04:42
NetBeans actually has an excellent integrated profiler. You can check out the info for it here. Run Forge through it, and it will give you a nice breakdown on how much time the program spends in each function.
- myk
- Posts: 439
- Joined: 17 Jan 2013, 02:39
- Location: California
- Has thanked: 38 times
- Been thanked: 57 times
Re: Bug Reports (snapshot builds)
by Agetian » 10 Mar 2013, 05:53
- Agetian
- Programmer
- Posts: 3489
- Joined: 14 Mar 2011, 05:58
- Has thanked: 684 times
- Been thanked: 572 times
Re: Bug Reports (snapshot builds)
by swordshine » 10 Mar 2013, 08:52
Flash is still not functional.Agetian wrote:EDIT: r20215: As a temporary measure, I applied the change per the original Max's suggestion (added ButtonUtil.disableAll() to the update part of InputProxy - seems to do the job and not have any side-effects). Didn't do anything with the performance aspect of changes yet. Feel free to expand on it and modify in any way that you think may be beneficial.
- swordshine
- Posts: 682
- Joined: 11 Jul 2010, 02:37
- Has thanked: 116 times
- Been thanked: 87 times
Re: Bug Reports (snapshot builds)
by myk » 10 Mar 2013, 09:05
@Agetian: try restricting the monitored namespace to forge.* and ignoring sleeps -- that will coalesce the timing for calls we make to library functions into the functions that call them and will make it a little clearer which of /our/ functions is the time sink.
- myk
- Posts: 439
- Joined: 17 Jan 2013, 02:39
- Location: California
- Has thanked: 38 times
- Been thanked: 57 times
Re: Bug Reports (snapshot builds)
by RumbleBBU » 10 Mar 2013, 09:31
A different one:
AI casts Man-o'-War, the game goes into an infinite loop and crashes:
(slightly snipped redundancy in the following or it wouldn't post)
AI casts Man-o'-War, the game goes into an infinite loop and crashes:
(slightly snipped redundancy in the following or it wouldn't post)
- StackOverflowError | Open
- Code: Select all
Forge Version: SVN
Operating System: Windows XP 5.1 x86
Java Version: 1.6.0_21 Sun Microsystems Inc.
java.lang.StackOverflowError
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.util.FileSection.parseToMap(FileSection.java:69)
at forge.card.ability.AbilityFactory.getMapParams(AbilityFactory.java:316)
at forge.card.ability.AbilityFactory.getAbility(AbilityFactory.java:67)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:464)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
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.Lists.newArrayList(Lists.java:144)
at com.google.common.collect.Lists.newArrayList(Lists.java:125)
at forge.CardLists.filter(CardLists.java:251)
at forge.card.ability.ai.ChangeZoneAi.isPreferredTarget(ChangeZoneAi.java:749)
at forge.card.ability.ai.ChangeZoneAi.knownOriginTriggerAI(ChangeZoneAi.java:1041)
at forge.card.ability.ai.ChangeZoneAi.doTriggerAINoCost(ChangeZoneAi.java:127)
at forge.card.ability.SpellAbilityAi.doTriggerNoCostWithSubs(SpellAbilityAi.java:35)
at forge.card.ability.SpellAbilityAi.doTriggerAI(SpellAbilityAi.java:30)
at forge.card.spellability.AbilitySub.doTrigger(AbilitySub.java:133)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:487)
at forge.card.spellability.SpellPermanent.checkETBEffects(SpellPermanent.java:395)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:758)
at forge.card.ability.ai.ChangeZoneAi$3.apply(ChangeZoneAi.java:1)
at com.google.common.collect.Iterators$8.computeNext(Iterators.java:736)
at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
Re: Bug Reports (snapshot builds)
by Agetian » 10 Mar 2013, 10:52
I tried including only forge.* in the profile run but for some reason it still shows some standard Java method calls... not sure how to make it ignore sleeps for now, I tried switching over to advanced mode and selecting "Exclude time spent in Thread.sleep" but that made the profiler fail to register any calls at all, not sure why... here's the second run.
- Agetian
- Agetian
- Agetian
- Programmer
- Posts: 3489
- Joined: 14 Mar 2011, 05:58
- Has thanked: 684 times
- Been thanked: 572 times
Re: Bug Reports (snapshot builds)
by Agetian » 10 Mar 2013, 10:59
I guess it is a different bug with Flash, but I can confirm that I have issues with Flash as well. Please assist if possible, no idea how to fix this one.swordshine wrote:Flash is still not functional.Agetian wrote:EDIT: r20215: As a temporary measure, I applied the change per the original Max's suggestion (added ButtonUtil.disableAll() to the update part of InputProxy - seems to do the job and not have any side-effects). Didn't do anything with the performance aspect of changes yet. Feel free to expand on it and modify in any way that you think may be beneficial.

- Agetian
- Agetian
- Programmer
- Posts: 3489
- Joined: 14 Mar 2011, 05:58
- Has thanked: 684 times
- Been thanked: 572 times
Re: Bug Reports (snapshot builds)
by 7543021 » 10 Mar 2013, 11:22
I got a problem on totem armor.In this case,the Abbey Griffin is enchanted by Snake Umbra and Bear Umbra and i cast Dismember on it to make its toughness become 0.Then it pops up a selection window to let me chose which aura to be destroyed instead and it's a loop.when i cancel the window there will be a crash like this
- NullPointerException | Open
- Code: Select all
Forge Version: 1.3.10-SNAPSHOT-r20203
Operating System: Windows 7 6.1 x86
Java Version: 1.7.0_01 Oracle Corporation
java.lang.NullPointerException
at forge.card.spellability.SpellAbility.setStackDescription(SpellAbility.java:941)
at forge.game.GameAction.destroyNoRegeneration(GameAction.java:1278)
at forge.game.GameAction.destroy(GameAction.java:1226)
at forge.game.GameAction.checkStateEffects(GameAction.java:1057)
at forge.game.zone.MagicStack.finishResolving(MagicStack.java:985)
at forge.card.ability.AbilityUtils.resolveSubAbilities(AbilityUtils.java:1017)
at forge.card.ability.AbilityUtils.resolveApiAbility(AbilityUtils.java:1211)
at forge.card.ability.AbilityUtils.resolve(AbilityUtils.java:1008)
at forge.game.zone.MagicStack.resolveStack(MagicStack.java:841)
at forge.game.phase.PhaseHandler.passPriority(PhaseHandler.java:735)
at forge.game.player.PlayerController.passPriority(PlayerController.java:70)
at forge.game.ai.AiInputCommon.showMessage(AiInputCommon.java:110)
at forge.gui.InputProxy.setInput(InputProxy.java:58)
at forge.control.input.InputControl.setNewInput(InputControl.java:256)
at forge.game.GameInputUpdatesThread.run(GameInputUpdatesThread.java:29)
- 7543021
- Posts: 14
- Joined: 16 Feb 2013, 08:54
- Has thanked: 0 time
- Been thanked: 0 time
Re: Bug Reports (snapshot builds)
by myk » 10 Mar 2013, 12:04
I attempted to play a Druidic Satchel and AI countered with Miscalculation. The buttons were disabled and I was unable to continue. Interestingly enough, when I went to the lot panel and then back to the stack, Miscalculation had disappeared from the stack, though the UI was still stuck.Agetian wrote:EDIT: r20215: As a temporary measure, I applied the change per the original Max's suggestion (added ButtonUtil.disableAll() to the update part of InputProxy - seems to do the job and not have any side-effects).
- myk
- Posts: 439
- Joined: 17 Jan 2013, 02:39
- Location: California
- Has thanked: 38 times
- Been thanked: 57 times
Re: Bug Reports (snapshot builds)
by Agetian » 10 Mar 2013, 12:11
@ myk: I guess that means that there should either be some enabling functions placed in the code or at least the ButtonUtil.disable call should be moved elsewhere :\ Can you try tweaking it to see if there's a better place for it? (I recall you had an idea about it but I wouldn't dare trying to implement it 'cause I'm afraid I don't quite understand where exactly everything needs to be placed).
- Agetian
- Agetian
- Agetian
- Programmer
- Posts: 3489
- Joined: 14 Mar 2011, 05:58
- Has thanked: 684 times
- Been thanked: 572 times
Re: Bug Reports (snapshot builds)
by myk » 10 Mar 2013, 13:24
@Agetian: could you try reverting to r19990 and testing to see if you have any issues? I just did some revision bisection to find where the performance problems began, and it looks like r19991 is where they were first introduced. I brought up the issue in the threaded input thread.
- myk
- Posts: 439
- Joined: 17 Jan 2013, 02:39
- Location: California
- Has thanked: 38 times
- Been thanked: 57 times
Re: Bug Reports (snapshot builds)
by Max mtg » 10 Mar 2013, 13:37
@myk, @Agetian, r20215 is fine
The problematic place is forge.game.GameActionUtil.payManaDuringAbilityResolve(String, ManaCost, Command, Command) for now. All interactive 'unless' costs cannot be paid (including Flash, chain lightning) - because
game wanted to get input from stack, called game.getStack().setResolving(false) for that, then sets new input then restores the old value. If it were syncronous, would work fine, but since the input is acquired from other thread at a different time, null was returned.
Will have to do something about that isResolving check in getActualInput
The problematic place is forge.game.GameActionUtil.payManaDuringAbilityResolve(String, ManaCost, Command, Command) for now. All interactive 'unless' costs cannot be paid (including Flash, chain lightning) - because
game wanted to get input from stack, called game.getStack().setResolving(false) for that, then sets new input then restores the old value. If it were syncronous, would work fine, but since the input is acquired from other thread at a different time, null was returned.
Will have to do something about that isResolving check in getActualInput
Single class for single responsibility.
- Max mtg
- Programmer
- Posts: 1997
- Joined: 02 Jul 2011, 14:26
- Has thanked: 173 times
- Been thanked: 334 times
Re: Bug Reports (snapshot builds)
by Agetian » 10 Mar 2013, 14:00
@ myk: I think you're right, r19990 does not give me the hard time that the latest revisions do (as far as lag goes). Also, the "empty dialog windows hanging randomly on Java 7" issue goes away in r19990.
- Agetian
- Agetian
- Agetian
- Programmer
- Posts: 3489
- Joined: 14 Mar 2011, 05:58
- Has thanked: 684 times
- Been thanked: 572 times
Re: Bug Reports (snapshot builds)
by Max mtg » 10 Mar 2013, 14:47
Are the aforementioned problems gone with r20224 ?
Single class for single responsibility.
- Max mtg
- Programmer
- Posts: 1997
- Joined: 02 Jul 2011, 14:26
- Has thanked: 173 times
- Been thanked: 334 times
Re: Bug Reports (snapshot builds)
by Agetian » 10 Mar 2013, 15:00
Yesh the issues are indeed gone!Max mtg wrote:Are the aforementioned problems gone with r20224 ?



- Agetian
- Agetian
- Programmer
- Posts: 3489
- Joined: 14 Mar 2011, 05:58
- Has thanked: 684 times
- Been thanked: 572 times
Who is online
Users browsing this forum: No registered users and 52 guests