local Players = game:GetService("Players") local player = Players.LocalPlayer local backpack = player:WaitForChild("Backpack") local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local hrp = character:WaitForChild("HumanoidRootPart") local camera = workspace.CurrentCamera local playerGui = player:WaitForChild("PlayerGui") local canDash = true local cooldownTime = 1.5 local cooldownStartTime = 0 local dashTool = Instance.new("Tool") dashTool.Name = "Dash" dashTool.RequiresHandle = false dashTool.CanBeDropped = false local dashGui = Instance.new("ScreenGui") dashGui.Name = "DashGUI" dashGui.ResetOnSpawn = false dashGui.Enabled = false local dashButton = Instance.new("TextButton") dashButton.Name = "DashButton" dashButton.Size = UDim2.new(0, 100, 0, 40) dashButton.Position = UDim2.new(1, -110, 1, -140) dashButton.AnchorPoint = Vector2.new(0, 0) dashButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) dashButton.TextColor3 = Color3.fromRGB(255, 255, 255) dashButton.Font = Enum.Font.SourceSansBold dashButton.TextSize = 20 dashButton.Text = "Dash" dashButton.AutoButtonColor = true dashButton.Parent = dashGui local cooldownBar = Instance.new("Frame") cooldownBar.Size = UDim2.new(0, 100, 0, 5) cooldownBar.Position = UDim2.new(1, -110, 1, -150) cooldownBar.BackgroundColor3 = Color3.fromRGB(255, 0, 0) cooldownBar.Parent = dashGui dashTool.Equipped:Connect(function() dashGui.Enabled = true dashGui.Parent = playerGui end) dashTool.Unequipped:Connect(function() dashGui.Enabled = false end) dashButton.MouseButton1Click:Connect(function() if not canDash then return end canDash = false cooldownStartTime = tick() local oldSpeed, oldJump = humanoid.WalkSpeed, humanoid.JumpPower humanoid.WalkSpeed = 0 humanoid.JumpPower = 65 humanoid:ChangeState(Enum.HumanoidStateType.Jumping) local anim = Instance.new("Animation") anim.AnimationId = "rbxassetid://282574440" local track = humanoid:LoadAnimation(anim) track:Play() local sound = Instance.new("Sound") sound.SoundId = "rbxassetid://6128977275" sound.Volume = 1 sound.PlayOnRemove = true sound.Parent = hrp sound:Destroy() local function makeParticle(texture, rate, size, spread) local p = Instance.new("ParticleEmitter") p.Texture = texture p.Rate = rate p.Size = NumberSequence.new(size) p.Lifetime = NumberRange.new(0.3) p.Speed = NumberRange.new(10, 15) p.SpreadAngle = Vector2.new(spread, spread) p.Transparency = NumberSequence.new({NumberSequenceKeypoint.new(0, 0.1), NumberSequenceKeypoint.new(1, 1)}) p.Parent = hrp return p end local smoke = makeParticle("rbxasset://textures/particles/smoke_main.dds", 200, 1.5, 30) local speedLines = makeParticle("rbxassetid://11978082513", 10, 2, 15) local oldFov = camera.FieldOfView camera.FieldOfView = 90 task.delay(0.5, function() camera.FieldOfView = oldFov end) local function camShake() local startTime = tick() while tick() - startTime < 0.3 do local offset = Vector3.new( math.random(-1,1)*0.2, math.random(-1,1)*0.2, math.random(-1,1)*0.2 ) camera.CFrame = camera.CFrame * CFrame.new(offset) task.wait() end end task.spawn(camShake) task.delay(0.2, function() hrp.Velocity = hrp.CFrame.LookVector * 100 -- Reduced dash boost to 100 end) task.delay(0.3, function() humanoid.PlatformStand = true local bodyGyro = Instance.new("BodyGyro") bodyGyro.D = 500 bodyGyro.MaxTorque = Vector3.new(400000, 0, 400000) bodyGyro.CFrame = hrp.CFrame * CFrame.Angles(math.rad(70), 0, 0) bodyGyro.Parent = hrp task.delay(0.75, function() humanoid.PlatformStand = false bodyGyro:Destroy() end) end) task.delay(0.2, function() local particleCount = 0 while particleCount < 3 do local ring = makeParticle("rbxassetid://12201347394", 0, 8, 10) -- Bigger rings, visible and move backward ring.Speed = NumberRange.new(0, 0) ring.SpreadAngle = Vector2.new(0, 0) ring.Size = NumberSequence.new(8) ring.Lifetime = NumberRange.new(1) ring.Position = hrp.Position + Vector3.new(0, 3, -10 * (particleCount + 1)) -- Backward spawn task.delay(0.5, function() ring.Enabled = false end) particleCount = particleCount + 1 end end) task.delay(1, function() if track and track.IsPlaying then track:Stop() end smoke.Enabled = false speedLines.Enabled = false smoke:Destroy() speedLines:Destroy() end) task.delay(cooldownTime, function() humanoid.WalkSpeed = oldSpeed humanoid.JumpPower = oldJump canDash = true end) end) game:GetService("RunService").Heartbeat:Connect(function() local elapsed = tick() - cooldownStartTime cooldownBar.Size = UDim2.new(0, 100 * (1 - elapsed / cooldownTime), 0, 5) if elapsed >= cooldownTime then cooldownBar.Size = UDim2.new(0, 100, 0, 5) end end) dashTool.Parent = backpack