Holy fucking shit.
I've spent a good couple of hours now browsing the code. The vast, vast majority of the game logic exists in one class, the disassembly of which is almost 16,000 lines long! To put this is to context for non-programmers, I consider a class to start getting unwieldy to maintain when it's over 2000 lines.
Tracking the game state changes is incredibly painful, because it's all in one gigantic IF statement. It's not that they've even built a state matrix, like a parser generator might. It's just IF we're in this state, AND this thing happens, GO TO this state. It's madness.