think about it practically.
If my health is 30/100
30 * 0.1 = 3
I just set my health to 3.
Next tick it does
3 * 0.1 = 0.3
I just set my health to 0.3
What you need to do is ADD.
ply:SetHealth( ply:Health() + ply:Health() * 0.1 )
This will do:
30 + 30*0.1 or 30 + 3
Setting my health to 33 the first tick.
You might want to clamp it at the max health though.
Try This:
ply:SetHealth( math.Clamp( ply:Health() + ply:Health() * 0.1, 0, ply:GetMaxHealth() ) )
Also, keep in mind that there are usually anywhere from 33 to 100 ticks per second. If you increase the health by 0.1 per tick they are going to go to 100% VERY fast. You might want to make that number smaller.
Also, instead of increasing the health by a exponent of their current health, why not just have it go up a set amount every tick?
ply:SetHealth( math.Clamp( ply:Health() + 0.1, 0, ply:GetMaxHealth() ) )
Think about how long this effect lasts.