magefree / mage

Magic Another Game Engine
http://xmage.today
MIT License
1.81k stars 750 forks source link

Feedback XMage Version 1.4.42 (February 2020) #6291

Open JayDi85 opened 4 years ago

JayDi85 commented 4 years ago

For previous bugs in 1.4.42 (January 2020) see #6169

CARDS

v3 on 15.02.2020

v4 on 21.02.2020

v5 on 04.03.2020

OTHER

v3 on 15.02.2020

v4 on 21.02.2020

v5 on 04.03.2020

CCTV-1 commented 4 years ago

V5

looks any will create Food token cards(did not really test everyone card)resolve:

java.lang.NullPointerException
        at mage.player.ai.ma.ArtificialScoringSystem.getCardDefinitionScore(ArtificialScoringSystem.java:46)
        at mage.player.ai.ma.ArtificialScoringSystem.getFixedPermanentScore(ArtificialScoringSystem.java:52)
        at mage.player.ai.GameStateEvaluator2.evaluatePermanent(GameStateEvaluator2.java:104)
        at mage.player.ai.ComputerPlayer6.printOutState(ComputerPlayer6.java:143)
        at mage.player.ai.ComputerPlayer6.printOutState(ComputerPlayer6.java:107)
        at mage.player.ai.ComputerPlayer7.priorityPlay(ComputerPlayer7.java:58)
        at mage.player.ai.ComputerPlayer7.priority(ComputerPlayer7.java:37)
        at mage.game.GameImpl.playPriority(GameImpl.java:1292)
        at mage.game.turn.Step.priority(Step.java:61)
        at mage.game.turn.Phase.playStep(Phase.java:184)
        at mage.game.turn.Phase.play(Phase.java:89)
        at mage.game.turn.Turn.play(Turn.java:126)
        at mage.game.GameImpl.playTurn(GameImpl.java:889)
        at mage.game.GameImpl.play(GameImpl.java:798)
        at mage.game.GameImpl.start(GameImpl.java:762)
        at mage.server.game.GameWorker.call(GameWorker.java:34)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

then:

mage.MageException: Iterated player priority after game exception too often, game ends!
        at mage.game.GameImpl.playPriority(GameImpl.java:1336)
        at mage.game.turn.Step.priority(Step.java:61)
        at mage.game.turn.Phase.playStep(Phase.java:184)
        at mage.game.turn.Phase.play(Phase.java:89)
        at mage.game.turn.Turn.play(Turn.java:126)
        at mage.game.GameImpl.playTurn(GameImpl.java:889)
        at mage.game.GameImpl.play(GameImpl.java:798)
        at mage.game.GameImpl.start(GameImpl.java:762)
        at mage.server.game.GameWorker.call(GameWorker.java:34)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

only test in local bot game.

JayDi85 commented 4 years ago

@CCTV-1 that rollback error with mana cards fixed in #6300 (ArtificialScoringSystem error)

CCTV-1 commented 4 years ago

V5

Dreadful Apathy and Flicker of Fate interact incorrectly

example log:

下午9:28: CCTV casts Dreadful Apathy [56e] targeting Riptide Turtle [121] 
下午9:28: CCTV puts Dreadful Apathy [56e] from stack onto the Battlefield
下午9:28: CCTV attacks with 0 creatures
下午9:28: Turn 15 computer (20 - 20)
下午9:28: computer draws a card
下午9:28: computer casts Vantress Gargoyle [e00]
下午9:28: computer puts Vantress Gargoyle [e00] from stack onto the Battlefield
下午9:28: computer attacks with 0 creatures
下午9:28: Turn 16 CCTV (20 - 20)
下午9:28: CCTV draws a card
下午9:28: CCTV puts Plains [b04] from hand onto the Battlefield
下午9:28: CCTV plays Plains [b04]
下午9:28: CCTV activates: Exile enchanted creature. from Dreadful Apathy [56e]
下午9:28: CCTV casts Flicker of Fate [df3] targeting Dreadful Apathy [56e] 
下午9:28: CCTV moves Dreadful Apathy [56e] from battlefield to the exile zone
下午9:28: CCTV puts Flicker of Fate [df3] from stack into their graveyard
下午9:28: CCTV moves Wall of Runes [c9e] from battlefield to the exile zone
下午9:28: Dreadful Apathy [56e] is put into graveyard from battlefield

the correct behavior is moves Riptide Turtle [121] from battlefield to the exile zone

NOTES AND RULES INFORMATION FOR DREADFUL APATHY: If Dreadful Apathy leaves the battlefield while its last ability is on the stack, the permanent that’s exiled is the one Dreadful Apathy enchanted before leaving the battlefield, even if that permanent is no longer a creature.