At least for me, I would like to know a little more about the problem. To clarify, are you saying that when you start the program, hp is at 3? And then as he gets hit, the debugging that you have inserted into the program shows that hp is going down each time he gets hit? But when hp reaches one, it stays at one and printing out 1, no matter how many times he gets hit?
Also, I would love to hear more about your Master's thesis. This sounds really cool!