While everything you say is valid, it is insane to me that they didn’t long ago, (and still won’t), solve all purge/surge problems with one simple and trivial IF statement in the code.

if(current_target.owner != purge_surge.owner) continue;