Page 100 of 487

Re: Bug Reports (snapshot builds)

PostPosted: 10 Mar 2013, 04:42
by myk
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.

Re: Bug Reports (snapshot builds)

PostPosted: 10 Mar 2013, 05:53
by Agetian
Oh, thanks, myk! :)
OK, here's the breakdown of the information provided by the profiler, I'm including a picture snapshot of the "heaviest" function calls shown. I also have a (huge) html output from it featuring all the calls made, please let me know if I also need to post that.

Profile-Forge-r20215.png


- Agetian

Re: Bug Reports (snapshot builds)

PostPosted: 10 Mar 2013, 08:52
by swordshine
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.
Flash is still not functional.

Re: Bug Reports (snapshot builds)

PostPosted: 10 Mar 2013, 09:05
by myk
@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.

Re: Bug Reports (snapshot builds)

PostPosted: 10 Mar 2013, 09:31
by RumbleBBU
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)

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)
Used to work before.

Re: Bug Reports (snapshot builds)

PostPosted: 10 Mar 2013, 10:52
by Agetian
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.

Profile-Forge-r20215-v2.png


- Agetian

Re: Bug Reports (snapshot builds)

PostPosted: 10 Mar 2013, 10:59
by Agetian
swordshine wrote:
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.
Flash is still not functional.
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. ;)

- Agetian

Re: Bug Reports (snapshot builds)

PostPosted: 10 Mar 2013, 11:22
by 7543021
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)

Re: Bug Reports (snapshot builds)

PostPosted: 10 Mar 2013, 12:04
by myk
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).
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.
Screen Shot 2013-03-10 at 5.04.06 am.png

Re: Bug Reports (snapshot builds)

PostPosted: 10 Mar 2013, 12:11
by Agetian
@ 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

Re: Bug Reports (snapshot builds)

PostPosted: 10 Mar 2013, 13:24
by myk
@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.

Re: Bug Reports (snapshot builds)

PostPosted: 10 Mar 2013, 13:37
by Max mtg
@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

Re: Bug Reports (snapshot builds)

PostPosted: 10 Mar 2013, 14:00
by Agetian
@ 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

Re: Bug Reports (snapshot builds)

PostPosted: 10 Mar 2013, 14:47
by Max mtg
Are the aforementioned problems gone with r20224 ?

Re: Bug Reports (snapshot builds)

PostPosted: 10 Mar 2013, 15:00
by Agetian
Max mtg wrote:Are the aforementioned problems gone with r20224 ?
Yesh the issues are indeed gone! :-) :-) Hello, smooth gameplay and non-hanging dialog windows! :-)

- Agetian