--// HYPER SONIC (COSMETIC ONLY + FLY ANIMATION) --// No speed, jump, FOV, gravity, velocity, or movement cheats --// Walking stays normal, animation LOOKS like flying --// Press M to unload local Players = game:GetService("Players") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local player = Players.LocalPlayer -- ================== CONFIG ================== local EMERALDS_ID = "rbxassetid://132942718178268" local TRANSFORM_SOUND_ID = "rbxassetid://9048375065" local HYPER_THEME_ID = "rbxassetid://1843237513" -- Reused flying animation (from your script) -- Reused flying animations (from your script) local FLY_SLOW_ANIM_ID = "rbxassetid://86229317461320" -- your current fly anim local FLY_FAST_ANIM_ID = "rbxassetid://137747804761111" -- from your big script local FLY_FAST_WALKSPEED = 20 local flyTrackSlow, flyTrackFast = nil, nil local flyAnimSlow, flyAnimFast = nil, nil local flyHBConn = nil local function stopFlyTracks(fade) fade = fade or 0.2 if flyTrackSlow and flyTrackSlow.IsPlaying then pcall(function() flyTrackSlow:Stop(fade) end) end if flyTrackFast and flyTrackFast.IsPlaying then pcall(function() flyTrackFast:Stop(fade) end) end end local SONIC_PARTS = { "Cube.001","Cube.002","Cube.003","Cube.004","Ear1","Ear2","normal", "Body","LArm1","LArm2","LArm3","LArm4","LArm5", "LFoot1","LFoot2","LFoot3","LFoot4","LFoot5", "RArm1","RArm2","RArm3","RArm4","RArm5", "RLeg1","RLeg2","RLeg3","RLeg4","RLeg5", "left backspike","right backspike","tail" } -- ================== INTERNAL ================== local alive = true local conns = {} local insts = {} local originalProps = {} local flyTrack = nil local flyAnim = nil local function trackConn(c) table.insert(conns,c) return c end local function trackInst(i) table.insert(insts,i) return i end local function remember(p) if originalProps[p] then return end originalProps[p] = {Color=p.Color, Material=p.Material} end local function unload() alive = false for _,c in ipairs(conns) do pcall(function() c:Disconnect() end) end for _,i in ipairs(insts) do pcall(function() if i.Parent then i:Destroy() end end) end for p,props in pairs(originalProps) do if p and p.Parent then p.Color = props.Color p.Material = props.Material end end pcall(function() if flyTrack then flyTrack:Stop() end end) end -- ================== FLY ANIMATION (VISUAL ONLY) ================== local function startFlyVisual(humanoid) -- cleanup previous if flyHBConn then flyHBConn:Disconnect() flyHBConn = nil end stopFlyTracks(0) if flyAnimSlow then flyAnimSlow:Destroy() flyAnimSlow = nil end if flyAnimFast then flyAnimFast:Destroy() flyAnimFast = nil end flyTrackSlow, flyTrackFast = nil, nil -- load anims flyAnimSlow = trackInst(Instance.new("Animation")) flyAnimSlow.AnimationId = FLY_SLOW_ANIM_ID flyAnimFast = trackInst(Instance.new("Animation")) flyAnimFast.AnimationId = FLY_FAST_ANIM_ID local ok1, t1 = pcall(function() return humanoid:LoadAnimation(flyAnimSlow) end) local ok2, t2 = pcall(function() return humanoid:LoadAnimation(flyAnimFast) end) if not ok1 or not t1 then return end if not ok2 or not t2 then return end flyTrackSlow, flyTrackFast = t1, t2 flyTrackSlow.Looped = true flyTrackFast.Looped = true -- make sure they override default movement anims while active flyTrackSlow.Priority = Enum.AnimationPriority.Action flyTrackFast.Priority = Enum.AnimationPriority.Action local current = "none" local function setWhich(which) if which == current then return end current = which if which == "slow" then if flyTrackFast.IsPlaying then flyTrackFast:Stop(0.15) end if not flyTrackSlow.IsPlaying then flyTrackSlow:Play(0.15) end elseif which == "fast" then if flyTrackSlow.IsPlaying then flyTrackSlow:Stop(0.15) end if not flyTrackFast.IsPlaying then flyTrackFast:Play(0.15) end else stopFlyTracks(0.2) end end -- update loop: only play while moving; pick fast vs slow by WalkSpeed flyHBConn = trackConn(RunService.Heartbeat:Connect(function() if not alive then return end local moving = humanoid.MoveDirection.Magnitude > 0.05 if not moving then setWhich("none") return end if humanoid.WalkSpeed > FLY_FAST_WALKSPEED then setWhich("fast") else setWhich("slow") end end)) end -- ================== VISUAL RGB ================== local function applyHyperVisuals(char) local parts = {} for _,name in ipairs(SONIC_PARTS) do local p = (char:FindFirstChild("hed") and char.hed:FindFirstChild(name)) or char:FindFirstChild(name) if p and p:IsA("BasePart") then remember(p) p.Material = Enum.Material.Neon table.insert(parts,p) end end local hue = 0 trackConn(RunService.Heartbeat:Connect(function(dt) if not alive then return end hue = (hue + dt * 1.2) % 1 local col = Color3.fromHSV(hue,0.45,1) for _,p in ipairs(parts) do if p.Parent then p.Color = col end end for _,d in ipairs(char:GetDescendants()) do if d:IsA("Trail") or d:IsA("Beam") then d.Color = ColorSequence.new(col) end end end)) end -- ================== INTRO ================== local function playIntro(callback) local char = player.Character if not char then return end local root = char:WaitForChild("HumanoidRootPart") local ok,objs = pcall(game.GetObjects,game,EMERALDS_ID) local mdl = ok and objs[1] and objs[1]:Clone() if not mdl then return end mdl.Parent = workspace trackInst(mdl) local emeralds = {} for _,p in ipairs(mdl:GetDescendants()) do if p:IsA("BasePart") then p.Anchored = true p.CanCollide = false table.insert(emeralds,p) end end local t = 0 local spin spin = trackConn(RunService.Heartbeat:Connect(function(dt) t += dt for i,e in ipairs(emeralds) do local a = (i * math.pi*2/#emeralds) + t*5 e.Position = root.Position + Vector3.new(math.cos(a)*9,2,math.sin(a)*9) end if t >= 8 then spin:Disconnect() for _,e in ipairs(emeralds) do TweenService:Create(e,TweenInfo.new(0.35),{Position=root.Position,Size=Vector3.zero}):Play() end task.delay(0.4,function() local s = Instance.new("Sound",root) s.SoundId = TRANSFORM_SOUND_ID s.Volume = 3 s:Play() if callback then callback() end mdl:Destroy() end) end end)) end -- ================== START ================== task.spawn(function() while alive do local pf = workspace:FindFirstChild("Players") if pf then local f = pf:FindFirstChild(player.Name) if f and f:FindFirstChild("Dodges") then playIntro(function() local char = player.Character if not char then return end applyHyperVisuals(char) local hum = char:FindFirstChildOfClass("Humanoid") if hum then startFlyVisual(hum) end end) return end end task.wait(0.1) end end) -- ================== UNLOAD ================== trackConn(UserInputService.InputBegan:Connect(function(i,gp) if gp then return end if i.KeyCode == Enum.KeyCode.M then unload() end end)) print("[Hyper Sonic] Cosmetic + flying animation loaded (fair mode). Press M to unload.")