Maybe I'm missing something obvious here? For some reason, "Humanoid.Health" isn't updating, and "Humanoid.HealthChanged" only fires when the Humanoid dies. The script is located withing the GUI I'm using (for healthbar) which is inside the Dummies head. Same script works fine for my player HP bar.
local Hum = script.Parent.Parent.Parent.Humanoid
local NameVal = script.Parent.NameLab
local HPVal = script.Parent.HealthBar.Back.HPLab
local Bar = script.Parent.HealthBar.Bar
HPVal.Text = Hum.Health .. "/" .. Hum.MaxHealth
Hum.Changed:Connect(function()
print(Hum.Health)
wait(2)
end)
Hum.HealthChanged:Connect(function(health)
HPVal.Text = Hum.Health .. "/" .. Hum.MaxHealth
Bar.Size = UDim2.new(Hum.Health/Hum.MaxHealth,0,2,0)
end)
The Hum.Health output never changes from 100, until the Humanoid dies.

5 comments
if the health of the humanoid is being changed through a LocalScript then that could be the problem
try using a normal script if your using a LocalScript
No!! This script doesn't can be a ServerScript! It's just possible to make a health bar with LocalScript (or ClientScript).
Honestly, a loop can update it. like so: while wait(1) do print(Hum.Health) end
Arsubia12 fixed my problem. It was because the thing I was testing with used a local script to damage.