One small thought on the AI:
Rather than have the AI check every 0.5s for a better target, would it be possible to either make a longer interval (in the 2-10s range) or else a small CHANCE (around 25%) to change targets every half-second? That way, the AI would be less predicatable, yet would tend to follow through with what it started. If it's "after you", that way it might keep chasing for a while until it appears that something else distracted it. When it's constantly and predictably shifting targets, everything close to it gets shot up at around the same rate.
Thanks for all of the time, effort, and enthusiasm that you've been putting into this project.