HenloMyDude

Parkour V2 but its a speed mod

Dec 18th, 2019
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 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 + 50.2
  192. elseif walkpressed == 0 and humanoid.WalkSpeed > 0 and not owner.Character:findFirstChild("ouchfell") then
  193. humanoid.WalkSpeed = humanoid.WalkSpeed - 50.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()*50)/4,-math.cos(tick()*12)/1.5) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*50)*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()*50)/4,math.cos(tick()*12)/1.5) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*50)*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()*50)/3,-0.2+math.sin(tick()*50)/2) * CFrame.fromEulerAnglesXYZ(math.rad(40)-math.sin(tick()*50)*2,0,-math.sin(tick()*50)/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()*50)/3,-0.2-math.sin(tick()*50)/2) * CFrame.fromEulerAnglesXYZ(math.rad(40)+math.sin(tick()*50)*2,0,-math.sin(tick()*50)/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()*50)/2,-math.cos(tick()*50)/1.5) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*50)*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()*50)/2,math.cos(tick()*50)/1.5) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*50)*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()*64)/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()*50)*1.9,0,-math.sin(tick()*50)/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()*50)*1.9,0,-math.sin(tick()*50)/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