Advertisement
Kaemi

MASTER BOLT

Jan 1st, 2017
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.13 KB | None | 0 0
  1. local Players = game:GetService("Players")
  2. local Lighting = game:GetService("Lighting")
  3. local Debris = game:GetService("Debris")
  4. local Player = Players.LocalPlayer
  5. local Mouse = Player:GetMouse()
  6. local Char = Player.Character
  7. local RArm = Char["Right Arm"]
  8. local MainColor = "New Yeller"
  9. local Model = Instance.new("Model",Char)
  10. local Activated = false
  11. local LightningEffectOn = false
  12. Model.Name = "MasterBolt"
  13.  
  14. for i,v in pairs(Char:GetChildren()) do
  15. if v:IsA("Shirt") or v:IsA("Pants") or v:IsA("Hat") or v:IsA("CharacterMesh") or v:IsA("BodyColors") then
  16. v:Destroy()
  17. elseif v:IsA("BasePart") then
  18. v.BrickColor = BrickColor.new("Grey")
  19. end
  20. end
  21.  
  22. local BG = Instance.new("BodyGyro",Char.Torso)
  23. BG.maxTorque = Vector3.new(0,0,0)
  24.  
  25. local BG2 = Instance.new("BodyGyro",Char.Head)
  26. BG2.maxTorque = Vector3.new(0,0,0)
  27.  
  28. local RW = Instance.new("Weld",Char.Torso)
  29. RW.Part0 = Char.Torso
  30.  
  31. local Bolt = Instance.new("Part",Model)
  32. Bolt.BrickColor = BrickColor.new("Grey")
  33. Bolt.CanCollide = false
  34. Bolt.FormFactor = "Custom"
  35. Bolt.TopSurface = "Smooth"
  36. Instance.new("CylinderMesh",Bolt)
  37. Bolt.BottomSurface = "Smooth"
  38. Bolt.Size = Vector3.new(0.5,2,0.5)
  39. Bolt:BreakJoints()
  40. local BW = Instance.new("Weld",Bolt)
  41. BW.Part0 = RArm
  42. BW.Part1 = Bolt
  43. BW.C1 = CFrame.new(0.2,0,1) * CFrame.Angles(math.rad(90),0,0)
  44.  
  45. local Tip = Instance.new("Part",Model)
  46. Tip.BrickColor = BrickColor.new("Grey")
  47. Tip.CanCollide = false
  48. Tip.FormFactor = "Custom"
  49. Tip.TopSurface = "Smooth"
  50. Tip.BottomSurface = "Smooth"
  51. local Mesh = Instance.new("SpecialMesh",Tip)
  52. Mesh.MeshId = "http://www.roblox.com/asset/?id=1033714"
  53. Mesh.Scale = Vector3.new(0.25,0.5,0.25)
  54. Tip.Size = Vector3.new(0.48,0.5,0.48)
  55. Tip:BreakJoints()
  56. local TW = Instance.new("Weld",Tip)
  57. TW.Part0 = Bolt
  58. TW.Part1 = Tip
  59. TW.C1 = CFrame.new(0,-1.175,0)
  60.  
  61. local Tip2 = Instance.new("Part",Model)
  62. Tip2.BrickColor = BrickColor.new("Grey")
  63. Tip2.CanCollide = false
  64. Tip2.FormFactor = "Custom"
  65. Tip2.TopSurface = "Smooth"
  66. Tip2.BottomSurface = "Smooth"
  67. local Mesh2 = Instance.new("SpecialMesh",Tip2)
  68. Mesh2.MeshId = "http://www.roblox.com/asset/?id=1033714"
  69. Mesh2.Scale = Vector3.new(0.25,0.5,0.25)
  70. Tip2.Size = Vector3.new(0.48,0.5,0.48)
  71. Tip2:BreakJoints()
  72. local TW2 = Instance.new("Weld",Tip2)
  73. TW2.Part0 = Bolt
  74. TW2.Part1 = Tip2
  75. TW2.C1 = CFrame.new(0,-1.175,0) * CFrame.Angles(0,0,math.rad(180))
  76.  
  77. function ComputePos(pos1, pos2)
  78. return CFrame.new(pos1, Vector3.new(pos2.x, pos1.y, pos2.z))
  79. end
  80.  
  81. function LightningEffect(Pos,Color,Size,Time)
  82. local Mod = Instance.new("Model",Char)
  83. Mod.Name = "Lightning"
  84. for i = 1,Size do
  85. local LastPos = Pos
  86. for i2 = 1,math.random(Size-1,Size+1) do
  87. local Targ = LastPos * CFrame.new(math.random(-Size,Size),math.random(-Size,Size),math.random(-Size,Size))
  88. local P = Instance.new("Part",Mod)
  89. P.BrickColor = Color
  90. P.FormFactor = "Custom"
  91. Instance.new("CylinderMesh",P)
  92. P.Size = Vector3.new(0,(Targ.p-LastPos.p).Magnitude,0)
  93. P.CFrame = CFrame.new(LastPos.p, Targ.p) * CFrame.Angles(math.pi/2,0,0) * CFrame.new(0,-(Targ.p-LastPos.p).Magnitude/2,0)
  94. P.Anchored = true
  95. P.CanCollide = false
  96. P.TopSurface = "Smooth"
  97. P.BottomSurface = "Smooth"
  98. P.Name = "LightningPart"
  99. P:BreakJoints()
  100. local P2 = Instance.new("Part",Mod)
  101. P2.BrickColor = Color
  102. P2.FormFactor = "Custom"
  103. Instance.new("CylinderMesh",P2)
  104. P2.Size = P.Size + Vector3.new(0.1,0.1,0.1)
  105. P2.CFrame = P.CFrame
  106. P2.Transparency = 0.7
  107. P2.Anchored = true
  108. P2.CanCollide = false
  109. P2.TopSurface = "Smooth"
  110. P2.BottomSurface = "Smooth"
  111. P2.Name = "LightningPart"
  112. P2:BreakJoints()
  113. LastPos = Targ
  114. end
  115. end
  116. Debris:AddItem(Mod,Time or 0.1)
  117. end
  118.  
  119. function Break(Obj,Base,Dis)
  120. for i,v in pairs(Obj:GetChildren()) do
  121. if v:IsA("BasePart") and (v.Position-Base.Position).Magnitude <= Dis then
  122. if v.Name ~= "Base" and v.Parent ~= Char and v.Parent.Parent ~= Char and v ~= Base then
  123. v.BrickColor = BrickColor.new("Black")
  124. v.Anchored = false
  125. v:BreakJoints()
  126. EXP = Instance.new("Explosion",workspace)
  127. EXP.Position = v.Position
  128. EXP.BlastRadius = 1
  129. end
  130. end
  131. Break(v,Base,Dis)
  132. end
  133. end
  134.  
  135. function ExplosionEffect(Pos)
  136. coroutine.resume(coroutine.create(function()
  137. local Base = Instance.new("Part",Char)
  138. Base.Anchored = true
  139. Base.Shape = "Ball"
  140. Base.FormFactor = "Custom"
  141. Base.Size = Vector3.new(10,10,10)
  142. Base.CFrame = Pos
  143. Base.Transparency = 0.25
  144. Base.BrickColor = BrickColor.new(MainColor)
  145. Base.TopSurface = "Smooth"
  146. Base.BottomSurface = "Smooth"
  147. Base.Name = "Explosion"
  148. for i = 1,100,2 do
  149. Base.Size = Base.Size + Vector3.new(1,1,1)
  150. Base.CFrame = Pos
  151. Base.Transparency = i*0.01
  152. Break(Workspace,Base,Base.Size.Y/2)
  153. wait(0.0001)
  154. end
  155. Base:Destroy()
  156. end))
  157. end
  158.  
  159. function LightningBeam(Pos1,Pos,Color,Size,Time)
  160. local Mod = Instance.new("Model",Char)
  161. Mod.Name = "Lightning"
  162. local LastPos = Pos1
  163. local End = math.floor((Pos.p-Pos1.p).Magnitude/3)
  164. local Targ = nil
  165. for i2 = 1,End do
  166. if i2 == End then
  167. Targ = Pos
  168. else
  169. for i = 1,100 do
  170. Targ = LastPos * CFrame.new(math.random(-6,6),math.random(-6,6),math.random(-6,6))
  171. if (Targ.p-Pos.p).Magnitude < (LastPos.p-Pos.p).Magnitude and (math.abs(Targ.Y-Pos.Y) - math.abs(LastPos.Y-Pos.Y)) < math.abs(Pos1.Y-Pos.Y) then
  172. break
  173. end
  174. end
  175. end
  176. local P = Instance.new("Part",Mod)
  177. P.BrickColor = Color
  178. P.FormFactor = "Custom"
  179. Instance.new("CylinderMesh",P)
  180. P.Size = Vector3.new(Size,(Targ.p-LastPos.p).Magnitude,Size)
  181. P.CFrame = CFrame.new(LastPos.p, Targ.p) * CFrame.Angles(math.pi/2,0,0) * CFrame.new(0,-(Targ.p-LastPos.p).Magnitude/2,0)
  182. P.Anchored = true
  183. P.CanCollide = false
  184. P.TopSurface = "Smooth"
  185. P.BottomSurface = "Smooth"
  186. P.Name = "Main"
  187. P:BreakJoints()
  188. local P2 = Instance.new("Part",Mod)
  189. P2.BrickColor = Color
  190. P2.FormFactor = "Custom"
  191. Instance.new("CylinderMesh",P2)
  192. P2.Size = P.Size + Vector3.new(Size/4,Size/4,Size/4)
  193. P2.CFrame = P.CFrame
  194. P2.Transparency = 0.7
  195. P2.Anchored = true
  196. P2.CanCollide = false
  197. P2.TopSurface = "Smooth"
  198. P2.BottomSurface = "Smooth"
  199. P2.Name = "LightningPart"
  200. P2:BreakJoints()
  201. LastPos = Targ
  202. end
  203. coroutine.resume(coroutine.create(function()
  204. for i = 0,1,0.1 do
  205. for i2,v in pairs(Mod:GetChildren()) do
  206. if v:IsA("BasePart") then
  207. if v.Name == "Main" then
  208. v.Transparency = i
  209. else
  210. v.Transparency = Vector3.new(0,0.7,0):lerp(Vector3.new(0,1,0),i).Y
  211. end
  212. end
  213. end
  214. wait(i*0.5)
  215. end
  216. Mod:Destroy()
  217. end))
  218. end
  219.  
  220. TweenWeld = function(c,c1,step)
  221. local c0 = c.C1
  222. if c0 == c1 then
  223. step = 90
  224. end
  225. for i = -90,90,step do
  226. local r = ((math.sin(math.rad(i))+1)/2)
  227. local cf = matrixInterpolate(c0, c1, r)
  228. c.C1 = cf
  229. wait(0.000001)
  230. end
  231. end
  232.  
  233. function lerp(a, b, t)
  234. return a + (b - a)*t
  235. end
  236.  
  237. function slerp(a, b, t)
  238. local dot = a:Dot(b)
  239. if dot > 0.99999 or dot < -0.99999 then
  240. return t <= 0.5 and a or b
  241. else
  242. local r = math.acos(dot)
  243. return (a*math.sin((1 - t)*r) + b*math.sin(t*r)) / math.sin(r)
  244. end
  245. end
  246.  
  247. function matrixInterpolate(a, b, t)
  248. local ax, ay, az, a00, a01, a02, a10, a11, a12, a20, a21, a22 = a:components()
  249. local bx, by, bz, b00, b01, b02, b10, b11, b12, b20, b21, b22 = b:components()
  250.  
  251. local v0 = lerp(Vector3.new(ax , ay , az ), Vector3.new(bx , by , bz ), t) -- Position
  252. local v1 = slerp(Vector3.new(a00, a01, a02), Vector3.new(b00, b01, b02), t) -- Vector right
  253. local v2 = slerp(Vector3.new(a10, a11, a12), Vector3.new(b10, b11, b12), t) -- Vector up
  254. local v3 = slerp(Vector3.new(a20, a21, a22), Vector3.new(b20, b21, b22), t) -- Vector back
  255.  
  256. return CFrame.new(
  257. v0.x, v0.y, v0.z,
  258. v1.x, v1.y, v1.z,
  259. v2.x, v2.y, v2.z,
  260. v3.x, v3.y, v3.z)
  261. end
  262.  
  263.  
  264. function KeyDown(Key)
  265. if Key:lower() == "q" and not DB then
  266. DB = true
  267. if Activated == false then
  268. RW.Part1 = RArm
  269. RW.C1 = CFrame.new(-1.5,0,0)
  270. TweenWeld(RW,CFrame.new(-1,1.5,0.5) * CFrame.Angles(math.rad(-150),0,math.rad(10)),6)
  271. for i = Bolt.Size.Y,5,0.1 do
  272. Bolt.Size = Vector3.new(0.5,i,0.5)
  273. BW.Part0 = RArm
  274. BW.Part1 = Bolt
  275. BW.C1 = CFrame.new(0.1,0,1) * CFrame.Angles(math.rad(90),0,0)
  276. BW.Parent = Bolt
  277. TW.Part0 = Bolt
  278. TW.Part1 = Tip
  279. Mesh.Scale = Mesh.Scale + Vector3.new(0,0.005,0)
  280. TW.C1 = CFrame.new(0,-(i/2+0.175+(Mesh.Scale.Y-0.5)/2.75),0)
  281. TW.Parent = Tip
  282. TW2.Part0 = Bolt
  283. TW2.Part1 = Tip2
  284. Mesh2.Scale = Mesh2.Scale + Vector3.new(0,0.005,0)
  285. TW2.C1 = CFrame.new(0,-(i/2+0.175+(Mesh2.Scale.Y-0.5)/2.75),0) * CFrame.Angles(0,0,math.rad(180))
  286. TW2.Parent = Tip2
  287. wait(0.000001)
  288. BW.Part0 = RArm
  289. BW.Part1 = Bolt
  290. BW.C1 = CFrame.new(0.1,0,1) * CFrame.Angles(math.rad(90),0,0)
  291. BW.Parent = Bolt
  292. TW.Part0 = Bolt
  293. TW.Part1 = Tip
  294. TW.C1 = CFrame.new(0,-(i/2+0.175+(Mesh.Scale.Y-0.5)/2.75),0)
  295. TW.Parent = Tip
  296. TW2.Part0 = Bolt
  297. TW2.Part1 = Tip2
  298. TW2.C1 = CFrame.new(0,-(i/2+0.175+(Mesh2.Scale.Y-0.5)/2.75),0) * CFrame.Angles(0,0,math.rad(180))
  299. TW2.Parent = Tip2
  300. local Color = Vector3.new(BrickColor.new("Grey").r,BrickColor.new("Grey").g,BrickColor.new("Grey").b):lerp(Vector3.new(BrickColor.new(MainColor).r,BrickColor.new(MainColor).g,BrickColor.new(MainColor).b),i/5)
  301. Bolt.Color = Color3.new(Color.X,Color.Y,Color.Z)
  302. Tip.Color = Bolt.Color
  303. Tip2.Color = Bolt.Color
  304. end
  305. LightningEffectOn = true
  306. TweenWeld(RW,CFrame.new(-1.2,0.5,0.5) * CFrame.Angles(math.rad(-40),math.rad(10),0),6)
  307. Activated = true
  308. else
  309. TweenWeld(RW,CFrame.new(-1.5,0,0),6)
  310. RW.Part1 = nil
  311. LightningEffectOn = false
  312. for i = Bolt.Size.Y,2,-0.1 do
  313. Bolt.Size = Vector3.new(0.5,i,0.5)
  314. BW.Part0 = RArm
  315. BW.Part1 = Bolt
  316. BW.C1 = CFrame.new(0.1,0,1) * CFrame.Angles(math.rad(90),0,0)
  317. BW.Parent = Bolt
  318. TW.Part0 = Bolt
  319. TW.Part1 = Tip
  320. Mesh.Scale = Mesh.Scale - Vector3.new(0,0.005,0)
  321. TW.C1 = CFrame.new(0,-(i/2+0.175+(Mesh.Scale.Y-0.5)/2.75),0)
  322. TW.Parent = Tip
  323. TW2.Part0 = Bolt
  324. TW2.Part1 = Tip2
  325. Mesh2.Scale = Mesh2.Scale - Vector3.new(0,0.005,0)
  326. TW2.C1 = CFrame.new(0,-(i/2+0.175+(Mesh2.Scale.Y-0.5)/2.75),0) * CFrame.Angles(0,0,math.rad(180))
  327. TW2.Parent = Tip2
  328. wait(0.000001)
  329. BW.Part0 = RArm
  330. BW.Part1 = Bolt
  331. BW.C1 = CFrame.new(0.1,0,1) * CFrame.Angles(math.rad(90),0,0)
  332. BW.Parent = Bolt
  333. TW.Part0 = Bolt
  334. TW.Part1 = Tip
  335. TW.C1 = CFrame.new(0,-(i/2+0.175+(Mesh.Scale.Y-0.5)/2.75),0)
  336. TW.Parent = Tip
  337. TW2.Part0 = Bolt
  338. TW2.Part1 = Tip2
  339. TW2.C1 = CFrame.new(0,-(i/2+0.175+(Mesh2.Scale.Y-0.5)/2.75),0) * CFrame.Angles(0,0,math.rad(180))
  340. TW2.Parent = Tip2
  341. local Color = Vector3.new(BrickColor.new(MainColor).r,BrickColor.new(MainColor).g,BrickColor.new(MainColor).b):lerp(Vector3.new(BrickColor.new("Grey").r,BrickColor.new("Grey").g,BrickColor.new("Grey").b),(2/i))
  342. Bolt.Color = Color3.new(Color.X,Color.Y,Color.Z)
  343. Tip.Color = Bolt.Color
  344. Tip2.Color = Bolt.Color
  345. end
  346. TW.Part0 = Bolt
  347. TW.Part1 = Tip
  348. TW.C1 = CFrame.new(0,-1.175,0)
  349. TW2.Part0 = Bolt
  350. TW2.Part1 = Tip2
  351. TW2.C1 = CFrame.new(0,-1.175,0) * CFrame.Angles(0,0,math.rad(180))
  352. Activated = false
  353. end
  354. DB = false
  355. elseif Key:lower() == "e" and Activated and not DB then
  356. DB = true
  357. TweenWeld(RW,CFrame.new(-1,1.5,0.25) * CFrame.Angles(math.rad(-170),0,math.rad(10)),10)
  358. wait(0.1)
  359. TweenWeld(RW,CFrame.new(-1,2,-0.3) * CFrame.Angles(math.rad(-155),0,math.rad(10)),11)
  360. if (Mouse.Hit.p-Tip2.CFrame.p).Magnitude > 300 then
  361. LightningBeam(Tip2.CFrame,(Mouse.Hit-Mouse.Hit.p) * CFrame.new(0,0,-300),BrickColor.new(MainColor),0.5,0.5)
  362. ExplosionEffect((Mouse.Hit-Mouse.Hit.p) * CFrame.new(0,0,-300))
  363. else
  364. LightningBeam(Tip2.CFrame,Mouse.Hit,BrickColor.new(MainColor),0.5,0.5)
  365. ExplosionEffect(Mouse.Hit)
  366. end
  367. LightningEffectOn = false
  368. for i = 0,1,0.15 do
  369. local Color = Vector3.new(BrickColor.new(MainColor).r,BrickColor.new(MainColor).g,BrickColor.new(MainColor).b):lerp(Vector3.new(BrickColor.new("Grey").r,BrickColor.new("Grey").g,BrickColor.new("Grey").b),(i/1))
  370. Bolt.Color = Color3.new(Color.X,Color.Y,Color.Z)
  371. Tip.Color = Bolt.Color
  372. Tip2.Color = Bolt.Color
  373. wait(0.0001)
  374. end
  375. TweenWeld(RW,CFrame.new(-1.2,0.5,0.5) * CFrame.Angles(math.rad(-40),math.rad(10),0),10)
  376. for i = 0,1,0.15 do
  377. local Color = Vector3.new(BrickColor.new("Grey").r,BrickColor.new("Grey").g,BrickColor.new("Grey").b):lerp(Vector3.new(BrickColor.new(MainColor).r,BrickColor.new(MainColor).g,BrickColor.new(MainColor).b),i/1)
  378. Bolt.Color = Color3.new(Color.X,Color.Y,Color.Z)
  379. Tip.Color = Bolt.Color
  380. Tip2.Color = Bolt.Color
  381. wait(0.0001)
  382. end
  383. LightningEffectOn = true
  384. DB = false
  385. end
  386. end
  387.  
  388. Mouse.KeyDown:connect(KeyDown)
  389. Mouse.Button1Down:connect(Button1Down)
  390.  
  391. while true do
  392. if Activated and LightningEffectOn then
  393. LightningEffect(Tip2.CFrame,BrickColor.new(MainColor),math.random(0,2),0.12)
  394. LightningEffect(Tip.CFrame,BrickColor.new(MainColor),math.random(0,2),0.12)
  395. LightningEffect(Bolt.CFrame,BrickColor.new(MainColor),math.random(0,2),0.12)
  396. end
  397. if Activated then
  398. BG.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
  399. BG.cframe = ComputePos(Char.Torso.Position,Mouse.Hit.p)
  400. BG2.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
  401. BG2.cframe = ComputePos(Char.Head.Position,Mouse.Hit.p)
  402. else
  403. BG.maxTorque = Vector3.new(0,0,0)
  404. BG2.maxTorque = Vector3.new(0,0,0)
  405. end
  406. for i,v in pairs(Char:GetChildren()) do
  407. if (v:IsA("Shirt") or v:IsA("Pants") or v:IsA("Hat") or v:IsA("CharacterMesh") or v:IsA("BodyColors")) then
  408. v:Destroy()
  409. elseif v:IsA("BasePart") and v.Name ~= "Explosion" then
  410. v.BrickColor = BrickColor.new("Grey")
  411. end
  412. end
  413. wait(math.random(0.05,0.15))
  414. ent
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement