I know there are a few things I glossed over, but I'd love to know anything that I actually got wrong!
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.