It is currently 29 Apr 2024, 04:33
   
Text Size

Bug Reports (snapshot builds)

Post MTG Forge Related Programming Questions Here

Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins

Re: Bug Reports (snapshot builds)

Postby Agetian » 24 Jul 2016, 13:52

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.
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?

- Agetian
Agetian
Programmer
 
Posts: 3472
Joined: 14 Mar 2011, 05:58
Has thanked: 677 times
Been thanked: 561 times

Re: Bug Reports (snapshot builds)

Postby 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)
Hanmac
 
Posts: 954
Joined: 06 May 2013, 18:44
Has thanked: 229 times
Been thanked: 158 times

Re: Bug Reports (snapshot builds)

Postby 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
Programmer
 
Posts: 3472
Joined: 14 Mar 2011, 05:58
Has thanked: 677 times
Been thanked: 561 times

Re: Bug Reports (snapshot builds)

Postby 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.

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)
EDIT: I narrowed the culprit down to r31664. Unfortunately, I couldn't find a way to reliably tweak the changed version of the code in such a way as to make CharmAi remain cleaned up and not crash as described above, so I had to revert that commit... Please feel free to revert my commit and resubmit the change in a tweaked (non-crashing way).

- Agetian
Agetian
Programmer
 
Posts: 3472
Joined: 14 Mar 2011, 05:58
Has thanked: 677 times
Been thanked: 561 times

Re: Bug Reports (snapshot builds)

Postby tjtillman » 24 Jul 2016, 16:32

r31675

Assembled Alphas didn't deal damage to the controller of the creature it blocked/that blocked it.
tjtillman
 
Posts: 202
Joined: 16 Sep 2013, 17:47
Has thanked: 0 time
Been thanked: 2 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 24 Jul 2016, 16:44

tjtillman wrote:r31675

Assembled Alphas didn't deal damage to the controller of the creature it blocked/that blocked it.
Fixed (r31690).

- Agetian
Agetian
Programmer
 
Posts: 3472
Joined: 14 Mar 2011, 05:58
Has thanked: 677 times
Been thanked: 561 times

Re: Bug Reports (snapshot builds)

Postby 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?)
Hanmac
 
Posts: 954
Joined: 06 May 2013, 18:44
Has thanked: 229 times
Been thanked: 158 times

Re: Bug Reports (snapshot builds)

Postby friarsol » 24 Jul 2016, 18:46

Hanmac wrote:Using Identity Thief on a Melded card, does result in only the return of the original card, not the Melded into one.
\
I tested Meld with Oblivion Ring and it was working fine. What does Identity Thief do different?
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Bug Reports (snapshot builds)

Postby Hanmac » 24 Jul 2016, 18:52

friarsol wrote:
Hanmac wrote:Using Identity Thief on a Melded card, does result in only the return of the original card, not the Melded into one.
\
I tested Meld with Oblivion Ring and it was working fine. What does Identity Thief do different?
might not be a big thing, but Identity Thief uses Imprinted instead of Remembered for DelayedTrigger, and then DelayTriggerRemembered.
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
Hanmac
 
Posts: 954
Joined: 06 May 2013, 18:44
Has thanked: 229 times
Been thanked: 158 times

Re: Bug Reports (snapshot builds)

Postby 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)

Postby 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.
Hanmac
 
Posts: 954
Joined: 06 May 2013, 18:44
Has thanked: 229 times
Been thanked: 158 times

Re: Bug Reports (snapshot builds)

Postby 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
tjtillman
 
Posts: 202
Joined: 16 Sep 2013, 17:47
Has thanked: 0 time
Been thanked: 2 times

Re: Bug Reports (snapshot builds)

Postby 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
Programmer
 
Posts: 3472
Joined: 14 Mar 2011, 05:58
Has thanked: 677 times
Been thanked: 561 times

Re: Bug Reports (snapshot builds)

Postby 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)

Postby 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

PreviousNext

Return to Developer's Corner

Who is online

Users browsing this forum: No registered users and 112 guests


Who is online

In total there are 112 users online :: 0 registered, 0 hidden and 112 guests (based on users active over the past 10 minutes)
Most users ever online was 4143 on 23 Jan 2024, 08:21

Users browsing this forum: No registered users and 112 guests

Login Form