N0ePlox

Spin boi

May 15th, 2018
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.92 KB | None | 0 0
  1.  
  2. --Converted with ttyyuu12345's model to script plugin v4
  3. function sandbox(var,func)
  4. local env = getfenv(func)
  5. local newenv = setmetatable({},{
  6. __index = function(self,k)
  7. if k=="script" then
  8. return var
  9. else
  10. return env[k]
  11. end
  12. end,
  13. })
  14. setfenv(func,newenv)
  15. return func
  16. end
  17. cors = {}
  18. mas = Instance.new("Model",game:GetService("Lighting"))
  19. Model0 = Instance.new("Model")
  20. Part1 = Instance.new("Part")
  21. SpecialMesh2 = Instance.new("SpecialMesh")
  22. Script3 = Instance.new("Script")
  23. Script4 = Instance.new("Script")
  24. Script5 = Instance.new("Script")
  25. Sound6 = Instance.new("Sound")
  26. Script7 = Instance.new("Script")
  27. Sound8 = Instance.new("Sound")
  28. Script9 = Instance.new("Script")
  29. Sound10 = Instance.new("Sound")
  30. Script11 = Instance.new("Script")
  31. Sound12 = Instance.new("Sound")
  32. Script13 = Instance.new("Script")
  33. Part14 = Instance.new("Part")
  34. SpecialMesh15 = Instance.new("SpecialMesh")
  35. Script16 = Instance.new("Script")
  36. Part17 = Instance.new("Part")
  37. SpecialMesh18 = Instance.new("SpecialMesh")
  38. Script19 = Instance.new("Script")
  39. Part20 = Instance.new("Part")
  40. SpecialMesh21 = Instance.new("SpecialMesh")
  41. Script22 = Instance.new("Script")
  42. Part23 = Instance.new("Part")
  43. Script24 = Instance.new("Script")
  44. ParticleEmitter25 = Instance.new("ParticleEmitter")
  45. ParticleEmitter26 = Instance.new("ParticleEmitter")
  46. Part27 = Instance.new("Part")
  47. SpecialMesh28 = Instance.new("SpecialMesh")
  48. Script29 = Instance.new("Script")
  49. Part30 = Instance.new("Part")
  50. SpecialMesh31 = Instance.new("SpecialMesh")
  51. Script32 = Instance.new("Script")
  52. Model0.Name = "Tornado by anphu04"
  53. Model0.Parent = mas
  54. Part1.Name = "Tornado"
  55. Part1.Parent = Model0
  56. Part1.Rotation = Vector3.new(-180, 0, 0)
  57. Part1.Anchored = true
  58. Part1.CanCollide = false
  59. Part1.FormFactor = Enum.FormFactor.Symmetric
  60. Part1.Size = Vector3.new(90, 455, 90)
  61. Part1.CFrame = CFrame.new(-28.3609047, 227.900055, 19.8399696, 1, 0, 0, 0, -1, 8.74227766e-08, 0, -8.74227766e-08, -1)
  62. Part1.BottomSurface = Enum.SurfaceType.Smooth
  63. Part1.TopSurface = Enum.SurfaceType.Weld
  64. Part1.Position = Vector3.new(-28.3609047, 227.900055, 19.8399696)
  65. Part1.Orientation = Vector3.new(0, 180, 180)
  66. SpecialMesh2.Parent = Part1
  67. SpecialMesh2.MeshId = "http://www.roblox.com/asset/?id=36755354"
  68. SpecialMesh2.Scale = Vector3.new(200, 250, 200)
  69. SpecialMesh2.TextureId = "rbxassetid://38426946"
  70. SpecialMesh2.MeshType = Enum.MeshType.FileMesh
  71. SpecialMesh2.Scale = Vector3.new(200, 250, 200)
  72. Script3.Name = "Animate"
  73. Script3.Parent = Part1
  74. table.insert(cors,sandbox(Script3,function()
  75. -- Made by anphu04, 11/16/2017 --
  76.  
  77. local tor = script.Parent
  78. local mesh = tor.Mesh
  79. local rootpos = tor.Position
  80.  
  81. local restingTime = math.random(1, 3)
  82. local maxMovingDistance = 50
  83. local maxAllowedRange = 50*20
  84.  
  85. local spin = coroutine.resume(coroutine.create(function()
  86. while wait() do
  87. tor.CFrame = tor.CFrame * CFrame.fromEulerAnglesXYZ(0, math.rad(-2), 0)
  88. end
  89. end))
  90.  
  91. --[[local grow = coroutine.resume(coroutine.create(function()
  92. while true do
  93. for a = 1, 10 do
  94. mesh.Scale = mesh.Scale + Vector3.new(5, 0, 5)
  95. wait(0.1)
  96. end
  97. wait(0.1)
  98. for b = 1, 10 do
  99. mesh.Scale = mesh.Scale - Vector3.new(5, 0, 5)
  100. wait(0.1)
  101. end
  102. wait(0.1)
  103. end
  104. end))]]--
  105.  
  106. local move = coroutine.resume(coroutine.create(function()
  107. while wait(restingTime) do
  108. local pickedpos = tor.Position + Vector3.new(math.random(-maxMovingDistance, maxMovingDistance), 0, math.random(-maxMovingDistance, maxMovingDistance))
  109. local dist = (pickedpos - tor.Position).magnitude
  110. local unit = (pickedpos - tor.Position).unit
  111. -- move the tornado in a random position
  112. for i = 0, dist, 1 do
  113. local currentrotation = tor.CFrame - tor.CFrame.p
  114. tor.CFrame = CFrame.new(tor.Position + unit * dist / 25) * currentrotation
  115. wait()
  116. end
  117. --check if the tornado goes too far, if so it will go back to it's root position
  118. if (pickedpos - rootpos).magnitude >= maxAllowedRange then
  119. local ldist = (pickedpos - rootpos).magnitude
  120. local lunit = (pickedpos - rootpos).unit
  121. print("Tornado went too far, going back (distance: " ..ldist.. " studs away)")
  122. for i = 0, ldist, 1 do
  123. local currentrotation = tor.CFrame - tor.CFrame.p
  124. tor.CFrame = CFrame.new(tor.Position - lunit * ldist / (ldist*0.75)) * currentrotation
  125. wait()
  126. end
  127. end
  128. end
  129. end))
  130.  
  131. end))
  132. Script4.Name = "Hazard"
  133. Script4.Parent = Part1
  134. table.insert(cors,sandbox(Script4,function()
  135. -- Made by anphu04, 11/17/2017 --
  136. -- The calculating is to mainly make the tornado looks realistic, you can change it if you want
  137.  
  138. local tor = script.Parent
  139. local debounce = false
  140. local attackrange = 25
  141.  
  142. --[[function onTouched(p)
  143. if not p:FindFirstChild("TornadoSuckingForce") then
  144. if debounce == false then
  145. debounce = true
  146. local bp = Instance.new("BodyPosition")
  147. bp.Name = "TornadoSuckingForce"
  148. bp.MaxForce = Vector3.new(2000 * p:GetMass(), 2000 * p:GetMass(), 2000 * p:GetMass())
  149. bp.Parent = p
  150. spawn(function()
  151. local height = 0
  152. repeat
  153. bp.Position = (CFrame.new(tor.Position - Vector3.new(0, tor.Size.Y/2, 0))*CFrame.Angles(0,math.pi*2*((tick()/5)%1),0)*CFrame.new(tor.Size.X/2 + height/50, height, 0)).p -- the x will make the parts get farther away from the tornado, and y will make it move up
  154. height = height + (tor.Size.Y/100*0.5) -- aka 2% of it's Y size
  155. wait()
  156. until height == height * tor.Size.Y/5 -- a very large number but it might fit the looks
  157. bp:remove()
  158. end)
  159. p.Anchored = false
  160. p:BreakJoints()
  161. game.Debris:AddItem(p, 60)
  162. wait(0.1)
  163. debounce = false
  164. end
  165. end
  166. end]]--
  167.  
  168. local near = coroutine.resume(coroutine.create(function()
  169. while wait() do
  170. local region = Region3.new(
  171. Vector3.new(tor.Position.X - tor.Size.X/2 - attackrange, tor.Position.Y - tor.Size.Y/2 - attackrange, tor.Position.Z - tor.Size.Z/2 - attackrange),
  172. Vector3.new(tor.Position.X + tor.Size.X/2 + attackrange, tor.Position.Y + tor.Size.Y/2 + attackrange, tor.Position.Z + tor.Size.Z/2 + attackrange)
  173. )
  174. local parts = workspace:FindPartsInRegion3(region)
  175. for i,p in pairs(parts) do
  176. if p:IsA("BasePart") and p.CanCollide == true and p:GetMass() < 1000000 then
  177. if not p:FindFirstChild("TornadoSuckingForce") then
  178. -- enssential stuff
  179. local bp = Instance.new("BodyPosition")
  180. bp.Name = "TornadoSuckingForce"
  181. bp.MaxForce = Vector3.new(2000 * p:GetMass(), 2000 * p:GetMass(), 2000 * p:GetMass())
  182. bp.Parent = p
  183. -- this will let the parts handle itself, instead of a whole script handling everything to reduce lag
  184. local torvalue = Instance.new("ObjectValue")
  185. torvalue.Name = "WhichTornado"
  186. torvalue.Value = tor
  187. torvalue.Parent = p
  188. local scr = script.SuckingScript:Clone()
  189. scr.Parent = p
  190. scr.Disabled = false
  191. -- extra stuff
  192. local bav = Instance.new("BodyAngularVelocity")
  193. bav.Name = "SuckingRotation"
  194. bav.MaxTorque = Vector3.new(4000 * p:GetMass(), 4000 * p:GetMass(), 4000 * p:GetMass())
  195. bav.AngularVelocity = Vector3.new(math.random(1,25), math.random(1,25), math.random(1,25))
  196. bav.Parent = p
  197. end
  198. end
  199. end
  200. end
  201. end))
  202.  
  203. --tor.Touched:connect(onTouched)
  204.  
  205. end))
  206. Script5.Name = "SuckingScript"
  207. Script5.Parent = Script4
  208. table.insert(cors,sandbox(Script5,function()
  209. local sp = script.Parent
  210. repeat
  211. wait()
  212. until sp:FindFirstChild("WhichTornado")
  213. local tor = sp:FindFirstChild("WhichTornado").Value
  214. local bp = sp:FindFirstChild("TornadoSuckingForce")
  215.  
  216. sp.Anchored = false
  217. sp:BreakJoints()
  218. game.Debris:AddItem(sp, 60)
  219. local height = 0
  220. repeat
  221. bp.Position = (CFrame.new(tor.Position - Vector3.new(0, tor.Size.Y/2, 0))*CFrame.Angles(0,math.pi*2*((tick()/5)%1),0)*CFrame.new(tor.Size.X/2 + height/30, height, 0)).p -- the x will make the parts get farther away from the tornado, and y will make it move up
  222. height = height + (tor.Size.Y/100*0.5) -- aka 2% of it's Y size
  223. wait()
  224. until height == tor.Size.Y -- a very large number but it might fit the looks
  225. bp:remove()
  226.  
  227. end))
  228. Sound6.Name = "wind"
  229. Sound6.Parent = Part1
  230. Sound6.Pitch = 0.69999998807907
  231. Sound6.SoundId = "rbxassetid://318451789"
  232. Sound6.Volume = 1
  233. Sound6.Looped = true
  234. Script7.Name = "runSound"
  235. Script7.Parent = Sound6
  236. table.insert(cors,sandbox(Script7,function()
  237. script.Parent:Play()
  238. script:remove()
  239. end))
  240. Sound8.Name = "wind2"
  241. Sound8.Parent = Part1
  242. Sound8.SoundId = "rbxassetid://184973424"
  243. Sound8.Volume = 1
  244. Sound8.Looped = true
  245. Script9.Name = "runSound"
  246. Script9.Parent = Sound8
  247. table.insert(cors,sandbox(Script9,function()
  248. script.Parent:Play()
  249. script:remove()
  250. end))
  251. Sound10.Name = "wind"
  252. Sound10.Parent = Part1
  253. Sound10.Pitch = 0.69999998807907
  254. Sound10.SoundId = "rbxassetid://318451789"
  255. Sound10.Volume = 1
  256. Sound10.Looped = true
  257. Script11.Name = "runSound"
  258. Script11.Parent = Sound10
  259. table.insert(cors,sandbox(Script11,function()
  260. script.Parent:Play()
  261. script:remove()
  262. end))
  263. Sound12.Name = "wind2"
  264. Sound12.Parent = Part1
  265. Sound12.SoundId = "rbxassetid://184973424"
  266. Sound12.Volume = 1
  267. Sound12.Looped = true
  268. Script13.Name = "runSound"
  269. Script13.Parent = Sound12
  270. table.insert(cors,sandbox(Script13,function()
  271. script.Parent:Play()
  272. script:remove()
  273. end))
  274. Part14.Name = "Dust"
  275. Part14.Parent = Model0
  276. Part14.BrickColor = BrickColor.new("Dark stone grey")
  277. Part14.Transparency = 0.5
  278. Part14.Rotation = Vector3.new(0, -45, 0)
  279. Part14.Anchored = true
  280. Part14.CanCollide = false
  281. Part14.FormFactor = Enum.FormFactor.Plate
  282. Part14.Size = Vector3.new(200, 30, 200)
  283. Part14.CFrame = CFrame.new(-28.3609924, 15.0000095, 19.8400307, 0.707106829, 0, -0.707106829, 0, 1, 0, 0.707106829, 0, 0.707106829)
  284. Part14.BottomSurface = Enum.SurfaceType.Smooth
  285. Part14.TopSurface = Enum.SurfaceType.Smooth
  286. Part14.Color = Color3.new(0.388235, 0.372549, 0.384314)
  287. Part14.Position = Vector3.new(-28.3609924, 15.0000095, 19.8400307)
  288. Part14.Orientation = Vector3.new(0, -45, 0)
  289. Part14.Color = Color3.new(0.388235, 0.372549, 0.384314)
  290. SpecialMesh15.Parent = Part14
  291. SpecialMesh15.MeshId = "http://www.roblox.com/asset/?id=111820358"
  292. SpecialMesh15.Scale = Vector3.new(400, 100, 320)
  293. SpecialMesh15.MeshType = Enum.MeshType.FileMesh
  294. SpecialMesh15.Scale = Vector3.new(400, 100, 320)
  295. Script16.Name = "Spin&Follow"
  296. Script16.Parent = Part14
  297. table.insert(cors,sandbox(Script16,function()
  298. -- Made by anphu04, 11/16/2017 --
  299.  
  300. local dust = script.Parent
  301. local mesh = dust.Mesh
  302. local tor = script.Parent.Parent.Tornado
  303. local yoffset = tor.Size.Y / 2 -- the y position that the dust will be at when it follows the tornado
  304.  
  305. local spin = coroutine.resume(coroutine.create(function()
  306. local randomAngle = math.random(1, 10)/10
  307. while wait() do
  308. dust.CFrame = dust.CFrame * CFrame.fromEulerAnglesXYZ(0, math.rad(randomAngle), 0)
  309. end
  310. end))
  311.  
  312. local grow = coroutine.resume(coroutine.create(function()
  313. local randomIncrement = math.random(1, 50)/10
  314. while true do
  315. for a = 1, 10 do
  316. mesh.Scale = mesh.Scale + Vector3.new(randomIncrement, 0, randomIncrement)
  317. wait(0.1)
  318. end
  319. wait(0.1)
  320. for b = 1, 10 do
  321. mesh.Scale = mesh.Scale - Vector3.new(randomIncrement, 0, randomIncrement)
  322. wait(0.1)
  323. end
  324. wait(0.1)
  325. end
  326. end))
  327.  
  328. local follow = coroutine.resume(coroutine.create(function()
  329. while wait() do
  330. local currentrotation = dust.CFrame - dust.CFrame.p
  331. local ypos = tor.Position.Y - yoffset
  332. dust.CFrame = CFrame.new(tor.Position.X, ypos, tor.Position.Z) * currentrotation
  333. end
  334. end))
  335. end))
  336. Part17.Name = "Dust"
  337. Part17.Parent = Model0
  338. Part17.BrickColor = BrickColor.new("Dark stone grey")
  339. Part17.Transparency = 0.5
  340. Part17.Anchored = true
  341. Part17.CanCollide = false
  342. Part17.FormFactor = Enum.FormFactor.Plate
  343. Part17.Size = Vector3.new(200, 30, 200)
  344. Part17.CFrame = CFrame.new(-28.3609924, 15.0000095, 19.8400307, 1, 0, 0, 0, 1, 0, 0, 0, 1)
  345. Part17.BottomSurface = Enum.SurfaceType.Smooth
  346. Part17.TopSurface = Enum.SurfaceType.Smooth
  347. Part17.Color = Color3.new(0.388235, 0.372549, 0.384314)
  348. Part17.Position = Vector3.new(-28.3609924, 15.0000095, 19.8400307)
  349. Part17.Color = Color3.new(0.388235, 0.372549, 0.384314)
  350. SpecialMesh18.Parent = Part17
  351. SpecialMesh18.MeshId = "http://www.roblox.com/asset/?id=111820358"
  352. SpecialMesh18.Scale = Vector3.new(425, 175, 355)
  353. SpecialMesh18.MeshType = Enum.MeshType.FileMesh
  354. SpecialMesh18.Scale = Vector3.new(425, 175, 355)
  355. Script19.Name = "Spin&Follow"
  356. Script19.Parent = Part17
  357. table.insert(cors,sandbox(Script19,function()
  358. -- Made by anphu04, 11/16/2017 --
  359.  
  360. local dust = script.Parent
  361. local mesh = dust.Mesh
  362. local tor = script.Parent.Parent.Tornado
  363. local yoffset = tor.Size.Y / 2 -- the y position that the dust will be at when it follows the tornado
  364.  
  365. local spin = coroutine.resume(coroutine.create(function()
  366. local randomAngle = math.random(1, 10)/10
  367. while wait() do
  368. dust.CFrame = dust.CFrame * CFrame.fromEulerAnglesXYZ(0, math.rad(randomAngle), 0)
  369. end
  370. end))
  371.  
  372. local grow = coroutine.resume(coroutine.create(function()
  373. local randomIncrement = math.random(1, 50)/10
  374. while true do
  375. for a = 1, 10 do
  376. mesh.Scale = mesh.Scale + Vector3.new(randomIncrement, 0, randomIncrement)
  377. wait(0.1)
  378. end
  379. wait(0.1)
  380. for b = 1, 10 do
  381. mesh.Scale = mesh.Scale - Vector3.new(randomIncrement, 0, randomIncrement)
  382. wait(0.1)
  383. end
  384. wait(0.1)
  385. end
  386. end))
  387.  
  388. local follow = coroutine.resume(coroutine.create(function()
  389. while wait() do
  390. local currentrotation = dust.CFrame - dust.CFrame.p
  391. local ypos = tor.Position.Y - yoffset
  392. dust.CFrame = CFrame.new(tor.Position.X, ypos, tor.Position.Z) * currentrotation
  393. end
  394. end))
  395. end))
  396. Part20.Name = "Dust"
  397. Part20.Parent = Model0
  398. Part20.BrickColor = BrickColor.new("Dark stone grey")
  399. Part20.Transparency = 0.5
  400. Part20.Rotation = Vector3.new(0, -90, 0)
  401. Part20.Anchored = true
  402. Part20.CanCollide = false
  403. Part20.FormFactor = Enum.FormFactor.Plate
  404. Part20.Size = Vector3.new(200, 30, 200)
  405. Part20.CFrame = CFrame.new(-28.3609924, 15.0000095, 19.8400307, 0, 0, -1, 0, 1, 0, 1, 0, 0)
  406. Part20.BottomSurface = Enum.SurfaceType.Smooth
  407. Part20.TopSurface = Enum.SurfaceType.Smooth
  408. Part20.Color = Color3.new(0.388235, 0.372549, 0.384314)
  409. Part20.Position = Vector3.new(-28.3609924, 15.0000095, 19.8400307)
  410. Part20.Orientation = Vector3.new(0, -90, 0)
  411. Part20.Color = Color3.new(0.388235, 0.372549, 0.384314)
  412. SpecialMesh21.Parent = Part20
  413. SpecialMesh21.MeshId = "http://www.roblox.com/asset/?id=111820358"
  414. SpecialMesh21.Scale = Vector3.new(450, 300, 380)
  415. SpecialMesh21.MeshType = Enum.MeshType.FileMesh
  416. SpecialMesh21.Scale = Vector3.new(450, 300, 380)
  417. Script22.Name = "Spin&Follow"
  418. Script22.Parent = Part20
  419. table.insert(cors,sandbox(Script22,function()
  420. -- Made by anphu04, 11/16/2017 --
  421.  
  422. local dust = script.Parent
  423. local mesh = dust.Mesh
  424. local tor = script.Parent.Parent.Tornado
  425. local yoffset = tor.Size.Y / 2 -- the y position that the dust will be at when it follows the tornado
  426.  
  427. local spin = coroutine.resume(coroutine.create(function()
  428. local randomAngle = math.random(1, 10)/10
  429. while wait() do
  430. dust.CFrame = dust.CFrame * CFrame.fromEulerAnglesXYZ(0, math.rad(randomAngle), 0)
  431. end
  432. end))
  433.  
  434. local grow = coroutine.resume(coroutine.create(function()
  435. local randomIncrement = math.random(1, 50)/10
  436. while true do
  437. for a = 1, 10 do
  438. mesh.Scale = mesh.Scale + Vector3.new(randomIncrement, 0, randomIncrement)
  439. wait(0.1)
  440. end
  441. wait(0.1)
  442. for b = 1, 10 do
  443. mesh.Scale = mesh.Scale - Vector3.new(randomIncrement, 0, randomIncrement)
  444. wait(0.1)
  445. end
  446. wait(0.1)
  447. end
  448. end))
  449.  
  450. local follow = coroutine.resume(coroutine.create(function()
  451. while wait() do
  452. local currentrotation = dust.CFrame - dust.CFrame.p
  453. local ypos = tor.Position.Y - yoffset
  454. dust.CFrame = CFrame.new(tor.Position.X, ypos, tor.Position.Z) * currentrotation
  455. end
  456. end))
  457. end))
  458. Part23.Name = "Smoke"
  459. Part23.Parent = Model0
  460. Part23.Transparency = 1
  461. Part23.Anchored = true
  462. Part23.CanCollide = false
  463. Part23.FormFactor = Enum.FormFactor.Symmetric
  464. Part23.Size = Vector3.new(70, 22, 70)
  465. Part23.CFrame = CFrame.new(-28.3609047, 11.4000216, 19.8399696, 1, 0, 0, 0, 1, 0, 0, 0, 1)
  466. Part23.BottomSurface = Enum.SurfaceType.Smooth
  467. Part23.TopSurface = Enum.SurfaceType.Weld
  468. Part23.Position = Vector3.new(-28.3609047, 11.4000216, 19.8399696)
  469. Script24.Name = "Spin&Follow"
  470. Script24.Parent = Part23
  471. table.insert(cors,sandbox(Script24,function()
  472. -- Made by anphu04, 11/16/2017 --
  473.  
  474. local dust = script.Parent
  475. local tor = script.Parent.Parent.Tornado
  476. local yoffset = tor.Size.Y / 2 -- the y position that the dust will be at when it follows the tornado
  477.  
  478. local spin = coroutine.resume(coroutine.create(function()
  479. local randomAngle = math.random(1, 10)/10
  480. while wait() do
  481. dust.CFrame = dust.CFrame * CFrame.fromEulerAnglesXYZ(0, math.rad(randomAngle), 0)
  482. end
  483. end))
  484.  
  485. local follow = coroutine.resume(coroutine.create(function()
  486. while wait() do
  487. local currentrotation = dust.CFrame - dust.CFrame.p
  488. local ypos = tor.Position.Y - yoffset
  489. dust.CFrame = CFrame.new(tor.Position.X, ypos, tor.Position.Z) * currentrotation
  490. end
  491. end))
  492. end))
  493. ParticleEmitter25.Name = "BigSmoke(lol)"
  494. ParticleEmitter25.Parent = Part23
  495. ParticleEmitter25.Transparency = NumberSequence.new(0,1)
  496. ParticleEmitter25.Size = NumberSequence.new(10,10,1)
  497. ParticleEmitter25.Color = ColorSequence.new(Color3.new(0.368627, 0.368627, 0.368627),Color3.new(0.368627, 0.368627, 0.368627))
  498. ParticleEmitter25.Texture = "rbxassetid://494864527"
  499. ParticleEmitter25.Acceleration = Vector3.new(0, -1, 0)
  500. ParticleEmitter25.Lifetime = NumberRange.new(3, 7)
  501. ParticleEmitter25.Rate = 250
  502. ParticleEmitter25.RotSpeed = NumberRange.new(180, 180)
  503. ParticleEmitter25.Speed = NumberRange.new(25, 25)
  504. ParticleEmitter25.VelocitySpread = -180
  505. ParticleEmitter25.Color = ColorSequence.new(Color3.new(0.368627, 0.368627, 0.368627),Color3.new(0.368627, 0.368627, 0.368627))
  506. ParticleEmitter26.Name = "SmallParticles"
  507. ParticleEmitter26.Parent = Part23
  508. ParticleEmitter26.Transparency = NumberSequence.new(0,1,1)
  509. ParticleEmitter26.Rotation = NumberRange.new(1000, 1000)
  510. ParticleEmitter26.Size = NumberSequence.new(70,70)
  511. ParticleEmitter26.Color = ColorSequence.new(Color3.new(0, 0, 0),Color3.new(0, 0, 0))
  512. ParticleEmitter26.Texture = "http://www.roblox.com/asset/?id=180306779"
  513. ParticleEmitter26.Lifetime = NumberRange.new(5, 5)
  514. ParticleEmitter26.Rate = 50
  515. ParticleEmitter26.RotSpeed = NumberRange.new(-250, 250)
  516. ParticleEmitter26.Speed = NumberRange.new(50, 50)
  517. ParticleEmitter26.VelocitySpread = 50
  518. ParticleEmitter26.Color = ColorSequence.new(Color3.new(0, 0, 0),Color3.new(0, 0, 0))
  519. Part27.Name = "InsideOutTornado"
  520. Part27.Parent = Model0
  521. Part27.Rotation = Vector3.new(-180, 0, -180)
  522. Part27.Anchored = true
  523. Part27.CanCollide = false
  524. Part27.FormFactor = Enum.FormFactor.Symmetric
  525. Part27.Size = Vector3.new(90, 455, 90)
  526. Part27.CFrame = CFrame.new(-28.3609047, 227.900055, 19.8399696, -1, 0, 0, 0, 1, 0, 0, 0, -1)
  527. Part27.BottomSurface = Enum.SurfaceType.Smooth
  528. Part27.TopSurface = Enum.SurfaceType.Weld
  529. Part27.Position = Vector3.new(-28.3609047, 227.900055, 19.8399696)
  530. Part27.Orientation = Vector3.new(0, 180, 0)
  531. SpecialMesh28.Parent = Part27
  532. SpecialMesh28.MeshId = "http://www.roblox.com/asset/?id=36755354"
  533. SpecialMesh28.Scale = Vector3.new(-200, -250, -200)
  534. SpecialMesh28.TextureId = "rbxassetid://38426946"
  535. SpecialMesh28.MeshType = Enum.MeshType.FileMesh
  536. SpecialMesh28.Scale = Vector3.new(-200, -250, -200)
  537. Script29.Name = "Spin&Follow"
  538. Script29.Parent = Part27
  539. table.insert(cors,sandbox(Script29,function()
  540. -- Made by anphu04, 11/16/2017 --
  541.  
  542. local torn = script.Parent
  543. local tor = script.Parent.Parent.Tornado
  544. local yoffset = tor.Size.Y / 2 -- the y position that the torn will be at when it follows the tornado
  545.  
  546. local spin = coroutine.resume(coroutine.create(function()
  547. while wait() do
  548. torn.CFrame = torn.CFrame * CFrame.fromEulerAnglesXYZ(0, math.rad(2), 0) -- angle should be negative as the entire part is negative
  549. end
  550. end))
  551.  
  552. local follow = coroutine.resume(coroutine.create(function()
  553. while wait() do
  554. local currentrotation = torn.CFrame - torn.CFrame.p
  555. local ypos = tor.Position.Y - yoffset
  556. torn.CFrame = CFrame.new(tor.Position) * currentrotation
  557. end
  558. end))
  559. end))
  560. Part30.Name = "Cloud"
  561. Part30.Parent = Model0
  562. Part30.Anchored = true
  563. Part30.CanCollide = false
  564. Part30.FormFactor = Enum.FormFactor.Plate
  565. Part30.Size = Vector3.new(200, 30, 200)
  566. Part30.CFrame = CFrame.new(-28.3609924, 407.000153, 19.8400307, 1, 0, 0, 0, 1, 0, 0, 0, 1)
  567. Part30.BottomSurface = Enum.SurfaceType.Smooth
  568. Part30.TopSurface = Enum.SurfaceType.Smooth
  569. Part30.Position = Vector3.new(-28.3609924, 407.000153, 19.8400307)
  570. SpecialMesh31.Parent = Part30
  571. SpecialMesh31.MeshId = "http://www.roblox.com/asset/?id=111820358"
  572. SpecialMesh31.Scale = Vector3.new(900, 300, 700)
  573. SpecialMesh31.MeshType = Enum.MeshType.FileMesh
  574. SpecialMesh31.Scale = Vector3.new(900, 300, 700)
  575. Script32.Name = "Spin&Follow"
  576. Script32.Parent = Part30
  577. table.insert(cors,sandbox(Script32,function()
  578. -- Made by anphu04, 11/16/2017 --
  579.  
  580. local cloud = script.Parent
  581. local mesh = cloud.Mesh
  582. local tor = script.Parent.Parent.Tornado
  583. local yoffset = tor.Size.Y / 2 - 20 -- the y position that the cloud will be at when it follows the tornado
  584.  
  585. local spin = coroutine.resume(coroutine.create(function()
  586. local randomAngle = math.random(1, 10)/10
  587. while wait() do
  588. cloud.CFrame = cloud.CFrame * CFrame.fromEulerAnglesXYZ(0, math.rad(randomAngle), 0)
  589. end
  590. end))
  591.  
  592. local grow = coroutine.resume(coroutine.create(function()
  593. local randomIncrement = math.random(1, 50)/10
  594. while true do
  595. for a = 1, 10 do
  596. mesh.Scale = mesh.Scale + Vector3.new(randomIncrement, 0, randomIncrement)
  597. wait(0.1)
  598. end
  599. wait(0.1)
  600. for b = 1, 10 do
  601. mesh.Scale = mesh.Scale - Vector3.new(randomIncrement, 0, randomIncrement)
  602. wait(0.1)
  603. end
  604. wait(0.1)
  605. end
  606. end))
  607.  
  608. local follow = coroutine.resume(coroutine.create(function()
  609. while wait() do
  610. local currentrotation = cloud.CFrame - cloud.CFrame.p
  611. local ypos = tor.Position.Y + yoffset -- us + to make it on the top
  612. cloud.CFrame = CFrame.new(tor.Position.X, ypos, tor.Position.Z) * currentrotation
  613. end
  614. end))
  615. end))
  616. for i,v in pairs(mas:GetChildren()) do
  617. v.Parent = workspace
  618. pcall(function() v:MakeJoints() end)
  619. end
  620. mas:Destroy()
  621. for i,v in pairs(cors) do
  622. spawn(function()
  623. pcall(v)
  624. end)
  625. end
Advertisement
Add Comment
Please, Sign In to add comment