Bug Reports (snapshot builds)
Post MTG Forge Related Programming Questions Here
Moderators: timmermac, Agetian, friarsol, Blacksmith, KrazyTheFox, CCGHQ Admins
Re: Bug Reports (snapshot builds)
by tjtillman » 15 Aug 2016, 02:11
r31989
Game crashed when using Collective Effort to destroy Infectious Curse (I was also using both of the other modes of Collective Effort)
Game crashed when using Collective Effort to destroy Infectious Curse (I was also using both of the other modes of Collective Effort)
- Code: Select all
Description: [describe what you were doing when the crash occurred]
[spoiler=RuntimeException][code]
Forge Version: 1.5.56-SNAPSHOT-r31989
Operating System: Windows 10 10.0 amd64
Java Version: 1.8.0_66 Oracle Corporation
java.lang.RuntimeException: AbilityFactory : getAbility -- Infectious Curse has no SVar: TrigChoose
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:115)
at forge.game.trigger.TriggerHandler.runSingleTrigger(TriggerHandler.java:514)
at forge.game.trigger.TriggerHandler.runNonStaticTriggersForPlayer(TriggerHandler.java:371)
at forge.game.trigger.TriggerHandler.runWaitingTrigger(TriggerHandler.java:335)
at forge.game.trigger.TriggerHandler.runWaitingTriggers(TriggerHandler.java:290)
at forge.game.zone.MagicStack.unfreezeStack(MagicStack.java:167)
at forge.game.zone.MagicStack.finishResolving(MagicStack.java:580)
at forge.game.zone.MagicStack.resolveStack(MagicStack.java:528)
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:976)
at forge.game.GameAction.startGame(GameAction.java:1464)
at forge.game.Match.startGame(Match.java:95)
at forge.match.HostedMatch$2.run(HostedMatch.java:220)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
[/code][/spoiler]
Re: Bug Reports (snapshot builds)
by Hanmac » 15 Aug 2016, 04:00
@tjtiklman: the problem is not the destroy spell, but the Curse one.
There is a Trigger which should not trigger, that's why it does look for a Svar which does not exist (on that side of creature)
I have a clue where the problem is (and it seems to be my fault again :/)
===
Edit: the bug is more complicated than i thought.
@others:
the problem are spells with Sub abilities, and Triggers (specially from Cards with Alternate States)
because the active triggers are cleared between the abilities.
the new triggers does want to trigger for events which should not touch them.
in this example with Collective Effort:
DestroyCreature > DestroyEnchantment > PutCounter
DestroyEnchantment on the Curse causes ChangesZone to Trigger (add to TriggerWaiting)
then the active Triggers are cleared, and now the Witch is back.
when later the TriggerWaiting are checked, it looks in activeTriggers and find the Witch. (but it should find none)
my current ideas to fix that are most likely some kind of messy patch.
i think the whole stuff with waitingTriggers and activeTriggers need to be reworked.
Like instead of just have the TriggerWaiting, we might need to have it collect the Trigger objects for which of them could be run.
with that we might not have the whole Subability Chain to cause trigger which might not happen anymore. ... or what do you guys think?
===
Edit: that and others should be fixed by r31993
now the waiting Trigger does look for the Trigger it should cause to run.
PLEASE look for if i break something with that again.
There is a Trigger which should not trigger, that's why it does look for a Svar which does not exist (on that side of creature)
I have a clue where the problem is (and it seems to be my fault again :/)
===
Edit: the bug is more complicated than i thought.
@others:
the problem are spells with Sub abilities, and Triggers (specially from Cards with Alternate States)
because the active triggers are cleared between the abilities.
the new triggers does want to trigger for events which should not touch them.
in this example with Collective Effort:
DestroyCreature > DestroyEnchantment > PutCounter
DestroyEnchantment on the Curse causes ChangesZone to Trigger (add to TriggerWaiting)
then the active Triggers are cleared, and now the Witch is back.
when later the TriggerWaiting are checked, it looks in activeTriggers and find the Witch. (but it should find none)
my current ideas to fix that are most likely some kind of messy patch.
i think the whole stuff with waitingTriggers and activeTriggers need to be reworked.
Like instead of just have the TriggerWaiting, we might need to have it collect the Trigger objects for which of them could be run.
with that we might not have the whole Subability Chain to cause trigger which might not happen anymore. ... or what do you guys think?
===
Edit: that and others should be fixed by r31993
now the waiting Trigger does look for the Trigger it should cause to run.
PLEASE look for if i break something with that again.
Re: Bug Reports (snapshot builds)
by fmartel » 15 Aug 2016, 17:20
Description: [In a commander Game, on M2 of AI1, Game Crashed. Was strolling through the actions]
- NullPointerException | Open
- Code: Select all
Forge Version: 1.5.56-SNAPSHOT-r31995
Operating System: Windows 7 6.1 amd64
Java Version: 1.7.0_25 Oracle Corporation
java.lang.NullPointerException
at forge.util.collect.FCollection.<init>(FCollection.java:90)
at forge.game.card.CardCollection.<init>(CardCollection.java:115)
at forge.game.ability.AbilityUtils.xCount(AbilityUtils.java:1544)
at forge.game.ability.AbilityUtils.calculateAmount(AbilityUtils.java:396)
at forge.game.CardTraitBase.meetsCommonRequirements(CardTraitBase.java:218)
at forge.game.trigger.Trigger.requirementsCheck(Trigger.java:258)
at forge.game.trigger.TriggerHandler.canRunTrigger(TriggerHandler.java:445)
at forge.game.trigger.TriggerHandler.runNonStaticTriggersForPlayer(TriggerHandler.java:379)
at forge.game.trigger.TriggerHandler.runWaitingTrigger(TriggerHandler.java:347)
at forge.game.trigger.TriggerHandler.runWaitingTriggers(TriggerHandler.java:306)
at forge.game.zone.MagicStack.unfreezeStack(MagicStack.java:167)
at forge.game.zone.MagicStack.addAndUnfreeze(MagicStack.java:155)
at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:397)
at forge.ai.ComputerUtilMana.payManaCost(ComputerUtilMana.java:55)
at forge.ai.PlayerControllerAi.payManaCost(PlayerControllerAi.java:795)
at forge.game.player.PlayerController.payManaCost(PlayerController.java:219)
at forge.game.cost.CostPartMana.payAsDecided(CostPartMana.java:138)
at forge.game.cost.CostPayment.payComputerCosts(CostPayment.java:198)
at forge.ai.ComputerUtil.handlePlayingSpellAbility(ComputerUtil.java:113)
at forge.ai.PlayerControllerAi.playChosenSpellAbility(PlayerControllerAi.java:400)
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:930)
at forge.game.GameAction.startGame(GameAction.java:1464)
at forge.game.Match.startGame(Match.java:95)
at forge.match.HostedMatch$2.run(HostedMatch.java:220)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
- 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 Hanmac » 15 Aug 2016, 18:14
@fmartel: thanks, that should be fixed in r31996.
if not, please come back and tell which card the AI seems to want to play if able.
if not, please come back and tell which card the AI seems to want to play if able.
Re: Bug Reports (snapshot builds)
by tjtillman » 16 Aug 2016, 05:57
r31996
CPU played Rise From the Grave, taking my Wild-Field Scarecrow from the graveyard. CPU on a later turn sacrificed the scarecrow to get two lands, but on sacrifice, it triggered my Bloodbriar to get a +1/+1 counter.
CPU played Rise From the Grave, taking my Wild-Field Scarecrow from the graveyard. CPU on a later turn sacrificed the scarecrow to get two lands, but on sacrifice, it triggered my Bloodbriar to get a +1/+1 counter.
Re: Bug Reports (snapshot builds)
by Hanmac » 16 Aug 2016, 10:32
@tjtillman:
fixed it in r31997 i added another parameter for the Player, because the Card copy doesn't seems to copy the current controller.
tested it with each a Bloodbriar on both sides on the field, now only the right one should get a +1/+1 counter.
fixed it in r31997 i added another parameter for the Player, because the Card copy doesn't seems to copy the current controller.
tested it with each a Bloodbriar on both sides on the field, now only the right one should get a +1/+1 counter.
Re: Bug Reports (snapshot builds)
by friarsol » 17 Aug 2016, 00:08
I cast Supplant Form on my opponent's Ghalma's Warden. I don't have metalcraft but the AI does. The Warden is a 4/6 when it should be a 2/4. Even after the AI loses metalcraft, it's still a 4/6
- 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 timmermac » 17 Aug 2016, 00:49
Did you have anything else in play that could have given the Warden +2/+2?
"I just woke up, haven't had coffee, let alone a pee in 7 days, and I find out you stole my ass and made a ...mini-me! Carter, I should be irked currently, yes?" - Jack O'Neill
Re: Bug Reports (snapshot builds)
by fmartel » 17 Aug 2016, 01:01
Description: [2 instances of Forge open on same PC, trying the Multi-player. Starting the game, hands are drawn.]
It's my fault ! I have 2 time the same human player in each window !
It's my fault ! I have 2 time the same human player in each window !
- RuntimeException | Open
- Code: Select all
Forge Version: 1.5.56-SNAPSHOT-r32003
Operating System: Windows 7 6.1 amd64
Java Version: 1.8.0_101 Oracle Corporation
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at forge.net.GameProtocolHandler$1.run(GameProtocolHandler.java:59)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at forge.net.GameProtocolHandler$1.run(GameProtocolHandler.java:55)
... 14 more
Caused by: java.lang.NullPointerException
at forge.game.player.PlayerView.getMana(PlayerView.java:370)
at forge.toolbox.special.PlayerDetailsPanel.updateManaPool(PlayerDetailsPanel.java:143)
at forge.screens.match.views.VField.updateManaPool(VField.java:207)
at forge.screens.match.CMatchUI$1.run(CMatchUI.java:193)
at forge.GuiDesktop.invokeInEdtNow(GuiDesktop.java:74)
at forge.FThreads.invokeInEdtNowOrLater(FThreads.java:30)
at forge.screens.match.CMatchUI.setGameView(CMatchUI.java:188)
... 19 more
- 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 stormcat » 17 Aug 2016, 01:39
Arc by block from Assembled Alphas to Ingenious Skaab is not displayed.
Please refer to attachment.
Please refer to attachment.
Re: Bug Reports (snapshot builds)
by tjtillman » 17 Aug 2016, 06:40
r32003
Game state as posted below (after the incident occurred). During its upkeep, CPU cast Aim High targeting its Deranged Whelp which was already in its graveyard. Aim High fizzled, but shouldn't have been able to target the Deranged Whelp on cast.
Game state as posted below (after the incident occurred). During its upkeep, CPU cast Aim High targeting its Deranged Whelp which was already in its graveyard. Aim High fizzled, but shouldn't have been able to target the Deranged Whelp on cast.
- Code: Select all
humanlife=20
ailife=18
activeplayer=ai
activephase=COMBAT_DECLARE_ATTACKERS
humancardsinhand=Tamiyo's Journal;Drownyard Behemoth
humancardsinlibrary=Plains;Forest;Clear Shot;Explosive Apparatus;Moldgraf Scavenger;Plains;Island;Geist of the Archives;Watcher in the Web;Quilled Wolf;Island;Bloodbriar;Choking Restraints;Grapple with the Past;Spontaneous Mutation;Forest;Forest;Island;Forest;Stitched Mangler;Lambholt Pacifist;Forest;Woodland Stream;Backwoods Survivalists;Altered Ego;Terrarion;Island
humancardsingraveyard=Blessed Alliance;Ingenious Skaab
humancardsinplay=Forest;Terrarion;Plains|Tapped:True;Island;Exultant Cultist;Island|Tapped:True;Drownyard Explorers;t:Clue,P:0,T:0,Cost:no cost,Types:Artifact-Clue,Keywords:,Image:c_clue6;Forest|Tapped:True;Bloodbriar|SummonSick:True
humancardsinexile=
humancardsincommand=
aicardsinhand=Woodland Patrol;Shrill Howler;Swift Spinner;Hermit of the Natterknolls
aicardsinlibrary=Highland Lake;Woodland Patrol;Cultist's Staff;Thermo-Alchemist;Mountain;Forest;Bedlam Reveler;Forest;Forest;Senseless Rage;Shrill Howler;Shrill Howler;Stensia Masquerade;Hinterland Logger;Warped Landscape;Gibbering Fiend;Forest;Uncaged Fury;Mountain;Mountain;Forest;Mountain;Cryptolith Fragment;Falkenrath Reaver;Brazen Wolves;Thermo-Alchemist;Mountain
aicardsingraveyard=Deranged Whelp;Alchemist's Greeting;Aim High
aicardsinplay=Mountain|Tapped:True;Mountain;Geier Reach Sanitarium;Forest|Tapped:True;Insatiable Gorgers|Tapped:True;Mountain
aicardsinexile=
aicardsincommand=
Re: Bug Reports (snapshot builds)
by MIC132 » 17 Aug 2016, 19:44
r32003
Could someone look into picking decks in network multiplayer EDH?
Only the host gets the correct deck, the rest gets a generated one no matter what they pick.
Could someone look into picking decks in network multiplayer EDH?
Only the host gets the correct deck, the rest gets a generated one no matter what they pick.
Last edited by MIC132 on 18 Aug 2016, 00:47, edited 1 time in total.
Re: Bug Reports (snapshot builds)
by tjtillman » 18 Aug 2016, 00:24
r32003
Not sure if this is already a known issue, but CPU had Cult of the Waxing Moon and Ulvenwald Captive, paid to transform the Ulvenwald Captive and then, before the transform ability resolved but was still on the stack, Cult of the Waxing Moon triggered several times.
Not sure if this is already a known issue, but CPU had Cult of the Waxing Moon and Ulvenwald Captive, paid to transform the Ulvenwald Captive and then, before the transform ability resolved but was still on the stack, Cult of the Waxing Moon triggered several times.
Re: Bug Reports (snapshot builds)
by fmartel » 18 Aug 2016, 14:07
Description: [In commander, AI cast Kiki-Jiki, Mirror Breaker and tries to copy Reckless Brute]
- NullPointerException | Open
- Code: Select all
Forge Version: 1.5.56-SNAPSHOT-r32009
Operating System: Windows 7 6.1 amd64
Java Version: 1.7.0_25 Oracle Corporation
java.lang.NullPointerException
at forge.game.ability.effects.ChangeZoneEffect.changeZonePlayerInvariant(ChangeZoneEffect.java:1073)
at forge.game.ability.effects.ChangeZoneEffect.changeHiddenOriginResolve(ChangeZoneEffect.java:670)
at forge.game.ability.effects.ChangeZoneEffect.resolve(ChangeZoneEffect.java:349)
at forge.game.spellability.AbilitySub.resolve(AbilitySub.java:119)
at forge.game.ability.AbilityUtils.resolveApiAbility(AbilityUtils.java:1290)
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.ai.ComputerUtil.playNoStack(ComputerUtil.java:279)
at forge.ai.PlayerControllerAi.playSpellAbilityNoStack(PlayerControllerAi.java:314)
at forge.game.replacement.ReplacementHandler.executeReplacement(ReplacementHandler.java:246)
at forge.game.replacement.ReplacementHandler.run(ReplacementHandler.java:134)
at forge.game.replacement.ReplacementHandler.run(ReplacementHandler.java:75)
at forge.game.GameAction.changeZone(GameAction.java:222)
at forge.game.GameAction.moveTo(GameAction.java:472)
at forge.game.GameAction.moveTo(GameAction.java:453)
at forge.game.GameAction.moveToPlay(GameAction.java:562)
at forge.game.ability.effects.CopyPermanentEffect.resolve(CopyPermanentEffect.java:233)
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:521)
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:976)
at forge.game.GameAction.startGame(GameAction.java:1464)
at forge.game.Match.startGame(Match.java:95)
at forge.match.HostedMatch$2.run(HostedMatch.java:220)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
- 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 fmartel » 19 Aug 2016, 17:33
Description: [after having lost to AI, game continued. AI3 attacked AI2. Game Crashed at AI3 M2 turn]
- OutOfMemoryError | Open
- Code: Select all
Forge Version: 1.5.56-SNAPSHOT-r32009
Operating System: Windows 7 6.1 amd64
Java Version: 1.7.0_25 Oracle Corporation
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.Arrays.copyOfRange(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at java.lang.StringBuilder.toString(Unknown Source)
at forge.game.card.Card.getAbilityText(Card.java:1719)
at forge.game.card.CardView$CardStateView.updateAbilityText(CardView.java:1005)
at forge.game.card.CardView$CardStateView.updateKeywords(CardView.java:1016)
at forge.game.card.CardView.updateState(CardView.java:704)
at forge.game.card.Card.updateStateForView(Card.java:432)
at forge.game.staticability.StaticAbilityContinuous.applyContinuousAbility(StaticAbilityContinuous.java:632)
at forge.game.staticability.StaticAbilityContinuous.applyContinuousAbility(StaticAbilityContinuous.java:81)
at forge.game.staticability.StaticAbility.applyContinuousAbility(StaticAbility.java:222)
at forge.game.GameAction.checkStaticAbilities(GameAction.java:690)
at forge.game.GameAction.checkStaticAbilities(GameAction.java:633)
at forge.game.GameAction.checkStateEffects(GameAction.java:872)
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:903)
at forge.game.GameAction.startGame(GameAction.java:1464)
at forge.game.Match.startGame(Match.java:95)
at forge.match.HostedMatch$2.run(HostedMatch.java:220)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
- fmartel
- Posts: 281
- Joined: 31 Dec 2013, 19:27
- Location: Québec City
- Has thanked: 8 times
- Been thanked: 4 times
Who is online
Users browsing this forum: No registered users and 57 guests