Update hyper sonic credits to meta_blox dont reupload pls
Key RequiredUniversal

Update hyper sonic credits to meta_blox dont reupload pls

Universal ScriptHypersoniclikerHypersonicliker 724 views 2.7K executesUpdated Aug 22, 2026
Unrated
00
Lua Script•2396 lines (80875 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local VirtualInputManager = game:GetService("VirtualInputManager")
local SCRIPT_VERSION = 1
local function createWaitingText()
	local playerGui = Players.LocalPlayer:WaitForChild("PlayerGui")
	local screenGui = Instance.new("ScreenGui")
	screenGui.Name = "WaitingGui"
	screenGui.ResetOnSpawn = false
	screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
	screenGui.Parent = playerGui
	local waitingLabel = Instance.new("TextLabel")
	waitingLabel.Size = UDim2.new(0, 400, 0, 60)
	waitingLabel.Position = UDim2.new(0.5, -200, 0.5, -30)
	waitingLabel.BackgroundTransparency = 1
	waitingLabel.Text = "waiting for sonic"
	waitingLabel.TextSize = 36
	waitingLabel.Font = Enum.Font.GothamBold
	waitingLabel.TextScaled = false
	waitingLabel.Parent = screenGui
	local glow = Instance.new("ImageLabel")
	glow.Size = UDim2.new(1, 20, 1, 20)
	glow.Position = UDim2.new(0, -10, 0, -10)
	glow.BackgroundTransparency = 1
	glow.Image = "rbxassetid://5028857082"
	glow.ImageColor3 = Color3.new(1, 1, 1)
	glow.ImageTransparency = 0.5
	glow.ZIndex = waitingLabel.ZIndex - 1
	glow.Parent = waitingLabel
	local hue = 0
	local connection
	connection = RunService.Heartbeat:Connect(function()
		hue = (hue + 0.01) % 1
		local color = Color3.fromHSV(hue, 1, 1)
		waitingLabel.TextColor3 = color
		glow.ImageColor3 = color
	end)
	return screenGui, connection
end
local function waitForSonic()
	local waitingGui, connection = createWaitingText()
	while true do
		local found = false
		for _, player in Players:GetPlayers() do
			local path = workspace:FindFirstChild("Players")
			if path then
				local playerFolder = path:FindFirstChild(player.Name)
				if playerFolder and playerFolder:FindFirstChild("Dodges") then
					found = true
					break
				end
			end
		end
		if found then
			if connection then connection:Disconnect() end
			if waitingGui then waitingGui:Destroy() end
			return
		end
		task.wait(0.1)
	end
end
waitForSonic()
local function playChaosEmeraldIntro(loadRestCallback)
	local player = Players.LocalPlayer
	local char = player.Character or player.CharacterAdded:Wait()
	local rootPart = char:WaitForChild("HumanoidRootPart")
	local chaosEmeraldsId = 127338011222921
	local success, objects = pcall(game.GetObjects, game, "rbxassetid://" .. chaosEmeraldsId)
	if not success or #objects == 0 then
		warn("FTL CHAOS EMERALDS — saltando intro")
		if loadRestCallback then loadRestCallback() end
		return
	end
	local chaosModel = objects[1]:Clone()
	chaosModel.Name = "ChaosEmeraldsIntro"
	chaosModel.Parent = workspace
	local emeralds = {}
	for _, obj in ipairs(chaosModel:GetDescendants()) do
		if obj:IsA("MeshPart") then
			table.insert(emeralds, obj)
			obj.CanCollide = false
			obj.Anchored = false
		end
	end
	local radius = 8
	local angleStep = (2 * math.pi) / #emeralds
	for i, emerald in ipairs(emeralds) do
		local angle = i * angleStep
		local x = math.cos(angle) * radius
		local z = math.sin(angle) * radius
		emerald.Position = rootPart.Position + Vector3.new(x, 2, z)
	end
	local spinSpeed = 0.2
	local maxSpinSpeed = 3
	local spinAcceleration = 0.6
	local spinTime = 0
	local maxSpinTime = 10
	local spinConnection
	spinConnection = RunService.Heartbeat:Connect(function(deltaTime)
		spinTime += deltaTime
		if spinSpeed < maxSpinSpeed then
			spinSpeed = math.min(spinSpeed + spinAcceleration * deltaTime, maxSpinSpeed)
		end
		for i, emerald in ipairs(emeralds) do
			local angle = (i * angleStep) + (spinTime * spinSpeed)
			local x = math.cos(angle) * radius
			local z = math.sin(angle) * radius
			emerald.Position = rootPart.Position + Vector3.new(x, 2, z)
		end
		if spinTime >= maxSpinTime then
			spinConnection:Disconnect()
			for _, emerald in ipairs(emeralds) do
				local targetPos = rootPart.Position + Vector3.new(0, 1, 0)
				local tween = TweenService:Create(emerald, TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {
					Position = targetPos
				})
				tween:Play()
			end
			task.wait(0.4)
			local thunderSound = workspace:FindFirstChild("LMSThunder")
			if thunderSound then
				thunderSound:Play()
			end
			local playerGui = player:WaitForChild("PlayerGui")
			local flashGui = Instance.new("ScreenGui")
			flashGui.Name = "TransformationFlash"
			flashGui.ResetOnSpawn = false
			flashGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
			flashGui.Parent = playerGui
			local flashFrame = Instance.new("Frame")
			flashFrame.Size = UDim2.new(1, 0, 1, 0)
			flashFrame.Position = UDim2.new(0, 0, 0, 0)
			flashFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
			flashFrame.BackgroundTransparency = 1
			flashFrame.BorderSizePixel = 0
			flashFrame.Parent = flashGui
			local flashIn = TweenService:Create(flashFrame, TweenInfo.new(0.1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
				BackgroundTransparency = 0
			})
			local flashOut = TweenService:Create(flashFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {
				BackgroundTransparency = 1
			})
			flashIn:Play()
			flashIn.Completed:Connect(function()
				flashOut:Play()
				flashOut.Completed:Connect(function()
					flashGui:Destroy()
				end)
			end)
			task.wait(0.5)
			if chaosModel and chaosModel.Parent then
				chaosModel:Destroy()
			end
			if loadRestCallback then
				loadRestCallback()
			end
		end
	end)
end
local function loadRest()
	local setupViewport = nil
	task.spawn(function()
		local targetId = "rbxassetid://136212496176401"
		local replacementId = "rbxassetid://139781718376707"
		local thunderSound = workspace:FindFirstChild("LMSThunder")
		if not thunderSound then
			thunderSound = Instance.new("Sound")
			thunderSound.Name = "LMSThunder"
			thunderSound.SoundId = "rbxassetid://6734393210"
			thunderSound.Volume = 1
			thunderSound.Parent = workspace
		end
		local playerGui = Players.LocalPlayer:WaitForChild("PlayerGui")
		local screenGui = Instance.new("ScreenGui")
		screenGui.Name = "ThunderstrikeEffect"
		screenGui.ResetOnSpawn = false
		screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
		screenGui.Parent = playerGui
		local flashFrame = Instance.new("Frame")
		flashFrame.Size = UDim2.new(1, 0, 1, 0)
		flashFrame.Position = UDim2.new(0, 0, 0, 0)
		flashFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
		flashFrame.BackgroundTransparency = 1
		flashFrame.BorderSizePixel = 0
		flashFrame.Parent = screenGui
		local function createLightningBolt()
			local lightning = Instance.new("Frame")
			lightning.BorderSizePixel = 0
			lightning.BackgroundColor3 = Color3.fromRGB(200, 200, 255)
			lightning.Parent = screenGui
			local startX = math.random(0, 1)
			local startY = 0
			local endX = startX + (math.random(-0.3, 0.3))
			local endY = 1
			local currentX = startX
			local currentY = startY
			for i = 1, 5 do
				local nextX = currentX + (endX - startX) / 5 + (math.random(-0.1, 0.1))
				local nextY = currentY + (endY - startY) / 5
				local segment = Instance.new("Frame")
				segment.BorderSizePixel = 0
				segment.BackgroundColor3 = Color3.fromRGB(200, 200, 255)
				local length = math.sqrt((nextX - currentX)^2 + (nextY - currentY)^2)
				local angle = math.atan2(nextY - currentY, nextX - currentX)
				segment.Size = UDim2.new(0, length * screenGui.AbsoluteSize.X, 0, math.random(2, 6))
				segment.Position = UDim2.new(currentX, 0, currentY, 0)
				segment.Rotation = math.deg(angle)
				segment.Parent = lightning
				currentX = nextX
				currentY = nextY
			end
			return lightning
		end
		local function thunderstrike()
			thunderSound:Play()
			local lightnings = {}
			for i = 1, math.random(2, 4) do
				local lightning = createLightningBolt()
				table.insert(lightnings, lightning)
			end
			local flashIn = TweenService:Create(flashFrame, TweenInfo.new(0.05, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
				BackgroundTransparency = 0
			})
			local flashOut = TweenService:Create(flashFrame, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {
				BackgroundTransparency = 1
			})
			flashIn:Play()
			flashIn.Completed:Connect(function()
				flashOut:Play()
			end)
			task.delay(0.1, function()
				for _, lightning in ipairs(lightnings) do
					if lightning and lightning.Parent then
						lightning:Destroy()
					end
				end
			end)
		end
		local wasPlaying = false
		while true do
			local theme = workspace:FindFirstChild("Assets") and workspace.Assets:FindFirstChild("Songs") and workspace.Assets.Songs:FindFirstChild("Theme80s")
			if theme then
				if theme.SoundId == targetId then
					theme.SoundId = replacementId
					theme.Volume = 2
					theme.Looped = true
					theme.TimePosition = 1
					theme.PlaybackSpeed = 0.99
					theme:Play()
				end
				if theme.SoundId == replacementId and theme.IsPlaying then
					if theme.TimePosition >= theme.TimeLength - 0.2 then
						theme.TimePosition = 1
					end
				end
				local isPlaying = theme.IsPlaying
				if isPlaying and not wasPlaying then
					thunderstrike()
				end
				wasPlaying = isPlaying
			end
			task.wait(0.2)
		end
	end)
	task.spawn(function()
		local LMSVoices = workspace:FindFirstChild("Trollface laugh")
		if not LMSVoices then
			LMSVoices = Instance.new("Sound")
			LMSVoices.Name = "LMSVoices"
		end
		LMSVoices.Volume = 0.8
		LMSVoices.PlaybackSpeed = 1.1
		LMSVoices.Parent = workspace
		local playerGui = Players.LocalPlayer:WaitForChild("PlayerGui")
		local survivorsGui = Instance.new("ScreenGui")
		survivorsGui.Name = "SurvivorsLMS"
		survivorsGui.ResetOnSpawn = false
		survivorsGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
		survivorsGui.Parent = playerGui
		local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled
		task.wait(0.1)
	end)
	local player = Players.LocalPlayer
	local char = player.Character or player.CharacterAdded:Wait()
	local rootPart = char:WaitForChild("HumanoidRootPart")
	local humanoid = char:WaitForChild("Humanoid")
	local overrideVisual = workspace:FindFirstChild("Players") and workspace.Players:FindFirstChild(player.Name)
	task.spawn(function()
		local survivorHP = player.PlayerGui
			:WaitForChild("Round", 30)
			:WaitForChild("Game", 30)
			:WaitForChild("SurvivorHP", 30)
		if not survivorHP then return end
		local healthLabel = survivorHP:FindFirstChild("health", true)
		if not healthLabel then return end
		local DISPLAY_MAX = 2233722036854772000
		local function syncHP(hum)
			if not hum or not hum.Parent then return end
			local maxHP = hum.MaxHealth
			if maxHP <= 0 then return end
			local pct = hum.Health / maxHP
			local display = math.floor(pct * DISPLAY_MAX)
			healthLabel.Text = "x" .. display
		end
		humanoid:GetPropertyChangedSignal("Health"):Connect(function()
			syncHP(humanoid)
		end)
		player.CharacterAdded:Connect(function(newChar)
			local newHumanoid = newChar:WaitForChild("Humanoid", 5)
			if not newHumanoid then return end
			newHumanoid:GetPropertyChangedSignal("Health"):Connect(function()
				syncHP(newHumanoid)
			end)
			syncHP(newHumanoid)
		end)
		syncHP(humanoid)
	end)
	player.CharacterAdded:Connect(function(newChar)
		char = newChar
		rootPart = char:WaitForChild("HumanoidRootPart")
		humanoid = char:WaitForChild("Humanoid")
	end)
	local bodyHue = 0
	local excludedBodyNames = {
		belly = true, muzzl = true, nose = true,
		eye1 = true, eye2 = true, eyes = true,
		LArm1=true, LArm2=true, LArm3=true, LArm4=true, LArm5=true, LSleeve=true,
		RArm1=true, RArm2=true, RArm3=true, RArm4=true, RArm5=true, RSleeve=true,
		["Left Hand"]=true, ["Right Hand"]=true,
		LThumb1=true, LThumb2=true, RThumb1=true, RThumb2=true,
		LIndex1=true, LIndex2=true, RIndex1=true, RIndex2=true,
		LMiddle1=true, LMiddle2=true, RMiddle1=true, RMiddle2=true,
		LPinky1=true, LPinky2=true, RPinky1=true, RPinky2=true,
		LFoot=true, RFoot=true,
		["Sphere.003"]=true, ["Sphere.006"]=true, ["Sphere.007"]=true,
		["Sphere.010"]=true, ["Sphere.017"]=true, ["Sphere.030"]=true,
	}
	local belly = char:WaitForChild("belly", 10)
	local bellyLight = nil
	if belly then
		if belly:FindFirstChildOfClass("PointLight") then belly:FindFirstChildOfClass("PointLight"):Destroy() end
		bellyLight = Instance.new("PointLight")
		bellyLight.Name = "HyperGlow"
		bellyLight.Brightness = 2.5
		bellyLight.Range = 30
		bellyLight.Shadows = true
		bellyLight.Parent = belly
	end
	local currentColor = Color3.fromHSV(0, 0.73, 1)
	RunService.Heartbeat:Connect(function(dt)
		bodyHue = (bodyHue + dt * 0.4) % 1
		local targetColor = Color3.fromHSV(bodyHue, 0.88, 1)
		currentColor = currentColor:Lerp(targetColor, dt * 2.5)
		local rainbow = currentColor
		for _, d in ipairs(char:GetDescendants()) do
			if d:IsA("BasePart") and not excludedBodyNames[d.Name] then
				d.Color = rainbow
				d.Material = Enum.Material.Neon
			elseif d:IsA("Trail") or d:IsA("Beam") then
				d.Enabled = true
				d.Color = ColorSequence.new(rainbow)
				d.LightEmission = 0.1
				d.Brightness = 0.5
			elseif d:IsA("ParticleEmitter") then
				d.Color = ColorSequence.new(rainbow)
			elseif d:IsA("PointLight") and d.Name ~= "HyperGlow" then
				d.Color = rainbow
			end
		end
		local overrideColorMap = {
			LArm1=Color3.fromRGB(255,193,130), LArm2=Color3.fromRGB(255,193,130),
			LArm3=Color3.fromRGB(255,193,130), LArm4=Color3.fromRGB(255,193,130),
			LArm5=Color3.fromRGB(255,193,130),
			RArm1=Color3.fromRGB(255,193,130), RArm2=Color3.fromRGB(255,193,130),
			RArm3=Color3.fromRGB(255,193,130), RArm4=Color3.fromRGB(255,193,130),
			RArm5=Color3.fromRGB(255,193,130),
			muzzl=Color3.fromRGB(255,193,130), belly=Color3.fromRGB(255,193,130),
			["Sphere.017"]=Color3.fromRGB(255,193,130), ["Sphere.030"]=Color3.fromRGB(255,193,130),
			nose=Color3.fromRGB(17,17,17),
			RFoot=Color3.fromRGB(196,25,34), LFoot=Color3.fromRGB(196,25,34),
			["Sphere.003"]=Color3.fromRGB(248,248,248), ["Sphere.006"]=Color3.fromRGB(248,248,248),
			["Sphere.007"]=Color3.fromRGB(248,248,248), ["Sphere.010"]=Color3.fromRGB(248,248,248),
			LSleeve=Color3.fromRGB(248,248,248), RSleeve=Color3.fromRGB(248,248,248),
			LIndex1=Color3.fromRGB(248,248,248), LIndex2=Color3.fromRGB(248,248,248),
			LMiddle1=Color3.fromRGB(248,248,248), LMiddle2=Color3.fromRGB(248,248,248),
			LPinky1=Color3.fromRGB(248,248,248), LPinky2=Color3.fromRGB(248,248,248),
			LThumb1=Color3.fromRGB(248,248,248), LThumb2=Color3.fromRGB(248,248,248),
			["Left Hand"]=Color3.fromRGB(248,248,248),
			RIndex1=Color3.fromRGB(248,248,248), RIndex2=Color3.fromRGB(248,248,248),
			RMiddle1=Color3.fromRGB(248,248,248), RMiddle2=Color3.fromRGB(248,248,248),
			RPinky1=Color3.fromRGB(248,248,248), RPinky2=Color3.fromRGB(248,248,248),
			RThumb1=Color3.fromRGB(248,248,248), RThumb2=Color3.fromRGB(248,248,248),
			["Right Hand"]=Color3.fromRGB(248,248,248),
			eyes=Color3.fromRGB(248,248,248),
		}
		if overrideVisual and overrideVisual.Parent then
			for _, d in ipairs(overrideVisual:GetDescendants()) do
				if d:IsA("BasePart") then
					local fixedColor = overrideColorMap[d.Name]
					if fixedColor then
						d.Color = fixedColor
						d.Material = Enum.Material.SmoothPlastic
					elseif not excludedBodyNames[d.Name] then
						d.Color = rainbow
						d.Material = Enum.Material.Neon
					end
				elseif d:IsA("ParticleEmitter") then
					d.Color = ColorSequence.new(rainbow)
				elseif d:IsA("Trail") or d:IsA("Beam") then
					d.Enabled = true
					d.Color = ColorSequence.new(rainbow)
					d.LightEmission = 0.3
					d.Brightness = 3
				end
			end
		end
		if bellyLight and bellyLight.Parent then
			bellyLight.Color = rainbow
		end
	end)
	local flying = false
	RunService.Stepped:Connect(function(_,delta)
		if not flying then
			if humanoid.MoveDirection.Magnitude > 0 then
				char:PivotTo(char:GetPivot() + humanoid.MoveDirection * delta * 20)
			end
		end
	end)
	local playerGui = player:WaitForChild("PlayerGui")
	local screenGui = Instance.new("ScreenGui")
	screenGui.Name = "BronzeFlyGui"
	screenGui.ResetOnSpawn = false
	screenGui.Parent = playerGui
	local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled
	local bar = Instance.new("Frame")
	if isMobile then
		bar.Size = UDim2.new(0,144,0,192)
		bar.Position = UDim2.new(0,8,0.5,-96 - 40)
	else
		bar.Size = UDim2.new(0,300,0,440)
		bar.Position = UDim2.new(0,20,0.5,-220)
	end
	bar.BackgroundTransparency = 1
	bar.Parent = screenGui
	local function createButton(x,y,color,name,key)
		local btn = Instance.new("ImageButton")
		if isMobile then
			btn.Size = UDim2.new(0,32,0,32)
			btn.Position = UDim2.new(0,x,0,y)
		else
			btn.Size = UDim2.new(0,80,0,80)
			btn.Position = UDim2.new(0,x,0,y)
		end
		btn.BackgroundTransparency = 1
		btn.Image = "rbxassetid://72410974345101"
		btn.ImageColor3 = color
		btn.Parent = bar
		local nameLbl = Instance.new("TextLabel")
		nameLbl.Size = UDim2.new(1,0,0.3,0)
		nameLbl.Position = UDim2.new(0,0,0.9,0)
		nameLbl.BackgroundTransparency = 1
		nameLbl.Text = name
		nameLbl.TextColor3 = color
		nameLbl.Font = Enum.Font.GothamBold
		nameLbl.TextScaled = true
		nameLbl.Parent = btn
		local cdLbl = Instance.new("TextLabel")
		cdLbl.Size = UDim2.new(1,0,0.5,0)
		cdLbl.Position = UDim2.new(0.5,0,0.1,0)
		cdLbl.AnchorPoint = Vector2.new(0.5,0.5)
		cdLbl.BackgroundTransparency = 1
		cdLbl.Text = ""
		cdLbl.TextColor3 = Color3.fromRGB(255,0,0)
		cdLbl.Font = Enum.Font.GothamBold
		cdLbl.TextScaled = true
		cdLbl.Rotation = 45
		cdLbl.Parent = btn
		local keyLbl = Instance.new("TextLabel")
		keyLbl.Size = UDim2.new(1,0,0.25,0)
		keyLbl.Position = UDim2.new(0,0,-0.2,0)
		keyLbl.BackgroundTransparency = 1
		keyLbl.Text = key
		keyLbl.TextColor3 = color
		keyLbl.Font = Enum.Font.GothamBold
		keyLbl.TextScaled = true
		keyLbl.TextXAlignment = Enum.TextXAlignment.Left
		keyLbl.Parent = btn
		return btn, cdLbl, nameLbl
	end
	local dropButton, dropCd
	local lungeButton, lungeCd, lungeName
	local airstrikeButton, airstrikeCd
	local speedButton, speedCd
	local ultimateButton, ultimateCd
	local stairwayButton, stairwayCd
	local flyToggleButton, flyToggleName
	if isMobile then
		local buttonData = {
			{Color3.fromRGB(0,255,0), "Fake Dropdash (X)", "X"},
			{Color3.fromRGB(255,215,0), "Airstrike (G)", "G"},
			{Color3.fromRGB(255,0,0), "Speed Blitz (R)", "R"},
			{Color3.fromRGB(255,255,50), "Ultimate (T)", "T"},
			{Color3.fromRGB(50,50,50), "Fortnite (H)", "H"},
		}
		local buttonObjs = {}
		local paddingX = 4
		local paddingY = 4
		local buttonsPerRow = 3
		for i = 1, #buttonData do
			local row = math.floor((i-1)/buttonsPerRow)
			local col = (i-1)%buttonsPerRow
			local x = col * (32 + paddingX)
			local y = row * (32 + paddingY)
			local color, name, key = buttonData[i][1], buttonData[i][2], buttonData[i][3]
			local btn, cdLbl, nameLbl = createButton(x, y, color, name, key)
			table.insert(buttonObjs, {btn, cdLbl, nameLbl})
			if i == 1 then dropButton, dropCd = btn, cdLbl
			elseif i == 2 then airstrikeButton, airstrikeCd = btn, cdLbl
			elseif i == 3 then speedButton, speedCd = btn, cdLbl
			elseif i == 4 then ultimateButton, ultimateCd = btn, cdLbl
			elseif i == 5 then stairwayButton, stairwayCd = btn, cdLbl
			end
		end
		local flyBtnX = (2 + 1) * (32 + paddingX)
		local flyBtnY = math.floor(1/buttonsPerRow) * (32 + paddingY)
		flyToggleButton, _, flyToggleName = createButton(flyBtnX, flyBtnY, Color3.fromRGB(0,120,255), "Fly: OFF", "")
		lungeButton = Instance.new("ImageButton")
		lungeButton.Size = UDim2.new(0, 40, 0, 40)
		lungeButton.Position = UDim2.new(1, -56, 0.5, -20)
		lungeButton.AnchorPoint = Vector2.new(0,0)
		lungeButton.BackgroundTransparency = 1
		lungeButton.Image = "rbxassetid://72410974345101"
		lungeButton.ImageColor3 = Color3.fromRGB(160,32,240)
		lungeButton.Parent = screenGui
		lungeName = Instance.new("TextLabel")
		lungeName.Size = UDim2.new(1,0,0.3,0)
		lungeName.Position = UDim2.new(0,0,0.9,0)
		lungeName.BackgroundTransparency = 1
		lungeName.Text = "Lunge"
		lungeName.TextColor3 = Color3.fromRGB(160,32,240)
		lungeName.Font = Enum.Font.GothamBold
		lungeName.TextScaled = true
		lungeName.Parent = lungeButton
		lungeCd = Instance.new("TextLabel")
		lungeCd.Size = UDim2.new(1,0,0.5,0)
		lungeCd.Position = UDim2.new(0.5,0,0.1,0)
		lungeCd.AnchorPoint = Vector2.new(0.5,0.5)
		lungeCd.BackgroundTransparency = 1
		lungeCd.Text = ""
		lungeCd.TextColor3 = Color3.fromRGB(255,0,0)
		lungeCd.Font = Enum.Font.GothamBold
		lungeCd.TextScaled = true
		lungeCd.Rotation = 45
		lungeCd.Parent = lungeButton
	else
		dropButton, dropCd = createButton(0, 0, Color3.fromRGB(0,255,0), "Fake Dropdash (X)", "X")
		lungeButton, lungeCd, lungeName = createButton(100, 0, Color3.fromRGB(160,32,240), "Lunge: OFF (V)", "V")
		airstrikeButton, airstrikeCd = createButton(100, 90, Color3.fromRGB(255,215,0), "Airstrike (G)", "G")
		speedButton, speedCd = createButton(200, 90, Color3.fromRGB(255,0,0), "Speed Blitz (R)", "R")
		ultimateButton, ultimateCd = createButton(200, 0, Color3.fromRGB(255,255,50), "Ultimate (T)", "T")
		stairwayButton, stairwayCd = createButton(100, 270, Color3.fromRGB(50,50,50), "Fortnite (H)", "H")
	end
	local CONFIG = {
		AirstrikeCooldown = 25,
		SpeedBlitzCooldown = 35,
		BlitzDuration = 3,
		AirstrikeSpamDuration = 0.5,
		FloatHeight = 90,
		FlyDuration = 15,
		FlyCooldown = 25,
		FakeDropdashDuration = 10,
		FakeDropdashCooldown = 25,
		LungeDistance = 45,
		LungeDuration = 0.20,
		LungeCooldown = 1,
		UltimateDuration = 35,
		UltimateGravity = 80,
		UltimateWalkSpeed = 3,
		TeleportOffsetInFront = 0,
		StairwayHeight = 20,
		StairwayRiseTime = 5,
		StairwayDuration = 30,
		StairwayCooldown = 0,
		StairwaySize = Vector3.new(20, 1, 40),
		StairwayWedgeAngle = 45
	}
	local airstrikeCooldown = false
	local speedBlitzCooldown = false
	local fakeDropdashActive = false
	local fakeDropdashCooldown = false
	local lungeToggle = false
	local lungeOnCooldown = false
	local ultimateActive = false
	local ultimateHits = 0
	local lastHitTime = 0
	local canGainHit = true
	local stairwayCooldown = false
	humanoid.JumpPower = 250
	local function findKiller()
		for _, p in Players:GetPlayers() do
			if p ~= player and p.Character then
				local rage = workspace:FindFirstChild("Players")
					and workspace.Players:FindFirstChild(p.Character.Name)
					and workspace.Players[p.Character.Name]:FindFirstChild("Rage")
				local sphere = workspace:FindFirstChild("Players")
					and workspace.Players:FindFirstChild(p.Character.Name)
					and workspace.Players[p.Character.Name]:FindFirstChild("Sphere.046")
				local mines = workspace:FindFirstChild("Players")
					and workspace.Players:FindFirstChild(p.Character.Name)
					and workspace.Players[p.Character.Name]:FindFirstChild("Mines")
				if rage or sphere or mines then
					return p.Character.HumanoidRootPart
				end
			end
		end
		return nil
	end
	local killerHighlight = nil
	local function highlightKillerRed()
		if killerHighlight then killerHighlight:Destroy() end
		local killerRoot = findKiller()
		if killerRoot and killerRoot.Parent then
			killerHighlight = Instance.new("Highlight")
			killerHighlight.FillColor = Color3.fromRGB(255,0,0)
			killerHighlight.OutlineColor = Color3.fromRGB(255,100,100)
			killerHighlight.FillTransparency = 0.3
			killerHighlight.Parent = killerRoot.Parent
		end
	end
	local function doTacticalStairway()
		if stairwayCooldown then return end
		stairwayCooldown = true
		task.spawn(function()
			for i = CONFIG.StairwayCooldown, 1, -1 do
				stairwayCd.Text = tostring(i)
				task.wait(1)
			end
			stairwayCd.Text = ""
			stairwayCooldown = false
		end)
		local spawnPos = rootPart.Position + rootPart.CFrame.LookVector * 10
		local wedge = Instance.new("WedgePart")
		wedge.Name = "TacticalStairway"
		wedge.Material = Enum.Material.DiamondPlate
		wedge.Color = Color3.fromRGB(40, 40, 40)
		wedge.Size = CONFIG.StairwaySize
		wedge.Anchored = true
		wedge.CanCollide = true
		wedge.TopSurface = Enum.SurfaceType.Smooth
		wedge.BottomSurface = Enum.SurfaceType.Smooth
		wedge.Parent = workspace
		local cf = CFrame.new(spawnPos)
			* CFrame.Angles(0, math.rad(360), 0)
			* CFrame.Angles(math.rad(CONFIG.StairwayWedgeAngle), 0, 0)
		wedge.CFrame = cf
		local startTime = tick()
		local shakeConn = RunService.Heartbeat:Connect(function()
			local elapsed = tick() - startTime
			if elapsed >= CONFIG.StairwayRiseTime then
				shakeConn:Disconnect()
				return
			end
			local shakeIntensity = (1 - elapsed / CONFIG.StairwayRiseTime) * 2
			local shakeX = (math.noise(tick() * 10, 0, 0) - 0.5) * shakeIntensity
			local shakeY = (math.noise(0, tick() * 10, 0) - 0.5) * shakeIntensity * 2
			local shakeZ = (math.noise(0, 0, tick() * 10) - 0.5) * shakeIntensity
			wedge.CFrame = cf * CFrame.new(shakeX, shakeY, shakeZ)
		end)
		local riseTween = TweenService:Create(
			wedge,
			TweenInfo.new(CONFIG.StairwayRiseTime, Enum.EasingStyle.Quint, Enum.EasingDirection.Out),
			{CFrame = cf + Vector3.new(0, CONFIG.StairwayHeight, 0)}
		)
		riseTween:Play()
		task.delay(CONFIG.StairwayDuration, function()
			if wedge and wedge.Parent then
				wedge:Destroy()
			end
		end)
	end
	rootPart.Touched:Connect(function(hit)
		if not ultimateActive and canGainHit and char:FindFirstChild("Spindash") then
			local killerRoot = findKiller()
			if killerRoot and hit:IsDescendantOf(killerRoot.Parent) and hit.CanCollide then
				local now = tick()
				if now - lastHitTime >= 0.3 then
					lastHitTime = now
					ultimateHits += 1
					ultimateCd.Text = ultimateHits.."/9"
					if ultimateHits >= 9 then
						ultimateCd.Text = "READY"
						ultimateButton.ImageColor3 = Color3.fromRGB(255,255,100)
					end
					canGainHit = false
					task.delay(0.3, function() canGainHit = true end)
				end
			end
		end
	end)
	local function activateUltimate()
		if ultimateActive or ultimateHits < 9 then return end
		ultimateActive = true
		ultimateHits = 0
		ultimateCd.Text = ""
		ultimateButton.ImageColor3 = Color3.fromRGB(255,255,50)
		task.spawn(function()
			pcall(function()
				player.PlayerGui.Round.Game.RemoteFunction:InvokeServer(2)
			end)
		end)
		highlightKillerRed()
		local rainbowHighlights = {}
		local rainbowConnections = {}
		local function createRainbowHighlight(part)
			if not part:IsA("BasePart") then return end
			local highlight = Instance.new("Highlight")
			highlight.Name = "UltimateRainbowOutline"
			highlight.Adornee = part
			highlight.FillColor = Color3.new(1, 1, 1)
			highlight.OutlineColor = Color3.new(1, 1, 1)
			highlight.FillTransparency = 1
			highlight.OutlineTransparency = 0
			highlight.Parent = part
			return highlight
		end
		for _, part in ipairs(char:GetDescendants()) do
			if part:IsA("BasePart") then
				local highlight = createRainbowHighlight(part)
				if highlight then
					table.insert(rainbowHighlights, highlight)
				end
			end
		end
		for _, highlight in pairs(rainbowHighlights) do
			if highlight and highlight.Parent then
				local hue = 0
				local connection = RunService.Heartbeat:Connect(function()
					if not highlight or not highlight.Parent or not ultimateActive then
						return
					end
					hue = (hue + 0.01) % 1
					local color = Color3.fromHSV(hue, 1, 1)
					highlight.OutlineColor = color
				end)
				table.insert(rainbowConnections, connection)
			end
		end
		local subtleHl = Instance.new("Highlight", char)
		subtleHl.FillColor = Color3.new(1,1,1)
		subtleHl.FillTransparency = 0.95
		subtleHl.OutlineTransparency = 1
		workspace.Gravity = CONFIG.UltimateGravity
		CONFIG.LungeCooldown = 0
		local walkConn = RunService.Stepped:Connect(function(_, delta)
			if not ultimateActive then walkConn:Disconnect() return end
			char:PivotTo(char:GetPivot() + humanoid.MoveDirection * delta * CONFIG.UltimateWalkSpeed * 60)
		end)
		task.spawn(function()
			local partsList = {
				"Cube.001","Cube.002","Cube.003","Cube.004","Ear1","Ear2","normal",
				"Body",
				"LFoot1","LFoot2","LFoot3","LFoot4","LFoot5",
				"RLeg1","RLeg2","RLeg3","RLeg4","RLeg5",
				"left backspike","right backspike","tail"
			}
			local thingsToChange = {}
			for _, name in ipairs(partsList) do
				local part = char:FindFirstChild("hed") and char.hed:FindFirstChild(name) or char:FindFirstChild(name)
				if not part then
					for _, descendant in ipairs(char:GetDescendants()) do
						if descendant.Name == name and descendant:IsA("BasePart") then
							part = descendant
							break
						end
					end
				end
				if part and part:IsA("BasePart") then
					table.insert(thingsToChange, part)
				end
			end
			if char:FindFirstChild("Spindash") then
				for _, obj in char.Spindash:GetDescendants() do
					if obj:IsA("BasePart") and obj.Material == Enum.Material.Neon then
						table.insert(thingsToChange, obj)
					end
				end
			end
		end)
		task.spawn(function()
			local scaleFactor = 1.1
			local originalSizes = {}
			for _, part in ipairs(char:GetDescendants()) do
				if part:IsA("BasePart") or part:IsA("MeshPart") then
					originalSizes[part] = part.Size
					TweenService:Create(part, TweenInfo.new(5), {Size = part.Size * scaleFactor}):Play()
				end
			end
			task.wait(CONFIG.UltimateDuration)
			for part, origSize in pairs(originalSizes) do
				if part.Parent then
					TweenService:Create(part, TweenInfo.new(5), {Size = origSize}):Play()
				end
			end
		end)
		task.delay(CONFIG.UltimateDuration, function()
			ultimateActive = false
			if killerHighlight then killerHighlight:Destroy(); killerHighlight = nil end
			workspace.Gravity = 196.2
			CONFIG.LungeCooldown = 1
			for _, highlight in pairs(rainbowHighlights) do
				if highlight and highlight.Parent then
					highlight:Destroy()
				end
			end
			for _, connection in pairs(rainbowConnections) do
				if connection then
					connection:Disconnect()
				end
			end
			subtleHl:Destroy()
			ultimateCd.Text = "0/9"
			if walkConn.Connected then walkConn:Disconnect() end
			local partsList = {
				"Cube.001","Cube.002","Cube.003","Cube.004","Ear1","Ear2","normal",
				"Body",
				"LFoot1","LFoot2","LFoot3","LFoot4","LFoot5",
				"RLeg1","RLeg2","RLeg3","RLeg4","RLeg5",
				"left backspike","right backspike","tail"
			}
			local thingsToChange = {}
			for _, name in ipairs(partsList) do
				local part = char:FindFirstChild("hed") and char.hed:FindFirstChild(name) or char:FindFirstChild(name)
				if not part then
					for _, descendant in ipairs(char:GetDescendants()) do
						if descendant.Name == name and descendant:IsA("BasePart") then
							part = descendant
							break
						end
					end
				end
				if part and part:IsA("BasePart") then
					table.insert(thingsToChange, part)
				end
			end
			if char:FindFirstChild("Spindash") then
				for _, obj in char.Spindash:GetDescendants() do
					if obj:IsA("BasePart") and obj.Material == Enum.Material.Neon then
						table.insert(thingsToChange, obj)
					end
				end
			end
			local tweenInfo = TweenInfo.new(5, Enum.EasingStyle.Linear)
			for _, item in ipairs(thingsToChange) do
				if item:IsA("BasePart") then
					TweenService:Create(item, tweenInfo, {Color = Color3.fromHSV(bodyHue, 0.50, 1)}):Play()
				elseif item:IsA("Trail") or item:IsA("Beam") then
					TweenService:Create(item, tweenInfo, {Color = ColorSequence.new(Color3.fromHSV(bodyHue, 0.50, 1))}):Play()
				end
			end
		end)
	end
	local function doAirstrike()
		if airstrikeCooldown then return end
		airstrikeCooldown = true
		task.spawn(function()
			for i = CONFIG.AirstrikeCooldown,1,-1 do
				airstrikeCd.Text = tostring(i)
				task.wait(1)
			end
			airstrikeCd.Text = ""
			airstrikeCooldown = false
		end)
		task.spawn(function()
			pcall(function()
				player.PlayerGui.Round.Game.RemoteFunction:InvokeServer(1)
			end)
		end)
		local highlight = Instance.new("Highlight")
		highlight.FillColor = Color3.fromHSV(bodyHue, 0.50, 1)
		highlight.OutlineColor = Color3.fromHSV(bodyHue, 0.50, 1)
		highlight.Parent = char
		task.wait(0.6)
		if highlight and highlight.Parent then highlight:Destroy() end
		local highPos = rootPart.Position + Vector3.new(0, CONFIG.FloatHeight, 0)
		TweenService:Create(rootPart, TweenInfo.new(0.7, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {CFrame = CFrame.new(highPos)}):Play()
		task.wait(0.7)
		local killerRoot = findKiller()
		if not killerRoot then humanoid.PlatformStand = false return end
		highlightKillerRed()
		local touchConn = rootPart.Touched:Connect(function(hit)
			if hit and hit.Parent and hit.Parent:FindFirstChild("Humanoid") and hit.Parent.HumanoidRootPart == killerRoot then
				task.spawn(function()
					local stun = killerRoot.Parent:FindFirstChild("Stun") or killerRoot.Parent:FindFirstChild("Humanoid"):FindFirstChild("Stun")
					if stun and stun:IsA("RemoteEvent") then stun:FireServer() end
				end)
			end
		end)
		humanoid.PlatformStand = true
		local endTime = os.clock() + CONFIG.AirstrikeSpamDuration
		local conn = RunService.Heartbeat:Connect(function()
			if os.clock() >= endTime then
				if conn then conn:Disconnect() end
				if touchConn then touchConn:Disconnect() end
				humanoid.PlatformStand = false
				if killerHighlight then killerHighlight:Destroy(); killerHighlight = nil end
				return
			end
			local frontOffset = killerRoot.CFrame.LookVector * CONFIG.TeleportOffsetInFront
			rootPart.CFrame = killerRoot.CFrame + frontOffset
		end)
	end
	local function doSpeedBlitz()
		if speedBlitzCooldown then return end
		speedBlitzCooldown = true
		task.spawn(function()
			for i = CONFIG.SpeedBlitzCooldown,1,-1 do
				speedCd.Text = tostring(i)
				task.wait(1)
			end
			speedCd.Text = ""
			speedBlitzCooldown = false
		end)
		task.spawn(function()
			pcall(function()
				player.PlayerGui.Round.Game.RemoteFunction:InvokeServer(1)
			end)
		end)
		local redColor = Color3.fromRGB(255,0,0)
		local highlight = Instance.new("Highlight")
		highlight.FillColor = redColor
		highlight.OutlineColor = redColor
		highlight.Parent = char
		task.wait(0.5)
		highlight:Destroy()
		task.wait(0.5)
		highlight = Instance.new("Highlight")
		highlight.FillColor = redColor
		highlight.OutlineColor = redColor
		highlight.Parent = char
		task.wait(0.5)
		highlight:Destroy()
		local killerRoot = findKiller()
		if not killerRoot then humanoid.PlatformStand = false return end
		highlightKillerRed()
		local touchConn = rootPart.Touched:Connect(function(hit)
			if hit and hit.Parent and hit.Parent:FindFirstChild("Humanoid") and hit.Parent.HumanoidRootPart == killerRoot then
				task.spawn(function()
					local stun = killerRoot.Parent:FindFirstChild("Stun") or killerRoot.Parent:FindFirstChild("Humanoid"):FindFirstChild("Stun")
					if stun and stun:IsA("RemoteEvent") then stun:FireServer() end
				end)
			end
		end)
		humanoid.PlatformStand = true
		local endTime = os.clock() + CONFIG.BlitzDuration
		local conn = RunService.Heartbeat:Connect(function()
			if os.clock() >= endTime then
				if conn then conn:Disconnect() end
				if touchConn then touchConn:Disconnect() end
				humanoid.PlatformStand = false
				if killerHighlight then killerHighlight:Destroy(); killerHighlight = nil end
				return
			end
			local frontOffset = killerRoot.CFrame.LookVector * CONFIG.TeleportOffsetInFront
			local randomOffset = Vector3.new(math.random(-5,5), math.random(0,5), math.random(-5,5))
			rootPart.CFrame = killerRoot.CFrame + frontOffset + randomOffset
		end)
	end
	local function doFakeDropdash()
		if fakeDropdashActive or fakeDropdashCooldown then return end
		fakeDropdashActive = true
		fakeDropdashCooldown = true
		task.spawn(function()
			for i = CONFIG.FakeDropdashCooldown,1,-1 do dropCd.Text = tostring(i) task.wait(1) end
			dropCd.Text = ""
			fakeDropdashCooldown = false
		end)
		highlightKillerRed()
		local hl = Instance.new("Highlight")
		hl.FillColor = Color3.fromRGB(0,255,0)
		hl.OutlineColor = Color3.fromRGB(0,255,0)
		hl.Parent = char
		local anim = Instance.new("Animation")
		anim.AnimationId = "rbxassetid://114931311516664"
		local track = humanoid:LoadAnimation(anim)
		track:Play()
		local cam = workspace.CurrentCamera
		cam.FieldOfView = 144
		if isMobile then
			humanoid.WalkSpeed = 16
		else
			humanoid.WalkSpeed = 0
		end
		VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.LeftShift, false, game)
		VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.W, false, game)
		local forwardConn = RunService.Heartbeat:Connect(function(dt)
			if not fakeDropdashActive then forwardConn:Disconnect() return end
			rootPart.CFrame += rootPart.CFrame.LookVector * 65 * dt
		end)
		local touchConn = rootPart.Touched:Connect(function(hit)
		end)
		task.delay(CONFIG.FakeDropdashDuration, function()
			fakeDropdashActive = false
			VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.LeftShift, false, game)
			VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.W, false, game)
			hl:Destroy()
			track:Stop()
			anim:Destroy()
			TweenService:Create(cam, TweenInfo.new(0.6), {FieldOfView = 70}):Play()
			if forwardConn.Connected then forwardConn:Disconnect() end
			touchConn:Disconnect()
			humanoid.WalkSpeed = 16
			if killerHighlight then killerHighlight:Destroy(); killerHighlight = nil end
		end)
	end
	local function toggleLunge()
		lungeToggle = not lungeToggle
		lungeName.Text = lungeToggle and "Lunge: ON (V)" or "Lunge: OFF (V)"
	end
	local function doLunge()
		if (isMobile or lungeToggle) and not lungeOnCooldown then
			lungeOnCooldown = true
			if CONFIG.LungeCooldown > 0 then
				task.spawn(function()
					for i = CONFIG.LungeCooldown,1,-1 do lungeCd.Text = tostring(i) task.wait(1) end
					lungeCd.Text = ""
					lungeOnCooldown = false
				end)
			else
				task.delay(0.1, function() lungeOnCooldown = false end)
			end
			local anim = Instance.new("Animation")
			anim.AnimationId = "rbxassetid://116632473951329"
			local track = humanoid:LoadAnimation(anim)
			track:Play()
			local dir = workspace.CurrentCamera.CFrame.LookVector
			local target = rootPart.Position + dir * CONFIG.LungeDistance
			TweenService:Create(rootPart, TweenInfo.new(CONFIG.LungeDuration, Enum.EasingStyle.Quint), {
				CFrame = CFrame.new(target, target + dir)
			}):Play()
			task.delay(CONFIG.LungeDuration, function()
				track:Stop()
				anim:Destroy()
			end)
		end
	end
	local flymetertext = true
	local flyMax = 15
	local flyMeter = flyMax
	local flySpeed = 0
	local flySpeedMax = 150
	local flyAccel = 60
	local flyDecel = 80
	local flyDrainMax = 3
	local flyDrainIdle = 0.9 / 3
	local flyDrainSpeed = 3
	local flyDrainMinSpeed = 100
	local flyBarTween = nil
	local flyBarAlpha = 0
	local flyBarShowTime = 0.3
	local flyBarHideTime = 0.4
	local jumpHeld = false
	local jumpHoldStart = 0
	local jumpHoldThreshold = 0.3
	local jumpCooldown = false
	local flyRegenCooldown = false
	local flyRegenCooldownTime = 3
	local flyGui = Instance.new("BillboardGui")
	flyGui.Name = "FlyMeterGui"
	flyGui.ResetOnSpawn = false
	flyGui.Adornee = rootPart
	if isMobile then
		flyGui.Size = UDim2.new(0, 24, 0, 88)
	else
		flyGui.Size = UDim2.new(0, 60, 0, 220)
	end
	flyGui.SizeOffset = Vector2.new(0,0)
	flyGui.StudsOffset = Vector3.new(-4, 0, 0)
	flyGui.AlwaysOnTop = true
	flyGui.MaxDistance = 30
	flyGui.Parent = char
	local flyBarFrame = Instance.new("Frame")
	if isMobile then
		flyBarFrame.Size = UDim2.new(0, 8, 0, 88)
		flyBarFrame.Position = UDim2.new(0, 0, 0.5, -44)
	else
		flyBarFrame.Size = UDim2.new(0, 24, 0, 220)
		flyBarFrame.Position = UDim2.new(0, 0, 0.5, -110)
	end
	flyBarFrame.BackgroundTransparency = 1
	flyBarFrame.AnchorPoint = Vector2.new(0, 0.5)
	flyBarFrame.Parent = flyGui
	local flyBarBG = Instance.new("Frame")
	flyBarBG.Size = UDim2.new(1, 0, 1, 0)
	flyBarBG.Position = UDim2.new(0, 0, 0, 0)
	flyBarBG.BackgroundColor3 = Color3.fromRGB(30, 30, 60)
	flyBarBG.BorderSizePixel = 0
	flyBarBG.BackgroundTransparency = 0.5
	flyBarBG.Parent = flyBarFrame
	local flyBar = Instance.new("Frame")
	flyBar.Size = UDim2.new(1, 0, 1, 0)
	flyBar.Position = UDim2.new(0, 0, 1, 0)
	flyBar.BackgroundColor3 = Color3.fromRGB(0, 120, 255)
	flyBar.BorderSizePixel = 0
	flyBar.BackgroundTransparency = 0.1
	flyBar.Parent = flyBarFrame
	local flyBarText = Instance.new("TextLabel")
	flyBarText.Size = UDim2.new(1, 0, 0, 16)
	flyBarText.Position = UDim2.new(0, 0, 1, 4)
	flyBarText.BackgroundTransparency = 1
	flyBarText.TextColor3 = Color3.fromRGB(180, 220, 255)
	flyBarText.Font = Enum.Font.GothamBold
	flyBarText.TextScaled = true
	flyBarText.Text = ""
	flyBarText.Parent = flyBarFrame
	flyBarFrame.Visible = false
	flyBar.Size = UDim2.new(1, 0, 1, 0)
	flyBar.BackgroundTransparency = 0.1
	local function setFlyBarVisible(visible)
		if flyBarTween then flyBarTween:Cancel() end
		if visible then
			flyBarFrame.Visible = true
			flyBarTween = TweenService:Create(flyBarFrame, TweenInfo.new(flyBarShowTime, Enum.EasingStyle.Quad), {BackgroundTransparency = 0})
			flyBarTween:Play()
		else
			flyBarTween = TweenService:Create(flyBarFrame, TweenInfo.new(flyBarHideTime, Enum.EasingStyle.Quad), {BackgroundTransparency = 1})
			flyBarTween:Play()
			task.delay(flyBarHideTime, function()
				flyBarFrame.Visible = false
			end)
		end
	end
	local function updateFlyBar()
		local percent = math.clamp(flyMeter / flyMax, 0, 1)
		local barHeight = math.floor(percent * flyBarFrame.AbsoluteSize.Y)
		flyBar.Size = UDim2.new(1, 0, percent, 0)
		flyBar.Position = UDim2.new(0, 0, 1 - percent, 0)
		if flymetertext then
			flyBarText.Text = string.format("%.1f / %d", flyMeter, flyMax)
		else
			flyBarText.Text = ""
		end
	end
	local flyConn = nil
	local bv = nil
	local bg = nil
	local flyInertiaDecel = 6
	local function flyStart()
		if flying or flyMeter <= 0 then return end
		flying = true
		setFlyBarVisible(true)
		local currentVelocity = rootPart.AssemblyLinearVelocity
		local horizontalSpeed = math.sqrt(currentVelocity.X^2 + currentVelocity.Z^2)
		flySpeed = math.min(horizontalSpeed, flySpeedMax)
		bv = Instance.new("BodyVelocity")
		bv.MaxForce = Vector3.new(1e5,1e5,1e5)
		bv.Velocity = Vector3.new()
		bv.Parent = rootPart
		bg = Instance.new("BodyGyro")
		bg.MaxTorque = Vector3.new(1e5,1e5,1e5)
		bg.P = 1e4
		bg.D = 500
		bg.CFrame = rootPart.CFrame
		bg.Parent = rootPart
		flyConn = RunService.RenderStepped:Connect(function(dt)
			if not flying then
				if flyConn then flyConn:Disconnect() flyConn = nil end
				if bv then bv:Destroy() bv = nil end
				if bg then bg:Destroy() bg = nil end
				setFlyBarVisible(false)
				return
			end
			local cam = workspace.CurrentCamera
			local move = Vector3.new()
			if isMobile then
				local moveDir = humanoid.MoveDirection
				if moveDir.Magnitude > 0 then
					local camCF = cam.CFrame
					local localMove = camCF:VectorToObjectSpace(moveDir)
					local forward = camCF.LookVector * -localMove.Z
					local right = camCF.RightVector * localMove.X
					local up = Vector3.new(0, -localMove.Y, 0)
					move = (forward + right + up).Unit
				end
			else
				if UserInputService:IsKeyDown(Enum.KeyCode.W) then move += cam.CFrame.LookVector end
				if UserInputService:IsKeyDown(Enum.KeyCode.S) then move -= cam.CFrame.LookVector end
				if UserInputService:IsKeyDown(Enum.KeyCode.A) then move -= cam.CFrame.RightVector end
				if UserInputService:IsKeyDown(Enum.KeyCode.D) then move += cam.CFrame.RightVector end
				if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then move -= Vector3.new(0,1,0) end
			end
			local moving = move.Magnitude > 0
			if moving then
				flySpeed = math.min(flySpeed + flyAccel * dt, flySpeedMax)
				bv.Velocity = move * flySpeed
			else
				flySpeed = math.max(flySpeed - flyDecel * dt, 0)
				bv.Velocity = bv.Velocity:Lerp(Vector3.new(), math.clamp(flyInertiaDecel * dt, 0, 1))
			end
			bg.CFrame = cam.CFrame
			local now = tick()
			if flying then
				local drain = 0
				if flySpeed >= flyDrainMinSpeed then
					drain = flyDrainSpeed * dt
				else
					drain = flyDrainIdle * dt
				end
				flyMeter = math.max(flyMeter - drain, 0)
				updateFlyBar()
				if flyMeter <= 0 then
					flying = false
					if not flyRegenCooldown then
						flyRegenCooldown = true
						task.delay(flyRegenCooldownTime, function()
							flyRegenCooldown = false
						end)
					end
				end
			end
		end)
	end
	local function smoothDecelerate(lastVelocity)
		local decayTime = 0.7
		local startTime = tick()
		local bvDecel = Instance.new("BodyVelocity")
		bvDecel.MaxForce = Vector3.new(1e5,1e5,1e5)
		bvDecel.Velocity = lastVelocity
		bvDecel.Parent = rootPart
		local conn
		conn = RunService.RenderStepped:Connect(function()
			local elapsed = tick() - startTime
			local alpha = math.clamp(1 - (elapsed / decayTime), 0, 1)
			bvDecel.Velocity = lastVelocity * alpha
			if alpha <= 0 then
				if conn then conn:Disconnect() end
				bvDecel:Destroy()
			end
		end)
	end
	local function flyCancel()
		if flying then
			flying = false
			setFlyBarVisible(false)
			if flyConn then flyConn:Disconnect() flyConn = nil end
			local lastVelocity = bv and bv.Velocity or rootPart.Velocity
			if bv then bv:Destroy() bv = nil end
			if bg then bg:Destroy() bg = nil end
			if lastVelocity and lastVelocity.Magnitude > 1 then
				smoothDecelerate(lastVelocity)
			end
		end
	end
	local function rechargeFlyMeter()
		task.spawn(function()
			while true do
				if not flying and flyMeter < flyMax and not flyRegenCooldown then
					flyMeter = math.min(flyMeter + flyDrainIdle * 0.5, flyMax)
					updateFlyBar()
				end
				task.wait(0.5)
			end
		end)
	end
	rechargeFlyMeter()
	local jumpInputActive = false
	local jumpInputStart = 0
	local function onJumpInputBegan(input, gameProcessed)
		if not isMobile and input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == Enum.KeyCode.Space then
			if not jumpInputActive then
				jumpInputActive = true
				jumpInputStart = tick()
			end
		end
	end
	local function onJumpInputEnded(input, gameProcessed)
		if not isMobile and input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == Enum.KeyCode.Space then
			if jumpInputActive then
				jumpInputActive = false
				if flying then
					flyCancel()
				end
			end
		end
	end
	UserInputService.InputBegan:Connect(onJumpInputBegan)
	UserInputService.InputEnded:Connect(onJumpInputEnded)
	if isMobile then
		local function updateFlyToggleButton()
			if flying then
				flyToggleButton.ImageColor3 = Color3.fromRGB(0,200,255)
				flyToggleName.Text = "Fly: ON"
			else
				flyToggleButton.ImageColor3 = Color3.fromRGB(0,120,255)
				flyToggleName.Text = "Fly: OFF"
			end
		end
		flyToggleButton.MouseButton1Click:Connect(function()
			if flying then
				flyCancel()
			else
				if flyMeter > 0 then
					flyStart()
				end
			end
			updateFlyToggleButton()
		end)
		updateFlyToggleButton()
	end
	task.spawn(function()
		while true do
			if not isMobile then
				if jumpInputActive and not flying and flyMeter > 0 then
					local heldTime = tick() - jumpInputStart
					if heldTime >= jumpHoldThreshold then
						flyStart()
					end
				end
				if not jumpInputActive and flying then
					flyCancel()
				end
			end
			task.wait(0.05)
		end
	end)
	updateFlyBar()
	task.spawn(function()
		while true do
			if flying then
				setFlyBarVisible(true)
			else
				setFlyBarVisible(false)
			end
			task.wait(0.1)
		end
	end)
	UserInputService.InputBegan:Connect(function(inp, gpe)
		if gpe then return end
		if inp.KeyCode == Enum.KeyCode.X then doFakeDropdash()
		elseif inp.KeyCode == Enum.KeyCode.G then doAirstrike()
		elseif inp.KeyCode == Enum.KeyCode.R then doSpeedBlitz()
		elseif inp.KeyCode == Enum.KeyCode.V then toggleLunge()
		elseif inp.KeyCode == Enum.KeyCode.T then activateUltimate()
		elseif inp.KeyCode == Enum.KeyCode.H then doTacticalStairway()
		elseif inp.UserInputType == Enum.UserInputType.MouseButton1 and lungeToggle then doLunge()
		end
	end)
	dropButton.MouseButton1Click:Connect(doFakeDropdash)
	airstrikeButton.MouseButton1Click:Connect(doAirstrike)
	speedButton.MouseButton1Click:Connect(doSpeedBlitz)
	if isMobile then
		lungeButton.MouseButton1Click:Connect(doLunge)
	else
		lungeButton.MouseButton1Click:Connect(toggleLunge)
	end
	ultimateButton.MouseButton1Click:Connect(activateUltimate)
	stairwayButton.MouseButton1Click:Connect(doTacticalStairway)
	task.spawn(function()
		local hed = char:WaitForChild("hed")
		local cubes = {"Cube.001", "Cube.002", "Cube.003", "Cube.004"}
		for _, name in ipairs(cubes) do
			local cube = hed:WaitForChild(name)
			cube.Size = cube.Size * Vector3.new(1.2, 1.2, 1.2)
			cube.Position = cube.Position - Vector3.new(0, 0, 0)
		end
	end)
	local function replacePlayerFrame()
		local playerGui = player:WaitForChild("PlayerGui", 15)
		if not playerGui then return end
		local roundGui = playerGui:WaitForChild("Round", 15)
		if not roundGui then return end
		local gameGui = roundGui:WaitForChild("Game", 15)
		if not gameGui then return end
		local teamsGui = gameGui:WaitForChild("Teams", 15)
		if not teamsGui then return end
		local playerFrame = nil
		for _ = 1, 60 do
			playerFrame = teamsGui:FindFirstChild(player.Name)
				or teamsGui:FindFirstChild(player.DisplayName)
			if playerFrame then break end
			task.wait(0.25)
		end
		if not playerFrame then return end
		local frame = playerFrame:FindFirstChild("Frame")
		if not frame then return end
		local characterContainer = frame:FindFirstChild("Character")
		if not characterContainer then return end
		characterContainer:ClearAllChildren()
		local iconLabel = Instance.new("ImageLabel")
		iconLabel.Image = "rbxassetid://115938559084448"
		iconLabel.Size = UDim2.new(0.60, 0, 0.60, 0)
		iconLabel.Position = UDim2.new(0.5, 0, 0.38, 0)
		iconLabel.AnchorPoint = Vector2.new(0.5, 0.5)
		iconLabel.BackgroundTransparency = 1
		iconLabel.ScaleType = Enum.ScaleType.Fit
		iconLabel.Parent = characterContainer
		if characterContainer:IsA("GuiObject") then
			characterContainer.BackgroundTransparency = 1
		end
	end
	task.spawn(replacePlayerFrame)
	task.spawn(function()
		local Players = game:GetService("Players")
		local RunService = game:GetService("RunService")
		local TweenService = game:GetService("TweenService")
		local player = Players.LocalPlayer
		local viewportFrame = player.PlayerGui
			:WaitForChild("Round", 30)
			:WaitForChild("Game", 30)
			:WaitForChild("SurvivorHP", 30)
			:WaitForChild("ViewportFrame", 30)
		local viewportModel = viewportFrame
			:WaitForChild("WorldModel", 30)
			:WaitForChild("Default", 30)
		local viewportHue = 0
		local partNames = {
			"Cube.001","Cube.002","Cube.003","Cube.004","Ear1","Ear2","normal",
			"Body",
			"LFoot1","LFoot2","LFoot3","LFoot4","LFoot5",
			"RLeg1","RLeg2","RLeg3","RLeg4","RLeg5",
			"left backspike","right backspike","tail"
		}
		local assetId = "105374052611916"
		local vpOverrideModel = nil
		local function replaceViewportModel()
			local ok, objects = pcall(game.GetObjects, game, "rbxassetid://" .. assetId)
			if not ok or #objects == 0 then
				warn("FF ASSET:", assetId)
				return
			end
			if vpOverrideModel and vpOverrideModel.Parent then
				vpOverrideModel:Destroy()
				vpOverrideModel = nil
			end
			local newModel = objects[1]:Clone()
			vpOverrideModel = newModel
			for _, part in ipairs(viewportModel:GetDescendants()) do
				if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then
					part.Transparency = 1
				end
			end
			newModel.Parent = viewportModel
			local newHumanoid = newModel:FindFirstChildOfClass("Humanoid")
			if newHumanoid then
				newHumanoid:Destroy()
			end
			local viewportRootPart = viewportModel:FindFirstChild("HumanoidRootPart")
			if viewportRootPart then
				newModel:PivotTo(viewportRootPart.CFrame * CFrame.new(0, 0, 0) * CFrame.Angles(math.rad(0), math.rad(000), 0))
				local primaryPart = newModel.PrimaryPart or newModel:FindFirstChildWhichIsA("BasePart")
				if primaryPart then
					local weld = Instance.new("WeldConstraint")
					weld.Part0 = viewportRootPart
					weld.Part1 = primaryPart
					weld.Parent = viewportRootPart
				end
			end
		end
		local viewportParts = {}
		local viewportPartsVersion = 0
		local viewportHumanoid = viewportModel:FindFirstChild("Humanoid")
		local currentViewportAnimation = nil
		local viewportAnimations = {
			Idle = {id = "rbxassetid://86229317461320", track = nil, shouldLoop = true},
			Walk = {id = "rbxassetid://124016876172487", track = nil, shouldLoop = true},
			Run = {id = "rbxassetid://102091744008058", track = nil, shouldLoop = true},
			Jump = {id = "rbxassetid://125236763187476", track = nil, shouldLoop = false},
			Fall = {id = "rbxassetid://72841784729233", track = nil, shouldLoop = true}
		}
		local function loadViewportAnimation(animName)
			local animData = viewportAnimations[animName]
			if not animData or not viewportHumanoid then return nil end
			local animation = Instance.new("Animation")
			animation.AnimationId = animData.id
			local track = viewportHumanoid:LoadAnimation(animation)
			track.Looped = animData.shouldLoop
			animData.track = track
			return track
		end
		local function playViewportAnimation(animName)
			if not viewportHumanoid then return end
			for name, animData in pairs(viewportAnimations) do
				if animData.track and animData.track.IsPlaying then
					animData.track:Stop()
				end
			end
			local animData = viewportAnimations[animName]
			if animData then
				if not animData.track then
					loadViewportAnimation(animName)
				end
				if animData.track then
					animData.track:Play()
				end
			end
		end
		local function updateViewportAnimations()
			local newAnimation = "Idle"
			if viewportHumanoid then
				if viewportHumanoid.MoveDirection.Magnitude > 0.1 then
					if viewportHumanoid:GetState() == Enum.HumanoidStateType.Running then
						if viewportHumanoid.WalkSpeed > 16 then
							newAnimation = "Run"
						else
							newAnimation = "Walk"
						end
					end
				else
					local state = viewportHumanoid:GetState()
					if state == Enum.HumanoidStateType.Jumping or state == Enum.HumanoidStateType.Freefall then
						if state == Enum.HumanoidStateType.Jumping then
							newAnimation = "Jump"
						else
							newAnimation = "Fall"
						end
					else
						newAnimation = "Idle"
					end
				end
			end
			if newAnimation ~= currentViewportAnimation then
				playViewportAnimation(newAnimation)
				currentViewportAnimation = newAnimation
			end
		end
		local function rebuildPartList()
			viewportParts = {}
			viewportPartsVersion += 1
			local nameSet = {}
			for _, n in ipairs(partNames) do nameSet[n] = true end
			for _, descendant in ipairs(viewportModel:GetDescendants()) do
				if descendant:IsA("BasePart") and nameSet[descendant.Name] then
					descendant.Material = Enum.Material.Neon
					table.insert(viewportParts, descendant)
				end
			end
			local spindash = viewportModel:FindFirstChild("Spindash")
			if spindash then
				for _, obj in spindash:GetDescendants() do
					if obj:IsA("BasePart") then
						obj.Material = Enum.Material.Neon
						table.insert(viewportParts, obj)
					end
				end
			end
			for _, obj in viewportModel:GetDescendants() do
				if obj:IsA("Trail") or obj:IsA("Beam") then
					table.insert(viewportParts, obj)
				end
			end
			viewportHumanoid = viewportModel:FindFirstChild("Humanoid")
			if viewportHumanoid then
				for name, _ in pairs(viewportAnimations) do
					loadViewportAnimation(name)
				end
				playViewportAnimation("Idle")
				currentViewportAnimation = "Idle"
			end
		end
		setupViewport = function()
			task.spawn(function()
				local newVF = nil
				for _ = 1, 40 do
					local pg = player.PlayerGui
					local round = pg:FindFirstChild("Round")
					local game_ = round and round:FindFirstChild("Game")
					local shp = game_ and game_:FindFirstChild("SurvivorHP")
					newVF = shp and shp:FindFirstChild("ViewportFrame")
					if newVF then break end
					task.wait(0.25)
				end
				if not newVF then return end
				viewportFrame = newVF
				local newVM = nil
				for _ = 1, 40 do
					local wm = viewportFrame:FindFirstChild("WorldModel")
					if wm then
						newVM = wm:FindFirstChild("Default")
						if not newVM then
							for _, child in ipairs(wm:GetChildren()) do
								if child:IsA("Model") then newVM = child break end
							end
						end
						if newVM then break end
					end
					task.wait(0.25)
				end
				if newVM then
					viewportModel = newVM
					replaceViewportModel()
					rebuildPartList()
				end
			end)
		end
		replaceViewportModel()
		rebuildPartList()
		viewportModel.DescendantAdded:Connect(function()
			task.wait(0.1)
			replaceViewportModel()
			rebuildPartList()
		end)
		task.spawn(function()
			while task.wait(0.5) do
				local viewportHed = viewportModel:FindFirstChild("hed")
				if viewportHed then
					local eye1 = viewportHed:FindFirstChild("eye1")
					local eye2 = viewportHed:FindFirstChild("eye2")
					if eye1 then
						eye1.Color = Color3.fromRGB(255, 0, 0)
						eye1.Material = Enum.Material.Neon
					end
					if eye2 then
						eye2.Color = Color3.fromRGB(255, 0, 0)
						eye2.Material = Enum.Material.Neon
					end
				end
			end
		end)
		local vpSkinParts = {
			LArm1=true,LArm2=true,LArm3=true,LArm4=true,LArm5=true,LSleeve=true,
			RArm1=true,RArm2=true,RArm3=true,RArm4=true,RArm5=true,RSleeve=true,
			["Left Hand"]=true,["Right Hand"]=true,
			LThumb1=true,LThumb2=true,RThumb1=true,RThumb2=true,
			LIndex1=true,LIndex2=true,RIndex1=true,RIndex2=true,
			LMiddle1=true,LMiddle2=true,RMiddle1=true,RMiddle2=true,
			LPinky1=true,LPinky2=true,RPinky1=true,RPinky2=true,
		}
		local SKIN_COLOR = Color3.fromRGB(255, 193, 130)
		local vpCurrentColor = Color3.fromHSV(0, 0.65, 1)
		RunService.Heartbeat:Connect(function(dt)
			viewportHue = (viewportHue + dt * 0.4) % 1
			local vpTarget = Color3.fromHSV(viewportHue, 0.65, 1)
			vpCurrentColor = vpCurrentColor:Lerp(vpTarget, dt * 2.5)
			local rainbow = vpCurrentColor
			for _, obj in ipairs(viewportParts) do
				if obj and obj.Parent then
					if obj:IsA("BasePart") then
						if vpSkinParts[obj.Name] then
							obj.Color = SKIN_COLOR
							obj.Material = Enum.Material.SmoothPlastic
						else
							obj.Color = rainbow
							obj.Material = Enum.Material.Neon
						end
					elseif obj:IsA("Trail") or obj:IsA("Beam") then
						obj.Enabled = true
						obj.Color = ColorSequence.new(rainbow)
						obj.LightEmission = 0.3
						obj.Brightness = 3
					end
				end
			end
		end)
		viewportModel.DescendantAdded:Connect(function()
			task.wait(0.5)
			replaceViewportModel()
		end)
		player.CharacterAdded:Connect(function(newChar)
			task.wait(3)
			viewportModel = viewportFrame:FindFirstChild("WorldModel") and viewportFrame.WorldModel:FindFirstChild("Default")
			if viewportModel then
				rebuildPartList()
			end
		end)
		task.spawn(function()
			local hasScaled = false
			while task.wait(1) do
				local hed = viewportModel:FindFirstChild("hed")
				if hed and not hasScaled then
					local scaled = true
					for _, name in ipairs({"Cube.001", "Cube.002", "Cube.003", "Cube.004"}) do
						local cube = hed:FindFirstChild(name)
						if cube and cube:IsA("BasePart") then
							cube.Size = cube.Size * Vector3.new(1.2, 1.2, 1.2)
							scaled = scaled and true
						end
					end
					if scaled then
						hasScaled = true
					end
				end
				if not hed then
					hasScaled = false
				end
			end
		end)
	end)
	task.spawn(function()
		local hed = game.Players.LocalPlayer.Character:WaitForChild("hed", 10)
		if not hed then return end
		local eye1 = hed:FindFirstChild("eye1")
		local eye2 = hed:FindFirstChild("eye2")
		if eye1 then eye1.Color = Color3.fromRGB(255, 0, 0) end
		if eye2 then eye2.Color = Color3.fromRGB(255, 0, 0) end
	end)
	local Players = game:GetService("Players")
	local UserInputService = game:GetService("UserInputService")
	local RunService = game:GetService("RunService")
	local player = Players.LocalPlayer
	local character = player.Character or player.CharacterAdded:Wait()
	local humanoid = character:WaitForChild("Humanoid")
	local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
	local animationsToDisable = {
		"rbxassetid://106608035337447",
		"rbxassetid://91914265832902",
		"rbxassetid://138114598643451",
		"rbxassetid://123558237797584",
		"rbxassetid://128300704291171",
		"rbxassetid://83089098813032",
		"rbxassetid://124698729597668",
		"rbxassetid://76223171782712"
	}
	local function disableAnimations()
		if humanoid and humanoid:FindFirstChild("Animator") then
			for _, anim in pairs(humanoid:GetPlayingAnimationTracks()) do
				for _, animId in ipairs(animationsToDisable) do
					if anim.Animation and anim.Animation.AnimationId == animId then
						anim:Stop()
						break
					end
				end
			end
		end
	end
	disableAnimations()
	RunService.Heartbeat:Connect(disableAnimations)
	local ANIMATIONS = {
		Idle = {id = "rbxassetid://86229317461320", track = nil, shouldLoop = true},
		Walk = {id = "rbxassetid://72886170821280", track = nil, shouldLoop = true},
		Run = {id = "rbxassetid://79543048704883", track = nil, shouldLoop = true},
		Jump = {id = "rbxassetid://125236763187476", track = nil, shouldLoop = false},
		Fall = {id = "rbxassetid://86229317461320", track = nil, shouldLoop = true},
		FlyIdle = {id = "rbxassetid://86229317461320", track = nil, shouldLoop = true},
		FlySlow = {id = "rbxassetid://86229317461320", track = nil, shouldLoop = true},
		FlyFast = {id = "rbxassetid://86229317461320", track = nil, shouldLoop = true}
	}
	local function loadAnimation(animName)
		local animData = ANIMATIONS[animName]
		if not animData then return nil end
		local animation = Instance.new("Animation")
		animation.AnimationId = animData.id
		local track = humanoid:LoadAnimation(animation)
		track.Looped = animData.shouldLoop
		animData.track = track
		return track
	end
	local function playAnimation(animName)
		for name, animData in pairs(ANIMATIONS) do
			if animData.track and animData.track.IsPlaying then
				animData.track:Stop()
			end
		end
		local animData = ANIMATIONS[animName]
		if animData then
			if not animData.track then
				loadAnimation(animName)
			end
			if animData.track then
				animData.track:Play()
			end
		end
	end
	local currentAnimation = nil
	local function updateAnimations()
		if fakeDropdashActive then return end
		local newAnimation = nil
		if flying then
			if flySpeed < 1 then
				newAnimation = "FlyIdle"
			elseif flySpeed < 45 then
				newAnimation = "FlySlow"
			else
				newAnimation = "FlyFast"
			end
		else
			if humanoid.MoveDirection.Magnitude > 0.1 then
				if humanoid:GetState() == Enum.HumanoidStateType.Running then
					if humanoid.WalkSpeed > 16 then
						newAnimation = "Run"
					else
						newAnimation = "Walk"
					end
				end
			else
				local state = humanoid:GetState()
				if state == Enum.HumanoidStateType.Jumping or state == Enum.HumanoidStateType.Freefall then
					if state == Enum.HumanoidStateType.Jumping then
						newAnimation = "Jump"
					else
						newAnimation = "Fall"
					end
				else
					newAnimation = "Idle"
				end
			end
		end
		if newAnimation and newAnimation ~= currentAnimation then
			playAnimation(newAnimation)
			currentAnimation = newAnimation
		end
	end
	humanoid.StateChanged:Connect(function(oldState, newState)
		updateAnimations()
	end)
	RunService.Heartbeat:Connect(function()
		updateAnimations()
	end)
	for name, _ in pairs(ANIMATIONS) do
		loadAnimation(name)
	end
	playAnimation("Idle")
	local versionGui = Instance.new("ScreenGui")
	versionGui.Name = "VersionGui"
	versionGui.ResetOnSpawn = false
	versionGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
	versionGui.Parent = playerGui
	local versionLabel = Instance.new("TextLabel")
	versionLabel.Size = UDim2.new(0, 100, 0, 20)
	versionLabel.Position = UDim2.new(0, 5, 1, -25)
	versionLabel.AnchorPoint = Vector2.new(0, 1)
	versionLabel.BackgroundTransparency = 1
	versionLabel.Text = "SV: " .. SCRIPT_VERSION
	versionLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
	versionLabel.TextStrokeTransparency = 0
	versionLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
	versionLabel.Font = Enum.Font.SourceSansItalic
	versionLabel.TextSize = 12
	versionLabel.TextXAlignment = Enum.TextXAlignment.Left
	versionLabel.Parent = versionGui
	player.CharacterAdded:Connect(function(newCharacter)
		character = newCharacter
		humanoid = character:WaitForChild("Humanoid")
		humanoidRootPart = character:WaitForChild("HumanoidRootPart")
		local animationsToDisable = {
			"rbxassetid://106608035337447",
			"rbxassetid://91914265832902",
			"rbxassetid://138114598643451",
			"rbxassetid://123558237797584",
			"rbxassetid://128300704291171",
			"rbxassetid://83089098813032",
			"rbxassetid://124698729597668",
			"rbxassetid://76223171782712"
		}
		local function disableAnimations()
			if humanoid and humanoid:FindFirstChild("Animator") then
				for _, anim in pairs(humanoid:GetPlayingAnimationTracks()) do
					for _, animId in ipairs(animationsToDisable) do
						if anim.Animation and anim.Animation.AnimationId == animId then
							anim:Stop()
							break
						end
					end
				end
			end
		end
		disableAnimations()
		local animDisableConn
		animDisableConn = RunService.Heartbeat:Connect(disableAnimations)
		character.AncestryChanged:Connect(function()
			if not character.Parent then
				if animDisableConn then
					animDisableConn:Disconnect()
				end
			end
		end)
		for name, _ in pairs(ANIMATIONS) do
			if ANIMATIONS[name].track then
				ANIMATIONS[name].track:Stop()
				ANIMATIONS[name].track = nil
			end
		end
		for name, _ in pairs(ANIMATIONS) do
			loadAnimation(name)
		end
		playAnimation("Idle")
		local hed = character:FindFirstChild("hed")
		if hed then
			local joy1 = hed:FindFirstChild("joy1")
			if joy1 then
				joy1:Destroy()
				print("DD JOY1 RS")
			end
			local joy2 = hed:FindFirstChild("joy2")
			if joy2 then
				joy2:Destroy()
				print("DD JOY2 RS")
			end
		end
	end)
	local hed = character:FindFirstChild("hed")
	if hed then
		local joy1 = hed:FindFirstChild("joy1")
		if joy1 then
			joy1:Destroy()
			print("DD JOY1 I")
		end
		local joy2 = hed:FindFirstChild("joy2")
		if joy2 then
			joy2:Destroy()
			print("DD JOY2 I")
		end
	end
	local Players = game:GetService("Players")
	local RunService = game:GetService("RunService")
	local player = Players.LocalPlayer
	local ASSET_ID = 105374052611916
	local currentConnection = nil
	local function loadAsset(id)
		local ok, objects = pcall(game.GetObjects, game, "rbxassetid://" .. id)
		if not ok or not objects or #objects == 0 then
			return nil
		end
		return objects[1]:Clone()
	end
	local currentOverrideMdl = nil
	local function setupCharacter(character)
		if currentOverrideMdl and currentOverrideMdl.Parent then
			currentOverrideMdl:Destroy()
			currentOverrideMdl = nil
		end
		if currentConnection then
			currentConnection:Disconnect()
			currentConnection = nil
		end
		local originalParts = {}
		for _, v in ipairs(character:GetDescendants()) do
			if v:IsA("BasePart") then
				table.insert(originalParts, v)
			end
		end
		for _, part in ipairs(originalParts) do
			part.Transparency = 1
		end
		local players_folder = workspace:FindFirstChild("Players")
		local old_visual = players_folder and players_folder:FindFirstChild(player.Name)
		if old_visual then
			for _, v in ipairs(old_visual:GetDescendants()) do
				if v:IsA("BasePart") then
					v.Transparency = 1
				end
			end
		end
		local mdl = loadAsset(ASSET_ID)
		if not mdl then
			return
		end
		if old_visual then
			mdl.Parent = old_visual
		else
			mdl.Parent = character
		end
		currentOverrideMdl = mdl
		local hrp = character:WaitForChild("HumanoidRootPart", 5)
		local new_hrp = mdl:WaitForChild("HumanoidRootPart", 5)
		if not hrp or not new_hrp then
			mdl:Destroy()
			return
		end
		new_hrp.Anchored = true
		local humanoid = mdl:FindFirstChildOfClass("Humanoid")
		if humanoid then
			humanoid:Destroy()
		end
		local animator = mdl:FindFirstChildOfClass("Animator")
		if animator then
			animator:Destroy()
		end
		local normal = mdl:FindFirstChild("normal", true)
		local faceParts = {}
		local relativeCFrames = {}
		if normal and normal:IsA("BasePart") then
			faceParts = {
				Cube001 = mdl:FindFirstChild("Cube.001", true),
				Cube002 = mdl:FindFirstChild("Cube.002", true),
				Cube003 = mdl:FindFirstChild("Cube.003", true),
				Cube004 = mdl:FindFirstChild("Cube.004", true),
				eye1 = mdl:FindFirstChild("eye1", true),
				eye2 = mdl:FindFirstChild("eye2", true),
				muzzl = mdl:FindFirstChild("muzzl", true),
				nose = mdl:FindFirstChild("nose", true),
				Ear1 = mdl:FindFirstChild("Ear1", true),
				Ear2 = mdl:FindFirstChild("Ear2", true)
			}
			for name, part in pairs(faceParts) do
				if part and part:IsA("BasePart") then
					relativeCFrames[name] = normal.CFrame:Inverse() * part.CFrame
				end
			end
		end
		for _, v in ipairs(mdl:GetDescendants()) do
			if v:IsA("BasePart") then
				v.CanCollide = false
				v.Transparency = 0
			end
		end
		new_hrp.Transparency = 1
		local angry = mdl:FindFirstChild("angry", true)
		if angry and angry:IsA("BasePart") then
			angry.Transparency = 1
		end
		local new_head = mdl:FindFirstChild("Head")
		if new_head and new_head:IsA("BasePart") then
			new_head.Transparency = 1
		end
		local waist = mdl:FindFirstChild("Waist", true)
		if waist and waist:IsA("BasePart") then
			waist.Transparency = 1
		end
		if normal then
			normal.Transparency = 0
			normal.CanCollide = false
			normal.Anchored = true
		end
		for name, part in pairs(faceParts) do
			if part then
				part.Transparency = 0
				part.CanCollide = false
				part.Anchored = true
			end
		end
		local original_hed_normal = nil
		if old_visual then
			local hed = old_visual:FindFirstChild("hed")
			if hed then
				original_hed_normal = hed:FindFirstChild("normal")
			end
		end
		if new_head then
			for _, joint in ipairs(mdl:GetDescendants()) do
				if joint:IsA("Motor6D") or joint:IsA("Weld") or joint:IsA("WeldConstraint") then
					local part0 = joint.Part0 or joint.PartA
					local part1 = joint.Part1 or joint.PartB
					if (part0 == new_head or part1 == new_head) then
						local other = (part0 == new_head) and part1 or part0
						if other and not other:IsDescendantOf(new_head) then
							joint:Destroy()
						end
					end
				end
			end
			new_head.Anchored = true
		end
		local function charHasSonicMotors()
			for _, m in ipairs(character:GetDescendants()) do
				if m:IsA("Motor6D") and not m.Name:find("Shoulder")
					and not m.Name:find("Hip")
					and m.Name ~= "Neck"
					and m.Name ~= "RootJoint" then
					return true
				end
			end
			return false
		end
		for _ = 1, 40 do
			if charHasSonicMotors() then break end
			task.wait(0.25)
		end
		local motorMap = {}
		local function buildMotorMap()
			motorMap = {}
			for _, oldMotor in ipairs(character:GetDescendants()) do
				if oldMotor:IsA("Motor6D") then
					local newMotor = mdl:FindFirstChild(oldMotor.Name, true)
					if newMotor and newMotor:IsA("Motor6D") then
						motorMap[oldMotor] = newMotor
					end
				end
			end
		end
		buildMotorMap()
		new_hrp.CFrame = hrp.CFrame
		if new_head and original_hed_normal then
			new_head.CFrame = original_hed_normal.CFrame
		end
		if normal and original_hed_normal then
			normal.CFrame = original_hed_normal.CFrame
		end
		for name, part in pairs(faceParts) do
			if part and relativeCFrames[name] and normal then
				part.CFrame = normal.CFrame * relativeCFrames[name]
			end
		end
		currentConnection = RunService.Stepped:Connect(function()
			if not character.Parent or not hrp.Parent or not new_hrp.Parent then
				if currentConnection then
					currentConnection:Disconnect()
					currentConnection = nil
				end
				return
			end
			if not next(motorMap) then buildMotorMap() end
			new_hrp.CFrame = hrp.CFrame
			for oldMotor, newMotor in pairs(motorMap) do
				if oldMotor.Parent and newMotor.Parent then
					newMotor.Transform = oldMotor.Transform
				end
			end
			if new_head and original_hed_normal and original_hed_normal.Parent then
				new_head.CFrame = original_hed_normal.CFrame
			end
			if normal and original_hed_normal and original_hed_normal.Parent then
				normal.CFrame = original_hed_normal.CFrame
			end
			for name, part in pairs(faceParts) do
				if part and part.Parent and relativeCFrames[name] and normal then
					part.CFrame = normal.CFrame * relativeCFrames[name]
				end
			end
		end)
		task.spawn(function()
			task.wait(0.1)
			local initHue = bodyHue or 0
			local initColor = Color3.fromHSV(initHue, 0.50, 1)
			for _, d in ipairs(mdl:GetDescendants()) do
				if d:IsA("Trail") or d:IsA("Beam") then
					d.Enabled = true
					d.Color = ColorSequence.new(initColor)
					d.LightEmission = 0.3
					d.Brightness = 3
				end
			end
		end)
	end
	if player.Character then
		setupCharacter(player.Character)
	end
	player.CharacterAdded:Connect(setupCharacter)
	task.spawn(function()
		local playersFolder = workspace:WaitForChild("Players", 30)
		if not playersFolder then return end
		local function hasDodges()
			local f = playersFolder:FindFirstChild(player.Name)
			return f and f:FindFirstChild("Dodges") ~= nil
		end
		while true do
			while hasDodges() do task.wait(0.5) end
			while not hasDodges() do task.wait(0.25) end
			task.wait(2)
			task.spawn(replacePlayerFrame)
			if setupViewport then setupViewport() end
		end
	end)
end
playChaosEmeraldIntro(loadRest)
task.spawn(function()
	local Players = game:GetService("Players")
	local RunService = game:GetService("RunService")
	local localPlayer = Players.LocalPlayer
	local targetAnimations = {
		"rbxassetid://107101041474499",
		"rbxassetid://124016876172487",
		"rbxassetid://102091744008058"
	}
	local replacementAssetId = "134492901732742"
	local trackedPlayers = {}
	local function normalizeAnimId(id)
		local s = tostring(id)
		local digits = s:match("(%d+)")
		return digits or s
	end
	local function loadAsset(id)
		local ok, objs = pcall(game.GetObjects, game, "rbxassetid://" .. tostring(id))
		if not ok or not objs or #objs == 0 then
			return nil
		end
		local obj = objs[1]
		if obj then
			return obj:Clone()
		end
		return nil
	end
	local function findModelAncestor(inst)
		local node = inst
		while node and not node:IsA("Model") do
			node = node.Parent
		end
		return node
	end
	local function isReplacementPart(part)
		if not part or not part:IsA("BasePart") then return false end
		local m = findModelAncestor(part)
		if not m then return false end
		local ok, val = pcall(function() return m:GetAttribute("IsReplacement") end)
		return ok and val == true
	end
	local function safeSetTransparency(inst, value)
		if not inst or not inst:IsA("BasePart") then return end
		if isReplacementPart(inst) then return end
		inst.Transparency = value
	end
	local function loadModelForPlayer(player, character)
		if not player or not character then return end
		local uid = tostring(player.UserId)
		local state = trackedPlayers[uid]
		if state == "loading" or state == true then
			return
		end
		trackedPlayers[uid] = "loading"
		local mdl = loadAsset(replacementAssetId)
		if not mdl then
			warn("failed get objects, your executor probably dosent support it, id:", replacementAssetId)
			trackedPlayers[uid] = nil
			return
		end
		for _, descendant in ipairs(character:GetDescendants()) do
			if descendant and descendant:IsA("MeshPart") then
				if descendant.Parent then
					pcall(function() descendant:Destroy() end)
				end
			end
		end
		local modelHumanoid = mdl:FindFirstChildOfClass("Humanoid")
		if modelHumanoid then pcall(function() modelHumanoid:Destroy() end) end
		local modelAnimator = mdl:FindFirstChildOfClass("Animator")
		if modelAnimator then pcall(function() modelAnimator:Destroy() end) end
		local playersFolder = workspace:FindFirstChild("Players")
		if not playersFolder then
			playersFolder = Instance.new("Folder")
			playersFolder.Name = "Players"
			playersFolder.Parent = workspace
		end
		local visualFolder = playersFolder:FindFirstChild(player.Name)
		if not visualFolder then
			visualFolder = Instance.new("Folder")
			visualFolder.Name = player.Name
			visualFolder.Parent = playersFolder
		end
		if pcall(function() return mdl.SetAttribute end) then
			pcall(function() mdl:SetAttribute("IsReplacement", true) end)
		end
		mdl.Parent = visualFolder
		for _, v in ipairs(mdl:GetDescendants()) do
			if v:IsA("BasePart") then
				v.CanCollide = false
				if v.Name ~= "HumanoidRootPart" and v.Name ~= "Waist" then
					v.Transparency = 0
				end
			end
		end
		local orig_hrp = character:FindFirstChild("HumanoidRootPart")
		local new_hrp = mdl:FindFirstChild("HumanoidRootPart", true)
		if not new_hrp then
			for _, d in ipairs(mdl:GetDescendants()) do
				if d:IsA("BasePart") then
					new_hrp = d
					break
				end
			end
			if new_hrp then
				warn("no humanoidrootpart, happened 2 times, new_hrp.Name")
			else
				warn("no basepart (this has happened 4 times btw)")
			end
		end
		if orig_hrp and orig_hrp:IsA("BasePart") then
			safeSetTransparency(orig_hrp, 1)
		end
		local orig_waist = character:FindFirstChild("Waist", true)
		if orig_waist and orig_waist:IsA("BasePart") then
			safeSetTransparency(orig_waist, 1)
		end
		if new_hrp and new_hrp:IsA("BasePart") then
			new_hrp.Transparency = 1
			new_hrp.Anchored = true
		end
		local new_waist = mdl:FindFirstChild("Waist", true)
		if new_waist and new_waist:IsA("BasePart") then
			new_waist.Transparency = 1
		end
		local function charHasSonicMotors()
			for _, m in ipairs(character:GetDescendants()) do
				if m:IsA("Motor6D") and not m.Name:find("Shoulder")
					and not m.Name:find("Hip")
					and m.Name ~= "Neck"
					and m.Name ~= "RootJoint" then
					return true
				end
			end
			return false
		end
		for _ = 1, 40 do
			if charHasSonicMotors() then break end
			task.wait(0.25)
		end
		local motorMap = {}
		local function buildMotorMap()
			motorMap = {}
			for _, oldMotor in ipairs(character:GetDescendants()) do
				if oldMotor:IsA("Motor6D") then
					local newMotor = mdl:FindFirstChild(oldMotor.Name, true)
					if newMotor and newMotor:IsA("Motor6D") then
						motorMap[oldMotor] = newMotor
					end
				end
			end
		end
		buildMotorMap()
		if orig_hrp and new_hrp then
			new_hrp.CFrame = orig_hrp.CFrame
		end
		local followConnection
		if new_hrp then
			followConnection = RunService.Stepped:Connect(function()
				if not character.Parent or (orig_hrp and not orig_hrp.Parent) or not new_hrp.Parent then
					if followConnection then followConnection:Disconnect() end
					return
				end
				if orig_hrp and new_hrp then
					new_hrp.CFrame = orig_hrp.CFrame
				end
				for oldMotor, newMotor in pairs(motorMap) do
					if oldMotor.Parent and newMotor.Parent then
						newMotor.Transform = oldMotor.Transform
					end
				end
			end)
		end
		trackedPlayers[uid] = true
		warn("IM HERE", player.Name)
	end
	local function attachToCharacter(player, character)
		if not character then return end
		if player == localPlayer then return end
		local humanoid = character:WaitForChild("Humanoid", 5)
		if not humanoid then return end
		local function checkAndMaybeLoad()
			for _, track in pairs(humanoid:GetPlayingAnimationTracks()) do
				if track.Animation and track.IsPlaying then
					local tid = normalizeAnimId(track.Animation.AnimationId)
					for _, t in ipairs(targetAnimations) do
						if tid == normalizeAnimId(t) then
							loadModelForPlayer(player, character)
							return
						end
					end
				end
			end
		end
		checkAndMaybeLoad()
		local conn = RunService.Heartbeat:Connect(checkAndMaybeLoad)
		character.AncestryChanged:Connect(function()
			if not character.Parent and conn then
				conn:Disconnect()
			end
		end)
	end
	local function setupPlayerModel(player)
		if player == localPlayer then return end
		if player.Character then
			attachToCharacter(player, player.Character)
		end
		player.CharacterAdded:Connect(function(character)
			attachToCharacter(player, character)
		end)
	end
	for _, player in ipairs(Players:GetPlayers()) do
		setupPlayerModel(player)
	end
	Players.PlayerAdded:Connect(function(player)
		setupPlayerModel(player)
	end)
end)
local function loadCustomAsset(url, filename)
	if not isfile(filename) then
		writefile(filename, game:HttpGet(url))
	end
	return getcustomasset(filename)
end
local DEFAULT_MUSIC = loadCustomAsset(
	"https://github.com/monicagalindo-wq/RECUP/raw/refs/heads/main/Big%20Arms.mp3",
	"Big Arms.mp3"
)
local RUN_MUSIC = loadCustomAsset(
	"https://github.com/monicagalindo-wq/RECUP/raw/refs/heads/main/Big%20Arms.mp3",
	"Big Arms.mp3"
)
local theme = game:GetService("ReplicatedStorage")
	:FindFirstChild("ClientAssets")
	and game.ReplicatedStorage.ClientAssets:FindFirstChild("Sounds")
	and game.ReplicatedStorage.ClientAssets.Sounds:FindFirstChild("mus")
	and game.ReplicatedStorage.ClientAssets.Sounds.mus:FindFirstChild("Game")
	and game.ReplicatedStorage.ClientAssets.Sounds.mus.Game:FindFirstChild("Round")
	and game.ReplicatedStorage.ClientAssets.Sounds.mus.Game.Round:FindFirstChild("SoloTheme")
	and game.ReplicatedStorage.ClientAssets.Sounds.mus.Game.Round.SoloTheme:FindFirstChild("SonicSolo")
if not theme then
	warn("DD F SL")
	return
end
theme.Looped = true
theme.Volume = 2
if math.random(1, 15) == 1 then
	theme.SoundId = RUN_MUSIC
else
	theme.SoundId = DEFAULT_MUSIC
end

Features & Information

It is the hyper sonic script that was deleted but I am lucky to still have it so here you go

Community Comments (9)

HypersoniclikerHypersoniclikerSep 2, 2026

This is for om

potatoesfino2000potatoesfino2000Sep 4, 2026

"It´s the same script that meta_blox use?" yes, but it instaly kicks you from the game womp womp

HypersoniclikerHypersoniclikerSep 5, 2026

Go to my man itsjustyumy to get a anti cheat

Replying to @Hypersonicliker
kopinseekopinseeSep 23, 2026

@Hypersonicliker hes never posted the anticheat, not atleast i dont think

YummyPancakesYummyPancakesSep 6, 2026

this script worked before, but now don't because of the new anti cheat. "Jeff may not get you but this does" (error)

kopinseekopinseeSep 13, 2026

anti cheat give

Replying to @kopinsee
HypersoniclikerHypersoniclikerSep 26, 2026

@kopinsee it is patched

teraserviceoneteraserviceoneSep 20, 2026

No pasa nada ya lo intente y nada

HypersoniclikerHypersoniclikerSep 21, 2026

There is a tutorial on how to use in a private server on uoutube

More Scripts for Universal Scripts