Ldcs8T4EAnj8h5ZMD8rf wrote:r32704: Achievement Bug
So I won a game of BFZ Sealed through
Felidar Sovereign's alternate win condition and got the Mythic Hellbent Achievement. You can see behind the Player Won overlay in the screenshot that the AI has cards on the field and the player does not. Obviously I had at least
Felidar Sovereign on the field as I won through its trigger.
Hmm, this is an unusual bug. Only seems to happen with certain alt. win condition cards too (
Felidar Sovereign,
Hedron Alignment, possibly something else), other stuff works fine (e.g.
Door to Nothingness). All the alt. win conditions are checked together in a way that's not really any different between e.g. the Door and the Sovereign. Can't quite understand why this is happening yet (except I have a rough idea that for some reason the check for those particular achievements happens after the game state is already partially changed and the winning player's zones are cleared, but why this is happening is a bit of a mystery for me yet, except unless it's some kind of a weird threading issue?...).
P.S. It looks like it *may* in fact be some kind of a threading issue (a race condition of some sort?) since sometimes when I get those alt. win condition achievements in my testing, the game would sometimes hang (lock up) completely while awarding the achievements to me, and at other times it would work fine.
P.P.S. If anyone good with this type of stuff would be willing to take a look, you'd need to disable the block of code at AchievementCollection.java:39-42 to make the game award achievements when using the dev mode.
EDIT 1: While I haven't yet been able to figure out why the game is registering some alt.win conditions as Hellbent (Mythic), I was able to pinpoint something interesting: removing the requirement to execute the achievement check in the game thread makes the game stop hanging on win for me. Was there a reason this was delegated to the game thread in the first place? :/ And should it stay that way or can we get rid of the game thread call to avoid locking up the game? (This seems to be related to the "locking up" part:
viewtopic.php?f=26&t=18982 )
- Agetian