magefree / magefree/mage

Error with Shifting Woodland + Aftermath Analyst + Six

Open
#13,399 3 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Java
Stars
2.4k
Forks
940
Avg merge
2d 12h
Merged PRs (30d)
160

Description

[[Shifting Woodland]] copying [[Aftermath Analyst]] in the graveyard works fine, it sacrifices itself to activate the ability and put the ability on the stack, then when the ability resolves Woodland comes back into play along with the other lands in the graveyard.

But if you have [[Six]] in play (which has the ability to give Retrace to all nonland permanents in graveyard), it gives the below error immediately when you activate the ability, so the ability does not even go on the stack.

Maybe it could be because it tries to give Retrace to a "nonland" permanent (the Woodland), which might count as a nonland while activating the ability, but it's actually a land.
I'm looking at the code for the three cards, not sure if I'm able to figure this one out though, would appreciate help.

Error type: SERVER - game error

Client version: 1.4.56-V3 (build: runtime)
Java version: 1.8.0_442
Default charset: UTF-8

Game error occurred:

java.lang.NullPointerException
Server version: 1.4.56-V3 (build: runtime)
Stack trace:
mage.abilities.AbilityImpl.(AbilityImpl.java:108)
mage.abilities.ActivatedAbilityImpl.(ActivatedAbilityImpl.java:52)
mage.abilities.SpellAbility.(SpellAbility.java:53)
mage.abilities.keyword.RetraceAbility.(RetraceAbility.java:18)
mage.abilities.effects.common.continuous.GainRetraceYourGraveyardEffect.apply(GainRetraceYourGraveyardEffect.java:54)
mage.abilities.effects.ContinuousEffectImpl.apply(ContinuousEffectImpl.java:118)
mage.abilities.decorator.ConditionalContinuousEffect.apply(ConditionalContinuousEffect.java:100)
mage.abilities.effects.ContinuousEffects.apply(ContinuousEffects.java:1064)
mage.game.GameState.applyEffects(GameState.java:676)
mage.game.GameImpl.applyEffects(GameImpl.java:1942)
mage.game.GameImpl.playPriority(GameImpl.java:1722)
mage.game.turn.Step.priority(Step.java:73)
mage.game.turn.Phase.playStep(Phase.java:205)
mage.game.turn.Phase.play(Phase.java:91)
mage.game.turn.Turn.play(Turn.java:129)
mage.game.GameImpl.playTurn(GameImpl.java:1157)
mage.game.GameImpl.play(GameImpl.java:1064)
mage.game.GameImpl.start(GameImpl.java:1040)
mage.server.game.GameWorker.call(GameWorker.java:35)
mage.server.game.GameWorker.call(GameWorker.java:16)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:750)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with mage/abilities/effects/common/continuous/GainRetraceYourGraveyardEffect.java at line 54 and follow the stack into mage/abilities/keyword/RetraceAbility.java and the constructors shown. Reproduce the Shifting Woodland, Aftermath Analyst, and Six interaction, then verify the activation no longer throws a NullPointerException and the ability reaches the stack.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
game-dev
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.