Update Physical Pump Function in Lua

This Lua function updates the status of a physical pump, adjusting its sound and lights based on the pump's status (OFFLINE or DAMAGED). It uses tweening for smooth transitions in the UI elements representing the pump's status.
 avatar
unknown
lua
a month ago
3.4 kB
4
Indexable
function UpdatePhysicalPump(pump: Model, pumpStatus: string)
	local pumpSound = pump.Main.Loop
	
	if pumpStatus == "OFFLINE" then
		PuffyTween:Tween(pumpSound, pumpUpdateTweenInfo, {PlaybackSpeed = 0})
		
		local tween = PuffyTween:Tween(pump.Light1, pumpUpdateTweenInfo, {Color = Color3.fromRGB(17,17,17)})
		PuffyTween:Tween(pump.Light1.SurfaceLight, pumpUpdateTweenInfo, {Brightness = 0})
		
		PuffyTween:Tween(pump.Light2, pumpUpdateTweenInfo, {Color = Color3.fromRGB(17,17,17)})
		PuffyTween:Tween(pump.Light2.SurfaceLight, pumpUpdateTweenInfo, {Brightness = 0})
		
		PuffyTween:Tween(pump.Light3, pumpUpdateTweenInfo, {Color = Color3.fromRGB(17,17,17)})
		PuffyTween:Tween(pump.Light3.SurfaceLight, pumpUpdateTweenInfo, {Brightness = 0})
		
		tween:Wait()
		
		pump.Light1.Material = Enum.Material.Glass
		pump.Light2.Material = Enum.Material.Glass
		pump.Light3.Material = Enum.Material.Glass
	elseif pumpStatus == "DAMAGED" then
		PuffyTween:Tween(pumpSound, pumpUpdateTweenInfo, {PlaybackSpeed = 0.5})
		
		task.spawn(function()
			PuffyTween:Tween(pump.Light1.SurfaceLight, pumpBlinkTweenInfo, {Color = Color3.fromRGB(255, 170, 0)})
			PuffyTween:Tween(pump.Light2.SurfaceLight, pumpBlinkTweenInfo, {Color = Color3.fromRGB(255, 170, 0)})
			PuffyTween:Tween(pump.Light3.SurfaceLight, pumpBlinkTweenInfo, {Color = Color3.fromRGB(255, 170, 0)})
			while pumpStatus == "DAMAGED" do
				local tween = PuffyTween:Tween(pump.Light1, pumpBlinkTweenInfo, {Color = Color3.fromRGB(17, 17, 17)})
				PuffyTween:Tween(pump.Light1.SurfaceLight, pumpBlinkTweenInfo, {Brightness = 0})
				
				PuffyTween:Tween(pump.Light2, pumpBlinkTweenInfo, {Color = Color3.fromRGB(17, 17, 17)})
				PuffyTween:Tween(pump.Light2.SurfaceLight, pumpBlinkTweenInfo, {Brightness = 0})
				
				PuffyTween:Tween(pump.Light3, pumpBlinkTweenInfo, {Color = Color3.fromRGB(17, 17, 17)})
				PuffyTween:Tween(pump.Light3.SurfaceLight, pumpBlinkTweenInfo, {Brightness = 0})
				
				tween:Wait()
				
				local tween2 = PuffyTween:Tween(pump.Light1, pumpBlinkTweenInfo, {Color = Color3.fromRGB(255, 170, 0)})
				PuffyTween:Tween(pump.Light1.SurfaceLight, pumpBlinkTweenInfo, {Brightness = 0})
				
				PuffyTween:Tween(pump.Light2, pumpBlinkTweenInfo, {Color = Color3.fromRGB(255, 170, 0)})
				PuffyTween:Tween(pump.Light2.SurfaceLight, pumpBlinkTweenInfo, {Brightness = 0})
				
				PuffyTween:Tween(pump.Light3, pumpBlinkTweenInfo, {Color = Color3.fromRGB(255, 170, 0)})
				PuffyTween:Tween(pump.Light3.SurfaceLight, pumpBlinkTweenInfo, {Brightness = 0})

				tween2:Wait()
			end
		end)
		
	elseif pumpStatus == "ONLINE" then
		PuffyTween:Tween(pumpSound, pumpUpdateTweenInfo, {PlaybackSpeed = 1})
		
		PuffyTween:Tween(pump.Light1, pumpUpdateTweenInfo, {Color = Color3.fromRGB(255, 255, 255)})
		PuffyTween:Tween(pump.Light1.SurfaceLight, pumpUpdateTweenInfo, {Brightness = 3})

		PuffyTween:Tween(pump.Light2, pumpUpdateTweenInfo, {Color = Color3.fromRGB(255, 255, 255)})
		PuffyTween:Tween(pump.Light2.SurfaceLight, pumpUpdateTweenInfo, {Brightness = 3})

		PuffyTween:Tween(pump.Light3, pumpUpdateTweenInfo, {Color = Color3.fromRGB(255, 255, 255)})
		PuffyTween:Tween(pump.Light3.SurfaceLight, pumpUpdateTweenInfo, {Brightness = 3})
		
		pump.Light1.Material = Enum.Material.Neon
		pump.Light2.Material = Enum.Material.Neon
		pump.Light3.Material = Enum.Material.Neon
	end
end
Leave a Comment