Fixes health calculation system.

Fully fixes #96  
Closes #100  
Old system was a mess and horribly broken. This new system is much cleaner.
Also note: I left in debugging just so you can see @50Wliu 
Dividing by negatives should be fine.  That can be handled later on with the `health<=0` check.  The only thing needed here is the divide by 0 check, since that will throw an error immediately.
Again, I support leaving the old stuff in and getting rid of the error (no comments either).