more semantic code and fix bug crash if health is less than damage