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 Agetian » 24 Jul 2016, 13:52
I tried looking at different variants of ConditionPresent but couldn't find the one that would define the presence of a target card on the battlefield. What would you put as a condition here?Hanmac wrote:@Agetian: that sounds like an good way to fix it.
My way would be to add an ConditionPresent to just Permeating Mass and leave Clone alone for now.
- Agetian
- Agetian
- Programmer
- Posts: 3472
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 561 times
Re: Bug Reports (snapshot builds)
by Hanmac » 24 Jul 2016, 14:10
like what i did with "put a +1/+1 counter on CARDNAME" (which might not be needed anymore because i reverted the cause of it.)
something like
"ConditionDefined$ TriggeredTarget | ConditionPresent$ Card"
should work
the only problem is when the creature dies and returns before it does trigger ... (yeah i think about the corner cases)
i did something like "StrictlySelf" which does check for Timestamp, might need to be done in a generic way for this too?
might need some more coding with new stuff in Card.hasProperty, but i think thats the general idea.
(i am currently thinking about "Card.TriggeredTarget" and "Card.StrictlyTriggeredTarget" or something like that)
(looking again your change in CloneEffect might be turn out the easier one of the two ways xD)
something like
"ConditionDefined$ TriggeredTarget | ConditionPresent$ Card"
should work
the only problem is when the creature dies and returns before it does trigger ... (yeah i think about the corner cases)
i did something like "StrictlySelf" which does check for Timestamp, might need to be done in a generic way for this too?
might need some more coding with new stuff in Card.hasProperty, but i think thats the general idea.
(i am currently thinking about "Card.TriggeredTarget" and "Card.StrictlyTriggeredTarget" or something like that)
(looking again your change in CloneEffect might be turn out the easier one of the two ways xD)
Re: Bug Reports (snapshot builds)
by Agetian » 24 Jul 2016, 14:18
I committed a quick hotfix for it which adds a parameter CloneZone to CloneEffect which restricts the zone in which the said clone effect can trigger (in case of Permeating Mass I set this to Battlefield). This seems to do the job for now without affecting everything else. However, a more generic and universal solution is indeed welcome in case you'll be willing to add the relevant code! Thanks again for advice!
- Agetian
- Agetian
- Agetian
- Programmer
- Posts: 3472
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 561 times
Re: Bug Reports (snapshot builds)
by Agetian » 24 Jul 2016, 14:55
r31687: The AI cast Deceiver Exarch and a fatal NPE resulted in CharmEffect.chainAbilities:97. This, by the way, happens every time the AI casts this spell.
- Agetian
- NullPointerException | Open
- Code: Select all
Forge Version: SVN
Operating System: Linux 4.4.0-31-generic amd64
Java Version: 1.8.0_91 Oracle Corporation
java.lang.NullPointerException
at java.util.Collections.sort(Collections.java:175)
at forge.game.ability.effects.CharmEffect.chainAbilities(CharmEffect.java:97)
at forge.game.ability.effects.CharmEffect.makeChoices(CharmEffect.java:87)
at forge.game.trigger.TriggerHandler.runSingleTrigger(TriggerHandler.java:531)
at forge.game.trigger.TriggerHandler.runNonStaticTriggersForPlayer(TriggerHandler.java:366)
at forge.game.trigger.TriggerHandler.runWaitingTrigger(TriggerHandler.java:330)
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:569)
at forge.game.zone.MagicStack.resolveStack(MagicStack.java:518)
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:974)
at forge.game.GameAction.startGame(GameAction.java:1499)
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)
- Agetian
- Agetian
- Programmer
- Posts: 3472
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 561 times
Re: Bug Reports (snapshot builds)
by tjtillman » 24 Jul 2016, 16:32
r31675
Assembled Alphas didn't deal damage to the controller of the creature it blocked/that blocked it.
Assembled Alphas didn't deal damage to the controller of the creature it blocked/that blocked it.
Re: Bug Reports (snapshot builds)
by Agetian » 24 Jul 2016, 16:44
Fixed (r31690).tjtillman wrote:r31675
Assembled Alphas didn't deal damage to the controller of the creature it blocked/that blocked it.
- Agetian
- Agetian
- Programmer
- Posts: 3472
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 561 times
Re: Bug Reports (snapshot builds)
by Hanmac » 24 Jul 2016, 16:53
Using Identity Thief on a Melded card, does result in only the return of the original card, not the Melded into one.
i think the problem can be narrowed that it need to remember the other one too.
I think the best way for that would be if GameAction.changeZone does return a List<Card> or a CardCollection.
that open up other problems for cards like Mimic Vat (it should only imprint one card, probably let you choose one).
i already did a bit cleanup with moving Undying & Persist out of the way into a Trigger.
(to get them working with Undying & Persist, TriggerChangesZone probably need to check for Meld too)
===
But i don't want to touch that yet and want to add a class for CostAdjustment (i do a new class, because i can not integrate the other stuff into it)
Other developers might port the other RaiseCost and ReduceCost & SetCost stuff into it later.
Instead of using ManaCostPaid in ManaCostAdjustment, i try to link into CostPayment (or directly extending that one?)
i think the problem can be narrowed that it need to remember the other one too.
I think the best way for that would be if GameAction.changeZone does return a List<Card> or a CardCollection.
that open up other problems for cards like Mimic Vat (it should only imprint one card, probably let you choose one).
i already did a bit cleanup with moving Undying & Persist out of the way into a Trigger.
(to get them working with Undying & Persist, TriggerChangesZone probably need to check for Meld too)
===
But i don't want to touch that yet and want to add a class for CostAdjustment (i do a new class, because i can not integrate the other stuff into it)
Other developers might port the other RaiseCost and ReduceCost & SetCost stuff into it later.
Instead of using ManaCostPaid in ManaCostAdjustment, i try to link into CostPayment (or directly extending that one?)
Re: Bug Reports (snapshot builds)
by friarsol » 24 Jul 2016, 18:46
I tested Meld with Oblivion Ring and it was working fine. What does Identity Thief do different?Hanmac wrote:Using Identity Thief on a Melded card, does result in only the return of the original card, not the Melded into one.
\
- 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 » 24 Jul 2016, 18:52
might not be a big thing, but Identity Thief uses Imprinted instead of Remembered for DelayedTrigger, and then DelayTriggerRemembered.friarsol wrote:I tested Meld with Oblivion Ring and it was working fine. What does Identity Thief do different?Hanmac wrote:Using Identity Thief on a Melded card, does result in only the return of the original card, not the Melded into one.
\
maybe one of them does not work yet with more than one.
PS: i am currently working on the CostAdjustment, dont suspect wonders or hotfixes now ;P
Re: Bug Reports (snapshot builds)
by friarsol » 24 Jul 2016, 19:15
I added the same block for DelayTriggerRemembered that I did for Remembered. I think the problem is that LKI isn't storing the meldedWith, and since Identity Thief is storing that, it's not available.
- 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 » 24 Jul 2016, 19:29
Hm I think the problem might be when I do turn imprinted into Rembered for the DelTrig.
So you might need to add your block to Imprinted too. (Didn't you already do that? I am a bit confused)
The RememberLKI is only used to store into what the Thief should transform. And probably should not affect this.
So you might need to add your block to Imprinted too. (Didn't you already do that? I am a bit confused)
The RememberLKI is only used to store into what the Thief should transform. And probably should not affect this.
Re: Bug Reports (snapshot builds)
by tjtillman » 25 Jul 2016, 05:36
r31675
CPU used Rabid Bite targeting its Gnarlwood Dryad to deal damage to my Tree of Perdition. CPU also had Briarbridge Patrol on the battlefield and after gnarlwood dryad dealt damage, it incorrectly triggeres the deal damage trigger on Briarbridge Patrol giving the CPU a clue
CPU used Rabid Bite targeting its Gnarlwood Dryad to deal damage to my Tree of Perdition. CPU also had Briarbridge Patrol on the battlefield and after gnarlwood dryad dealt damage, it incorrectly triggeres the deal damage trigger on Briarbridge Patrol giving the CPU a clue
Re: Bug Reports (snapshot builds)
by Agetian » 25 Jul 2016, 15:24
r31699: Here's a weird glitch that put the AI at a rather serious disadvantage, I think it may have something to do with the way mana payment option detection works for the AI (I may be wrong though): my opponent has Anafenza, the Foremost and Abzan Charm in its hand (as confirmed via a Duress) and it does NOT play either card despite having untapped Sunken Hollow, Canopy Vista and Shambling Vent in play for three consecutive turns (these are the only lands it had). Not sure if there was enough reason to play Abzan Charm at that moment but playing Anafenza sure seemed like a good option (I was whacking at the AI with my 2/2 tokens while the AI's battlefield was creatureless).
- Agetian
- Agetian
- Agetian
- Programmer
- Posts: 3472
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 561 times
Re: Bug Reports (snapshot builds)
by fmartel » 25 Jul 2016, 16:49
I found r31699 rather impossible to play... the java process keeps getting at 75+ % The game is constantly waiting for opponent...
- 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 » 25 Jul 2016, 18:14
Description: [In a commander game, Wayfaring Temple did combat damage, choose a card to Populate, waiting for game to process choice, crash occured]
- OutOfMemoryError | Open
- Code: Select all
Forge Version: 1.5.55-SNAPSHOT-r31699
Operating System: Windows 7 6.1 amd64
Java Version: 1.7.0_25 Oracle Corporation
java.lang.OutOfMemoryError: GC overhead limit exceeded
at com.mortennobel.imagescaling.ResampleOp.doFilter(ResampleOp.java:130)
at com.mortennobel.imagescaling.AdvancedResizeOp.filter(AdvancedResizeOp.java:81)
at forge.toolbox.imaging.FImagePanel.getResampledImage(FImagePanel.java:230)
at forge.toolbox.imaging.FImagePanel.doQualityPaint(FImagePanel.java:206)
at forge.toolbox.imaging.FImagePanel.paintComponent(FImagePanel.java:200)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JLayeredPane.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JLayeredPane.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager$3.run(Unknown Source)
at javax.swing.RepaintManager$3.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 112 guests