Page 357 of 487

Re: Bug Reports (snapshot builds)

PostPosted: 24 Jul 2016, 13:52
by Agetian
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

Re: Bug Reports (snapshot builds)

PostPosted: 24 Jul 2016, 14:10
by Hanmac
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)

Re: Bug Reports (snapshot builds)

PostPosted: 24 Jul 2016, 14:18
by Agetian
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

Re: Bug Reports (snapshot builds)

PostPosted: 24 Jul 2016, 14:55
by Agetian
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

Re: Bug Reports (snapshot builds)

PostPosted: 24 Jul 2016, 16:32
by tjtillman
r31675

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

Re: Bug Reports (snapshot builds)

PostPosted: 24 Jul 2016, 16:44
by Agetian
tjtillman wrote:r31675

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

- Agetian

Re: Bug Reports (snapshot builds)

PostPosted: 24 Jul 2016, 16:53
by Hanmac
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?)

Re: Bug Reports (snapshot builds)

PostPosted: 24 Jul 2016, 18:46
by friarsol
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?

Re: Bug Reports (snapshot builds)

PostPosted: 24 Jul 2016, 18:52
by Hanmac
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

Re: Bug Reports (snapshot builds)

PostPosted: 24 Jul 2016, 19:15
by friarsol
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.

Re: Bug Reports (snapshot builds)

PostPosted: 24 Jul 2016, 19:29
by Hanmac
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.

Re: Bug Reports (snapshot builds)

PostPosted: 25 Jul 2016, 05:36
by tjtillman
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

Re: Bug Reports (snapshot builds)

PostPosted: 25 Jul 2016, 15:24
by Agetian
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

Re: Bug Reports (snapshot builds)

PostPosted: 25 Jul 2016, 16:49
by fmartel
I found r31699 rather impossible to play... the java process keeps getting at 75+ % The game is constantly waiting for opponent...

Re: Bug Reports (snapshot builds)

PostPosted: 25 Jul 2016, 18:14
by fmartel
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)