Parkour v2 with ragdoll anim on down
Key RequiredUniversal

Parkour v2 with ragdoll anim on down

Universal Scriptsauga77kjksauga77kjk 3.7K views 155 executesUpdated Nov 8, 2024
Unrated
00
Lua Script•1848 lines (49472 chars)
--Emetimex
plr = game.Players.LocalPlayer
local colormansup = 255
local sliding = false

if plr:WaitForChild("PlayerScripts"):FindFirstChild("Player Stuff") then

	plr:WaitForChild("PlayerScripts"):FindFirstChild("Player Stuff"):Destroy()

	end

local camerakill = false
mobile = false
local downeddel= false
local walkingmode = false
char  = plr.Character
if char:FindFirstChild("ClientInputHandler") then
	char:FindFirstChild("ClientInputHandler"):Destroy()
end
if plr:FindFirstChild("Status") then
	plr:FindFirstChild("Status"):Destroy()
end
if game.Workspace:FindFirstChild("Remote") then
if game.Workspace:FindFirstChild("Remote"):FindFirstChild("TeamEvent") then
Workspace.Remote.TeamEvent:FireServer("Medium stone grey")
end
end
local downed = false
local combatmusic = Instance.new("Sound",char)
combatmusic.Volume = 0
combatmusic.PlaybackSpeed = 1
combatmusic.Looped = true



local ambience = Instance.new("Sound",char)
ambience.Volume = 0.5
ambience.PlaybackSpeed = 1
ambience.Looped = true

local winder = Instance.new("Sound",char)
winder.SoundId = "rbxassetid://337604103"
winder.Volume = 0
winder.PlaybackSpeed = 1
winder.Looped = true
winder:Play()
local windercloth = Instance.new("Sound",char)
windercloth.SoundId = "rbxassetid://195879271"
windercloth.Volume = 0
windercloth.PlaybackSpeed = 1
windercloth.Looped = true
windercloth:Play()
local explorationmusic = Instance.new("Sound",char)
explorationmusic.Volume = 0
explorationmusic.PlaybackSpeed = 1
explorationmusic.Looped = true

local rannum = math.random(1,11)
if rannum == 1 then
   combatmusic.SoundId = "rbxassetid://4842424057"
explorationmusic.SoundId = "rbxassetid://6092889291"
ambience.SoundId = "rbxassetid://4842514147" 
 ambience:Play()
 explorationmusic:Play()
 combatmusic:Play()
end
if rannum == 2 then
   combatmusic.SoundId = "rbxassetid://5167357719"
explorationmusic.SoundId = "rbxassetid://5136807172"
ambience.SoundId = "rbxassetid://5136807172" 
 ambience:Play()
 explorationmusic:Play()
 combatmusic:Play()
end
if rannum == 3 then
   combatmusic.SoundId = "rbxassetid://5355007603"
explorationmusic.SoundId = "rbxassetid://5192956194"
ambience.SoundId = "rbxassetid://5192956194" 
 ambience:Play()
 explorationmusic:Play()
 combatmusic:Play()
end
if rannum == 4 then
   combatmusic.SoundId = "rbxassetid://1591306349"
explorationmusic.SoundId = "rbxassetid://5246801658"
ambience.SoundId = "rbxassetid://5167384455" 
 ambience:Play()
 explorationmusic:Play()
 combatmusic:Play()
end
if rannum == 5 then
   combatmusic.SoundId = "rbxassetid://5356631522"
explorationmusic.SoundId = "rbxassetid://4502246491"
ambience.SoundId = "rbxassetid://4502246491" 
 ambience:Play()
 explorationmusic:Play()
 combatmusic:Play()
end
if rannum == 6 then
   combatmusic.SoundId = "rbxassetid://5183689299"
explorationmusic.SoundId = "rbxassetid://538850338"
ambience.SoundId = "rbxassetid://538850338" 
 ambience:Play()
 explorationmusic:Play()
 combatmusic:Play()
end
if rannum == 7 then
   combatmusic.SoundId = "rbxassetid://5258344366"
explorationmusic.SoundId = "rbxassetid://5079119831"
ambience.SoundId = "rbxassetid://5079119831" 
 ambience:Play()
 explorationmusic:Play()
 combatmusic:Play()
end
if rannum == 8 then
   combatmusic.SoundId = "rbxassetid://5995057631"
explorationmusic.SoundId = "rbxassetid://477207390"
ambience.SoundId = "rbxassetid://477207390" 
 ambience:Play()
 explorationmusic:Play()
 combatmusic:Play()
end
if rannum == 9 then
   combatmusic.SoundId = "rbxassetid://4841933336"
explorationmusic.SoundId = "rbxassetid://5114418235"
ambience.SoundId = "rbxassetid://5114418235" 
 ambience:Play()
 explorationmusic:Play()
 combatmusic:Play()
end
if rannum == 10 then
   combatmusic.SoundId = "rbxassetid://5132571388"
explorationmusic.SoundId = "rbxassetid://5995060646"
ambience.SoundId = "rbxassetid://5995060646" 
 ambience:Play()
 explorationmusic:Play()
 combatmusic:Play()
end
if rannum == 11 then
   combatmusic.SoundId = "rbxassetid://5433879104"
explorationmusic.SoundId = "rbxassetid://4692224051"
ambience.SoundId = "rbxassetid://4692224051" 
 ambience:Play()
 explorationmusic:Play()
 combatmusic:Play()
end

local tricksinarow = 0
local tricktime = 0
local timestanding = 0
local combattime = 0



root = char:WaitForChild("HumanoidRootPart")

local slidingsound = Instance.new("Sound",root)
slidingsound.SoundId = "rbxassetid://4086205029"
slidingsound.PlaybackSpeed = 1.25
slidingsound.Looped = true
slidingsound.Volume = 0.75

local wallrunningsound = Instance.new("Sound",root)
wallrunningsound.SoundId = "rbxassetid://401049343"
wallrunningsound.PlaybackSpeed = 1
wallrunningsound.Looped = true
wallrunningsound.Volume = 0.75


function randomclothrollsound(truth)
	coroutine.resume(coroutine.create(function()
	    if truth ~= nil then
	         local s = Instance.new("Sound",root)
	    s.Volume = 0.8 +math.random(1,6)*0.05
	     s.PlaybackSpeed = 0.8 +math.random(1,6)*0.05
	    
	     local rannum = math.random(1,5)
	     if rannum == 1 then 
	         s.SoundId = "rbxassetid://4086203738"
	         elseif rannum == 2 then
	         s.SoundId = "rbxassetid://4086203442"
	         elseif rannum == 3 then
	             s.SoundId = "rbxassetid://4086203142"
	         elseif rannum == 4 then
                 s.SoundId = "rbxassetid://4086203973"
                 else
	         s.SoundId = "rbxassetid://4307029050"
	         end
	    
	    
	    s:Play()
	     game:GetService("Debris"):AddItem(s,4)
	        else
	         local s = Instance.new("Sound",root)
	    s.Volume = 0.25 +math.random(1,6)*0.05
	     s.PlaybackSpeed = 0.8 +math.random(1,6)*0.05
	    
	     local rannum = math.random(1,7)
	     if rannum == 1 then 
	         s.SoundId = "rbxassetid://3929467229"
	         elseif rannum == 2 then
	         s.SoundId = "rbxassetid://3929467449"
	         elseif rannum == 3 then
	             s.SoundId = "rbxassetid://3929467655"
	         elseif rannum == 4 then
                 s.SoundId = "rbxassetid://3929467888"
                 	         elseif rannum == 5 then
                 s.SoundId = "rbxassetid://4458760046"
                 	         elseif rannum == 6 then
                 s.SoundId = "rbxassetid://4458760518"
                 else
	         s.SoundId = "rbxassetid://4458759938"
	         end
	    
	    
	    s:Play()
	     game:GetService("Debris"):AddItem(s,4)
	        end
	   
	end))
    
    end


local rollingsound = Instance.new("Sound",root)
rollingsound.SoundId = "rbxassetid://2985734522"
rollingsound.PlaybackSpeed = 1
rollingsound.Volume = 0.75

local bodymovesound = Instance.new("Sound",root)
bodymovesound.SoundId = "rbxassetid://152206206"
bodymovesound.PlaybackSpeed = 0.945
bodymovesound.Volume = 2.35


local downedsound = Instance.new("Sound",root)
downedsound.SoundId = "rbxassetid://178088040"
downedsound.PlaybackSpeed = 1
downedsound.Volume = 3



local jumplandsoundthingy = Instance.new("Sound",root)
jumplandsoundthingy.SoundId = "rbxassetid://6079431954"
jumplandsoundthingy.PlaybackSpeed = 0.785
jumplandsoundthingy.Volume = 2

hum = char:WaitForChild("Humanoid")
hum.JumpPower = 50
hum.JumpHeight = 7.199999809265137
	local colorparkourkill = Instance.new("ColorCorrectionEffect",game.Lighting)
	colorparkourkill.Saturation = 0
	colorparkourkill.TintColor = Color3.new(1,1,1)
if game.Lighting:FindFirstChild("COLORPARKOURKILL") then
	game.Lighting:FindFirstChild("COLORPARKOURKILL"):Destroy()


end
torso = char:WaitForChild("Torso")
local gyro = Instance.new("BodyGyro",torso)
gyro.D = 200
gyro.P = 1800
local cameratilterman = 0
local springjumpdel  =false
local gobackroll = false
local befpower = gyro.P
gyro.P = befpower
gyro.MaxTorque = Vector3.new(0,0,0)
local runvel = Instance.new("BodyVelocity",root)
runvel.MaxForce = Vector3.new(0,0,0)
runvel.P = 9999999999999999999999
hum.WalkSpeed =20

local flowmax = 35
local flowmin = 16
local dodgedel = false
local crouchspeed = 8
local flow = flowmin
for i,v in pairs(workspace:GetDescendants()) do
	if v.ClassName == "Part" or v.ClassName == "UnionOperation" or v.ClassName == "MeshPart" then
		if v.ClassName == "UnionOperation" then
			v.CollisionFidelity = Enum.CollisionFidelity.PreciseConvexDecomposition
		end
		if v.Transparency == 1 then
			v.CanCollide = false
		end

	end

end
floorpositiony = 0
local UIS = game:GetService("UserInputService")
local GuiService = game:GetService("GuiService")

if UIS.TouchEnabled and not UIS.KeyboardEnabled and not UIS.MouseEnabled
	and not UIS.GamepadEnabled and not GuiService:IsTenFootInterface() then

	mobile = true
	jb = plr.PlayerGui:WaitForChild("TouchGui"):WaitForChild("TouchControlFrame"):WaitForChild("JumpButton")
	jb.MouseButton1Down:Connect(function()
		wallrunabletrue()
		wallruncheck()
	end)
end
local leftwallrunanim = Instance.new("Animation",char)
leftwallrunanim.AnimationId = "rbxassetid://180426354"
local leftwallrunanimplay = hum:LoadAnimation(leftwallrunanim)


local downedanim1 = Instance.new("Animation",char)
downedanim1.AnimationId = "rbxassetid://282574440"
local downedanim1play = hum:LoadAnimation(downedanim1)
local downedanim2play do
--[[
	WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
howmuchtpose = 0.2 --u can set it to minimum 0 to maximum 1. (how ever will bug out custom animations tho)

local r=Instance.new("Animation")
r.AnimationId="rbxassetid://27432686"
local t=game.Players.LocalPlayer.Character
local h=t.Humanoid
local a=h:LoadAnimation(r)
a.Priority = "Idle"
downedanim2play = a
end



local rightwallrunanim = Instance.new("Animation",char)
rightwallrunanim.AnimationId = "rbxassetid://180426354"
local rightwallrunanimplay = hum:LoadAnimation(rightwallrunanim)


local verticalwallrunanim = Instance.new("Animation",char)
verticalwallrunanim.AnimationId = "rbxassetid://180426354"
local verticalwallrunanimplay = hum:LoadAnimation(verticalwallrunanim)

local roll = Instance.new("Animation",char)
roll.AnimationId = "rbxassetid://180612465"
local rollplay = hum:LoadAnimation(roll)


local crouching = Instance.new("Animation",char)
crouching.AnimationId = "rbxassetid://287325678"
local crouchingplay = hum:LoadAnimation(crouching)

local springjump = Instance.new("Animation",char)
springjump.AnimationId = "rbxassetid://287325678"
local springjumpplay = hum:LoadAnimation(springjump)


local dodging = Instance.new("Animation",char)
dodging.AnimationId = "rbxassetid://287325678"
local dodgingplay = hum:LoadAnimation(dodging)

local slidinganim = Instance.new("Animation",char)
slidinganim.AnimationId = "rbxassetid://132546884"
local slidingplay = hum:LoadAnimation(slidinganim)
local rollering = false


hum.Died:Connect(function()
if game.Workspace:FindFirstChild("Remote") then
if game.Workspace:FindFirstChild("Remote"):FindFirstChild("TeamEvent") then
Workspace.Remote.TeamEvent:FireServer("Bright orange") 

end
end
	camerakill = true
	colorparkourkill:Destroy()
	for i = 20,1,-1 do
wait()
combatmusic.PlaybackSpeed = combatmusic.PlaybackSpeed-0.05
ambience.PlaybackSpeed = ambience.PlaybackSpeed-0.05
explorationmusic.PlaybackSpeed = explorationmusic.PlaybackSpeed-0.05
end

end)

local tappeda = false
local tappeds = false
local tappedd = false
local tappedw = false
UIS.InputEnded:Connect(function(input,gamestuff)
	if input.KeyCode == Enum.KeyCode.S then
		if gamestuff then return end

		gobackroll  = false
	end
end)


UIS.InputBegan:Connect(function(input,gamestuff)
        	if input.KeyCode == Enum.KeyCode.N then
		if gamestuff then return end

if walkingmode == false then
walkingmode = true
else
walkingmode = false
end
	end
        	if input.KeyCode == Enum.KeyCode.M then
		if gamestuff then return end
		if ambience.PlaybackSpeed ~= 0 then
		    ambience.PlaybackSpeed  = 0
		     combatmusic.PlaybackSpeed  = 0
		      explorationmusic.PlaybackSpeed  = 0
		      else
		      		    ambience.PlaybackSpeed  = 1
		     combatmusic.PlaybackSpeed  = 1
		      explorationmusic.PlaybackSpeed  = 1
		    end
		
		end
    

	if input.KeyCode == Enum.KeyCode.S then
		if gamestuff then return end

		gobackroll  = true
	end
		if downed == true then return end
	if sliding == true then return end
	if input.KeyCode == Enum.KeyCode.A then
		if hitfloor == false then return end
		if gamestuff then return end
		if tappeda == false then
			tappeda = true
			wait(0.25)
			tappeda = false
		else
			if dodgedel == false then
				dodgedel = true
				dodgingplay:Play()
				randomclothrollsound()
				local bv = Instance.new("BodyVelocity",char:WaitForChild("Head"))
				bv.Velocity = root.CFrame.RightVector*-flow*2+Vector3.new(0,flow/2,0)
				bv.MaxForce = Vector3.new(99999,99999,99999)
				bv.P = 99999999999999
				wait(0.1)
				bv:Destroy()
				wait(0.2)
				dodgingplay:Stop()
				dodgedel = false
			end

		end

	end
	if input.KeyCode == Enum.KeyCode.S then
		if hitfloor == false then return end
		if gamestuff then return end
		if tappeds == false then
			tappeds = true
			wait(0.25)
			tappeds = false
		else
			if dodgedel == false then
				dodgedel = true
				dodgingplay:Play()
					randomclothrollsound()
				local bv = Instance.new("BodyVelocity",char:WaitForChild("Head"))
				bv.Velocity = root.CFrame.LookVector*-flow*2+Vector3.new(0,flow/2,0)
				bv.MaxForce = Vector3.new(99999,99999,99999)
				bv.P = 99999999999999
				wait(0.1)
				bv:Destroy()
				wait(0.2)
				dodgingplay:Stop()
				dodgedel = false
			end

		end

	end
	if input.KeyCode == Enum.KeyCode.D then
		if hitfloor == false then return end
		if gamestuff then return end
		if tappedd == false then
			tappedd = true
			wait(0.25)
			tappedd = false
		else
			if dodgedel == false then
				dodgedel = true
				dodgingplay:Play()
					randomclothrollsound()
				local bv = Instance.new("BodyVelocity",char:WaitForChild("Head"))
				bv.Velocity = root.CFrame.RightVector*flow*2+Vector3.new(0,flow/2,0)
				bv.MaxForce = Vector3.new(99999,99999,99999)
				bv.P = 99999999999999
				wait(0.1)
				bv:Destroy()
				wait(0.2)
				dodgingplay:Stop()
				dodgedel = false
			end

		end

	end
	if input.KeyCode == Enum.KeyCode.W then
		if gamestuff then return end
		if hitfloor == false then return end
		if tappedw == false then
			tappedw = true
			wait(0.25)
			tappedw = false
		else
			if dodgedel == false then
				dodgedel = true
				dodgingplay:Play()
					randomclothrollsound()
				local bv = Instance.new("BodyVelocity",char:WaitForChild("Head"))
				bv.Velocity = root.CFrame.LookVector*flow*2+Vector3.new(0,flow/2,0)
				bv.MaxForce = Vector3.new(99999,99999,99999)
				bv.P = 99999999999999
				wait(0.1)
				bv:Destroy()
				wait(0.2)
				dodgingplay:Stop()
				dodgedel = false
			end

		end

	end
end)

hum:SetStateEnabled(Enum.HumanoidStateType.FallingDown, false)
hum:SetStateEnabled(Enum.HumanoidStateType.Ragdoll, false)

--rollplay:AdjustSpeed(0)
--rollplay.TimePosition = 1

local player = game.Players.LocalPlayer
local character = player.Character
local hum = character:FindFirstChild("Humanoid")
if not character or not character.Parent then
	character = player.CharacterAdded:wait()
	  if camerakill == true then return end
end
local torso = character:WaitForChild("Torso")
local rightShoulder = torso:WaitForChild("Right Shoulder")
local leftShoulder = torso:WaitForChild("Left Shoulder")
local camera = game.Workspace.CurrentCamera

updateSpeed = 0.5/2


local plr = game.Players.LocalPlayer
local char = plr.Character
	local ignorelist = {plr.Character}
	for i,v in pairs(workspace:GetDescendants()) do
	    if v.ClassName == "Part" or v.ClassName == "MeshPart" or v.ClassName == "UnionOperation" then
	        if v.CanCollide == false or v.Transparency == 1 then 
	            
	            ignorelist[#ignorelist+1] = v
	            end
	        end
	    end
leftarm = char:WaitForChild("Left Arm")
rightarm = char:WaitForChild("Right Arm")
leftleg = char:WaitForChild("Left Leg")
if char:FindFirstChild("Head"):FindFirstChild("BillboardGui") then
	char:FindFirstChild("Head"):FindFirstChild("BillboardGui"):Destroy()
end
local flowermax = flowmax-flowmin
local killermancamfov = 0
rightleg = char:WaitForChild("Right Leg")
local hum = char:WaitForChild("Humanoid")

local rootpart,head = char:WaitForChild("HumanoidRootPart"),char:WaitForChild("Head")

game:GetService("RunService"):BindToRenderStep("CameraOffset",Enum.RenderPriority.Character.Value+1,function()
	local offsetman = 1.5	
	if sliding == true then
		offsetman = 0


	end
	if hum.Health == 0 then script:Destroy() end
	local distance = (character.Head.Position - camera.CoordinateFrame.p).magnitude
	if distance < 1 then
		rightShoulder.C0 = rightShoulder.C0:lerp((camera.CoordinateFrame * CFrame.new(1, -1, 0)):toObjectSpace(torso.CFrame):inverse() * CFrame.Angles(0, math.pi/2, 0), updateSpeed)
		leftShoulder.C0 = leftShoulder.C0:lerp((camera.CoordinateFrame * CFrame.new(-1, -1, 0)):toObjectSpace(torso.CFrame):inverse() * CFrame.Angles(0, -math.pi/2, 0), updateSpeed)
	else
		rightShoulder.C0 = rightShoulder.C0:lerp(CFrame.new(1, 0.5, 0) * CFrame.Angles(0, math.pi/2, 0),updateSpeed)
		leftShoulder.C0 = leftShoulder.C0:lerp(CFrame.new(-1, 0.5, 0) * CFrame.Angles(0, -math.pi/2, 0),updateSpeed)
	end
        hum.CameraOffset = (rootpart.CFrame+Vector3.new(0,offsetman,0)):pointToObjectSpace(head.CFrame.p) - Vector3.new(0,0.25,1)
        hum.CameraOffset = (rootpart.CFrame+Vector3.new(0,offsetman,0)):pointToObjectSpace(head.CFrame.p)
	rightarm.LocalTransparencyModifier = rightarm.Transparency--+0.5
	leftarm.LocalTransparencyModifier = leftarm.Transparency--+0.5
	leftleg.LocalTransparencyModifier = leftleg.Transparency--+0.5
	rightleg.LocalTransparencyModifier = rightleg.Transparency--+0.5
    if leftleg then
    if leftleg.Parent then
    if leftleg.Parent:FindFirstChild"Torso" then
    --leftleg.Parent.Torso.LocalTransparencyModifier = leftleg.Parent.Torso.Transparency
    end
    end
    end
	if camerakill == false then
--game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.All, true)
		killermancamfov = 20*(flow/flowermax)
		colorparkourkill.TintColor = Color3.new(1,colormansup/255,colormansup/255)
		colormansup = colormansup+5
		if colormansup> 255 then
			colormansup = 255
		end
		cam.FieldOfView = 50+killermancamfov
		cam.CFrame = cam.CFrame*CFrame.Angles(0,0,math.rad(cameratilterman))

	end
end)
local befh = hum.Health




local function round(number, decimalPlaces)
	number = math.round(number * 10^decimalPlaces) * 10^-decimalPlaces
end
local humdowner = false

function downer()
    
     flow = flow-flowmax/10
                            downedanim1play.Priority = "Idle"
					        downedanim1play:Play(0.275)
                            downedanim1play:AdjustSpeed(0.05)
                            downedanim2play:Play(0.275)
                            downedanim2play:AdjustSpeed(0)
                            downedanim2play:AdjustWeight(0.45+math.random())
                            local pchar=game:GetService"Players".LocalPlayer.Character
                            local AnimationId = "33796059"
                            local SpasmAnim = Instance.new("Animation")SpasmAnim.AnimationId = "rbxassetid://"..AnimationId
                            local Spasm = pchar:FindFirstChildOfClass('Humanoid'):LoadAnimation(SpasmAnim)
                            Spasm.Priority = 'Action2'
                            Spasm:Play()
                            Spasm:AdjustSpeed(math.random(2,5))
                            Spasm.TimePosition = math.random(0,6)
                            delay(0.075+(math.random()*0.25),function()Spasm:Stop(0.275)end)
                            --hum.PlatformStand = true
                            
					        colormansup = colormansup-60
					        downedsound:play()
					        	randomclothrollsound(true)
					        		randomclothrollsound(true)
					        			randomclothrollsound()
					        			randomclothrollsound()
					        			randomclothrollsound()
downed = true
hum.JumpPower = 0
hum.JumpHeight = 0
downeddel = true
coroutine.resume(coroutine.create(function()
						
					
					local tiltnumb = 0
					local rannum = math.random(1,4)
					
					if rannum == 1 then
						tiltnumb = 80
						elseif rannum == 2 then
						tiltnumb = 50
					elseif rannum == 3 then
						tiltnumb = -80
						else
						tiltnumb = -50
					end
	
					local cameratilterman2 =tiltnumb*0.2
					



					local cameratiltermax = cameratilterman2
					
					local sinnerman = 1
					local sinnerman2 = 0
					for i = 20,1,-1 do
						game:GetService("RunService").RenderStepped:Wait()
						  if camerakill == true then return end
						sinnerman = sinnerman-0.05
						sinnerman2 = math.sin(sinnerman*1.25)
						--print(sinnerman .. " I AM SIN")
						cameratilterman2 = cameratiltermax*sinnerman2
						
						cam.CFrame = cam.CFrame*CFrame.Angles(0,0,math.rad(cameratilterman2))
					end
	wait(1)
				downeddel = false

end))
    end

hum.HealthChanged:Connect(function()
	colorparkourkill.Saturation = -1+hum.Health/hum.MaxHealth
	if hum.Health/hum.MaxHealth < 0.25 then
	    
	    if humdowner == false then
	        humdowner = true
	         downer()
	        end
	    end
	
	
	if hum.Health < befh then
	    combattime = 18
		local damagetiltmax = befh - hum.Health
		round(damagetiltmax,1)
		colormansup = colormansup-damagetiltmax*4.25
		local cameratilterman2 = math.random(damagetiltmax*-20,damagetiltmax*20)
		cameratilterman2 =     cameratilterman2 *0.05

		local cameratilterman3 = math.random(damagetiltmax*-20,damagetiltmax*20)
		cameratilterman3 =     cameratilterman3 *0.0008675


		local cameratiltermax = cameratilterman2
		local cameratiltermax2 = cameratilterman3
		local sinnerman = 1
		local sinnerman2 = 0
		for i = 10,1,-1 do
			game:GetService("RunService").RenderStepped:Wait()
			  
			sinnerman = sinnerman-0.1
			sinnerman2 = math.sin(sinnerman*1.25)
			--print(sinnerman .. " I AM SIN")
			cameratilterman2 = cameratiltermax*sinnerman2
			cameratilterman3 = cameratiltermax2*sinnerman2
			cam.CFrame = cam.CFrame*CFrame.Angles(math.rad(cameratilterman3),0,math.rad(cameratilterman2))
		end


	end

	befh = hum.Health        

end)

function tilterepic(maxnumbman,slideringman)
	coroutine.resume(coroutine.create(function()

		if maxnumbman ~= 0 then
			local sinnerman = 0
			local slidingtruth = false
			if slideringman ~= nil then
				if slideringman == true then
					slidingtruth = true
				end
			end
			for i = 20,1,-1 do
				if slidingtruth == false then
					if wallrunning == false then return end      
				end

				if slidingtruth == true then
					if sliding == false then return end
				end

				game:GetService("RunService").RenderStepped:Wait()
				  if camerakill == true then return end
				sinnerman = sinnerman+0.05
				sinnerman = math.sin(sinnerman*1.25)
				--print(sinnerman .. " I AM SIN2")
				cameratilterman = maxnumbman*sinnerman
			end
		else
			print("I AM ZERO BOYO")
			local cameratiltermax = cameratilterman

			local sinnerman = 1
			local sinnerman2 = 0
			for i = 10,1,-1 do
				game:GetService("RunService").RenderStepped:Wait()
				  if camerakill == true then return end
				sinnerman = sinnerman-0.1
				sinnerman2 = math.sin(sinnerman*1.25)
				--print(sinnerman .. " I AM SIN")
				cameratilterman = cameratiltermax*sinnerman2
			end
			wait()
			cameratilterman = 0
		end
	end))
end


local rolldel =false
function roll()
    
	if sliding == true then return end
	if hitfloor == false then return end
	if wallrunning == true then return end
	if rolldel == true then return end
	rolldel = true
	randomclothrollsound(true)
	rollingsound.TimePosition = 0.3
	rollingsound:Play()
	root.Velocity = Vector3.new(0,0,0)
	local x, y, z = root.CFrame:ToEulerAnglesYXZ()
	rollering = true
tricksinarow = tricksinarow+1
	local rollmancf = CFrame.new(Vector3.new(root.Position.X,floorpositiony+1.5,root.Position.Z))*CFrame.Angles(0, y, 0)

	root.CFrame = rollmancf

	wait()
	root.Velocity = Vector3.new(0,0,0)


	flow  = flow+(flowmax-flowmin)/8
	runvel.Velocity = (root.CFrame.LookVector*hum.WalkSpeed)
	local bp = Instance.new("BodyPosition",torso)
	bp.Position = Vector3.new(0,floorpositiony,0)
	bp.MaxForce = Vector3.new(0,999999999,0)
	bp.P = 25000
	hum.PlatformStand = true
	runvel.MaxForce = Vector3.new(99999,99999,99999)
	gyro.CFrame = rollmancf
	gyro.P = 99999
	gyro.MaxTorque = Vector3.new(99999,99999,99999)
	rollplay:Play()
	local lookcfog = cam.CFrame
	local angle = 0
	rollplay:AdjustSpeed(0)
	rollplay.TimePosition = 1
local rotatenumb = -18
if gobackroll == true then
rotatenumb = 18
end

	for i = 20,1,-1 do
		rs.Heartbeat:Wait()
		  if camerakill == true then return end
runvel.MaxForce = Vector3.new(99999,99999,99999)
runvel.Velocity = rollmancf.LookVector*-rotatenumb*3
		gyro.CFrame =	gyro.CFrame*CFrame.Angles(math.rad(rotatenumb),0,0)
		root.CFrame = gyro.CFrame
	end
runvel.MaxForce = Vector3.new(0,0,0)
	rollplay:Stop()
	hum.PlatformStand = false
	rollering = false
	bp:Destroy()
	gyro.P = befpower
	runvel.MaxForce = Vector3.new(0,0,0)
	gyro.MaxTorque = Vector3.new(0,0,0)
	root.Velocity = Vector3.new(0,0,0)
	root.Velocity = Vector3.new(0,0,0)
	rolldel = false
if rotatenumb  == 18 then
cam.CFrame = lookcfog 
end
	wait()

end


local cdown = false

UIS.InputBegan:Connect(function(input,g)

	if input.KeyCode == Enum.KeyCode.C then
		if g then return end
		cdown = true

	end
	if input.KeyCode == Enum.KeyCode.P then
	    if g then return end
		hum:TakeDamage(1)
	end
end)

UIS.InputEnded:Connect(function(input,g)
	if input.KeyCode == Enum.KeyCode.C then
		if g then return end
		cdown = false
	end
end)

wallrunable = false

wallrunning = false
hitfloor = false
leftwallrunning = false
rightwallrunning = false
onfloor = false
frontwallrunning = false
fronthit = false
rs = game:GetService("RunService")
cam = workspace.CurrentCamera


UIS.InputBegan:Connect(function(input,gamestuff)
	if input.KeyCode == Enum.KeyCode.X then
		if camerakill == true then return end
		if gamestuff then return end
		if camerakill == false then
			for i = 5,1,-1 do
				rs.RenderStepped:Wait()
				  if camerakill == true then return end
				cam.CFrame = cam.CFrame*CFrame.Angles(0,math.rad(35),0)
			end
		end
	end
end)
local rollering = false
coroutine.resume(coroutine.create(function()

	while true do
	      if camerakill == true then return end
		rs.RenderStepped:Wait()

if combattime > 0.05 then
if combatmusic.Volume ~= 0.5 then 
    combatmusic.Volume = 0.5
    ambience.Volume = 0
    explorationmusic.Volume = 0
    combatmusic:Play()
end
combattime = combattime-0.01
else
    combattime = 0
    if combatmusic.Volume == 0.5 then 
    combatmusic.Volume = 0
    ambience.Volume = 0.5
  
    explorationmusic.Volume = 0
end
    end
		if rolldel == true or downed == true  then
if camerakill == true then return end
			--hi hi 2 cam.CFrame = char:WaitForChild("Head").CFrame

		end
	if camerakill == false then
	    winder.Volume = root.Velocity.Magnitude*0.015
	    if winder.Volume > 5 then
	        winder.Volume = 5
	        end
	    winder.PlaybackSpeed = root.Velocity.Magnitude*0.015
	      if winder.PlaybackSpeed > 4 then
	        winder.PlaybackSpeed = 4
	      end
	    windercloth.Volume = root.Velocity.Magnitude*0.015
	    if windercloth.Volume > 5 then
	        windercloth.Volume = 5
	        end
	    windercloth.PlaybackSpeed = root.Velocity.Magnitude*0.015
	      if windercloth.PlaybackSpeed > 2 then
	        windercloth.PlaybackSpeed = 2
	        end
	    end


		if rolldel == false and wallrunning == false and sliding == false and  downed == false and holding == false then
			hum.AutoRotate = true
			if slidingsound.IsPlaying == true then 
			    slidingsound:Stop()
			end
		    if wallrunningsound.IsPlaying == true then
		        wallrunningsound:Stop()
		        end
		else
			hum.AutoRotate = false
			if wallrunning == true then
			     if wallrunningsound.IsPlaying == false then
		        wallrunningsound:Play()
		        end
			    else
			     if wallrunningsound.IsPlaying == true then
		        wallrunningsound:Stop()
		        end
			    end
			
			
			if sliding == true then
			    		if slidingsound.IsPlaying == false then 
			    slidingsound:Play()
			    		end
		    else
		        			if slidingsound.IsPlaying == true then 
			    slidingsound:Stop()
			    end
			    end
		end

	end

end))
function wallrunabletrue()
	coroutine.resume(coroutine.create(function()
		if hitfloor == true then return end
		wallrunable = true
		wait(0.05)
		wallrunable = false
	end))
end


wallrundel = false
function verticalwallrun(grav2)
	coroutine.resume(coroutine.create(function()
		if wallrundel == true then return end
		if wallrunning == true then return end
		if downed == true then return end
		if cdown == true then return end
		if wallrunable == false then return end

		if fronthit then

			print("Made it 1")
			local rr = Ray.new(root.Position,root.CFrame.LookVector*5)
			local rhit,ray,rpoint = workspace:FindPartOnRayWithIgnoreList(rr,ignorelist)
			if rhit then
				if rhit then
					wallrunning = false
					wait()
					tilterepic(0)
					tricksinarow = tricksinarow+1
					wallrunning = true
					gyro.CFrame = CFrame.new(root.Position,root.Position+rpoint)*CFrame.Angles(math.rad(-22),math.rad(180),0)
					gyro.MaxTorque = Vector3.new(99999,99999,99999)


					local grav = grav2-11
					runvel.Velocity = Vector3.new(0,grav,0)
					print("Made it 2")
					runvel.MaxForce = Vector3.new(99999,99999,99999)
					wallrunable = false
					hum.PlatformStand = true
						randomclothrollsound()
					verticalwallrunanimplay:Play()
					while wallrunning == true do
						rs.RenderStepped:Wait()
						  if camerakill == true then return end

						grav = grav-0.8
						local r2 = Ray.new(root.Position,root.CFrame.LookVector*5)
						local hit,ray,point = workspace:FindPartOnRayWithIgnoreList(r2,ignorelist)
						if hit then
							print("Made it 3")
							if hitfloor then wallrunning = false end
							if cdown == true then wallrunning = false end
							if hit then
								gyro.CFrame = CFrame.new((ray+root.CFrame.LookVector*-2),(ray+root.CFrame.LookVector*-2)+point)*CFrame.Angles(math.rad(-22),math.rad(180),0)
								runvel.Velocity = Vector3.new(0,grav,0)
								gyro.P = befpower
								if wallrunable == true then

									wallrunning = false
									gyro.MaxTorque = Vector3.new(0,0,0)
									hum.PlatformStand = false
									print("Jump")
									randomclothrollsound()
										jumplandsoundthingy:Play()
			local rannum = math.random(1,3)
if rannum == 1 then
jumplandsoundthingy.SoundId = "rbxassetid://6079433272"
elseif rannum == 2 then
jumplandsoundthingy.SoundId = "rbxassetid://6079432684"
else
jumplandsoundthingy.SoundId = "rbxassetid://6079431954"
end
							bodymovesound:Play()
									hum.PlatformStand = false
									runvel.velocity = root.CFrame.LookVector*-hum.WalkSpeed+Vector3.new(0,30,0)
									wait(0.22)
								end

							else

								wallrunning = false

							end
						else

							wallrunning = false


						end
					end
					hum.PlatformStand = false
					verticalwallrunanimplay:Stop()
					gyro.MaxTorque = Vector3.new(0,0,0)
					print("Wall run ended")

					runvel.MaxForce = Vector3.new(0,0,0)
					hum:ChangeState(Enum.HumanoidStateType.Jumping)
					return
				end




			end

		end
	end))
end



function wallruncheck()
    	if downed == true then 
    	    if rolldel == false and downeddel == false then
            if math.random(8) == 8 then
    	        downedanim1play:Stop(0.75)
    	        downedanim2play:Stop(0.75)
                --if hum then hum.Sit = false hum:ChangeState("GettingUp") end
    	        downed = false
    	        hum.JumpPower = 50
                hum.JumpHeight = 7.199999809265137
                wait(0.4)
    	        roll()
                end
    	      return
    	        end
    	    
    	     end
	if sliding == true then return end
	if cdown == true then
		if hitfloor == true then
			roll()
		end
	end
	if wallrundel == true then return end
	if wallrunning == true then return end
	if wallrunable == false then return end
	if cdown == true then return end
	if dodgedel == true then return end
	wallrunable = false
	local rr = Ray.new(root.Position,root.CFrame.RightVector*3.5)
	local rhit,ray,rpoint = workspace:FindPartOnRayWithIgnoreList(rr,ignorelist)
	if rhit then
		if rhit then

			wallrunning = true
			gyro.CFrame = CFrame.new(root.Position,root.Position+rpoint)*CFrame.Angles(0,math.rad(-90),math.rad(20))
			gyro.MaxTorque = Vector3.new(99999,99999,99999)
			hum.Sit = true

			local grav = 20
			runvel.Velocity = gyro.CFrame.LookVector*30+Vector3.new(0,grav,0)
			runvel.Velocity = runvel.Velocity + gyro.CFrame.RightVector*5
			runvel.MaxForce = Vector3.new(99999,99999,99999)
			rightwallrunanimplay:Play()
				randomclothrollsound()
			tricksinarow = tricksinarow+1
			tilterepic(35)
			while wallrunning == true do
			    if camerakill == true then return end
				rs.RenderStepped:Wait()
 
				grav = grav-0.95
				local r2 = Ray.new(root.Position,root.CFrame.RightVector*5)
				local hit,ray,point = workspace:FindPartOnRayWithIgnoreList(r2,ignorelist)
				if hit then

					if hitfloor then wallrunning = false end
					if cdown == true then wallrunning = false end
					if fronthit == true then print("Face died") tilterepic(0) wallrunning = false  rightwallrunanimplay:Stop()	gyro.MaxTorque = Vector3.new(0,0,0)
						print("Wall run end")

						runvel.MaxForce = Vector3.new(0,0,0)wallrunable = true verticalwallrun(grav+hum.WalkSpeed)  return end
					if hit then
						gyro.CFrame = CFrame.new((ray+root.CFrame.RightVector*-2),(ray+root.CFrame.RightVector*-2)+point)*CFrame.Angles(0,math.rad(-90),math.rad(20))
						runvel.Velocity = gyro.CFrame.LookVector*hum.WalkSpeed+Vector3.new(0,grav,0)
						gyro.P = befpower
						if wallrunable == true then
							tilterepic(0)
							wallrunning = false
							rightwallrunanimplay:Stop()
							gyro.MaxTorque = Vector3.new(0,0,0)
							hum.PlatformStand = false
										jumplandsoundthingy:Play()
											randomclothrollsound()
			local rannum = math.random(1,3)
if rannum == 1 then
jumplandsoundthingy.SoundId = "rbxassetid://6079433272"
elseif rannum == 2 then
jumplandsoundthingy.SoundId = "rbxassetid://6079432684"
else
jumplandsoundthingy.SoundId = "rbxassetid://6079431954"
end
							bodymovesound:Play()
							runvel.velocity = cam.CFrame.LookVector*hum.WalkSpeed+Vector3.new(0,30,0)
							wait(0.22)
						end

					else

						wallrunning = false

					end
				else

					wallrunning = false


				end
			end
			tilterepic(0)
			hum.PlatformStand = false
			rightwallrunanimplay:Stop()
			gyro.MaxTorque = Vector3.new(0,0,0)
			print("Wall run end")
			runvel.MaxForce = Vector3.new(0,0,0)
			return
		end




	end

	local rl = Ray.new(root.Position,root.CFrame.RightVector*-3.5)
	local lhit,ray,rpoint = workspace:FindPartOnRayWithIgnoreList(rl,ignorelist)
	if lhit then
		if lhit then

			wallrunning = true

			gyro.CFrame = CFrame.new(root.Position,root.Position+rpoint)*CFrame.Angles(0,math.rad(90),math.rad(-20))
			gyro.MaxTorque = Vector3.new(99999,99999,99999)
			gyro.P = 250
			local grav = 20
			runvel.Velocity = (gyro.CFrame.LookVector*30+Vector3.new(0,grav,0))
			runvel.Velocity = runvel.Velocity + gyro.CFrame.RightVector*-5
			hum.PlatformStand = true


			leftwallrunanimplay:Play()
				randomclothrollsound()
			tilterepic(-35)
			tricksinarow = tricksinarow+1
			runvel.MaxForce = Vector3.new(99999,99999,99999)
			
			while wallrunning == true do
  if camerakill == true then return end
				rs.RenderStepped:Wait()

				if hitfloor then wallrunning = false end
				if fronthit == true then print("Face died") 	tilterepic(0) wallrunning = false leftwallrunanimplay:Stop() 	gyro.MaxTorque = Vector3.new(0,0,0)
					print("Wall run end")
					runvel.MaxForce = Vector3.new(0,0,0) wallrunable= true verticalwallrun(grav+hum.WalkSpeed) return end
				rs.RenderStepped:Wait()
				  if camerakill == true then return end
				grav = grav-0.95
				local r2 = Ray.new(root.Position,root.CFrame.RightVector*-5)
				local hit,ray,point = workspace:FindPartOnRayWithIgnoreList(r2,ignorelist)
				if hit then

					if cdown == true then wallrunning = false end
					if hit then
						gyro.CFrame = CFrame.new((ray+root.CFrame.RightVector*2),(ray+root.CFrame.RightVector*2)+point)*CFrame.Angles(0,math.rad(90),math.rad(-20))
						runvel.Velocity = gyro.CFrame.LookVector*hum.WalkSpeed+Vector3.new(0,grav,0)
						gyro.P = befpower

						if wallrunable == true then

							wallrunning = false
							tilterepic(0)
							leftwallrunanimplay:Stop()
							gyro.MaxTorque = Vector3.new(0,0,0)
							hum.PlatformStand = false
										jumplandsoundthingy:Play()
											randomclothrollsound()
			local rannum = math.random(1,3)
if rannum == 1 then
jumplandsoundthingy.SoundId = "rbxassetid://6079433272"
elseif rannum == 2 then
jumplandsoundthingy.SoundId = "rbxassetid://6079432684"
else
jumplandsoundthingy.SoundId = "rbxassetid://6079431954"
end
							bodymovesound:Play()
							runvel.velocity = cam.CFrame.LookVector*hum.WalkSpeed+Vector3.new(0,30,0)
							wait(0.22)
						end

					else

						wallrunning = false

					end
				else

					wallrunning = false


				end
			end
			hum.PlatformStand = false
			leftwallrunanimplay:Stop()
			tilterepic(0)
			gyro.MaxTorque = Vector3.new(0,0,0)
			print("Wall run end")
			runvel.MaxForce = Vector3.new(0,0,0)
			return
		end




	end
	wallrunable = true
	verticalwallrun(hum.WalkSpeed+20)

end






local spacedown = false
local backjumpdel = false
local backhit = false
UIS.InputBegan:Connect(function(inpt,gamestuff)
	if inpt.KeyCode == Enum.KeyCode.Space then
		if gamestuff then return end
				if wallrunning == false then
		    
		    if sliding == false then
		        if backhit == true then
		            if hitfloor == false then
		            	jumplandsoundthingy:Play()
		            randomclothrollsound(false)
		            root.Velocity = root.CFrame.LookVector*120+Vector3.new(0,40,0)
		            end
		            end
		        end
		    
		    end
		wallrunabletrue()
		wallruncheck()
		if sliding == true then

			spacedown = true
			wait(0.1)
			spacedown = false
		end

		wait(0.1)
		if wallrunning == false then
			if rolldel == false then

				if backjumpdel == false then
				    

				end

			end

		end
	end



end)




function slide()
	coroutine.resume(coroutine.create(function()
	    	if downed == true then return end
		if sliding == true then return end
		sliding = true
		randomclothrollsound()
		tilterepic(-15,true)
		hum.PlatformStand = true
		gyro.MaxTorque = Vector3.new(99999,99999,99999)
		gyro.P = befpower*3

		runvel.MaxForce = Vector3.new(99999,99999,99999)
		local ogcf = root.CFrame
		local befrooty = root.Position.Y
		local ogcf = root.CFrame
		gyro.CFrame = ogcf*CFrame.Angles(math.rad(80),0,0)
		print("BEGINSLIDE")
		tricksinarow = tricksinarow+1
		while sliding == true do 
			rs.RenderStepped:Wait()
			  if camerakill == true then return end
			runvel.Velocity = (ogcf.LookVector*flow*1.45)+Vector3.new(0,-70,0)

			slidingplay:Play()
			slidingplay:AdjustSpeed(0)
			if root.Position.Y+0.05 < befrooty then
				flow = flow+flowmax/70
			end

			befrooty = root.Position.Y



			if root.Velocity.Magnitude < 20 then
				sliding = false
				slidingplay:Stop()
				tilterepic(0,true)
				cdown = false
				break
			end

			if cdown == false then
				sliding = false
				slidingplay:Stop()
				tilterepic(0,true)
				break
			else

			end

			flow = flow-flowmax/100



			if spacedown == true then
				sliding = false
				cdown = false
				slidingplay:Stop()
				tilterepic(0,true)
				break
		
			end


			if flow < flowmin+5 then
				sliding = false
				flow = flowmin
				slidingplay:Stop()
				tilterepic(0,true)
				break
			end

		end


		gyro.MaxTorque = Vector3.new(0,0,0)
		gyro.P = befpower

		runvel.MaxForce = Vector3.new(0,0,0)
		hum.PlatformStand = false
		if spacedown == true  and flow < flowmax then
			hum.PlatformStand = true
			sliding = false
			tilterepic(0,true)
			slidingplay:Stop()
			local x, y, z = cam.CFrame:ToEulerAnglesYXZ()
			rollering = true

			root.CFrame = CFrame.new(root.Position)*CFrame.Angles(0, y, 0)
			bodymovesound:Play()
			
			roll()
			return
				
				elseif spacedown == true and flowmax+3 < flow then
			hum.PlatformStand = false
			sliding = false
			tilterepic(0,true)
			slidingplay:Stop()
			runvel.MaxForce = Vector3.new(99999,99999,99999)
			bodymovesound:Play()
			jumplandsoundthingy:Play()
				randomclothrollsound()
			local rannum = math.random(1,3)
if rannum == 1 then
jumplandsoundthingy.SoundId = "rbxassetid://6079433272"
elseif rannum == 2 then
jumplandsoundthingy.SoundId = "rbxassetid://6079432684"
else
jumplandsoundthingy.SoundId = "rbxassetid://6079431954"
end
			runvel.velocity = cam.CFrame.LookVector*flow*2+Vector3.new(0,flow,0)
			coroutine.resume(coroutine.create(function()


				local tiltnumb = 0
				local rannum = math.random(1,4)

				if rannum == 1 then
					tiltnumb = 40
				elseif rannum == 2 then
					tiltnumb = 20
				elseif rannum == 3 then
					tiltnumb = -40
				else
					tiltnumb = -20
				end

				local cameratilterman2 =tiltnumb*0.2




				local cameratiltermax = cameratilterman2

				local sinnerman = 1
				local sinnerman2 = 0
				for i = 10,1,-1 do
					game:GetService("RunService").RenderStepped:Wait()
					  if camerakill == true then return end
					sinnerman = sinnerman-0.1
					sinnerman2 = math.sin(sinnerman*1.25)
					--print(sinnerman .. " I AM SIN")
					cameratilterman2 = cameratiltermax*sinnerman2

					cam.CFrame = cam.CFrame*CFrame.Angles(0,0,math.rad(cameratilterman2))
				end


			end))
			wait(0.25)
			runvel.MaxForce = Vector3.new(0,0,0)
			return
				
				else
			hum.PlatformStand = false
			sliding = false
		
			return
		end

	end))
	
end

local sliding = false
local rppos = Vector3.new(0,0,0)
local landed = false
local pressspacebeforeland = false
local landdel = false
local beforelandy = 0
function landdeler()
	coroutine.resume(coroutine.create(function()
		landdel = true
		wait(0.2)
		landdel = false
		pressspacebeforeland = false
		beforelandy = root.Position.Y
	end))
end

UIS.InputBegan:Connect(function(input,gamestuff)
	if springjumpdel == true then return end
	if input.KeyCode == Enum.KeyCode.Space then
		if gamestuff == true then return end
		if hitfloor == true then
			if pressspacebeforeland == false then
				pressspacebeforeland = true
				else
				if root.Position.Y > beforelandy+2 then
					runvel.MaxForce = Vector3.new(99999,99999,99999)
					runvel.Velocity = cam.CFrame.LookVector*flow*2+Vector3.new(0,flow/2,0)
					springjumpdel = true
														randomclothrollsound()
										jumplandsoundthingy:Play()
			local rannum = math.random(1,3)
if rannum == 1 then
jumplandsoundthingy.SoundId = "rbxassetid://6079433272"
elseif rannum == 2 then
jumplandsoundthingy.SoundId = "rbxassetid://6079432684"
else
jumplandsoundthingy.SoundId = "rbxassetid://6079431954"
end
							bodymovesound:Play()
					pressspacebeforeland = false
					springjumpplay:Play()
					tricksinarow = tricksinarow+1
					coroutine.resume(coroutine.create(function()
						
					
					local tiltnumb = 0
					local rannum = math.random(1,4)
					
					if rannum == 1 then
						tiltnumb = 40
						elseif rannum == 2 then
						tiltnumb = 20
					elseif rannum == 3 then
						tiltnumb = -40
						else
						tiltnumb = -20
					end
	
					local cameratilterman2 =tiltnumb*0.2
					



					local cameratiltermax = cameratilterman2
					
					local sinnerman = 1
					local sinnerman2 = 0
					for i = 10,1,-1 do
						game:GetService("RunService").RenderStepped:Wait()
						  if camerakill == true then return end
						sinnerman = sinnerman-0.1
						sinnerman2 = math.sin(sinnerman*1.25)
						--print(sinnerman .. " I AM SIN")
						cameratilterman2 = cameratiltermax*sinnerman2
						
						cam.CFrame = cam.CFrame*CFrame.Angles(0,0,math.rad(cameratilterman2))
					end


					end))

			      
					
					wait(0.2)
					springjumpplay:Stop()
					runvel.MaxForce = Vector3.new(0,0,0)
					wait(0.2)
					springjumpdel = false
				end
			end
		
			
		end
	end
end)


local plr = game.Players.LocalPlayer
local Character = plr.Character or plr.CharacterAdded:Wait()
local Root = Character:WaitForChild("HumanoidRootPart")
local Head = Character:WaitForChild("Head")
local Hum = Character:WaitForChild("Humanoid")
local holdingon = Instance.new("Animation",hum)
holdingon.AnimationId = "rbxassetid://148831003"
local climbingstuffs = Instance.new("Animation",hum)
climbingstuffs.AnimationId = "rbxassetid://125750702"
local CA = Hum:LoadAnimation(climbingstuffs)
local HA = Hum:LoadAnimation(holdingon)
local TouchGui = plr:WaitForChild("PlayerGui"):FindFirstChild("TouchGui")
local UIS = game:GetService("UserInputService")

ledgeavailable = true
holding = false




	function climb()
		local Vele = Instance.new("BodyVelocity",Head)
		Root.Anchored = false
		Vele.MaxForce = Vector3.new(1,1,1) * math.huge
		Vele.Velocity = Root.CFrame.LookVector * 10 + Vector3.new(0,30,0)
		HA:Stop() CA:Play()
		game.Debris:AddItem(Vele,.15)
		holding = false
		wait(.0)
		ledgeavailable = true
	end
	
	UIS.InputBegan:Connect(function(Key,Chat)
		if not holding then return end 
		if Key.KeyCode == Enum.KeyCode.Space and not Chat then
			climb()
		end
	end)
	
	if TouchGui then
		TouchGui:WaitForChild("TouchControlFrame"):WaitForChild("JumpButton").MouseButton1Click:Connect(function()
			if not holding then return end climb()
		end)
	end




while true do
	repeat rs.RenderStepped:Wait() until sliding == false
	rs.RenderStepped:Wait()
	local r = Ray.new(root.Position,root.CFrame.LookVector*-6)
	local hit,ray = workspace:FindPartOnRayWithIgnoreList(r,ignorelist)
		if hit then
		backhit = true
	
	else
		backhit = false
	end
	
	  if camerakill == true then return end
	if hum.FloorMaterial == Enum.Material.Air then
		if landed == true then
			landed = false
		end
		else
		if landed == false then
			landed = true
			
			landdeler()
		end
		
	end
	local killx,killy,killz = root.CFrame:ToEulerAnglesYXZ()
	local nobadcf = CFrame.new(root.Position)*CFrame.Angles(0,killy,0)
	local rclimber = Ray.new(Head.CFrame.p, nobadcf.LookVector * 6)
	
	local killclimberray =  Ray.new(Head.CFrame.p+Vector3.new(0,0.5,0), nobadcf.LookVector * 9)
	
	local killmansraypart,killmansposition workspace:FindPartOnRayWithIgnoreList(killclimberray,ignorelist)
	
	local part,position = workspace:FindPartOnRayWithIgnoreList(rclimber,ignorelist)
	if not killmansraypart then
	    
	    
	if part and ledgeavailable and not holding and not killmansraypart  then
		if part.Size.Y >= 4 and part.CanCollide == true and killmansraypart == nil and  part.Transparency ~= 1  then
			if Head.Position.Y >= (part.Position.Y + (part.Size.Y / 2)) - 1 and Head.Position.Y <= part.Position.Y + (part.Size.Y / 2) and Hum.FloorMaterial == Enum.Material.Air and sliding == false and downed == false and wallrunning == true then
			if HA.IsPlaying == false then
			    wallrunning = false
			    root.CFrame = nobadcf
			    randomclothrollsound(false)
			    HA:Play() 
			    wallrunning = false
			    HA:AdjustSpeed(0)
			    HA.TimePosition = 1.3
			end
		    
				Root.Anchored = true holding = true ledgeavailable = false
			end
		end
	end
	end
	local r = Ray.new(root.Position,Vector3.new(0,1,0).Unit*-5.5)
	local hit,ray = workspace:FindPartOnRayWithIgnoreList(r,ignorelist)
	if hit then
		floorpositiony = ray.Y
		if	hitfloor == false then
			hitfloor = true
			if root.Velocity.Y < -60 then
				if cdown == true then
					root.Velocity = Vector3.new(root.Velocity.X,-10,root.Velocity.Z)
					cdown = false

					roll()
					else
					    if root.Velocity.Y < -90  then
					       downer()
			
					        end

				end
			end
		end

	else
		if	hitfloor == true then
			hitfloor = false
		end
	end
	local r = Ray.new(root.Position,root.CFrame.LookVector*1.8)
	local hit,ray,rp = workspace:FindPartOnRayWithIgnoreList(r,ignorelist)
	if hit then
		fronthit = true
		rppos = rp
	else
		fronthit = false
	end
	if hitfloor == true then

		if cdown == true then
			if flow < flowmin+5 then

				if flow ~= crouchspeed then
					flow = crouchspeed
				end
				if crouchingplay.IsPlaying == false then
					crouchingplay:Play()
					randomclothrollsound()
				end
			else
				if landed == true then
					slide()	
				end
				
			end
		end

	end
	if cdown == false then
		if crouchingplay.IsPlaying == true then
			crouchingplay:Stop()
		end
		if walkingmode == false  and hum.MoveDirection ~= Vector3.new(0,0,0)  or wallrunning == true then
			flow = flow+flowmax/70
		
			
			if tricksinarow > 8 then
			    			if combatmusic.Volume ~= 0.5 then
			    combatmusic.Volume = 0
			    ambience.Volume = 0
			    explorationmusic.Volume =0.5
			    end
			    end
			
			if timestanding ~= 0 then
			    timestanding = 0
			    end
			if flow > flowmax then
				flow = flowmax
			end
		else
			flow = flow-flowmax/23
			if combatmusic.Volume ~= 0.5 then
			    timestanding = timestanding+0.05
			end
		   
			if timestanding > 18 then
			    timestanding = 0
			    tricksinarow = 0
			   if combatmusic.Volume ~= 0.5 then
			       if ambience.Volume ~= 0.5 then
			           ambience.Volume = 0.5
			           explorationmusic.Volume = 0
			           combatmusic.Volume = 0
			           
			           end
			       
			       end
			    end
			if flow < flowmin then
				flow = flowmin
			end
		end



	end
	if downed == false then
	    	hum.WalkSpeed = flow
	    	else
	    	    hum.WalkSpeed = 1
	    end

end

Features & Information

Figure the keys out by yourself too
#rig six

Community Comments (1)

sauga77kjksauga77kjkNov 9, 2024(edited)

spam jump - wall run/climb c-crouch/slide x-camera turn p-take damage

More Scripts for Universal Scripts