Page 343 of 487

Re: Bug Reports (snapshot builds)

PostPosted: 18 May 2016, 04:37
by Hanmac
@jje4th: you are right it seems it doesn't have to do with cost but with the changes in ChangeZone.

the problem odes appear when Wayward Disciple and another creature does die the same time, like when they are sacrificed by Westvale Abbey or if they die the same time by Blasphemous Act.

so its not the Self Trigger that i thought, but the one for other creatures.
(still no idea how to fix that)

Re: Bug Reports (snapshot builds)

PostPosted: 18 May 2016, 20:01
by tjtillman
r31226

Burn from Within should be a Sorcery, not an Instant

Re: Bug Reports (snapshot builds)

PostPosted: 19 May 2016, 05:17
by jje4th
Hanmac wrote:@jje4th: you are right it seems it doesn't have to do with cost but with the changes in ChangeZone.

the problem odes appear when Wayward Disciple and another creature does die the same time, like when they are sacrificed by Westvale Abbey or if they die the same time by Blasphemous Act.

so its not the Self Trigger that i thought, but the one for other creatures.
(still no idea how to fix that)
Thanks for providing the info, but I still can't repro. Seems to work fine on the lastest SVN. Here's a screenshot of sac'ing Wayward Disciple, a Pious Evangel, and 3 Faerie Rogues to Westvale Abby:
image.png
Screenshot of Sac Wayward Disciple to Westvale Abby

Re: Bug Reports (snapshot builds)

PostPosted: 19 May 2016, 05:37
by Hanmac
i tested it again with newest build SVN:
Bildschirmfoto vom 2016-05-19 07-28-55.png

i had that field + 1/1 Human Cleric Token

then i did sac if for Westvale Abbey and i got this:
RuntimeException | Open
Code: Select all
Forge Version:    1.5.53-SNAPSHOT-r-1
Operating System: Linux 4.4.0-22-lowlatency amd64
Java Version:     1.8.0_91 Oracle Corporation

java.lang.RuntimeException: AbilityFactory : getAbility -- no API in Pious Evangel:
   at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:106)
   at forge.game.trigger.TriggerHandler.runSingleTrigger(TriggerHandler.java:495)
   at forge.game.trigger.TriggerHandler.runNonStaticTriggersForPlayer(TriggerHandler.java:366)
   at forge.game.trigger.TriggerHandler.runWaitingTrigger(TriggerHandler.java:326)
   at forge.game.trigger.TriggerHandler.runWaitingTriggers(TriggerHandler.java:290)
   at forge.game.zone.MagicStack.unfreezeStack(MagicStack.java:166)
   at forge.game.zone.MagicStack.addAndUnfreeze(MagicStack.java:154)
   at forge.player.HumanPlaySpellAbility.playAbility(HumanPlaySpellAbility.java:145)
   at forge.player.HumanPlay.playSpellAbility(HumanPlay.java:132)
   at forge.player.PlayerControllerHuman.playChosenSpellAbility(PlayerControllerHuman.java:939)
   at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:958)
   at forge.game.GameAction.startGame(GameAction.java:1480)
   at forge.game.Match.startGame(Match.java:95)
   at forge.match.HostedMatch$2.run(HostedMatch.java:220)
   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)
i don't know what is different that i get an exception and you not.

EDIT:
after some investigation, i found the problem is in TriggerHandler.runSingleTrigger, where it does call game.getCardState. i don't know if that is needed, but its bad for transformed cards which does leave the Battlefield. i fixed it in r31230.


i did a check and it doesn't fix yet my problem with Eldrazi Displacer and a transformed Archangel Avacyn // Avacyn, the Purifier or Huntmaster of the Fells // Ravager of the Fells equipped with Basilisk Collar.
(even if the creature gots blinked by the Displacer, the Damage on the Stack should still be having deathtouch and lifelink.)
This problem has something todo with:
game.addChangeZoneLKIInfo(c)
and it get called twice from Displacer.

I also fixed that thing with r31231.
LKI is only needed when something is removed from the battlefield, otherwise Blink Effects like from Eldrazi Displacer does mess with it. Because they are set twice.

Re: Bug Reports (snapshot builds)

PostPosted: 19 May 2016, 20:09
by fmartel
Description: [In a commander game, AI declaring blockers to my attack. AI Decides to block Elemental (8/8) w Goblin Turncoat (2/1)]

StackOverflowError | Open
Code: Select all
Forge Version:    1.5.53-SNAPSHOT-r31231
Operating System: Windows 7 6.1 amd64
Java Version:     1.8.0_40 Oracle Corporation

java.lang.StackOverflowError
   at java.util.HashMap.hash(Unknown Source)
   at java.util.HashMap.containsKey(Unknown Source)
   at java.util.HashSet.contains(Unknown Source)
   at forge.card.CardType.hasSubtype(CardType.java:257)
   at forge.card.CardType.hasStringType(CardType.java:230)
   at forge.game.card.Card.isValid(Card.java:3594)
   at forge.game.GameObject.isValid(GameObject.java:27)
   at forge.game.card.CardPredicates$13.apply(CardPredicates.java:151)
   at forge.game.card.CardPredicates$13.apply(CardPredicates.java:148)
   at com.google.common.collect.Iterators$7.computeNext(Iterators.java:647)
   at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
   at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
   at forge.util.collect.FCollection.<init>(FCollection.java:90)
   at forge.game.card.CardCollection.<init>(CardCollection.java:115)
   at forge.game.card.CardLists.filter(CardLists.java:255)
   at forge.game.card.CardLists.getValidCards(CardLists.java:185)
   at forge.game.cost.CostSacrifice.canPay(CostSacrifice.java:90)
   at forge.game.cost.CostPayment.canPayAdditionalCosts(CostPayment.java:92)
   at forge.game.spellability.AbilityActivated.canPlay(AbilityActivated.java:117)
   at forge.game.spellability.SpellAbilityView.updateCanPlay(SpellAbilityView.java:57)
   at forge.game.spellability.SpellAbility.setActivatingPlayer(SpellAbility.java:280)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:648)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilCombat.shieldDamage(ComputerUtilCombat.java:613)
   at forge.ai.ComputerUtilCombat.totalShieldDamage(ComputerUtilCombat.java:592)
   at forge.ai.ComputerUtilCombat.lifeThatWouldRemain(ComputerUtilCombat.java:289)
   at forge.ai.ComputerUtilCombat.lifeInSeriousDanger(ComputerUtilCombat.java:453)
   at forge.ai.ComputerUtil.getCardPreference(ComputerUtil.java:326)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:261)
   at forge.ai.ComputerUtilCost.checkSacrificeCost(ComputerUtilCost.java:314)
   at forge.ai.ComputerUtil.canRegenerate(ComputerUtil.java:660)
   at forge.ai.ComputerUtilCombat.canDestroyBlockerBeforeFirstStrike(ComputerUtilCombat.java:1775)
   at forge.ai.ComputerUtilComba
... (truncated)

Re: Bug Reports (snapshot builds)

PostPosted: 19 May 2016, 20:24
by friarsol
r31231

It looks like cards entering the battlefield from Suspend aren't in a proper state. Casting any spell can target them, but then fizzles on resolution. I'm guessing this has to do with one of Hanmac's most recent checkins (31230-31)

Re: Bug Reports (snapshot builds)

PostPosted: 20 May 2016, 03:32
by Hanmac
@friarsol thanks for telling me, I will check that out once I woke up.

Edit:
@friarsol what cards do you test?
because i did try Benalish Commander it did works,

then i did test Epochrasite and it was broken when it does return the second time. (but i remember it did happen before)
I tested it again with my changes reverted, and it does show that the problems did exist long ago, (i think i also reported it myself ... seems something is broken with Epochrasite)

Logging changeZone shows:
Code: Select all
first cast:
Epochrasite (126) Stack => Human's Battlefield
destroy:
Exquisite Firecraft (127) Stack => Human's Graveyard

Trigger with Exile and adding Suspend:
Epochrasite (126) Human's Battlefield => Human's Graveyard
Epochrasite (126) Human's Graveyard => Human's Exile

First return: (i don't know why twice)
Epochrasite (126) Stack => Human's Battlefield
Epochrasite (126) Stack => Human's Battlefield

now Epochrasite has Suspend while its on the Battlefield ... problematic?

Destroy second time:
Exquisite Firecraft (158) Stack => Human's Graveyard

Trigger with Exile second time, now with TWO Suspend:
Epochrasite (126) Human's Battlefield => Human's Graveyard
Epochrasite (126) Human's Graveyard => Human's Exile

Second Return, now with different from the first time:
Epochrasite (126) Stack => Human's Battlefield
Epochrasite (126) Human's Exile => Human's Battlefield

Destroy third time now frizzles:
Exquisite Firecraft (158) Stack => Human's Graveyard
Edit:
Jhoira of the Ghitu also has the problem that when something enters the battlefield exiled with Jhiora, it does have still suspend on the battlefield.

Re: Bug Reports (snapshot builds)

PostPosted: 20 May 2016, 13:01
by friarsol
AI was using Riftwing Cloudskate.

Re: Bug Reports (snapshot builds)

PostPosted: 20 May 2016, 13:55
by stormcat
r31231:
Please look at the attached file.
Magus of the Moon is enchanted Song of the Dryads.
In this case, Magus of the Moon depends on Song of the Dryads.
Because Magus of the Moon is losing all ability, Non Basic lands are not to become Mountain.

Image

Re: Bug Reports (snapshot builds)

PostPosted: 20 May 2016, 14:15
by Hanmac
@friarsol: i need to test it more, but i did give my Opponent that card to cast, he suspended it, and when it enters the battlefield from exile, i could destroy it with Lightning Bolt.

Re: Bug Reports (snapshot builds)

PostPosted: 20 May 2016, 14:28
by friarsol
Hanmac wrote:@friarsol: i need to test it more, but i did give my Opponent that card to cast, he suspended it, and when it enters the battlefield from exile, i could destroy it with Lightning Bolt.
I definitely tried to cast two things and they both fizled, probably a little more complex than a simple Suspend into play, like Suspend -> BF -> Graveyard -> Hand -> Suspend or something. Don't have the game log anymore to verify.

Re: Bug Reports (snapshot builds)

PostPosted: 20 May 2016, 14:34
by friarsol
r31231

This is an issue I've noticed occassionally, but it's very noticeable in Momir Basic. Any copied permanent with a trigger, doesn't actually show the trigger in the CardDetailPanel. Not sure if this is an issue with the CardView or the CDP or what.

I'm guessing it's an issue with CardView, because it seems later in the same match cards that weren't showing their trigger, now are.

Re: Bug Reports (snapshot builds)

PostPosted: 20 May 2016, 15:36
by Hanmac
@friarsol: hm i tried it with Not Forgotten to send it from the Graveyard to the Library and then did force the Opponent to suspend it again, i could destroy it again.

So i couldn't reproduce it yet. but i have some little change:
Code: Select all
-        // LKI is only needed when something is moved from the battlefield.
-        // also it does messup with Blink Effects like Eldrazi Displacer
-        if (fromBattlefield && zoneTo != null && !zoneTo.is(ZoneType.Stack) && !zoneTo.is(ZoneType.Flashback)) {
-            game.addChangeZoneLKIInfo(c);
+        if (zoneFrom != null && zoneTo != null && !zoneTo.is(ZoneType.Stack) && !zoneTo.is(ZoneType.Flashback)) {
+            // LKI is only needed when something is moved from the battlefield.
+            // also it does messup with Blink Effects like Eldrazi Displacer
+            if (fromBattlefield) {
+                game.addChangeZoneLKIInfo(c);
+            }
but that shouldn't make any big difference.
(i had this to make some changes easier to implement)
but also without this i could not reproduce it.

===
also for the thing with CardDetailPanel & CardView, when you do it, can you lookout my problem there:
viewtopic.php?p=196785#p196785

when i have cards like Pious Evangel and Westvale Abbey in the game, and then does press the Transform Swirl in the Card View it shows that they have the wrong color, but the color in game is still the right one (so its only a view problem) it can be seen better then activate: "Show Detailed Card Color: Always"

also i thought i fixed it a bit, but it seems now its also broken in the Deck Editor too by r31207 *cry*

Re: Bug Reports (snapshot builds)

PostPosted: 21 May 2016, 12:01
by cybernator5000
Version 1.5.52, everytime I win a game in quest mode with Ante enabled it crashes. When I turn Ante off, it works just fine.

Re: Bug Reports (snapshot builds)

PostPosted: 21 May 2016, 12:24
by friarsol
cybernator5000 wrote:Version 1.5.52, everytime I win a game in quest mode with Ante enabled it crashes. When I turn Ante off, it works just fine.
Yep, this was fixed already.

Also, please read the link in my signature about bug reports, this thread is for snapshot builds, not beta releases.