I won't look at pictures of code (i prefer them as a code-formatted text block in the question), but if it is true when you said that "There are no other lines of code in the project that change an instance's HP other than Area's constructor", then the only conclusion is:
The Area
instance's HP
has not been reset. Obviously that must be the case if we believe your aforementioned claim to be true, unless we start believing in magic or in your computer being an evil entity intend on sabotaging your efforts.
Rather, i suspect, for some reason or another, that when you try obtaining/inspecting the HP
value, you use another (freshly) created Area
instance whose Hurt
method you did not call. In other words, there are at least two Area
instances alive in your program, one whose Hurt
method has been called, and one whose (unaltered) HP
values is obtained from. That's the issue you need to locate and fix. (Again, assuming your claims in your question hold true.)