Page 416 of 487

Re: Bug Reports (snapshot builds)

PostPosted: 24 Apr 2017, 07:16
by l33t3rth4nur1111
Description:
Activated Soul Foundry to create a Quicksilver Gargantuan token copying an opponent's Karador, Ghost Chieftain commander.

NullPointerException | Open
Code: Select all
Forge Version:    1.5.62-SNAPSHOT-r33832
Operating System: Mac OS X 10.10.5 x86_64
Java Version:     1.8.0_60 Oracle Corporation

java.lang.NullPointerException
   at forge.game.staticability.StaticAbility.checkConditions(StaticAbility.java:476)
   at forge.game.staticability.StaticAbility.shouldApplyContinuousAbility(StaticAbility.java:260)
   at forge.game.staticability.StaticAbility.applyContinuousAbility(StaticAbility.java:226)
   at forge.game.GameAction.checkStaticAbilities(GameAction.java:698)
   at forge.game.GameAction.checkStaticAbilities(GameAction.java:641)
   at forge.game.ability.AbilityUtils.resolveSubAbilities(AbilityUtils.java:1281)
   at forge.game.ability.AbilityUtils.resolveApiAbility(AbilityUtils.java:1297)
   at forge.game.ability.AbilityUtils.resolveSubAbilities(AbilityUtils.java:1283)
   at forge.game.ability.AbilityUtils.resolveApiAbility(AbilityUtils.java:1297)
   at forge.game.ability.AbilityUtils.resolve(AbilityUtils.java:1271)
   at forge.player.HumanPlaySpellAbility.playAbility(HumanPlaySpellAbility.java:181)
   at forge.player.HumanPlay.playSpellAbilityNoStack(HumanPlay.java:230)
   at forge.player.PlayerControllerHuman.playSpellAbilityNoStack(PlayerControllerHuman.java:246)
   at forge.game.replacement.ReplacementHandler.executeReplacement(ReplacementHandler.java:264)
   at forge.game.replacement.ReplacementHandler.run(ReplacementHandler.java:148)
   at forge.game.replacement.ReplacementHandler.run(ReplacementHandler.java:69)
   at forge.game.GameAction.changeZone(GameAction.java:239)
   at forge.game.GameAction.moveTo(GameAction.java:480)
   at forge.game.GameAction.moveTo(GameAction.java:461)
   at forge.game.GameAction.moveToPlay(GameAction.java:570)
   at forge.game.ability.effects.CopyPermanentEffect.resolve(CopyPermanentEffect.java:261)
   at forge.game.ability.AbilityApiBased.resolve(AbilityApiBased.java:60)
   at forge.game.ability.AbilityUtils.resolveApiAbility(AbilityUtils.java:1290)
   at forge.game.ability.AbilityUtils.resolve(AbilityUtils.java:1271)
   at forge.game.zone.MagicStack.resolveStack(MagicStack.java:514)
   at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:996)
   at forge.game.GameAction.startGame(GameAction.java:1485)
   at forge.game.Match.startGame(Match.java:100)
   at forge.match.HostedMatch$2.run(HostedMatch.java:224)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at java.lang.Thread.run(Thread.java:745)

Re: Bug Reports (snapshot builds)

PostPosted: 24 Apr 2017, 16:06
by Indigo Dragon
Whirlpool Warrior doesn't have an activated ability.
Not that it can't activate its ability, or that its ability breaks the game. It does not have an activated ability. So now it's just a bigger Whirlpool Rider.

Re: Bug Reports (snapshot builds)

PostPosted: 25 Apr 2017, 20:53
by tjtillman
r33841

Not a bug, but AI never activates Edifice of Authority. Is there any way to let AI use it like it would a tapper? If not, or if there isn't a good way to have AI use it, be better for AI not to play it at all rather than play it and not use it.

Re: Bug Reports (snapshot builds)

PostPosted: 26 Apr 2017, 21:35
by fmartel
Description: [AI blocks a Spawnwrithe (2/3, with Spidersilk Armor) into a Battle Sliver (5/3)]

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

java.lang.StackOverflowError
   at java.util.regex.Pattern.closure(Unknown Source)
   at java.util.regex.Pattern.sequence(Unknown Source)
   at java.util.regex.Pattern.expr(Unknown Source)
   at java.util.regex.Pattern.compile(Unknown Source)
   at java.util.regex.Pattern.<init>(Unknown Source)
   at java.util.regex.Pattern.compile(Unknown Source)
   at java.lang.String.split(Unknown Source)
   at java.lang.String.split(Unknown Source)
   at forge.game.zone.ZoneType.listValueOf(ZoneType.java:49)
   at forge.game.staticability.StaticAbility.checkConditions(StaticAbility.java:475)
   at forge.game.cost.CostAdjustment.checkRequirement(CostAdjustment.java:399)
   at forge.game.cost.CostAdjustment.applyRaise(CostAdjustment.java:88)
   at forge.game.cost.CostAdjustment.adjust(CostAdjustment.java:73)
   at forge.ai.ComputerUtilMana.calculateManaCost(ComputerUtilMana.java:1014)
   at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:99)
   at forge.ai.ComputerUtilMana.canPayManaCost(ComputerUtilMana.java:63)
   at forge.ai.ComputerUtilCost.canPayCost(ComputerUtilCost.java:478)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:825)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.jav
... (truncated)

Re: Bug Reports (snapshot builds)

PostPosted: 28 Apr 2017, 09:19
by Marek14
Casting Frogmite via Nightveil Specter apparently counts opponent's artifacts instead of mine.

Also, I still have the problem with Forge hanging when the last mana ability used to pay for spell/ability requires a choice displayed in left bottom panel (removing a counter, paying energy, choosing between 2 types of mana -- not more, since that gets its own dialogue box)...

Re: Bug Reports (snapshot builds)

PostPosted: 30 Apr 2017, 21:31
by fmartel
Description: [attacking with Rampaging Baloths, Wurmcoil Engine, attached Sword of Body and Mind, 1x Eldrazi Spawn. I have Spidersilk Armor in play]

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

java.lang.StackOverflowError
   at java.util.ArrayList.addAll(Unknown Source)
   at com.google.common.collect.Iterables.addAll(Iterables.java:348)
   at forge.game.card.Card.getUnhiddenKeywords(Card.java:3229)
   at forge.game.card.Card.getUnhiddenKeywords(Card.java:3225)
   at forge.game.card.Card.visitUnhiddenKeywords(Card.java:3257)
   at forge.game.card.Card.visitKeywords(Card.java:3137)
   at forge.game.card.Card.hasKeyword(Card.java:3152)
   at forge.game.card.Card.hasKeyword(Card.java:3143)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1817)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:388)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:290)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:368)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:836)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1829)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:609)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:588)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:291)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:455)
   at f
... (truncated)

Re: Bug Reports (snapshot builds)

PostPosted: 01 May 2017, 01:14
by Bog Wraith
1.5.62-r33896

After tapping Naga Vitalist for mana, Forge came to a complete stop. There was no crash so no report was generated. The cancel button did not work and there was no way to continue the game. I dumped the game state and include the file below along with a screenshot of the board/game state.
Code: Select all
humanlife=18
ailife=19
activeplayer=human
activephase=MAIN1
humanhand=Initiate's Companion;Stinging Shot;Rhet-Crop Spearmaster;Forest
humanlibrary=Unwavering Initiate;Unwavering Initiate;Forest;Gust Walker;Gust Walker;Plains;Trial of Strength;Pouncing Cheetah;Plains;Forest;Prowling Serpopard;Ornery Kudu;Plains;Forest;Forest;Cast Out;Spidery Grasp;Sixth Sense;Forest;In Oketra's Name;Plains;Oashra Cultivator;Sacred Cat;Winged Shepherd;Forest;Plains;Plains;Prepare // Fight;Plains;Supply Caravan
humangraveyard=
humanbattlefield=Plains|Tapped;Sacred Cat;Forest|Tapped;Naga Vitalist|Tapped;Forest|Tapped
humanexile=
humancommand=
aihand=Sunscorched Desert;Plains;Cradle of the Accursed
ailibrary=Luxa River Shrine;Colossapede;Forest;Protection of the Hekma;Shed Weakness;Greater Sandwurm;Quarry Hauler;Bontu's Monument;Forest;Sparring Mummy;Plains;Shefet Monitor;Scattered Groves;Benefaction of Rhonas;Plains;Impeccable Timing;Synchronized Strike;Dusk // Dawn;Devoted Crop-Mate;Crocodile of the Crossing;Forest;Djeru's Resolve;Forest;Plains;Scaled Behemoth;Sunscorched Desert;Plains;Renewed Faith;Forest;Oketra the True;Djeru's Resolve
aigraveyard=Djeru's Resolve
aibattlefield=Plains|Tapped;Fan Bearer|Id:72;Sheltered Thicket;Honed Khopesh|Attaching:72;Plains|Tapped
aiexile=
aicommand=

Re: Bug Reports (snapshot builds)

PostPosted: 01 May 2017, 07:09
by Marek14
Bog Wraith wrote:1.5.62-r33896

After tapping Naga Vitalist for mana, Forge came to a complete stop. There was no crash so no report was generated. The cancel button did not work and there was no way to continue the game. I dumped the game state and include the file below along with a screenshot of the board/game state.
Code: Select all
humanlife=18
ailife=19
activeplayer=human
activephase=MAIN1
humanhand=Initiate's Companion;Stinging Shot;Rhet-Crop Spearmaster;Forest
humanlibrary=Unwavering Initiate;Unwavering Initiate;Forest;Gust Walker;Gust Walker;Plains;Trial of Strength;Pouncing Cheetah;Plains;Forest;Prowling Serpopard;Ornery Kudu;Plains;Forest;Forest;Cast Out;Spidery Grasp;Sixth Sense;Forest;In Oketra's Name;Plains;Oashra Cultivator;Sacred Cat;Winged Shepherd;Forest;Plains;Plains;Prepare // Fight;Plains;Supply Caravan
humangraveyard=
humanbattlefield=Plains|Tapped;Sacred Cat;Forest|Tapped;Naga Vitalist|Tapped;Forest|Tapped
humanexile=
humancommand=
aihand=Sunscorched Desert;Plains;Cradle of the Accursed
ailibrary=Luxa River Shrine;Colossapede;Forest;Protection of the Hekma;Shed Weakness;Greater Sandwurm;Quarry Hauler;Bontu's Monument;Forest;Sparring Mummy;Plains;Shefet Monitor;Scattered Groves;Benefaction of Rhonas;Plains;Impeccable Timing;Synchronized Strike;Dusk // Dawn;Devoted Crop-Mate;Crocodile of the Crossing;Forest;Djeru's Resolve;Forest;Plains;Scaled Behemoth;Sunscorched Desert;Plains;Renewed Faith;Forest;Oketra the True;Djeru's Resolve
aigraveyard=Djeru's Resolve
aibattlefield=Plains|Tapped;Fan Bearer|Id:72;Sheltered Thicket;Honed Khopesh|Attaching:72;Plains|Tapped
aiexile=
aicommand=
Sounds like a bug I get recently. Basically, the game stops like this when you pay mana to cast spells/activate abilities and the last ability you use has a binary choice (selection between two colors of mana, removing a counter yes/no, etc.)

Re: Bug Reports (snapshot builds)

PostPosted: 01 May 2017, 08:14
by Marek14
Kill Switch seems to not stop things from untapping.

Re: Bug Reports (snapshot builds)

PostPosted: 02 May 2017, 03:26
by AuranReign
Whirlpool Warrior is missing the second half of its text.

Wrangle is missing the power 4 or less clause.

Re: Bug Reports (snapshot builds)

PostPosted: 02 May 2017, 10:17
by MIC132
I think I pinpointed quite important bug.
If you are paying a cost (In this case I was simply casting a spell), and you use something that itself has a cost (this case it was Spire of Industry), when you click "Ok" on the second cost, the game breaks.
The prompt still has the "Pay 1 life?" text, but the OK button is inactive, and cancel does nothing. And even conceding doesn't actually end the duel (your carts disappear, but the duel doesn't end), it has to be closed manually.
I encountered this multiple times, in different decks, so it's not an issue with the spire, but with paying costs with something that also has a cost.
This is on latest snapshot (downloaded half an hour ago).

EDIT: It seems to only happen if you pay whole cost with the second thing (like casting Fatal Push with the Spire of Industry).

Re: Bug Reports (snapshot builds)

PostPosted: 02 May 2017, 14:14
by Agetian
Hmm, I tried reproducing the situations from reports (both from Marek and from MIC132) regarding the payment prompt hanging if something is used to pay the cost that in itself has a cost, but so far I'm unable to repro it, no matter what I try :( Can you please let me know if there's a consistent series of steps that always leads to this situation for you? And does it happen consistently to you (all the time) or does it only happen from time to time?..

We might need the original developer for the "binary choice in prompt" code (I don't remember his handle but I do remember that it's a rather recent addition). Is he still around? Does anyone remember who coded this part, maybe we can try PMing him, maybe he'll know what could be up?

- Agetian

Re: Bug Reports (snapshot builds)

PostPosted: 02 May 2017, 15:49
by MIC132
Agetian wrote:Hmm, I tried reproducing the situations from reports (both from Marek and from MIC132) regarding the payment prompt hanging if something is used to pay the cost that in itself has a cost, but so far I'm unable to repro it, no matter what I try :( Can you please let me know if there's a consistent series of steps that always leads to this situation for you? And does it happen consistently to you (all the time) or does it only happen from time to time?..

We might need the original developer for the "binary choice in prompt" code (I don't remember his handle but I do remember that it's a rather recent addition). Is he still around? Does anyone remember who coded this part, maybe we can try PMing him, maybe he'll know what could be up?

- Agetian
I have a 100% repro method for this. Grab any Mardu Vehicles deck (or cheat the needed cards in with dev mode, but that's assuming dev mode doesn't somehow unbreak this). Then cast Fatal Push off of Spire of Industry, though obviously not producing mana beforehand (that's a workaround that I'm using for now to not hang the game) but by starting the casting process, and then clicking on Spire. That should take you directly to the payment prompt (since producing colorless wouldn't make sense here), then you click yes to pay life, and it hangs.

Notably, it doesn't happen with Aether Hub, so it might be a thing with life payments, but it did happen to me with some other cards (unfortunately I don't remember what cards, since it was when I was playing randomly generated decks) so it's not just issue with the Spire.

Re: Bug Reports (snapshot builds)

PostPosted: 02 May 2017, 20:07
by leshrac
I had this happen with Horizon Canopy in a very similar way - from my testing, it only happened when i specifically tapped the land to cast a spell or activate an ability. If it got tapped when i used the "auto" payment for a spell, i had no problems.

But it doesn't just happen with life payments, this bug also comes up with hybrid mana and some mana producers, for example when i wanted to cast Deathrite Shaman of a Mox Diamond. I never had an issue when i for example wanted to cast Deathrite Shaman with a Bayou, in that case there is a popup to chose the color, while with Mox Diamond i was just asked to chose in a dialogue on the bottom left of the screen. Same situation happens with Sylvan Caryatid instead of Mox Diamond - bot mana producers only break with hybrid mana as far as i can tell. "Auto" payment again works fine.

Re: Bug Reports (snapshot builds)

PostPosted: 03 May 2017, 04:55
by Agetian
Ok, I was able to reproduce it using the Fatal Push off of Spire of Industry scenario. Will try to see what's going on, but I'm not sure if I'll be able to work this out, I'm not an expert in UI :/ Still would love to know if the original developer of the binary prompt is still around...

EDIT: The original developer is Pfps. I'll try PMing him.

- Agetian