ohhhhhhshdhashdahsd

3D Grap

Jun 26th, 2016
354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 25.37 KB | None | 0 0
  1. --3DG
  2. --three dimensional grapples
  3. function clerp(c1,c2,al)
  4. local com1 = {c1.X,c1.Y,c1.Z,c1:toEulerAnglesXYZ()}
  5. local com2 = {c2.X,c2.Y,c2.Z,c2:toEulerAnglesXYZ()}
  6. for i,v in pairs(com1) do
  7. com1[i] = v+(com2[i]-v)*al
  8. end
  9. return CFrame.new(com1[1],com1[2],com1[3]) * CFrame.Angles(select(4,unpack(com1)))
  10. end
  11.  
  12. plr = game:service'Players'.LocalPlayer
  13. plrgui = plr.PlayerGui
  14. char = plr.Character
  15. mouse = plr:GetMouse()
  16. humanoid = char:findFirstChild("Humanoid")
  17. torso = char:findFirstChild("Torso")
  18. head = char.Head
  19. ra = char:findFirstChild("Right Arm")
  20. la = char:findFirstChild("Left Arm")
  21. rl = char:findFirstChild("Right Leg")
  22. ll = char:findFirstChild("Left Leg")
  23. rs = torso:findFirstChild("Right Shoulder")
  24. ls = torso:findFirstChild("Left Shoulder")
  25. rh = torso:findFirstChild("Right Hip")
  26. lh = torso:findFirstChild("Left Hip")
  27. neck = torso:findFirstChild("Neck")
  28. rj = char:findFirstChild("HumanoidRootPart"):findFirstChild("RootJoint")
  29. rootpart = char:findFirstChild("HumanoidRootPart")
  30. camera = workspace.CurrentCamera
  31. anim = char:findFirstChild("Animate")
  32. if anim then
  33. anim:Destroy()
  34. end
  35.  
  36. local lal = Instance.new('Sound', head)
  37. lal.SoundId = "rbxassetid://145048800"
  38. lal.Volume = 1
  39. lal:play()
  40. game:service'Debris':AddItem(lal, 8)
  41.  
  42. local rm = Instance.new("Weld", torso)
  43. rm.C0 = CFrame.new(1.5, 0.5, 0)
  44. rm.C1 = CFrame.new(0, 0.5, 0)
  45. rm.Part0 = torso
  46. rm.Part1 = ra
  47. rm.Name = 'Right Shoulder'
  48.  
  49. local lm = Instance.new("Weld", torso)
  50. lm.C0 = CFrame.new(-1.5, 0.5, 0)
  51. lm.C1 = CFrame.new(0, 0.5, 0)
  52. lm.Part0 = torso
  53. lm.Part1 = la
  54. lm.Name = 'Left Shoulder'
  55.  
  56. local rlegm = Instance.new("Weld", torso)
  57. rlegm.C0 = CFrame.new(0.5, -1, 0)
  58. rlegm.C1 = CFrame.new(0, 1, 0)
  59. rlegm.Part0 = torso
  60. rlegm.Part1 = rl
  61.  
  62. local llegm = Instance.new("Weld", torso)
  63. llegm.C0 = CFrame.new(-0.5, -1, 0)
  64. llegm.C1 = CFrame.new(0, 1, 0)
  65. llegm.Part0 = torso
  66. llegm.Part1 = ll
  67.  
  68. rj.C0 = CFrame.new()
  69. rj.C1 = CFrame.new()
  70.  
  71. neck.C0 = CFrame.new(0, 1, 0)
  72. neck.C1 = CFrame.new(0, -0.5, 0)
  73.  
  74.  
  75. local speed = 0.3
  76. local angle = 0
  77. local anglespeed = 1
  78. rsc0 = rm.C0
  79. lsc0 = lm.C0
  80. llc0 = llegm.C0
  81. rlc0 = rlegm.C0
  82. rootc0 = rj.C0
  83. neckc0 = neck.C0
  84.  
  85. model = Instance.new('Model', char)
  86. model.Name = '3DG'
  87. function Weld(part0,part1,c1,c0)
  88. local w = Instance.new('Weld', model)
  89. w.Part0 = part0
  90. w.Part1 = part1
  91. w.C0 = c0 or CFrame.new()
  92. w.C1 = c1 or CFrame.new()
  93. end
  94.  
  95. local BasePart = Instance.new('Part')
  96. BasePart.FormFactor = 'Custom'
  97. BasePart.Material = 'Neon'
  98. BasePart.CanCollide = false
  99. BasePart.Locked = true
  100. BasePart.TopSurface = 10
  101. BasePart.BottomSurface = 10
  102. BasePart.LeftSurface = 10
  103. BasePart.RightSurface = 10
  104. BasePart.FrontSurface = 10
  105. BasePart.BackSurface = 10
  106. BasePart:breakJoints()
  107.  
  108.  
  109. for i = 1,2 do
  110. local strap = BasePart:clone()
  111. strap.Size = Vector3.new(1.025,.2,1.025)
  112. strap.Parent = model
  113. strap.BrickColor = BrickColor.new()
  114. strap:BreakJoints()
  115. Weld(strap, la, CFrame.new(0, .1 - i/3,0))
  116. end
  117.  
  118. for i = 1,2 do
  119. local strap = BasePart:clone()
  120. strap.Size = Vector3.new(1.025,.2,1.025)
  121. strap.Parent = model
  122. strap.BrickColor = BrickColor.new()
  123. strap:BreakJoints()
  124. Weld(strap, ra, CFrame.new(0, .1 - i/3,0))
  125. end
  126.  
  127. local ropeStart = BasePart:clone()
  128. ropeStart.Size = Vector3.new(.2,1.75,.2)
  129. ropeStart.Parent = model
  130. ropeStart.BrickColor = BrickColor.new()
  131. ropeStart:BreakJoints()
  132. Weld(ropeStart, ra, CFrame.new(-.45, -.5, 0))
  133. local ropeStart2 = BasePart:clone()
  134. ropeStart2.Size = Vector3.new(.2,1.75,.2)
  135. ropeStart2.Parent = model
  136. ropeStart2.BrickColor = BrickColor.new()
  137. ropeStart2:BreakJoints()
  138. Weld(ropeStart2, la, CFrame.new(.45, -.5, 0))
  139.  
  140. local ropeCont = BasePart:clone()
  141. ropeCont.Size = Vector3.new(.8,.2,.8)
  142. ropeCont.Parent = model
  143. ropeCont.BrickColor = BrickColor.new(199)
  144. ropeCont:BreakJoints()
  145. Instance.new('CylinderMesh', ropeCont)
  146. Weld(ropeCont, la, CFrame.new(.5, .05, 0), CFrame.Angles(math.pi/2, math.pi/2, 0))
  147. local ropeCont2 = BasePart:clone()
  148. ropeCont2.Size = Vector3.new(.8,.2,.8)
  149. ropeCont2.Parent = model
  150. ropeCont2.BrickColor = BrickColor.new(199)
  151. ropeCont2:BreakJoints()
  152. Instance.new('CylinderMesh', ropeCont2)
  153. Weld(ropeCont2, ra, CFrame.new(-.5, .05, 0), CFrame.Angles(math.pi/2, math.pi/2, 0))
  154.  
  155. local GasTank = BasePart:clone()
  156. GasTank.Size = Vector3.new(.8,1.4,.8)
  157. GasTank.Parent = model
  158. GasTank.BrickColor = BrickColor.new(194)
  159. GasTank:BreakJoints()
  160. Instance.new('SpecialMesh', GasTank)
  161. Weld(GasTank, ra, CFrame.new(0, -.25, .5))
  162. local GasTank2 = BasePart:clone()
  163. GasTank2.Size = Vector3.new(.8,1.4,.8)
  164. GasTank2.Parent = model
  165. GasTank2.BrickColor = BrickColor.new(194)
  166. GasTank2:BreakJoints()
  167. Instance.new('SpecialMesh', GasTank2)
  168. Weld(GasTank2, la, CFrame.new(0, -.25, .5))
  169.  
  170. local pa = BasePart:clone()
  171. pa.BrickColor = BrickColor.new()
  172. pa.Anchored = true
  173. pa.Size = Vector3.new(.5,1,.5)
  174. local special = Instance.new('SpecialMesh', pa)
  175. special.MeshId = "rbxassetid://1033714"
  176. special.Scale = Vector3.new(.25,2,.25)
  177. local ropePA = BasePart:clone()
  178. ropePA.Parent = pa
  179. ropePA.Anchored = true
  180. ropePA.BrickColor = BrickColor.new'White'
  181. Instance.new('CylinderMesh', ropePA).Scale = Vector3.new(.25,1,.25)
  182.  
  183. local pa2 = BasePart:clone()
  184. pa2.BrickColor = BrickColor.new()
  185. pa2.Anchored = true
  186. pa2.Size = Vector3.new(.5,1,.5)
  187. local special = Instance.new('SpecialMesh', pa2)
  188. special.MeshId = "rbxassetid://1033714"
  189. special.Scale = Vector3.new(.25,2,.25)
  190. local ropePA2 = BasePart:clone()
  191. ropePA2.Parent = pa2
  192. ropePA2.Anchored = true
  193. ropePA2.BrickColor = BrickColor.new'White'
  194. Instance.new('CylinderMesh', ropePA2).Scale = Vector3.new(.25,1,.25)
  195.  
  196. local pa3 = BasePart:clone()
  197. pa3.Transparency = 1
  198. pa3.Anchored = true
  199. pa3.Size = Vector3.new(2,2,2)
  200.  
  201. local torso3 = Instance.new('Part', char)
  202. torso3.Name = 'FakeTorsoForStuff'
  203. torso3.Size = torso.Size
  204. torso3.Transparency = 1
  205. torso3:breakJoints()
  206. Weld(torso3, torso)
  207.  
  208. Instance.new('PointLight', torso)
  209.  
  210. local jumpmode
  211.  
  212. local SGui = Instance.new('ScreenGui', plr.PlayerGui)
  213. local JumpButton = Instance.new('TextButton', SGui)
  214. JumpButton.BackgroundColor = BrickColor.new('Dark stone grey')
  215. JumpButton.BorderSizePixel = 4
  216. JumpButton.TextColor3 = Color3.new(1,1,1)
  217. JumpButton.BorderColor3 = Color3.new()
  218. JumpButton.TextStrokeTransparency = .5
  219. JumpButton.FontSize = 'Size12'
  220. JumpButton.Text = 'Thrust up when grappled'
  221. JumpButton.Size = UDim2.new(0, 250, 0, 50)
  222. JumpButton.Position = UDim2.new(1, -250, 1, -50)
  223. local OnOff = Instance.new('Frame', JumpButton)
  224. OnOff.BackgroundColor3 = Color3.new()
  225. OnOff.BorderSizePixel = 0
  226. OnOff.Size = UDim2.new(.8, 0, 0, 5)
  227. OnOff.Position = UDim2.new(.1, 0, 1, -10)
  228. JumpButton.MouseButton1Down:connect(function()
  229. jumpmode = not jumpmode
  230. if jumpmode then
  231. OnOff.BackgroundColor3 = Color3.new(0,1,0)
  232. else
  233. OnOff.BackgroundColor3 = Color3.new()
  234. end
  235. end)
  236.  
  237.  
  238.  
  239. local bodygyro = Instance.new('BodyGyro', torso)
  240. bodygyro.maxTorque = Vector3.new(14e16,14e16,14e16)
  241. bodygyro.P = 10000
  242.  
  243. ro=Instance.new("RocketPropulsion",rootpart)
  244. ro.Name = 'RockatPropoolsun'
  245. ro.MaxSpeed=200
  246. ro.MaxThrust=8000
  247. ro.TurnP = 0
  248. ro.MaxTorque=Vector3.new(14e16,14e16,14e16)
  249.  
  250. ro2=Instance.new("RocketPropulsion",torso)
  251. ro2.Name = 'RockatPropoolsun2'
  252. ro2.MaxSpeed=200
  253. ro2.MaxThrust=8000
  254. ro2.TurnP = 0
  255. ro2.MaxTorque=Vector3.new(14e16,14e16,14e16)
  256. local run
  257. mouse.KeyDown:connect(function(k)
  258. if k:byte() == 48 then
  259. run = not run
  260. if run then
  261. humanoid.WalkSpeed = 22
  262. else
  263. humanoid.WalkSpeed = 16
  264. end
  265. end
  266. if k:byte() == 32 then
  267. if Grapple1 or Grapple2 then
  268. wait()
  269. humanoid.PlatformStand = true
  270. rlegm.C0 = rlc0 * CFrame.new(0, .5, -.65) * CFrame.Angles(-math.pi/8, 0, .1)
  271. llegm.C0 = llc0 * CFrame.new(0, .5, -.65) * CFrame.Angles(-math.pi/8, 0, -.1)
  272. if pa3.Parent ~= nil then
  273. ro3:Fire()
  274. end
  275. if Grapple1 then
  276. ro:Fire()
  277. end
  278. if Grapple2 then
  279. ro2:Fire()
  280. end
  281. end
  282. end
  283. if k=="q" then
  284. local sound = Instance.new('Sound', head)
  285. sound.SoundId = "rbxassetid://160248505"
  286. sound.Pitch = 3+math.random()/3
  287. sound.Volume = .8
  288. sound:play()
  289. game:service'Debris':AddItem(sound,4)
  290. lm.Parent = torso
  291. pa.CFrame = la.CFrame
  292. local grapplepos = pa.Position
  293. local grapplevelocity = (mouse.Hit.p - grapplepos).unit*50
  294. local lastgrapplepos = pa.Position
  295. while wait() do
  296. lastgrapplepos = grapplepos
  297. grapplepos = grapplepos + grapplevelocity
  298. local RayCast = Ray.new(lastgrapplepos, (grapplepos - lastgrapplepos))
  299. local hit, hitpos = workspace:FindPartOnRay(RayCast, char)
  300. if (torso.Position - pa.Position).magnitude > 900 then
  301. pa.Parent = nil
  302. break
  303. end
  304. pa.Anchored = true
  305. pa.CFrame = CFrame.new(grapplepos, grapplepos+grapplevelocity) * CFrame.Angles(math.pi/2, 0, 0)
  306. pa.Parent = char
  307. if hit then
  308. local rotX,rotY,rotZ = pa.CFrame:toEulerAnglesXYZ()
  309. local sound = Instance.new('Sound', head)
  310. sound.SoundId = "rbxassetid://146466021"
  311. sound.Pitch = 1.2+math.random()/3
  312. sound.Volume = .25
  313. sound:play()
  314. game:service'Debris':AddItem(sound,4)
  315. pa.Parent = char
  316. pa.CFrame=CFrame.new(hitpos.x, hitpos.y, hitpos.z)*CFrame.Angles(rotX,rotY,rotZ)*CFrame.Angles(math.pi,0,0)
  317. ro.Target=pa
  318. lm.Parent = torso
  319. local ray = Ray.new(rootpart.Position, Vector3.new(0, -6, 0))
  320. local hitz, enz = workspace:FindPartOnRay(ray, char)
  321. local hum = hit and hit.Parent and hit.Parent:findFirstChild'Humanoid'
  322. if hum then
  323. hum:TakeDamage(math.random(7,11))
  324. end
  325. local hum = hit and hit.Parent and hit.Parent.Parent and hit.Parent.Parent:findFirstChild'Humanoid'
  326. if hum then
  327. hum:TakeDamage(math.random(7,11))
  328. end
  329. if pa.Parent ~= nil and humanoid.PlatformStand or not (hitz and hitz.CanCollide) then
  330. ro:Fire()
  331. if jumpmode then
  332. humanoid.Jump = true
  333. end
  334. end
  335. Gweld = Instance.new("Weld", char)
  336. Gweld.C0 = hit.CFrame:toObjectSpace(pa.CFrame)
  337. Gweld.Part0 = hit
  338. Gweld.Part1 = pa
  339. pa.Anchored = false
  340. Grapple1Hit = hit
  341. Grapple1 = true
  342. break
  343. end
  344. pa.Anchored = true
  345. pa.CFrame = CFrame.new(grapplepos, grapplepos+grapplevelocity) * CFrame.Angles(math.pi/2, 0, 0)
  346. end
  347. end
  348. if k=="e" then
  349. local sound = Instance.new('Sound', head)
  350. sound.SoundId = "rbxassetid://160248505"
  351. sound.Pitch = 3+math.random()/3
  352. sound.Volume = .8
  353. sound:play()
  354. game:service'Debris':AddItem(sound,4)
  355. pa2.CFrame = ra.CFrame
  356. rm.Parent = torso
  357. local grapplepos = pa2.Position
  358. local grapplevelocity = (mouse.Hit.p - grapplepos).unit*50
  359. local lastgrapplepos = pa2.Position
  360. while wait() do
  361. lastgrapplepos = grapplepos
  362. grapplepos = grapplepos + grapplevelocity
  363. local RayCast = Ray.new(lastgrapplepos, (grapplepos - lastgrapplepos))
  364. local hit, hitpos = workspace:FindPartOnRay(RayCast, char)
  365. if (torso.Position - pa2.Position).magnitude > 900 then
  366. pa2.Parent = nil
  367. break
  368. end
  369. pa2.Anchored = true
  370. pa2.CFrame = CFrame.new(grapplepos, grapplepos+grapplevelocity) * CFrame.Angles(math.pi/2, 0, 0)
  371. pa2.Parent = char
  372. if hit then
  373. local rotX,rotY,rotZ = pa2.CFrame:toEulerAnglesXYZ()
  374. local sound = Instance.new('Sound', head)
  375. sound.SoundId = "rbxassetid://146466021"
  376. sound.Pitch = 1.2+math.random()/3
  377. sound.Volume = .25
  378. sound:play()
  379. game:service'Debris':AddItem(sound,4)
  380. pa2.Parent = char
  381. pa2.CFrame=CFrame.new(hitpos.x, hitpos.y, hitpos.z)*CFrame.Angles(rotX,rotY,rotZ)*CFrame.Angles(math.pi,0,0)
  382. ro2.Target=pa2
  383. rm.Parent = torso
  384. local ray = Ray.new(rootpart.Position, Vector3.new(0, -6, 0))
  385. local hitz, enz = workspace:FindPartOnRay(ray, char)
  386. local hum = hit and hit.Parent and hit.Parent:findFirstChild'Humanoid'
  387. if hum then
  388. hum:TakeDamage(math.random(7,11))
  389. end
  390. local hum = hit and hit.Parent and hit.Parent.Parent and hit.Parent.Parent:findFirstChild'Humanoid'
  391. if hum then
  392. hum:TakeDamage(math.random(7,11))
  393. end
  394. if pa2.Parent ~= nil and humanoid.PlatformStand or not (hitz and hitz.CanCollide) then
  395. if jumpmode then
  396. humanoid.Jump = true
  397. end
  398. ro2:Fire()
  399. end
  400. Gweld2 = Instance.new("Weld", char)
  401. Gweld2.C0 = hit.CFrame:toObjectSpace(pa2.CFrame)
  402. Gweld2.Part0 = hit
  403. Gweld2.Part1 = pa2
  404. pa2.Anchored = false
  405. Grapple2Hit = hit
  406. Grapple2 = true
  407. break
  408. end
  409. pa2.Anchored = true
  410. pa2.CFrame = CFrame.new(grapplepos, grapplepos+grapplevelocity) * CFrame.Angles(math.pi/2, 0, 0)
  411. end
  412. end
  413. end)
  414.  
  415. mouse.KeyUp:connect(function(k)
  416. if k=="q" then
  417. pcall(function() Gweld:remove() end)
  418. game:service'RunService'.RenderStepped:wait()
  419. pcall(function() pa.Parent = nil Grapple1 = false end)
  420. pcall(function() ro:Abort() end)
  421. game:service'RunService'.RenderStepped:wait()
  422. pcall(function() ro2.Target=pa2 if Grapple2 and humanoid.PlatformStand or Grapple2 and not hitz then ro2:Fire() end end)
  423. elseif k=="e" then
  424. pcall(function() Gweld2:remove() end)
  425. game:service'RunService'.RenderStepped:wait()
  426. pcall(function() pa2.Parent = nil Grapple2 = false end)
  427. pcall(function() ro2:Abort() end)
  428. game:service'RunService'.RenderStepped:wait()
  429. pcall(function() ro.Target=pa if Grapple1 and humanoid.PlatformStand or Grapple1 and not hitz then ro:Fire() end end)
  430. end
  431. end)
  432.  
  433.  
  434. local MidPointUsed = false
  435. local TorsoSmoke = Instance.new('Smoke', torso)
  436.  
  437.  
  438. game:service'RunService'.RenderStepped:connect(function()
  439. angle = (angle % 100) + anglespeed/10
  440. mvmnt = math.pi * math.sin(math.pi*2/100*(angle*10))
  441. local rscf = rsc0
  442. local lscf = lsc0
  443. local rlcf = rlc0
  444. local llcf = llc0
  445. local rjcf = rootc0
  446. local ncf = neckc0
  447. for i,object in pairs(char:children()) do
  448. if object:IsA("Tool") then
  449. tool = true
  450. if not debounce then
  451. for x,value in pairs(object:children()) do
  452. if value:IsA("StringValue") and value.Name == "toolanim" and value.Value == "Slash" then
  453. debounce = true
  454. coroutine.wrap(function()
  455. slashing = true
  456. wait(.25)
  457. slashing = false
  458. debounce = false
  459. end)()
  460. value:Destroy()
  461. end
  462. end
  463. end
  464. elseif not object:IsA'Tool' then
  465. tool = false
  466. end
  467. end
  468. if not humanoid.PlatformStand then
  469. if humanoid.Sit == true then
  470. speed = 0.2
  471. anglespeed = 1/4
  472. ncf = neckc0 * CFrame.Angles(0, 0, 0)
  473. rjcf = rootc0
  474. rscf = rsc0 * CFrame.Angles(math.pi/2+math.sin(-angle)*0.05, 0, 0)
  475. lscf = lsc0 * CFrame.Angles(math.pi/2+math.sin(-angle)*0.05, 0, 0)
  476. rlcf = rlc0 * CFrame.Angles(math.pi/2+-math.rad(.2), 0, math.rad(.2))
  477. llcf = llc0 * CFrame.Angles(math.pi/2+math.rad(.2), 0, -math.rad(.2))
  478. elseif Vector3.new(torso.Velocity.x, 0, torso.Velocity.z).magnitude <= 2 then
  479. anglespeed = 1/4
  480. speed = 0.2
  481. ncf = neckc0 * CFrame.Angles(math.sin(angle)*0.075, 0, 0)
  482. rjcf = rootc0
  483. rscf = rsc0 * CFrame.new(0, math.sin(angle)*0.05, 0) * CFrame.Angles(math.sin(-angle)*0.05, 0, 0)
  484. lscf = lsc0 * CFrame.new(0, math.sin(angle)*0.05, 0) * CFrame.Angles(math.sin(-angle)*0.05, 0, 0)
  485. rlcf = rlc0 * CFrame.Angles(-math.rad(.2), 0, math.rad(.2))
  486. llcf = llc0 * CFrame.Angles(math.rad(.2), 0, -math.rad(.2))
  487. elseif Vector3.new(torso.Velocity.x, 0, torso.Velocity.z).magnitude <= 20 then
  488. anglespeed = 1.7
  489. speed = 0.25
  490. anglespeed = 2.2
  491. speed = 0.25
  492. ncf = neckc0 * CFrame.Angles(0, 0, 0)
  493. rjcf = rootc0 * CFrame.new(0, math.abs(math.sin(angle))*.055, 0) * CFrame.Angles(-math.rad(1), 0, 0)
  494. rscf = rsc0 * CFrame.Angles(math.sin(angle)*.5, 0, -math.rad(1))
  495. lscf = lsc0 * CFrame.Angles(math.sin(-angle)*.5, 0, math.rad(1))
  496. rlcf = rlc0 * CFrame.new(0, .075 + -math.cos(-angle)*.075, math.sin(angle)*0.1) * CFrame.Angles(math.sin(-angle)*.45, 0, math.rad(.5))
  497. llcf = llc0 * CFrame.new(0, .075 - -math.cos(angle)*.075, -math.sin(angle)*0.1) * CFrame.Angles(math.sin(angle)*.45, 0, -math.rad(.5))
  498. elseif Vector3.new(torso.Velocity.x, 0, torso.Velocity.z).magnitude >= 20 then
  499. local RotVelocityZ = torso.RotVelocity.Y
  500. if RotVelocityZ >= 15 then
  501. RotVelocityZ = 15
  502. elseif RotVelocityZ <= -15 then
  503. RotVelocityZ = -15
  504. end
  505. speed = 0.25
  506. anglespeed = 2.7
  507. ncf = neckc0 * CFrame.Angles(0, 0, -math.sin(angle)*.045)
  508. rscf = rsc0 * CFrame.new(0, 0, -math.sin(angle)*0.125) * CFrame.Angles(math.pi/14+math.sin(angle)*1.5, 0, -math.sin(math.abs(angle))*0.3)
  509. lscf = lsc0 * CFrame.new(0, 0, math.sin(angle)*0.125) * CFrame.Angles(math.pi/14+math.sin(-angle)*1.5, 0, -math.sin(math.abs(angle))*0.3)
  510. rjcf = rootc0 * CFrame.new(0, math.abs(math.sin(angle))*.175 - .2, 0) * CFrame.Angles(math.abs(math.sin(angle))*0.055 + -math.pi/18, 0, math.rad(RotVelocityZ) + math.sin(angle)*.045)
  511. rlcf = rlc0 * CFrame.new(0, .3 + -math.cos(-angle)*.3, -.2+math.sin(angle)*0.25) * CFrame.Angles(-math.pi/18+math.sin(-angle)*1.3, 0, math.rad(.5))
  512. llcf = llc0 * CFrame.new(0, .3 - -math.cos(angle)*.3, -.05-math.sin(angle)*0.25) * CFrame.Angles(-math.pi/18+math.sin(angle)*1.3, 0, -math.rad(.5))
  513. end
  514. if tool then
  515. rscf = rsc0 * CFrame.Angles(math.pi/2, 0, 0)
  516. if slashing then
  517. rscf = rsc0
  518. end
  519. end
  520. end
  521. if pa2.Parent == nil then
  522. rm.C0 = clerp(rm.C0,rscf,speed)
  523. end
  524. if pa.Parent == nil then
  525. lm.C0 = clerp(lm.C0,lscf,speed)
  526. end
  527. rj.C0 = clerp(rj.C0,rjcf,speed)
  528. neck.C0 = clerp(neck.C0,ncf,speed)
  529. rlegm.C0 = clerp(rlegm.C0,rlcf,speed)
  530. llegm.C0 = clerp(llegm.C0,llcf,speed)
  531. end)
  532.  
  533.  
  534.  
  535. game:service'RunService'.RenderStepped:connect(function()
  536. if Vector3.new(torso.Velocity.x, 0, torso.Velocity.z).magnitude >= 225 then
  537. TorsoSmoke.Enabled = true
  538. else
  539. TorsoSmoke.Enabled = false
  540. end
  541. local ray = Ray.new(rootpart.Position, Vector3.new(0, -7, 0))
  542. local hitz, enz = workspace:FindPartOnRay(ray, char)
  543. if hitz and hitz.CanCollide and pa.Parent ~= char and pa2.Parent ~= char then
  544. bodygyro.Parent = nil
  545. humanoid.PlatformStand = false
  546. end
  547. if pa.Parent ~= nil or Grapple1 then
  548. local size = (ropeStart2.Position-pa.Position).magnitude
  549. ropePA.Size = Vector3.new(.2, size, .2)
  550. ropePA.CFrame = CFrame.new(ropeStart2.Position, pa.Position) * CFrame.Angles(math.pi/2, 0, 0) * CFrame.new(0, -size/2, 0)
  551. lm.C0 = CFrame.new(Vector3.new(lsc0.x, lsc0.y, lsc0.z), torso.CFrame:pointToObjectSpace(pa.Position)) * CFrame.Angles(math.pi/2, 0, 0)
  552. else
  553. if not debounce and humanoid.PlatformStand then
  554. lm.C0 = lsc0 * CFrame.Angles(-.15, 0, -.15)
  555. end
  556. end
  557. if pa2.Parent ~= nil or Grapple2 then
  558. local size = (ropeStart.Position-pa2.Position).magnitude
  559. ropePA2.Size = Vector3.new(.2, size, .2)
  560. ropePA2.CFrame = CFrame.new(ropeStart.Position, pa2.Position) * CFrame.Angles(math.pi/2, 0, 0) * CFrame.new(0, -size/2, 0)
  561. rm.C0 = CFrame.new(Vector3.new(rsc0.x, rsc0.y, rsc0.z), torso.CFrame:pointToObjectSpace(pa2.Position)) * CFrame.Angles(math.pi/2, 0, 0)
  562. else
  563. if not debounce and humanoid.PlatformStand then
  564. rm.C0 = rsc0 * CFrame.Angles(-.15, 0, .15)
  565. end
  566. end
  567. if Grapple1 and Grapple1Hit.Parent == nil then
  568. pcall(function() Gweld:remove() end)
  569. pa.Parent = nil
  570. Grapple1 = false
  571. ro:Abort()
  572. end
  573. if Grapple2 and Grapple2Hit.Parent == nil then
  574. pcall(function() Gweld2:remove() end)
  575. pa2.Parent = nil
  576. Grapple2 = false
  577. ro2:Abort()
  578. end
  579. if Grapple1 and Grapple2 and (humanoid.PlatformStand or not hitz) then
  580. local distance = (pa.Position-pa2.Position).magnitude
  581. bodygyro.Parent = torso
  582. torso.CFrame = CFrame.new(torso.Position, Vector3.new(camera.CoordinateFrame.x, camera.CoordinateFrame.y, camera.CoordinateFrame.z)) * CFrame.Angles(0, math.pi, 0)
  583. bodygyro.cframe = CFrame.new(torso.Position, Vector3.new(camera.CoordinateFrame.x, camera.CoordinateFrame.y, camera.CoordinateFrame.z)) * CFrame.Angles(0, math.pi, 0)
  584. pa3.Parent = char
  585. if distance <= .5 then
  586. pa3.CFrame = pa.CFrame
  587. elseif distance > .5 then
  588. pa3.CFrame = CFrame.new(pa.Position, pa2.Position) * CFrame.new(0, 0, -distance/2)
  589. end
  590. if not MidPointUsed then
  591. ro3=Instance.new("RocketPropulsion",torso3)
  592. ro3.Name = 'RockatPropoolsun3'
  593. ro3.MaxSpeed=250
  594. ro3.MaxThrust=16000
  595. ro3.TurnP = 0
  596. ro3.TurnD = 0
  597. ro3.MaxTorque=Vector3.new(14e16,14e16,14e16)
  598. if humanoid.PlatformStand or not hitz then
  599. ro:Abort()
  600. ro2:Abort()
  601. end
  602. ro3.Target = pa3
  603. if humanoid.PlatformStand or not hitz then
  604. ro3:Fire()
  605. end
  606. MidPointUsed = true
  607. end
  608. elseif (not Grapple1 or not Grapple2) and MidPointUsed == true and (humanoid.PlatformStand or not hitz) then
  609. pa3.Parent = nil
  610. MidPointUsed = false
  611. ro3:Abort()
  612. ro3:Destroy()
  613. if Grapple1 then
  614. ro:Fire()
  615. end
  616. if Grapple2 then
  617. ro2:Fire()
  618. end
  619. end
  620. if not Grapple1 then
  621. pcall(function() Gweld:remove() end)
  622. end
  623. if not Grapple2 then
  624. pcall(function() Gweld2:remove() end)
  625. end
  626. if (Grapple1 or Grapple2) and not hitz then
  627. bodygyro.Parent = torso
  628. humanoid.PlatformStand = true
  629. rlegm.Parent = torso
  630. llegm.Parent = torso
  631. lm.Parent = torso
  632. rm.Parent = torso
  633. rlegm.C0 = rlc0 * CFrame.new(0, .5, -.65) * CFrame.Angles(-math.pi/8, 0, .1)
  634. llegm.C0 = llc0 * CFrame.new(0, .5, -.65) * CFrame.Angles(-math.pi/8, 0, -.1)
  635. end
  636. if (Grapple1 or Grapple2) and not hitz or humanoid.PlatformStand then
  637. bodygyro.Parent = torso
  638. bodygyro.cframe = CFrame.new(torso.Position, Vector3.new(camera.CoordinateFrame.x, camera.CoordinateFrame.y, camera.CoordinateFrame.z)) * CFrame.Angles(0, math.pi, 0)
  639. rlegm.Parent = torso
  640. llegm.Parent = torso
  641. rlegm.C0 = rlc0 * CFrame.new(0, .5, -.65) * CFrame.Angles(-math.pi/8, 0, .1)
  642. llegm.C0 = llc0 * CFrame.new(0, .5, -.65) * CFrame.Angles(-math.pi/8, 0, -.1)
  643. end
  644. end)
Add Comment
Please, Sign In to add comment