Rufus14

Parkour Script v2

Dec 17th, 2019
2,117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 43.67 KB | None | 0 0
  1. --By Rufus14
  2. --owner = game:GetService("Players"):GetPlayerFromCharacter(script.Parent)
  3. character = owner.Character
  4. NLS([[
  5. --By Rufus14
  6. owner = game:GetService("Players").LocalPlayer
  7. local ownerhead = owner.Character:WaitForChild("Head")
  8. parkietremote = owner.Character:WaitForChild("parkietremote")
  9. mouse = owner:GetMouse()
  10. local part = Instance.new("Part", owner.Character.Head)
  11. part.Size = Vector3.new(0.1,0.1,0.1)
  12. part.Transparency = 1
  13. part.CanCollide = false
  14. part.Name = "camera"
  15. part:BreakJoints()
  16. local weld = Instance.new("Weld", part)
  17. weld.Part0 = owner.Character.Head
  18. weld.Part1 = part
  19. weld.C0 = CFrame.new(0,0,-1)
  20. cananimate = true
  21. walkpressed = 0
  22. humanoid = owner.Character:findFirstChildOfClass("Humanoid")
  23. rootpart = owner.Character.HumanoidRootPart
  24. runservice = game:GetService("RunService")
  25. --
  26. canmovecamera = true
  27. wrunning = false
  28. wrunningl = false
  29. owner.Character.ChildAdded:connect(function(whatadded)
  30.     if whatadded.Name == "slide" then
  31.         canmovecamera = false
  32.         for i = 1,60 do
  33.             workspace.CurrentCamera.CFrame = workspace.CurrentCamera.CFrame * CFrame.fromEulerAnglesXYZ(math.rad(math.sin(tick()*45)/(i/6)),0,0)
  34.             runservice.RenderStepped:wait()
  35.         end
  36.     elseif whatadded.Name == "vwallrun" then
  37.         canmovecamera = false
  38.         for i = 1,20 do
  39.             workspace.CurrentCamera.CFrame = workspace.CurrentCamera.CFrame * CFrame.fromEulerAnglesXYZ(math.rad(2),0,0)
  40.             runservice.RenderStepped:wait()
  41.         end
  42.     elseif whatadded.Name == "hwallrunright" then
  43.         wrunning = true
  44.         canmovecamera = false
  45.         coroutine.wrap(function()
  46.             while wrunning and runservice.RenderStepped:wait() do
  47.                 workspace.CurrentCamera.CFrame = workspace.CurrentCamera.CFrame:lerp(workspace.CurrentCamera.CFrame * CFrame.fromEulerAnglesXYZ(0,0,math.rad(30)),0.2)
  48.             end
  49.         end)()
  50.     elseif whatadded.Name == "hwallrunleft" then
  51.         wrunningl = true
  52.         canmovecamera = false
  53.         coroutine.wrap(function()
  54.             while wrunningl and runservice.RenderStepped:wait() do
  55.                 workspace.CurrentCamera.CFrame = workspace.CurrentCamera.CFrame:lerp(workspace.CurrentCamera.CFrame * CFrame.fromEulerAnglesXYZ(0,0,math.rad(-30)),0.2)
  56.             end
  57.         end)()
  58.     elseif whatadded.Name == "FALLING" then
  59.         local screengui = Instance.new("ScreenGui", owner:findFirstChildOfClass("PlayerGui"))
  60.         screengui.ResetOnSpawn = true
  61.         screengui.Name = "ohgodohfuck"
  62.         local vel = Instance.new("BodyVelocity", rootpart)
  63.         vel.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
  64.         vel.Velocity = Vector3.new(0,-135,0)
  65.         local frame = Instance.new("ImageLabel", screengui)
  66.         frame.BackgroundTransparency = 1
  67.         frame.ImageTransparency = 1
  68.         frame.ImageColor3 = Color3.fromRGB(0,0,0)
  69.         frame.Image = "http://www.roblox.com/asset/?id=22606915"
  70.         frame.Size = UDim2.new(1,0,1,0)
  71.         for i = 1,20 do
  72.             frame.ImageTransparency = frame.ImageTransparency - 0.05
  73.             runservice.Stepped:wait()
  74.         end
  75.         coroutine.wrap(function()
  76.             while rootpart.Velocity.y < -10 do runservice.RenderStepped:wait() end
  77.             screengui:destroy()
  78.             vel:destroy()
  79.             owner.Character:BreakJoints()
  80.         end)()
  81.     end
  82. end)
  83. owner.Character.ChildRemoved:connect(function(whatremoved)
  84.     if whatremoved.Name == "slide" then
  85.         canmovecamera = true
  86.     elseif whatremoved.Name == "vwallrun" then
  87.         for i = 1,20 do
  88.             workspace.CurrentCamera.CFrame = workspace.CurrentCamera.CFrame * CFrame.fromEulerAnglesXYZ(math.rad(-2),0,0)
  89.             runservice.RenderStepped:wait()
  90.         end
  91.         canmovecamera = true
  92.     elseif whatremoved.Name == "hwallrunright" then
  93.         canmovecamera = true
  94.         wrunning = false
  95.     elseif whatremoved.Name == "hwallrunleft" then
  96.         canmovecamera = true
  97.         wrunningl = false
  98.     end
  99. end)
  100. --
  101. mouse.KeyDown:connect(function(key)
  102.     key = key:lower()
  103.     if key == "w" or key == "a" or key == "s" or key == "d" then
  104.         walkpressed = walkpressed + 1
  105.     end
  106.     if key == "r" then
  107.         parkietremote:FireServer(rootpart.CFrame, "triggerroll")
  108.     end
  109.     if key == "e" then
  110.         parkietremote:FireServer(rootpart.CFrame, "slide")
  111.     end
  112. end)
  113. mouse.KeyUp:connect(function(key)
  114.     key = key:lower()
  115.     if key == "w" or key == "a" or key == "s" or key == "d" then
  116.         walkpressed = walkpressed - 1
  117.     end
  118.     if key == "r" then
  119.         parkietremote:FireServer(rootpart.CFrame, "triggerroll")
  120.     end
  121. end)
  122. --
  123. humanoid.Died:connect(function()
  124.     local correction =  Instance.new("ColorCorrectionEffect", workspace.CurrentCamera)
  125.     local deathsound = Instance.new("Sound", owner:findFirstChildOfClass("PlayerGui"))
  126.     deathsound.SoundId = "rbxassetid://1038809455"
  127.     deathsound.Volume = 10
  128.     deathsound:Play()
  129.     game.Debris:AddItem(deathsound, deathsound.TimeLength)
  130.     game.Debris:AddItem(correction, game:GetService("Players").RespawnTime)
  131.     for i = 1,5 do
  132.         correction.Brightness = correction.Brightness + 0.2
  133.         runservice.RenderStepped:wait()
  134.     end
  135.     while runservice.RenderStepped:wait() do
  136.         workspace.CurrentCamera.CFrame = CFrame.new(0,9999999,0)
  137.     end
  138. end)
  139. --
  140. while game:GetService("RunService").RenderStepped:wait() do
  141.     ----
  142.     local vwallray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.lookVector * 2)
  143.     local vwallhit, vwallpos, vwallsurface = workspace:FindPartOnRayWithIgnoreList(vwallray, {owner.Character})
  144.     if vwallhit and humanoid.Jump and rootpart.Velocity.y > -30 then
  145.         if not vwallhit.Parent:findFirstChildOfClass("Humanoid") then
  146.             parkietremote:FireServer(rootpart.CFrame, "vwallrun", vwallhit, vwallpos, vwallsurface)
  147.         end
  148.     end
  149.     ---
  150.     local hwallray = Ray.new(rootpart.CFrame.p, (rootpart.CFrame.rightVector * 3.5) + (rootpart.CFrame.lookVector * -0.3))
  151.     local hwallhit, hwallpos, surface = workspace:FindPartOnRayWithIgnoreList(hwallray, {owner.Character})
  152.     if hwallhit and humanoid.Jump and rootpart.Velocity.y > -20 then
  153.         if not hwallhit.Parent:findFirstChildOfClass("Humanoid") then
  154.             parkietremote:FireServer(rootpart.CFrame, "hwallrunright", hwallhit, hwallpos, surface)
  155.         end
  156.     end
  157.     --
  158.     local hwallrayl = Ray.new(rootpart.CFrame.p, rootpart.CFrame.rightVector * -3.5 + (rootpart.CFrame.lookVector * -0.3))
  159.     local hwallhitl, hwallposl, surfacel = workspace:FindPartOnRayWithIgnoreList(hwallrayl, {owner.Character})
  160.     if hwallhitl and humanoid.Jump and rootpart.Velocity.y > -20 then
  161.         if not hwallhitl.Parent:findFirstChildOfClass("Humanoid") then
  162.             parkietremote:FireServer(rootpart.CFrame, "hwallrunleft", hwallhitl, hwallposl, surfacel)
  163.         end
  164.     end
  165.     ---
  166.     local poleray = Ray.new(ownerhead.CFrame.p, ownerhead.CFrame.lookVector * 3.5)
  167.     local polerayhit, poleraypos, poleraysurface = workspace:FindPartOnRayWithIgnoreList(poleray, {owner.Character})
  168.     if polerayhit and rootpart.Velocity.y > -60 then
  169.         if not polerayhit.Parent:findFirstChildOfClass("Humanoid") then
  170.             parkietremote:FireServer(rootpart.CFrame, "polegrab", polerayhit, poleraypos, poleraysurface)
  171.         end
  172.     end
  173.     --
  174.     local poleray = Ray.new(ownerhead.CFrame.p, (ownerhead.CFrame.lookVector * 3.5) + (ownerhead.CFrame.upVector * -0.5))
  175.     local polerayhit, poleraypos, poleraysurface = workspace:FindPartOnRayWithIgnoreList(poleray, {owner.Character})
  176.     if polerayhit and rootpart.Velocity.y > -60 then
  177.         if not polerayhit.Parent:findFirstChildOfClass("Humanoid") then
  178.             parkietremote:FireServer(rootpart.CFrame, "polegrab", polerayhit, poleraypos, poleraysurface)
  179.         end
  180.     end
  181.     --
  182.     local poleray = Ray.new(ownerhead.CFrame.p, (ownerhead.CFrame.lookVector * 3.5) + (ownerhead.CFrame.upVector * 0.5))
  183.     local polerayhit, poleraypos, poleraysurface = workspace:FindPartOnRayWithIgnoreList(poleray, {owner.Character})
  184.     if polerayhit and rootpart.Velocity.y > -60 then
  185.         if not polerayhit.Parent:findFirstChildOfClass("Humanoid") then
  186.             parkietremote:FireServer(rootpart.CFrame, "polegrab", polerayhit, poleraypos, poleraysurface)
  187.         end
  188.     end
  189.     ----
  190.     if walkpressed > 0 and humanoid.WalkSpeed < 23 and not owner.Character:findFirstChild("ouchfell") then
  191.         humanoid.WalkSpeed = humanoid.WalkSpeed + 1.2
  192.     elseif walkpressed == 0 and humanoid.WalkSpeed > 0 and not owner.Character:findFirstChild("ouchfell") then
  193.         humanoid.WalkSpeed = humanoid.WalkSpeed - 1.2
  194.     end
  195.     if (workspace.CurrentCamera.CFrame.p - part.Position).magnitude <= 1.7 then
  196.         if canmovecamera and not owner.Character:findFirstChild("ouchfell") and not owner.Character:findFirstChild("rollin") and not owner.Character:findFirstChild("pole") then
  197.             game:GetService("Players").LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(game:GetService("Players").LocalPlayer.Character.HumanoidRootPart.Position,Vector3.new(mouse.Hit.p.x,game:GetService("Players").LocalPlayer.Character.HumanoidRootPart.Position.y,mouse.Hit.p.z))
  198.         end
  199.         if owner.Character:findFirstChild("ouchfell") then
  200.             workspace.CurrentCamera.CFrame = owner.Character.Head.CFrame * CFrame.new(0,0,-0.4)
  201.         end
  202.         if owner.Character:findFirstChild("rollin") then
  203.             workspace.CurrentCamera.CFrame = owner.Character.Head.CFrame * CFrame.new(0,0,-0.2)
  204.         end
  205.         if owner.Character:findFirstChild("FALLING") then
  206.             canmovecamera = false
  207.             workspace.CurrentCamera.CFrame = owner.Character.Head.CFrame * CFrame.new(0,0,-0.4) * CFrame.fromEulerAnglesXYZ(math.rad(math.sin(tick()*45))*6,0,0)
  208.         end
  209.         workspace.CurrentCamera.FieldOfView = 120
  210.         for i,v in pairs(owner.Character:GetChildren()) do
  211.             if v.ClassName == "Part" or v.ClassName == "MeshPart" and v.Name ~= "Head" then
  212.                 v.LocalTransparencyModifier = 0
  213.             end
  214.             if v.ClassName == "Accessory" then
  215.                 v.Handle.Transparency = 1
  216.             end
  217.         end
  218.         if owner.Character.Head:findFirstChildOfClass("Decal") then
  219.             owner.Character.Head:findFirstChildOfClass("Decal").Transparency = 1
  220.         end
  221.         owner.Character.Head.Transparency = 1
  222.         workspace.CurrentCamera.CameraSubject = part
  223.     else
  224.         for i,v in pairs(owner.Character:GetChildren()) do
  225.             if v.ClassName == "Accessory" then
  226.                 v.Handle.Transparency = 0
  227.             end
  228.         end
  229.         workspace.CurrentCamera.FieldOfView = 70
  230.         owner.Character.Head.Transparency = 0
  231.         if owner.Character.Head:findFirstChildOfClass("Decal") then
  232.             owner.Character.Head:findFirstChildOfClass("Decal").Transparency = 0
  233.         end
  234.         workspace.CurrentCamera.CameraSubject = owner.Character
  235.     end
  236. end
  237. ]], character)
  238. local ownerhead = character:WaitForChild("Head")
  239. mouse = owner:GetMouse()
  240. anim = "idle"
  241. cananimate = true
  242. humanoid = character:findFirstChildOfClass("Humanoid")
  243. rootpart = character.HumanoidRootPart
  244. runservice = game:GetService("RunService")
  245. local rightarm = Instance.new("Weld", owner.Character.Torso)
  246. rightarm.Part0 = owner.Character.Torso
  247. rightarm.Part1 = owner.Character["Right Arm"]
  248. rightarm.C0 = CFrame.new(1.5,0,0)
  249. rightarm.Name = "RightArmWeld"
  250. local rightleg = Instance.new("Weld", owner.Character.Torso)
  251. rightleg.Part0 = owner.Character.Torso
  252. rightleg.Part1 = owner.Character["Right Leg"]
  253. rightleg.C0 = CFrame.new(0.5,-2,0)
  254. rightleg.Name = "RightLegWeld"
  255. local leftarm = Instance.new("Weld", owner.Character.Torso)
  256. leftarm.Part0 = owner.Character.Torso
  257. leftarm.Part1 = owner.Character["Left Arm"]
  258. leftarm.C0 = CFrame.new(-1.5,0,0)
  259. leftarm.Name = "LeftArmWeld"
  260. local leftleg = Instance.new("Weld", owner.Character.Torso)
  261. leftleg.Part0 = owner.Character.Torso
  262. leftleg.Part1 = owner.Character["Left Leg"]
  263. leftleg.C0 = CFrame.new(-0.5,-2,0)
  264. leftleg.Name = "LeftLegWeld"
  265. local head = Instance.new("Weld", owner.Character.Torso)
  266. head.Part0 = owner.Character.Torso
  267. head.Part1 = owner.Character.Head
  268. head.C0 = CFrame.new(0,1.5,0)
  269. head.Name = "HeadWeld"
  270. local humanoidrootpart = Instance.new("Weld", owner.Character.HumanoidRootPart)
  271. humanoidrootpart.Part0 = owner.Character.HumanoidRootPart
  272. humanoidrootpart.Part1 = owner.Character.Torso
  273. humanoidrootpart.Name = "HumanoidRootPartWeld"
  274. local music = Instance.new("Sound", owner.Character.Head)
  275. music.Looped = true
  276. local musicrandom = math.random(1,5)
  277. if musicrandom == 1 then
  278.     music.SoundId = "rbxassetid://4502246491"
  279.     music.Volume = 2
  280. elseif musicrandom == 2 then
  281.     music.SoundId = "rbxassetid://469593664"
  282.     music.Volume = 2
  283. elseif musicrandom == 3 then
  284.     music.SoundId = "rbxassetid://477207390"
  285.     music.Volume = 2
  286. elseif musicrandom == 4 then
  287.     music.SoundId = "rbxassetid://147811295"
  288.     music.Volume = 2
  289. elseif musicrandom == 5 then
  290.     music.SoundId = "rbxassetid://4519453403"
  291.     music.Volume = 1
  292. end
  293. music:Play()
  294. local runsound = Instance.new("Sound", owner.Character.Head)
  295. runsound.SoundId = "rbxassetid://3084278209"
  296. runsound.Looped = true
  297. runsound:Play()
  298. runsound.PlaybackSpeed = 1.4
  299. local bodyhitsound = Instance.new("Sound", owner.Character.Head)
  300. bodyhitsound.SoundId = "rbxassetid://261338552"
  301. bodyhitsound.Volume = 0.5
  302. local fallingsound = Instance.new("Sound", owner.Character.Head)
  303. fallingsound.SoundId = "rbxassetid://866649671"
  304. fallingsound.Volume = 0
  305. fallingsound.Looped = true
  306. fallingsound:Play()
  307. local parkietremote = Instance.new("RemoteEvent", character)
  308. parkietremote.Name = "parkietremote"
  309. cando = true
  310. roll = false
  311. fallingtodeath = false
  312. grabbedpole = false
  313. parkietremote.OnServerEvent:connect(function(plr, rootpos, what, rayehit, rayepos, rayesurface)
  314.     if plr == owner and not fallingtodeath and cando then
  315.         character.HumanoidRootPart.CanCollide = false
  316.         if what == "slide" then
  317.             cananimate = false
  318.             cando = false
  319.             local action = Instance.new("BoolValue", character)
  320.             action.Name = "slide"
  321.             local velo = Instance.new("BodyVelocity", rootpart)
  322.             velo.MaxForce = Vector3.new(math.huge,0,math.huge)
  323.             velo.Velocity = rootpart.CFrame.lookVector*22
  324.             runsound.Volume = 0
  325.             for i = 0,1 , 0.04 do
  326.                 rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.70441437, 0.561628342, 9.53674316e-07, 0.642787516, -0.766044259, 1.49011612e-08, 0.766044319, 0.642787576, 0, 1.17273338e-08, -1.27691155e-08, 0.99999994),i)
  327.                 leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.54449558, -0.470175743, -0.242582321, 0.983905256, -0.168530971, 0.0593911819, 0.178687513, 0.926305115, -0.331706733, 0.000888578361, 0.336980522, 0.941511095),i)
  328.                 leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.500000954, -1.64282608, -0.0428800583, 0.999999821, -1.0857935e-08, 1.23050938e-08, 0, 0.939692557, 0.342019677, 1.49011612e-08, -0.342019677, 0.939692557),i)
  329.                 rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5, -2, 0, 0.999999821, 0, 1.49011612e-08, 0, 0.99999994, 0, 1.49011612e-08, 0, 0.99999994),i)
  330.                 humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(-0.416755676, -2.3635385, 0, 0.98480767, 0, -0.173648164, -0.173648179, -4.37113883e-08, -0.98480773, -7.59040297e-09, 1, -4.30473115e-08),i)
  331.                 head.C0 = head.C0:lerp(CFrame.new(-9.53674316e-07, 1.15137196, -0.85847187, 0.999999821, -4.60215439e-08, -1.65799918e-07, 1.71363354e-07, 0.173648059, 0.98480767, 2.98023153e-08, -0.984807611, 0.173648059),i)
  332.                 runservice.Stepped:wait()
  333.             end
  334.             local funnysine = 0
  335.             for i = 1,60 do
  336.                 local ray = Ray.new(character.Torso.Position, character.Torso.CFrame.upVector*-5.5)
  337.                 local hit, positionn = workspace:FindPartOnRayWithIgnoreList(ray, {character})
  338.                 if hit then
  339.                     break
  340.                 end
  341.                 velo.Velocity = velo.Velocity/1.01
  342.                 runservice.Stepped:wait()
  343.             end
  344.             velo:destroy()
  345.             action:destroy()
  346.             cananimate = true
  347.             cando = true
  348.         elseif what == "vwallrun" then
  349.             local polereally = false
  350.             if rayehit.Size.y <= 1 then
  351.                 if rayehit.Size.z > rayehit.Size.x and rayehit.Size.x <= 1 then
  352.                     --print("pole z > x BAD")
  353.                     polereally = true
  354.                 elseif rayehit.Size.x > rayehit.Size.z and rayehit.Size.z <= 1 then
  355.                     --print("pole x > z BAD")
  356.                     polereally = true
  357.                 end
  358.             end
  359.             if not polereally then
  360.                 cananimate = false
  361.                 cando = false
  362.                 humanoid.AutoRotate = false
  363.                 local action = Instance.new("BoolValue", character)
  364.                 action.Name = "vwallrun"
  365.                 character.HumanoidRootPart.CFrame = rootpos
  366.                 local goupvel = Instance.new("BodyVelocity", rootpart)
  367.                 goupvel.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
  368.                 goupvel.Velocity = Vector3.new(0,20,0)
  369.                 local gotin = false
  370.                 for i = 1,70 do
  371.                     local headray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.upVector * 3.5)
  372.                     local headrayhit, headraypos = workspace:FindPartOnRayWithIgnoreList(headray, {owner.Character})
  373.                     if headrayhit then
  374.                         gotin = false
  375.                         break
  376.                     end
  377.                     local headraywall = Ray.new(ownerhead.CFrame.p, ownerhead.CFrame.lookVector * 3)
  378.                     local headraywallhit, headraywallpos = workspace:FindPartOnRayWithIgnoreList(headraywall, {owner.Character})
  379.                     if not headraywallhit then
  380.                         gotin = true
  381.                         break
  382.                     end
  383.                     goupvel.Velocity = goupvel.Velocity/1.025
  384.                     humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(),0.3)
  385.                     head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(math.rad(30),0,0) * CFrame.new(0,0.5,0),0.3)
  386.                     leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(math.pi/2+math.sin(i/5),0,math.cos(i/5)/3) * CFrame.new(0,-0.5,0),0.3)
  387.                     rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(math.pi/2-math.sin(i/5),0,-math.cos(i/5)/3) * CFrame.new(0,-0.5,0),0.3)
  388.                     leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1-math.cos(i/5)/2,0) * CFrame.Angles(-math.sin(i/5),0,0) * CFrame.new(0,-1,0),0.3)
  389.                     rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1+math.cos(i/5)/2,0) * CFrame.Angles(math.sin(i/5),0,0) * CFrame.new(0,-1,0),0.3)
  390.                     runservice.Stepped:wait()
  391.                 end
  392.                 action:destroy()
  393.                 if gotin then
  394.                     rootpart.Anchored = true
  395.                     for i = 1,30 do
  396.                         rootpart.CFrame = rootpart.CFrame * CFrame.new(0,0.15,-math.sin(i/14)/9)
  397.                         humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.fromEulerAnglesXYZ(math.rad(-20),0,0),0.3)
  398.                         head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(math.rad(20),0,0) * CFrame.new(0,0.5,0),0.3)
  399.                         leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(math.rad(60)+math.cos(i/7)*1.5,0,0) * CFrame.new(0,-0.5,0),0.3)
  400.                         rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(math.rad(60)+math.cos(i/7)*1.5,0,0) * CFrame.new(0,-0.5,0),0.3)
  401.                         leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1,0) * CFrame.Angles(0,0,0) * CFrame.new(0,-1,0),0.3)
  402.                         rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-0.25+math.cos(i/7)/1.2,-0.5) * CFrame.Angles(0,0,0) * CFrame.new(0,-1,0),0.3)
  403.                         runservice.Stepped:wait()
  404.                     end
  405.                 end
  406.                 humanoid.AutoRotate = true
  407.                 rootpart.Anchored = false
  408.                 goupvel:destroy()
  409.                 cananimate = true
  410.                 cando = true
  411.             end
  412.         elseif what == "hwallrunright" and anim == "jumprun" or anim == "fallrun" and rayepos ~= nil then
  413.             cananimate = false
  414.             cando = false
  415.             humanoid.AutoRotate = false
  416.             local action = Instance.new("BoolValue", character)
  417.             action.Name = "hwallrunright"
  418.             rootpart.CFrame = CFrame.new(rayepos, rayepos + rayesurface) * CFrame.fromEulerAnglesXYZ(0,-math.pi/2,0)
  419.             rootpart.CFrame = rootpart.CFrame * CFrame.new(-1.8,0,0)
  420.             if rootpart:findFirstChild("wallrunvel") then
  421.                 rootpart:findFirstChild("wallrunvel"):destroy()
  422.             end
  423.             local goupvel = Instance.new("BodyVelocity", rootpart)
  424.             goupvel.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
  425.             goupvel.Velocity = rootpart.CFrame.lookVector * 20
  426.             goupvel.Name = "wallrunvel"
  427.             runsound.PlaybackSpeed = 1.7
  428.             runsound.Volume = 1.5
  429.             local jumped = false
  430.             local shouldcontinue = true
  431.             local candothat = true
  432.             for i = 1,20 do
  433.                 local rootrightray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.rightVector * 2.5)
  434.                 local wallrighthit, rootrightraypos = workspace:FindPartOnRayWithIgnoreList(rootrightray, {owner.Character})
  435.                 if not wallrighthit then
  436.                     shouldcontinue = false
  437.                     break
  438.                 end
  439.                 local rootfrontray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.lookVector * 4)
  440.                 local rootfrontrayhit, rootfrontraypos = workspace:FindPartOnRayWithIgnoreList(rootfrontray, {owner.Character})
  441.                 if rootfrontrayhit then
  442.                     shouldcontinue = false
  443.                     break
  444.                 end
  445.                 humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.fromEulerAnglesXYZ(0,0,math.rad(30)),0.3)
  446.                 head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(0,0,0) * CFrame.new(0,0.5,0),0.3)
  447.                 leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(-math.sin(tick()*14)*1.3,0,math.rad(-15)) * CFrame.new(0,-0.5,0),0.3)
  448.                 rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(0,0,math.pi/1.5) * CFrame.new(0,-0.5,0),0.3)
  449.                 leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1+math.cos(tick()*14)/2,-math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
  450.                 rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick()*14)/2,math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
  451.                 runservice.Stepped:wait()
  452.             end
  453.             for i = 1,60 do
  454.                 if candothat then
  455.                     if not shouldcontinue then
  456.                         break
  457.                     end
  458.                     if humanoid.Jump then
  459.                         jumped = true
  460.                         break
  461.                     end
  462.                     local rootrightray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.rightVector * 2.5)
  463.                     local wallrighthit, rootrightraypos = workspace:FindPartOnRayWithIgnoreList(rootrightray, {owner.Character})
  464.                     if not wallrighthit then
  465.                         break
  466.                     end
  467.                     local rootfrontray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.lookVector * 4)
  468.                     local rootfrontrayhit, rootfrontraypos = workspace:FindPartOnRayWithIgnoreList(rootfrontray, {owner.Character})
  469.                     if rootfrontrayhit then
  470.                         break
  471.                     end
  472.                     humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.fromEulerAnglesXYZ(0,0,math.rad(30)),0.3)
  473.                     head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(0,0,0) * CFrame.new(0,0.5,0),0.3)
  474.                     leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(-math.sin(tick()*14)*1.3,0,math.rad(-15)) * CFrame.new(0,-0.5,0),0.3)
  475.                     rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(0,0,math.pi/1.5) * CFrame.new(0,-0.5,0),0.3)
  476.                     leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1+math.cos(tick()*14)/2,-math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
  477.                     rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick()*14)/2,math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
  478.                     runservice.Stepped:wait()
  479.                 end
  480.             end
  481.             action:destroy()
  482.             candothat = false
  483.             if jumped then
  484.                 goupvel.Velocity = goupvel.Velocity + (rootpart.CFrame.rightVector*-20) + Vector3.new(0,5,0)
  485.                 game.Debris:AddItem(goupvel, 0.25)
  486.                 for i = 0,0.6 ,0.03 do
  487.                     if not cananimate then
  488.                         head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.fromEulerAnglesXYZ(math.rad(10),math.rad(-5),0) * CFrame.new(0,0.5,0),i)
  489.                         leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1,0) * CFrame.fromEulerAnglesXYZ(-math.rad(40),0,math.rad(-2)) * CFrame.new(0,-1,0),i)
  490.                         rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1,0) * CFrame.fromEulerAnglesXYZ(math.rad(40),0,math.rad(2)) * CFrame.new(0,-1,0),i)
  491.                         humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.fromEulerAnglesXYZ(math.rad(-10),0,math.rad(10)),i)
  492.                         leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,-0.5) * CFrame.fromEulerAnglesXYZ(math.pi/2+math.rad(20),0,0) * CFrame.new(0,-0.5,0),i)
  493.                         rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(-math.pi/3,0,0) * CFrame.new(0,-0.5,0),i)
  494.                         runservice.Stepped:wait()
  495.                     end
  496.                 end
  497.             else
  498.                 goupvel:destroy()
  499.             end
  500.             humanoid.AutoRotate = true
  501.             cananimate = true
  502.             cando = true
  503.         elseif what == "hwallrunleft" and anim == "jumprun" or anim == "fallrun" and rayepos ~= nil then
  504.             cananimate = false
  505.             cando = false
  506.             humanoid.AutoRotate = false
  507.             local action = Instance.new("BoolValue", character)
  508.             action.Name = "hwallrunleft"
  509.             rootpart.CFrame = CFrame.new(rayepos, rayepos + rayesurface) * CFrame.fromEulerAnglesXYZ(0,math.pi/2,0)
  510.             rootpart.CFrame = rootpart.CFrame * CFrame.new(1.8,0,0)
  511.             if rootpart:findFirstChild("wallrunvel") then
  512.                 rootpart:findFirstChild("wallrunvel"):destroy()
  513.             end
  514.             local goupvel = Instance.new("BodyVelocity", rootpart)
  515.             goupvel.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
  516.             goupvel.Velocity = rootpart.CFrame.lookVector * 20
  517.             goupvel.Name = "wallrunvel"
  518.             runsound.PlaybackSpeed = 1.7
  519.             runsound.Volume = 1.5
  520.             local jumped = false
  521.             local shouldcontinue = true
  522.             local candothat = true
  523.             for i = 1,20 do
  524.                 local rootrightray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.rightVector * -2.5)
  525.                 local wallrighthit, rootrightraypos = workspace:FindPartOnRayWithIgnoreList(rootrightray, {owner.Character})
  526.                 if not wallrighthit then
  527.                     shouldcontinue = false
  528.                     break
  529.                 end
  530.                 local rootfrontray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.lookVector * 4)
  531.                 local rootfrontrayhit, rootfrontraypos = workspace:FindPartOnRayWithIgnoreList(rootfrontray, {owner.Character})
  532.                 if rootfrontrayhit then
  533.                     shouldcontinue = false
  534.                     break
  535.                 end
  536.                 humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.fromEulerAnglesXYZ(0,0,math.rad(-30)),0.3)
  537.                 head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(0,0,0) * CFrame.new(0,0.5,0),0.3)
  538.                 leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(0,0,-math.pi/1.5) * CFrame.new(0,-0.5,0),0.3)
  539.                 rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(-math.sin(tick()*14)*1.3,0,math.rad(15)) * CFrame.new(0,-0.5,0),0.3)
  540.                 leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1+math.cos(tick()*14)/2,-math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
  541.                 rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick()*14)/2,math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
  542.                 runservice.Stepped:wait()
  543.             end
  544.             for i = 1,60 do
  545.                 if candothat then
  546.                     if not shouldcontinue then
  547.                         break
  548.                     end
  549.                     if humanoid.Jump then
  550.                         jumped = true
  551.                         break
  552.                     end
  553.                     local rootrightray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.rightVector * -2.5)
  554.                     local wallrighthit, rootrightraypos = workspace:FindPartOnRayWithIgnoreList(rootrightray, {owner.Character})
  555.                     if not wallrighthit then
  556.                         break
  557.                     end
  558.                     local rootfrontray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.lookVector * 4)
  559.                     local rootfrontrayhit, rootfrontraypos = workspace:FindPartOnRayWithIgnoreList(rootfrontray, {owner.Character})
  560.                     if rootfrontrayhit then
  561.                         break
  562.                     end
  563.                     humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.fromEulerAnglesXYZ(0,0,math.rad(-30)),0.3)
  564.                     head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(0,0,0) * CFrame.new(0,0.5,0),0.3)
  565.                     leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(0,0,-math.pi/1.5) * CFrame.new(0,-0.5,0),0.3)
  566.                     rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(-math.sin(tick()*14)*1.3,0,math.rad(15)) * CFrame.new(0,-0.5,0),0.3)
  567.                     leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1+math.cos(tick()*14)/2,-math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
  568.                     rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick()*14)/2,math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
  569.                     runservice.Stepped:wait()
  570.                 end
  571.             end
  572.             action:destroy()
  573.             candothat = false
  574.             if jumped then
  575.                 goupvel.Velocity = goupvel.Velocity + (rootpart.CFrame.rightVector*20) + Vector3.new(0,5,0)
  576.                 game.Debris:AddItem(goupvel, 0.25)
  577.                 for i = 0,0.6 ,0.03 do
  578.                     if not cananimate then
  579.                         head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.fromEulerAnglesXYZ(math.rad(10),math.rad(-5),0) * CFrame.new(0,0.5,0),i)
  580.                         leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1,0) * CFrame.fromEulerAnglesXYZ(-math.rad(40),0,math.rad(-2)) * CFrame.new(0,-1,0),i)
  581.                         rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1,0) * CFrame.fromEulerAnglesXYZ(math.rad(40),0,math.rad(2)) * CFrame.new(0,-1,0),i)
  582.                         humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.fromEulerAnglesXYZ(math.rad(-10),0,math.rad(-10)),i)
  583.                         leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,-0.5) * CFrame.fromEulerAnglesXYZ(-math.pi/3,0,0) * CFrame.new(0,-0.5,0),i)
  584.                         rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(math.pi/2+math.rad(20),0,0) * CFrame.new(0,-0.5,0),i)
  585.                         runservice.Stepped:wait()
  586.                     end
  587.                 end
  588.             else
  589.                 goupvel:destroy()
  590.             end
  591.             humanoid.AutoRotate = true
  592.             cananimate = true
  593.             cando = true
  594.         elseif what == "triggerroll" then
  595.             if roll then
  596.                 roll = false
  597.             elseif not roll then
  598.                 roll = true
  599.             end
  600.         elseif what == "polegrab" then
  601.             local polereally = false
  602.             if rayehit.Size.y <= 1 then
  603.                 if rayehit.Size.z > rayehit.Size.x and rayehit.Size.x <= 1 then
  604.                     --print("pole z > x")
  605.                     polereally = true
  606.                 elseif rayehit.Size.x > rayehit.Size.z and rayehit.Size.z <= 1 then
  607.                     --print("pole x > z")
  608.                     polereally = true
  609.                 end
  610.             end
  611.             if polereally then
  612.                 cando = false
  613.                 cananimate = false
  614.                 humanoid.AutoRotate = false
  615.                 rootpart.Anchored = true
  616.                 grabbedpole = true
  617.                 local action = Instance.new("BoolValue", character)
  618.                 action.Name = "pole"
  619.                 local thesine = 0
  620.                 local speed = 3
  621.                 local sineadd = 0.2
  622.                 local multiply = 1.2
  623.                 coroutine.wrap(function()
  624.                     while grabbedpole and runservice.Stepped:wait() do
  625.                         thesine = thesine + sineadd
  626.                         head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(-math.sin(thesine/speed)*(multiply/1.5),0,0) * CFrame.new(0,0.5,0),0.3)
  627.                         leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(math.pi,0,0) * CFrame.new(0,-0.8,0),0.3)
  628.                         rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(math.pi,0,0) * CFrame.new(0,-0.8,0),0.3)
  629.                         leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1,0) * CFrame.Angles(math.sin(thesine/speed)*multiply,0,0) * CFrame.new(0,-1,0),0.3)
  630.                         rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1,0) * CFrame.Angles(math.sin(thesine/speed)*multiply,0,0) * CFrame.new(0,-1,0),0.3)
  631.                         rootpart.CFrame = CFrame.new(rayepos, rayepos + rayesurface) * CFrame.fromEulerAnglesXYZ(-math.sin(thesine/speed)*multiply,math.pi,0) * CFrame.new(0,-2.5,0)
  632.                         if humanoid.Jump and math.sin(thesine/speed) > 0.2 then
  633.                             rootpart.Anchored = false
  634.                             grabbedpole = false
  635.                             action:destroy()
  636.                             local v = Instance.new("BodyVelocity", rootpart)
  637.                             v.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
  638.                             v.Velocity = rootpart.CFrame.lookVector * 20
  639.                             game.Debris:AddItem(v, 0.5)
  640.                             humanoid.AutoRotate = true
  641.                             cananimate = true
  642.                             cando = true
  643.                             break
  644.                         end
  645.                     end
  646.                 end)()
  647.             end
  648.         end
  649.     end
  650. end)
  651. coroutine.wrap(function()
  652.     while runservice.Stepped:wait() do
  653.         if rootpart.Velocity.x >= 2 or rootpart.Velocity.x <= -2 or rootpart.Velocity.z >= 2 or rootpart.Velocity.z <= -2 then
  654.             if humanoid.FloorMaterial == Enum.Material.Air then
  655.                 if rootpart.Velocity.x >= 16 or rootpart.Velocity.x <= -16 or rootpart.Velocity.z >= 16 or rootpart.Velocity.z <= -16 then
  656.                     if rootpart.Velocity.y >= 3 then
  657.                         anim = "jumprun"
  658.                         --print("jumping (running)")
  659.                     elseif rootpart.Velocity.y <= -3 then
  660.                         anim = "fallrun"
  661.                         --("falling (running)")
  662.                     end
  663.                 else
  664.                     if rootpart.Velocity.y >= 3 then
  665.                         anim = "jump"
  666.                         --print("jumping (walking)")
  667.                     elseif rootpart.Velocity.y <= -3 then
  668.                         anim = "fall"
  669.                         --print("falling (walking)")
  670.                     end
  671.                 end
  672.             else
  673.                 if rootpart.Velocity.x >= 16 or rootpart.Velocity.x <= -16 or rootpart.Velocity.z >= 16 or rootpart.Velocity.z <= -16 then
  674.                     anim = "run"
  675.                     --print("running")
  676.                 else
  677.                     anim = "walk"
  678.                     --print("walking")
  679.                 end
  680.             end
  681.         elseif rootpart.Velocity.x <= 2 or rootpart.Velocity.x >= -2 or rootpart.Velocity.z <= 2 or rootpart.Velocity.z >= -2 then
  682.             if humanoid.FloorMaterial == Enum.Material.Air then
  683.                 if rootpart.Velocity.y >= 3 then
  684.                     anim = "jump"
  685.                     --print("jumping (standing)")
  686.                 elseif rootpart.Velocity.y < -3 then
  687.                     anim = "fall"
  688.                     --print("falling (standing)")
  689.                 end
  690.             else
  691.                 anim = "idle"
  692.                 --print("standing")
  693.             end
  694.         end
  695.     end
  696. end)()
  697. coroutine.wrap(function()
  698.     while runservice.Stepped:wait() do
  699.         if rootpart.Velocity.y < -90 then
  700.             while rootpart.Velocity.y < 0 and rootpart.Velocity.y >= -135 and runservice.Stepped:wait() do
  701.                 --print("falling")
  702.             end
  703.             if rootpart.Velocity.y >= -135 then
  704.                 cananimate = false
  705.                 if not roll then
  706.                     print('hit ground')
  707.                     runsound.Volume = 0
  708.                     bodyhitsound.TimePosition = 1
  709.                     bodyhitsound:Play()
  710.                     local action = Instance.new("BoolValue", character)
  711.                     action.Name = "ouchfell"
  712.                     humanoid.WalkSpeed = 0
  713.                     humanoid.JumpPower = 0
  714.                     humanoid.Health = humanoid.Health - math.random(30,60)
  715.                     for i = 0,1 , 0.04 do
  716.                         humanoid.WalkSpeed = 0
  717.                         humanoid.JumpPower = 0
  718.                         rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.03661776, -0.287070274, -0.937994003, 1, 2.13205098e-09, 1.80749957e-08, 2.98023224e-08, 0.642787397, -0.766044438, 4.47034836e-08, 0.766044438, 0.642787457),i)
  719.                         leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5, 0.00759601593, -0.0868253708, 1.00000012, 4.17280432e-09, 2.23762484e-08, 3.55271368e-15, 0.98480767, -0.173648164, 2.98023224e-08, 0.173648179, 0.98480773),i)
  720.                         leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.188133717, -0.968682289, -0.200000763, 0.939692676, -0.342020154, 2.98023224e-08, 0.342020094, 0.939692557, -8.8817842e-16, 2.7206255e-08, -7.1326367e-09, 1),i)
  721.                         rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5, -2, -9.53674316e-07, 1.00000012, 3.55271368e-15, 2.98023224e-08, 3.55271368e-15, 0.99999994, -8.8817842e-16, 2.98023224e-08, -8.8817842e-16, 1),i)
  722.                         humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0.138917923, -1.81215382, -0.199999809, -0.17364794, 0, 0.984807789, -0.984807849, -4.37113883e-08, -0.173647955, 4.3047315e-08, -1, 7.59039409e-09),i)
  723.                         head.C0 = head.C0:lerp(CFrame.new(0, 1.3184042, -0.620952606, 1.00000012, -2.15236486e-08, 7.42341655e-09, 3.55271368e-15, 0.499999791, 0.866025388, 2.98023224e-08, -0.866025388, 0.499999791),i)
  724.                         runservice.Stepped:wait()
  725.                     end
  726.                     wait(0.7)
  727.                     for i = 0,0.35 , 0.005 do
  728.                         humanoid.WalkSpeed = 0
  729.                         humanoid.JumpPower = 0
  730.                         rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.43661785, 0.8717556, -1.1015135, 0.99999994, -1.49011354e-08, 2.58095625e-08, 2.98023171e-08, -0.342020303, -0.939692438, 1.49011914e-08, 0.939692736, -0.342020363),i)
  731.                         leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5, 0.691013336, -1.08328879, 1, 1.29770106e-14, -3.44476568e-15, -1.36212808e-15, -0.173648149, -0.98480767, 2.84217094e-14, 0.984807968, -0.173648193),i)
  732.                         leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5, -0.697739601, -0.911438107, 0.99999994, 6.67691635e-15, 1.17806545e-14, -1.36212851e-15, 0.939692438, -0.342020303, 2.84217094e-14, 0.342020422, 0.939692795),i)
  733.                         rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.500000954, -1.51961517, -1.30000019, 1, 6.15348006e-15, 1.0658141e-14, -1.36212808e-15, 0.866025329, -0.49999997, 2.84217094e-14, 0.500000119, 0.866025627),i)
  734.                         humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0.138917923, -0.812153816, -0.199999809, 1, 0, -1.93715096e-07, 1.93715096e-07, -4.37113883e-08, 1.00000012, -7.10542736e-15, -1, -4.37113883e-08),i)
  735.                         head.C0 = head.C0:lerp(CFrame.new(0, 1.56080723, -0.0747625828, 1, -3.66066168e-15, 2.96555518e-14, -1.36212808e-15, 0.98480767, 0.173648074, 2.84217094e-14, -0.173648104, 0.984807909),i)
  736.                         runservice.Stepped:wait()
  737.                     end
  738.                     humanoid.JumpPower = 50
  739.                     game.Debris:AddItem(action, 0.3)
  740.                     cananimate = true
  741.                 else
  742.                     local action = Instance.new("BoolValue", character)
  743.                     action.Name = "rollin"
  744.                     local rotva = 0
  745.                     coroutine.wrap(function()
  746.                         humanoidrootpart.C0 = CFrame.new(0,-1.5,0)
  747.                         for i = 1,35 do
  748.                             rootpart.CFrame = rootpart.CFrame * CFrame.new(0,0,-0.3)
  749.                             humanoidrootpart.C0 = humanoidrootpart.C0 * CFrame.fromEulerAnglesXYZ(math.rad(-8.5),0,0)
  750.                             runservice.Stepped:wait()
  751.                         end
  752.                         action:destroy()
  753.                         cananimate = true
  754.                     end)()
  755.                     for i = 0,1 , 0.04 do
  756.                         rightarm.C0 = rightarm.C0:lerp(CFrame.new(0.5, 0.41317749, -1.40775204, 1.12057243e-08, 1, 4.07854905e-09, 0.173648134, 2.0707327e-09, -0.984807491, -0.984807551, 1.17437136e-08, -0.173648149),i)
  757.                         leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5, 0.178607941, -0.38302207, 1, 0, 0, 0, 0.642787397, -0.766044199, 0, 0.766044259, 0.642787457),i)
  758.                         leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5, -0.93637085, -0.903905869, 1, 0, 0, 0, 0.642787278, 0.766044319, 0, -0.766044378, 0.642787337),i)
  759.                         rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5, -1.08567047, -0.913578272, 1, 0, 0, 0, 0.642787516, 0.76604408, 0, -0.76604414, 0.642787576),i)
  760.                         head.C0 = head.C0:lerp(CFrame.new(0, 1.30701828, -0.629077435, 1, 0, 0, 0, 0.438599855, 0.898682296, 0, -0.898682296, 0.438599855),i)
  761.                         runservice.Stepped:wait()
  762.                     end
  763.                 end
  764.             elseif rootpart.Velocity.y < -135 then
  765.                 fallingtodeath = true
  766.                 local action = Instance.new("BoolValue", character)
  767.                 action.Name = "FALLING"
  768.                 local i = 0
  769.                 while runservice.Stepped:wait() do
  770.                     fallingsound.Volume = fallingsound.Volume + 0.06
  771.                     i = i + 1
  772.                     humanoidrootpart.C0 = humanoidrootpart.C0 * CFrame.fromEulerAnglesXYZ(math.rad(1.5),math.rad(0.5),math.rad(1))
  773.                     head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(math.rad(-10),0,0) * CFrame.new(0,0.5,0),0.2)
  774.                     leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(math.pi/2+math.sin(i/5)*1.8,0,math.cos(i/5)/1.5) * CFrame.new(0,-0.7,0),0.2)
  775.                     rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(math.pi/2+math.sin(i/4.5)*1.8,0,-math.cos(i/5)/1.5) * CFrame.new(0,-0.7,0),0.2)
  776.                     leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1-math.cos(i/5)/2,0) * CFrame.Angles(-math.sin(i/5),0,0) * CFrame.new(0,-1,0),0.2)
  777.                     rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1+math.cos(i/5)/2,0) * CFrame.Angles(math.sin(i/5),0,0) * CFrame.new(0,-1,0),0.2)
  778.                     --print('death falling')
  779.                 end
  780.             end
  781.         end
  782.     end
  783. end)()
  784. while runservice.Stepped:wait() do
  785.     if cananimate and not fallingtodeath then
  786.         runsound.Volume = 0
  787.         if anim == "idle" then
  788.             head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.fromEulerAnglesXYZ(0,math.rad(-5),0) * CFrame.new(0,0.5,0),0.2)
  789.             leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1-math.cos(tick())/15,0) * CFrame.fromEulerAnglesXYZ(0,0,math.rad(-2)) * CFrame.new(0,-1,0),0.2)
  790.             rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick())/15,0) * CFrame.fromEulerAnglesXYZ(0,0,math.rad(2)) * CFrame.new(0,-1,0),0.2)
  791.             humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0,math.cos(tick())/15,0) * CFrame.fromEulerAnglesXYZ(0,math.rad(5),0),0.2)
  792.             leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(0,0,math.rad(-5)-math.sin(tick())/20) * CFrame.new(0,-0.5,0),0.2)
  793.             rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(0,0,math.rad(5)+math.sin(tick())/20) * CFrame.new(0,-0.5,0),0.2)
  794.         elseif anim == "walk" then
  795.             runsound.Volume = 0.4
  796.             runsound.PlaybackSpeed = 1.1
  797.             head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.fromEulerAnglesXYZ(0,0,0) * CFrame.new(0,0.5,0),0.2)
  798.             leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1+math.cos(tick()*12)/4,-math.cos(tick()*12)/1.5) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*12)*1.5,0,0) * CFrame.new(0,-1,0),0.2)
  799.             rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick()*12)/4,math.cos(tick()*12)/1.5) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*12)*1.5,0,0) * CFrame.new(0,-1,0),0.2)
  800.             humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0,math.sin(tick()*24)/12,0) * CFrame.fromEulerAnglesXYZ(-math.rad(5),0,0),0.2)
  801.             leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.3+math.sin(tick()*12)/3,-0.2+math.sin(tick()*12)/2) * CFrame.fromEulerAnglesXYZ(math.rad(40)-math.sin(tick()*12)*2,0,-math.sin(tick()*12)/2.5) * CFrame.new(0,-0.5,0),0.2)
  802.             rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.3-math.sin(tick()*12)/3,-0.2-math.sin(tick()*12)/2) * CFrame.fromEulerAnglesXYZ(math.rad(40)+math.sin(tick()*12)*2,0,-math.sin(tick()*12)/2.5) * CFrame.new(0,-0.5,0),0.2)
  803.         elseif anim == "run" then
  804.             runsound.Volume = 1
  805.             runsound.PlaybackSpeed = 1.4
  806.             head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.fromEulerAnglesXYZ(math.rad(10),0,0) * CFrame.new(0,0.5,0),0.2)
  807.             leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1+math.cos(tick()*12)/2,-math.cos(tick()*12)/1.5) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*12)*1.4,0,0) * CFrame.new(0,-1,0),0.2)
  808.             rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick()*12)/2,math.cos(tick()*12)/1.5) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*12)*1.4,0,0) * CFrame.new(0,-1,0),0.2)
  809.             humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0,-0.2+math.sin(tick()*24)/10,0) * CFrame.fromEulerAnglesXYZ(0,math.rad(-rootpart.Orientation.y),0) * CFrame.fromEulerAnglesXYZ(humanoid.MoveDirection.z/5,0,-humanoid.MoveDirection.x/5) * CFrame.fromEulerAnglesXYZ(0,math.rad(rootpart.Orientation.y),0) * CFrame.fromEulerAnglesXYZ(-math.rad(10),0,0),0.2)
  810.             leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(math.rad(10)-math.sin(tick()*12)*1.9,0,-math.sin(tick()*12)/2.5) * CFrame.new(0,-0.7,0),0.2)
  811.             rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(math.rad(10)+math.sin(tick()*12)*1.9,0,-math.sin(tick()*12)/2.5) * CFrame.new(0,-0.7,0),0.2)
  812.         elseif anim == "jumprun" or anim == "fallrun" then
  813.             if not roll then
  814.                 head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.fromEulerAnglesXYZ(math.rad(20),0,0) * CFrame.new(0,0.5,0),0.2)
  815.                 leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1-math.cos(tick())/15,0) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*2),0,math.rad(-2)) * CFrame.new(0,-1,0),0.2)
  816.                 rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick())/15,0) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*2),0,math.rad(2)) * CFrame.new(0,-1,0),0.2)
  817.                 humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0,math.cos(tick())/15,0) * CFrame.fromEulerAnglesXYZ(math.rad(-20),0,0),0.2)
  818.                 leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(-math.pi/3+math.sin(tick()*2)/5,0,math.cos(tick()*2)/5) * CFrame.new(0,-0.5,0),0.2)
  819.                 rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(math.pi/2+math.rad(20)+math.sin(tick()*2)/5,0,-math.cos(tick()*2)/5) * CFrame.new(0,-0.5,0),0.2)
  820.             else
  821.                 head.C0 = head.C0:lerp(CFrame.new(0, 1.38302183, -0.321395874, 1, 0, 0, 0, 0.766044259, 0.642787695, 0, -0.642787695, 0.766044259),0.2)
  822.                 leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5, -2.00000048, 3.81469727e-06, 1, 0, 0, 0, 0.99999994, 0, 0, 1.49011612e-08, 1),0.2)
  823.                 rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5, -2.00000048, 3.81469727e-06, 1, 0, 0, 0, 0.99999994, 0, 0, 1.49011612e-08, 1),0.2)
  824.                 humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0, 0, 0, 1, 0, 0, 0, 0.984807789, 0.17364797, 0, -0.17364797, 0.984807789),0.2)
  825.                 leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.18301296, -0.0232186317, -0.439029694, 0.866025329, -0.49999997, 0, 0.383022159, 0.663413882, -0.642787457, 0.321393758, 0.556670368, 0.766044438),0.2)
  826.                 rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.18301296, -0.0232186317, -0.439029694, 0.866025388, 0.5, 0, -0.3830221, 0.663413823, -0.642787635, -0.321393877, 0.556670487, 0.766044259),0.2)
  827.             end
  828.         elseif anim == "jump" or anim == "fall" then
  829.             head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.fromEulerAnglesXYZ(0,0,0) * CFrame.new(0,0.5,0),0.2)
  830.             leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,0,-0.5) * CFrame.fromEulerAnglesXYZ(0,0,math.rad(-2)) * CFrame.new(0,-1,0),0.2)
  831.             rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1,0) * CFrame.fromEulerAnglesXYZ(0,0,math.rad(2)) * CFrame.new(0,-1,0),0.2)
  832.             humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0,math.cos(tick())/15,0) * CFrame.fromEulerAnglesXYZ(0,0,0),0.2)
  833.             leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(math.pi-math.rad(30),0,0) * CFrame.new(0,-0.5,0),0.2)
  834.             rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(math.pi-math.rad(30),0,0) * CFrame.new(0,-0.5,0),0.2)
  835.         end
  836.     end
  837. end
Add Comment
Please, Sign In to add comment