I think I have most of the major outstanding issues fixed now. I also had some spare time while waiting for feedback on the previous build so I took care of a few less-important but still-worthwhile issues that turned out to be easy to fix.
Downloads:
Testing Executable and Symbols
Game Assets (no changes since 2011-05-19)
What's new:
* The strategic AI prints error messages instead of exiting silently
- This should help track down the mysterious shutdown in Soviet mission 1
* Set default SeismicWave parameters to emulate "classic" behavior
- This also means units get flipped underground again

- Future adjustments can be done in seismic.odf instead of code
* Attempted to fix the blank escape and post-mission screens on Vista 64
- The game forces Windows to redraw the window contents after a mode switch
* Attempted to fix the cases where players wouldn't appear in the player list
* Added an in-game measurement of average packet loss
- This uses the ping packets sent to measure delay and synchronize clocks
* Enhanced the auto-kick mechanism
- autoKickStart: how long after join to start checking (default 10000ms)
- autoKickPing: how high an average ping to allow (default 1000ms)
- autoKickLoss: how high an average loss to allow (default 50%)
- autoKickTime: how long to allow high ping before kicking (default 10000ms)
. NOTE: this may seem high but ping and loss values update relatively slowly
* Added system messages for auto-kick events
- When a player starts lagging: "<name> is lagging" (multi_message/start_lagging)
- When a player stops lagging: "<name> stopped lagging" (multi_message/stop_lagging)
- When the host auto-kicks a player: "Auto-kicked <name>" (multi_message/autokick)
. Only the host sees this; everyone else sees the standard "Host kicked player <name>"
* Updated the CD audio system
- Reliably plays music from a virtual CD regardless of drive order
- Uses the audio mixer so music volume works on modern systems
- TO DO: stop CD playback at zero volume
* Updated the network debugging display (Alt+N)
- Draw it as part of RenderHUD so it works with hardware rendering
- Moved it just above the status display on the HUD
- Included stats for reliable messages
- What everything means:
. BW: current bandwidth in bytes and bits per second
. RX(U): received unreliable data
. RX(R): received reliable data
. TX(U): transmitted unreliable data
. TX(R): transmitted reliable data
. total: total bytes of data reported by Anet
. bps: bits per second measured over the last second
. avg: bits per second measured over the entire game
. msgs: total number of messages reported by Anet
. mps: messages per second measured over the last second
. avg: messages per second measured over the entire game
. drop: dropped packets
* Fixed BettyVoice notifications occasionally stopping and never resuming
- This would happen when it couldn't play the VO sound
* Defer chat messages when they can't be sent
- This prevents the "<error> Send buffer full, message not sent."
- The message will instead appear after a (presumably short) delay
- NOTE: exiting a shell page cancels any deferred messages
* UpdateWeapon now uses the proper bullet speed and lifetime when checking for hits
- This resolves an occasional divide-by-zero error in IntersectGameObject
* DoStuck skips dynamic objects when checking for potential blockers
- It uses IntersectGameObject in a way that doesn't work for moving objects
- This also prevents it from being blocked by things like powerups
