Bug Reports (snapshot builds)
Post MTG Forge Related Programming Questions Here
Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins
Re: Bug Reports (snapshot builds)
by Hanmac » 18 May 2016, 04:37
@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)
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)
by jje4th » 19 May 2016, 05:17
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: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)
Re: Bug Reports (snapshot builds)
by Hanmac » 19 May 2016, 05:37
i tested it again with newest build SVN:
i had that field + 1/1 Human Cleric Token
then i did sac if for Westvale Abbey and i got this:
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.
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)
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)
by fmartel » 19 May 2016, 20:09
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)
- fmartel
- Posts: 281
- Joined: 31 Dec 2013, 19:27
- Location: Québec City
- Has thanked: 8 times
- Been thanked: 4 times
Re: Bug Reports (snapshot builds)
by friarsol » 19 May 2016, 20:24
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)
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)
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Bug Reports (snapshot builds)
by Hanmac » 20 May 2016, 03:32
@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:
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.
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
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)
by friarsol » 20 May 2016, 13:01
AI was using Riftwing Cloudskate.
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Bug Reports (snapshot builds)
by stormcat » 20 May 2016, 13:55
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.

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.

Re: Bug Reports (snapshot builds)
by Hanmac » 20 May 2016, 14:15
@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)
by friarsol » 20 May 2016, 14:28
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.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.
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Bug Reports (snapshot builds)
by friarsol » 20 May 2016, 14:34
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.
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.
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Bug Reports (snapshot builds)
by Hanmac » 20 May 2016, 15:36
@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:
(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*
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);
+ }
(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)
by cybernator5000 » 21 May 2016, 12:01
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.
- Attachments
-
2016-05-21-00.txt
- (1.78 KiB) Downloaded 275 times
- cybernator5000
- Posts: 2
- Joined: 23 Aug 2015, 23:30
- Has thanked: 0 time
- Been thanked: 0 time
Re: Bug Reports (snapshot builds)
by friarsol » 21 May 2016, 12:24
Yep, this was fixed already.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.
Also, please read the link in my signature about bug reports, this thread is for snapshot builds, not beta releases.
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Who is online
Users browsing this forum: No registered users and 13 guests