Changelog
- fix(metaevent): Ignore order in which modifier keys are released to trigger meta events (TheSuperHackers#2577)
- unify(message): Merge MessageStream, MetaEvent code (TheSuperHackers#2756)
- bugfix(water): Fix river visuals in black shroud (TheSuperHackers#2749)
- fix(memory): Fix audio event related memory leaks when pausing the game (TheSuperHackers#2731)
- fix(particlesys): Simplify ParticleSystemManagerDummy setup (TheSuperHackers#2740)
- fix(particlesys): Decouple particle systems from logic crc (TheSuperHackers#2742)
- bugfix(gameengine): Fix logic in GameEngine::canUpdateRegularGameLogic() (TheSuperHackers#2707)
- fix(recorder): Fix memory leak of RecorderClass::m_crcInfo (TheSuperHackers#2713)
- bugfix(aigroup): Prevent game crash when a player is selected in Replay playback (2) (TheSuperHackers#2711)
- perf(network): Replace extern global network variables with const ones (TheSuperHackers#2726)
- refactor(network): Use switch cases in utility functions for network commands (TheSuperHackers#2725)
- fix(particlesys): Add or simplify null-checks to createParticleSystem calls (TheSuperHackers#2724)
- fix(network): Verify accepted type of incoming game messages (TheSuperHackers#2708)
- bugfix(physics): Prevent building crash damage from dealing damage to other objects (TheSuperHackers#2723)
- bugfix(physics): Prevent dead units from repeatedly dealing crash damage on collision with non-buildings (TheSuperHackers#2204)
- fix(gameengine): Remove music tracks as prerequisite to initialize the game engine (TheSuperHackers#2737)
- bugfix: Restore retail compatibility after retail behavior flags change (TheSuperHackers#2727)
- refactor(netpacket): Simplify NetPacket functions for packet buffer reads (TheSuperHackers#2463)
- fix(object): Prevent crash if Object::m_drawable is a nullptr on save load (TheSuperHackers#2712)
- unify(ww3d2): Move dx8fvf, dx8indexbuffer, dx8vertexbuffer to Core (TheSuperHackers#2706)