You're getting some good advice & suggestions, Ferry... I promised I would provide a metascript example, so maybe this can fold in with another suggestion (metascript constructions can work in the command lines of other scripts... keep reading, you'll see how). To do this, I'll use Muler and ZeroFrame.
Step 1: Construct Mule
Muler uses abilities (called "Mules") on source characters to provide a static table that can be accessed for specific row. In your situation, you're asking for 4 entries. I'm going to create a Mule called "TipStatus" on a character called "MuleBoy", and make the entries like this:
>=100=Full Health
51-99=Wounded
>0=Bloodied
<=0=Unconscious
...which might read a little easier if I clean up the spacing (note, don't enter it as I'm about to show; enter it as above, with no extra spaces at the start or around the = sign)...
>=100 = Full Health
51-99 = Wounded
>0 = Bloodied
<=0 = Unconscious
Save that Mule (ability), and make sure that anyone who will need to access that table of information has explicit rights to the character (there's a bug currently with granting rights to "All Players").
Step 2: Usage
We're going to use the percentage of the current HP against the table (Mule) you just created. To get the percentage of HP, you're basically going to divide the current HP over the max and convert it to a percentage. There are different ways to go about it, using token bars or character attributes. I'm going to use token bars since you might want to do this for mooks:
[[floor(@{selected|bar1} * 100/@{selected|bar1|max})]]
That will compute correctly if you have numeric values in both current and max for bar1.
As that roll sits in the command line, it will be represented by a roll marker... something like $[[0]]. We need to replace that with the value of the roll. We do that with a ZeroFrame construction, appending .value to the end of the last closing bracket:
[[floor(@{selected|bar1} * 100/@{selected|bar1|max})]].value
In the command line, all of that will parse down to the actual percentage of HP... something like 78. So we use that against the Mule to retrieve the appropriate value:
get.MuleBoy.TipStatus.[[floor(@{selected|bar1} * 100/@{selected|bar1|max})]].value/get
In the same way that the roll parses out to the HP percentage, all of the above will parse out to the returned text from the Mule. The above example can be put into any script's command line (with a few exceptions) to have the value "pre-retrieved" before the main script receives the message... except that we also need one more thing in the line. We need to instruct Muler to load the appropriate Mule to make the rows (variables) available:
{&mule MuleBoy.TipStatus}
That needs to go somewhere in the command line where you will want to use the get statement.
Finished Example Using Token-Mod
Using the above 2 constructions in a token-mod command line (to have it set the token-tip) might look like this:
!token-mod --on show_tooltip --set tooltip|"get.MuleBoy.TipStatus.[[floor(@{selected|bar1} * 100/@{selected|bar1|max})]].value/get"{&mule MuleBoy.TipStatus}

The caveat to this (and a few other suggestions you've received) is that this isn't automatically triggered just because the token received damage. You have to run it manually. But the benefit to this method is that you have a single macro that can be used for any token. Also, if you want to change the text or the breakpoints you don't have to change code... you just have to alter your Mule (table). Want a "Lightly Wounded" entry for 75% or better? Add a new line and your macro will automatically take it into account.
(Oh, and if you wanted to extend this to do multiple tokens at once, you could use SelectManager's forselected handle and replace the normal Roll20 constructions like @{selected|bar1} with deferred Fetch constructions... but now we're just getting jiggy in the metasauce kitchen.)