I would assume (based on my experience with Python, which GDScript is similar to) that the first example does not work because the order of execution is different. In that example, when "take_damage(amount)" is called, "amount" is first subtracted from "health", then it checks if health is lower than 0, then it checks the level and changes the "amount" after the original "amount" has already been subtracted. I hope that makes sense.