Thanks! Yes, I wasn't able to finish a few things (logic for when the player's health reaches 0, particles for hits and enemy destruction, respawning, a score display, occlusion checks for the AI so they're not always aiming at your and shooting when you enter their visibility triggers :P).
Haha, yes, the shots are horrendous. I saved the sound manager code until the day of submissions and it certainly shows. I saw the post about gating in the docs, but wasn't able to properly implement it before submission time. Oh well!
astrochili's Kinematic Walker and Operator extensions were extremely helpful for this :)