Hmm.. I had a feeling you're wrong about half damage from combat exhaustion but as it turns out there's a bug in the code.Protect will stop damage from its target, though.
Otherwise, it's actually quite well written.
Thank you! I'll fix the bit about Protect, good to know - I haven't used it enough in play to have noticed.