brandon5487

gas can

Apr 20th, 2015
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 9.00 KB | None | 0 0
  1. -- Gas
  2. -- By : jarredbcv
  3. -- Fire spread by : samfun123
  4.  
  5. lp = game.Players.LocalPlayer
  6. pl = lp.Character
  7. tol = Instance.new("HopperBin",lp.Backpack)
  8. tol.Name = "Gas"
  9. burn = {}
  10. burning = {}
  11. colr={"Neon orange","Black","White","Bright yellow","Bright red","Bright blue","Bright green","Really black","Royal purple","Magenta","Pink"}
  12. col="Neon orange"
  13. Part = function(x,y,z,color,tr,cc,an,parent)
  14.         local p = Instance.new('Part',parent or Weapon)
  15.         p.formFactor = 'Custom'
  16.         p.Size = Vector3.new(x,y,z)
  17.         p.BrickColor = BrickColor.new(color)
  18.         p.CanCollide = cc
  19.         p.Transparency = tr
  20.         p.Anchored = an
  21.         p.TopSurface,p.BottomSurface = 0,0
  22.         return p
  23. end
  24.  
  25. fir = function(parent)
  26.         local fi = Instance.new('Fire',parent or Weapon)
  27.         fi.Name = "Fire"
  28.         table.insert(burning,parent)
  29.         game.Debris:AddItem(parent,2)
  30.         if parent.Name ~= "Match" then
  31.             fi.Color=parent.BrickColor.Color
  32.                 function touch(hit)
  33.                     if hit.Parent:findFirstChild("Humanoid") ~= nil then
  34.                         if hit.Parent.Name==pl.Name then return end
  35.                         hit.Parent.Humanoid.Health=hit.Parent.Humanoid.Health - 10
  36.                     end
  37.             end
  38.             parent.Touched:connect(touch)      
  39.     end
  40.         return fi
  41. end
  42.  
  43. Weld = function(p0,p1,x,y,z,rx,ry,rz,par)
  44.         p0.Position = p1.Position
  45.         local w = Instance.new('Motor',par or p0)
  46.         w.Part0 = p0
  47.         w.Part1 = p1
  48.         w.C1 = CFrame.new(x,y,z)*CFrame.Angles(rx,ry,rz)
  49.         return w
  50. end
  51.  
  52. Mesh = function(par,num,x,y,z)
  53.         local msh = _
  54.         if num == 1 then
  55.                 msh = Instance.new("CylinderMesh",par)
  56.         elseif num == 2 then
  57.                 msh = Instance.new("SpecialMesh",par)
  58.                 msh.MeshType = 3
  59.         elseif num == 3 then
  60.                 msh = Instance.new("BlockMesh",par)
  61.         elseif type(num) == 'string' then
  62.                 msh = Instance.new("SpecialMesh",par)
  63.                 msh.MeshId = num
  64.         end
  65.         msh.Scale = Vector3.new(x,y,z)
  66.         return msh
  67. end
  68.  
  69. mo=Instance.new("Model",pl)
  70. function throw()
  71.         hot=false
  72.         for i = 1,10 do
  73.                 wait()
  74.                 fakel2.C0=fakel2.C0* CFrame.Angles(0, 0, math.rad(-i))
  75.         end
  76.         mtch = Part(.2,.1,.2,'Black',0,true,false,mo)
  77.         mtch:BreakJoints()
  78.         mtch.Name = "Match"
  79.         mtch.CFrame=pl["Left Arm"].CFrame + Vector3.new(.5,0,0)
  80.         fir(mtch)
  81.         game.Debris:AddItem(mtch,1)
  82.         function touch(hit)
  83.                 if hit.Name=="veryhotfire" and hit:FindFirstChild("Fire") == nil then
  84.                         fir(hit)
  85.                 end
  86.         end
  87.         mtch.Touched:connect(touch)
  88.         fakel2.C0=crnt
  89. end
  90.  
  91. function pour()
  92.         brek=false
  93.         while wait() do
  94.                 if brek==true then break end
  95.                 liq = Part(2,.1,2,col,.9,false,true,workspace)
  96.                 m = Mesh(liq,1,1,1,1)
  97.                 liq.CFrame = CFrame.new(por.CFrame.x,por.CFrame.y,por.CFrame.z)-Vector3.new(0,.4,0)
  98.                 liq.Name = "veryhotfire"
  99.         end
  100. end
  101.  
  102. function depour()
  103.         brek=true
  104. end
  105. num=0
  106. function onKeyDown(key)
  107.         key = key:lower()
  108.         if key == "e" then
  109.                 throw()
  110.         elseif key == "q" then
  111.                 for i = 1,10 do
  112.                         wait()
  113.                         fakel2.C0=fakel2.C0* CFrame.Angles(0, 0, math.rad(-i))
  114.                 end
  115.                 box = Part(1,2,1,'Bright red',0,true,false,workspace)
  116.                 box.Material="CorrodedMetal"
  117.                 box:BreakJoints()
  118.             m=Mesh(box,1,1,1,1)
  119.                 box.Name = "Crate"
  120.                 box.CFrame=pl["Left Arm"].CFrame + Vector3.new(1,0,0)*CFrame.Angles(0,0,math.pi/2)
  121.                 fakel2.C0=crnt
  122.         elseif key == "r" then
  123.             num=num+1
  124.         col=colr[num]
  125.         por.BrickColor=BrickColor.new(col)
  126.         Spawn(function()
  127.         tol.Name=col
  128.         wait(1)
  129.         tol.Name="Gas"
  130.         end)
  131.         if num==11 then num=0 end
  132.         end
  133. end
  134. function onClicked(mouse)
  135.         for i=1,10 do
  136.                 wait()
  137.                 mwl.C1 = CFrame.new(0,-1.5,0)*CFrame.Angles(-i/10,-math.pi/2,math.pi/2)
  138.         end
  139.         por.Transparency=0.4
  140.         pour()
  141. end
  142. function deClicked(mouse)
  143.         for i=1,10 do wait()
  144.                 mwl.C1 = CFrame.new(0,-1.5,0)*CFrame.Angles(-1+i/10,-math.pi/2,math.pi/2)
  145.                 por.Transparency=1
  146.                 depour()
  147.         end
  148. end
  149.  
  150. mpa= Part(1.25,1.5,.6,'Really red',0,false,false,mo)
  151. mwl= Weld(mpa,pl.Torso,0,0,.8,0,0,0,mo)
  152. pa= Part(.6,1.5,.6,'Really red',0,false,false,mo)
  153. wl= Weld(pa,mpa,.61,0,0,0,0,0,mo)m=Mesh(pa,1,1,1,1)
  154. pa= Part(.6,1.5,.6,'Really red',0,false,false,mo)
  155. wl= Weld(pa,mpa,-.61,0,0,0,0,0,mo)m=Mesh(pa,1,1,1,1)
  156. pa= Part(.3,.3,.3,'Dark stone grey',0,false,false,mo)
  157. wl= Weld(pa,mpa,-.4,.75,0,0,0,0,mo)m=Mesh(pa,1,1,1,1)
  158. pa= Part(.2,.3,.2,'',0,false,false,mo)
  159. wl= Weld(pa,mpa,-.4,1,0,0,0,0,mo)m=Mesh(pa,1,1,1,1)
  160. noz= Part(.2,.7,.2,'',0,false,false,mo)
  161. wl= Weld(noz,mpa,-.625,1.335,0,0,0,math.pi/4,mo)m=Mesh(noz,1,1,1,1)
  162. por = Part(.15,3,.15,col,1,false,false,mo)
  163. wl= Weld(por,noz,-1.3,1.15,0,0,0,math.pi/3,mo)m=Mesh(por,1,1,1,1)
  164.  
  165. tol.Selected:connect(function(mouse)
  166.         mouse.Button1Down:connect(function() onClicked(mouse) end)
  167.         mouse.Button1Up:connect(function() deClicked(mouse) end)
  168.         mouse.KeyDown:connect(onKeyDown)
  169.  
  170.         wlds=Instance.new("Model",pl)
  171.         mwl.Part1 = pl["Right Arm"]
  172.         mwl.C1 = CFrame.new(0,-1.5,0)*CFrame.Angles(0,-math.pi/2,math.pi/2)
  173.         bas = Part(1,1,1,'',1,false,false,wlds)
  174.         bas2 = Part(1,1,1,'',1,false,false,wlds)
  175.         bas:BreakJoints()
  176.         bas2:BreakJoints()
  177.         fakel = Instance.new("Weld",wlds)
  178.         fakel.Part0 = pl.Torso
  179.         fakel.Part1 = bas
  180.         fakel2 = Instance.new("Weld",wlds)
  181.         fakel2.Part0 = pl.Torso
  182.         fakel2.Part1 = bas2
  183.         coroutine.wrap(function()
  184.                 for angle = 0, 45, 5 do
  185.                         fakel.C0 = CFrame.new(1.5, 0.5, .15) * CFrame.Angles(math.rad(angle*1.5), math.rad(angle/2), math.rad(-angle/3))
  186.                         wait()
  187.                 end
  188.         end)()
  189.         coroutine.wrap(function()
  190.                 for angle = 0, 45, 5 do
  191.                         fakel2.C0 = CFrame.new(-.75, 0.5, -0.3) * CFrame.Angles(math.rad(angle*2), math.rad(0), math.rad(angle*1.25))
  192.                         wait()
  193.                 end
  194.                 crnt=fakel2.C0
  195.         end)()
  196.         welditbro = Instance.new("Weld", wlds)
  197.         welditbro.C0 = CFrame.new(0, 0.5, 0)
  198.         welditbro.Part0 = pl['Right Arm']
  199.         welditbro.Part1 = bas
  200.         welditbro2 = Instance.new("Weld", wlds)
  201.         welditbro2.C0 = CFrame.new(0, 0.5, -0.3)
  202.         welditbro2.Part0 = pl['Left Arm']
  203.         welditbro2.Part1 = bas2
  204. end)
  205.  
  206. tol.Deselected:connect(function(mouse)
  207.         wlds:remove()
  208.         mwl.Part1 = pl.Torso
  209.         mwl.C1 = CFrame.new(0,0,.8)
  210. end)
  211.  
  212. for _,check in pairs(workspace:GetChildren()) do
  213.         if check.Name == "veryhotfire" or check.Name == "Crate" then
  214.                 table.insert(burn,check)
  215.         end
  216. end
  217.  
  218. workspace.ChildAdded:connect(function(check)
  219.         wait(0)
  220.         if check.Name == "veryhotfire" or check.Name == "Crate" then
  221.                 table.insert(burn,check)
  222.         end
  223. end)
  224.  
  225. while true do
  226.         wait()
  227.         for _,b in pairs(burning) do
  228.                 if b.Parent ~= nil then
  229.                         spread = false
  230.                         for _,g in pairs(burn) do
  231.                                 if g.Parent ~= nil and g:FindFirstChild("Fire") == nil then
  232.                                         dist = (b.Position - g.Position).magnitude
  233.                                         if dist <= 3 then
  234.                                                 spread = true
  235.                                                 fir(g)
  236.                                                 if g.Name == "Crate" then
  237.                                                         delay(0,function()
  238.                                                                 wait(1)
  239.                                                                 b = Instance.new("Explosion",workspace)
  240.                                                                 b.Position = g.Position
  241.                                                                 g:Destroy()
  242.                                                         end)
  243.                                                 end
  244.                                         end
  245.                                 else
  246.                                         table.remove(burn,_)
  247.                                 end
  248.                         end
  249.                 else
  250.                         table.remove(burning,_)
  251.                 end
  252.                 if spread == true then
  253.                         wait()
  254.                 end
  255.         end
  256. end
Add Comment
Please, Sign In to add comment