local Players = game:GetService("Players") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local abilityEnabled = true local hrp local humanoid local function setupCharacter(character) hrp = character:WaitForChild("HumanoidRootPart") humanoid = character:WaitForChild("Humanoid") humanoid.Died:Connect(function() abilityEnabled = false end) end if player.Character then setupCharacter(player.Character) end player.CharacterAdded:Connect(setupCharacter) RunService.RenderStepped:Connect(function() if not abilityEnabled or not hrp or not humanoid then return end local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Blacklist params.FilterDescendantsInstances = {player.Character} local ray = workspace:Raycast( hrp.Position, hrp.CFrame.LookVector * 3, params ) if ray then local moveDir = humanoid.MoveDirection -- Only climb if player is moving if moveDir.Magnitude > 0.1 then hrp.AssemblyLinearVelocity = Vector3.new( hrp.AssemblyLinearVelocity.X, 18, hrp.AssemblyLinearVelocity.Z ) end end end)