The progress bar should work like a normal progress bar but for some reason the gradient is all over the place.
it should look something like this when the progress is increasing:

but for some reason it looks more like this:

video example of whats happening (in the video you can tell its increasing but its all janky):
the event fires from a module, heres the snippet:
for _, plr in genRepairState.repairingPlayers do
signalProgressBar:FireClient(plr, genRepairState.repairProgress / 100, true)
end
and this is where the bar updates
local TweenService = game:GetService("TweenService")
local event = game.ReplicatedStorage:WaitForChild("RemoteEvents"):WaitForChild("GuiEvents"):WaitForChild("SignalProgressBar")
local ScreenGui = script.Parent local progressBar = ScreenGui:WaitForChild("Base"):WaitForChild("ImageLabel"):WaitForChild("ProgressBar")
local gradient = progressBar:WaitForChild("UIGradient")
local LastTarget = 0
local lerp = function(a, b, t)
return a + (b - a) * t
end
event.OnClientEvent:Connect(function(alpha, show)
local Target = lerp(0, 1, alpha)
local proxy = Instance.new("NumberValue")
proxy.Value = LastTarget
proxy:GetPropertyChangedSignal("Value"):Connect(function()
local t = proxy.Value
local sequence
if Target > 0 and Target < 1 then
sequence = NumberSequence.new{
NumberSequenceKeypoint.new(0, 0),
NumberSequenceKeypoint.new(t, 0),
NumberSequenceKeypoint.new(t + 0.00001, 1),
NumberSequenceKeypoint.new(1, 1) }
else sequence = NumberSequence.new{ NumberSequenceKeypoint.new(0, 0),
NumberSequenceKeypoint.new(0 + 0.00001, 1),
NumberSequenceKeypoint.new(1, 1) }
end
gradient.Transparency = sequence
end)
if show then
proxy.Value = Target
else
TweenService:Create(proxy, TweenInfo.new(0.2), {Value = Target}):Play()
end
LastTarget = Target
if show ~= nil then
ScreenGui.Enabled = show
end
end)