plyr = game:GetService("Players").LocalPlayer --password plyr.Character["Right Arm"].TopSurface = "Smooth" plyr.Character["Right Arm"].BottomSurface = "Smooth" plyr.Character["Left Arm"].TopSurface = "Smooth" plyr.Character["Left Arm"].BottomSurface = "Smooth" DrillOut = false BattleEnd = false EDmg = math.random(10,50) EOn = false Spinning = false SpinDeb = false LineColor = "White" Shocks = false ShockDeb = false mod = Instance.new("Model") mod.Name = "Rainbow Dash's Drills" mod.Parent = plyr.Character welds = Instance.new("Model") welds.Name = "NotSparta(But close!)" welds.Parent = mod Lines = Instance.new("Model") Lines.Name = "Lines :>" Lines.Parent = mod function createPart(size,color,parent) Part = Instance.new("Part") Part.Size = size Part.BrickColor = BrickColor.new(color) Part.Parent = parent Part.TopSurface = "Smooth" Part.BottomSurface = "Smooth" Part.formFactor = "Symmetric" Part.CanCollide = false Part.Locked = true end function createMesh(type1,type2,scale,parent) if type1 == "Block" then Mesh = Instance.new("BlockMesh") Mesh.Scale = scale Mesh.Parent = parent elseif type1 == "Special" then Mesh = Instance.new("SpecialMesh") Mesh.MeshType = type2 Mesh.Scale = scale Mesh.Parent = parent elseif type1 == "Cylinder" then Mesh = Instance.new("CylinderMesh") Mesh.Scale = scale Mesh.Parent = parent end end function createWeld(part0,part1,c0) Weld = Instance.new("Weld") Weld.Parent = welds Weld.Part0 = part0 Weld.Part1 = part1 Weld.C0 = c0 end function setJoint(which) if which == "Right" then RightArmJoint.Parent = nil RightArmJoint.C1 = CFrame.new(0,0,0)*CFrame.Angles(0,0,0) RightArmJoint.C0 = CFrame.new(0,0.6,0)*CFrame.Angles(0,0,0) elseif which == "Left" then LeftArmJoint.Parent = nil LeftArmJoint.C1 = CFrame.new(0,0,0)*CFrame.Angles(0,0,0) LeftArmJoint.C0 = CFrame.new(0,0.6,0)*CFrame.Angles(0,0,0) elseif which == "Both" then RightArmJoint.Parent = nil LeftArmJoint.Parent = nil RightArmJoint.C1 = CFrame.new(0,0,0)*CFrame.Angles(0,0,0) RightArmJoint.C0 = CFrame.new(0,0.6,0)*CFrame.Angles(0,0,0) LeftArmJoint.C1 = CFrame.new(0,0,0)*CFrame.Angles(0,0,0) LeftArmJoint.C0 = CFrame.new(0,0.6,0)*CFrame.Angles(0,0,0) end end function backArms() NiceWeldRight.C0 = CFrame.new(-1.5,-0.6,0)*CFrame.Angles(0,0,0) NiceWeldLeft.C0 = CFrame.new(1.5,-0.6,0)*CFrame.Angles(0,0,0) RightArmJoint.Parent = plyr.Character["Right Arm"] RightArmJoint.C1 = CFrame.new(0,0,0)*CFrame.Angles(math.rad(-40),math.rad(-20),math.rad(5)) LeftArmJoint.Parent = plyr.Character["Left Arm"] LeftArmJoint.C1 = CFrame.new(0,0,0)*CFrame.Angles(math.rad(-40),math.rad(20),math.rad(-5)) end function armOut(which) if which == "Right" then RightArmJoint.Parent = plyr.Character["Right Arm"] RightArmJoint.C1 = RightArmJoint.C1*CFrame.fromEulerAnglesXYZ(math.rad(90),0,0) elseif which == "Left" then LeftArmJoint.Parent = plyr.Character["Left Arm"] LeftArmJoint.C1 = LeftArmJoint.C1*CFrame.fromEulerAnglesXYZ(math.rad(90),0,0) end end function effect1(thing) for i,v in pairs(Lines:GetChildren()) do v:Remove() end e1 = true pos1 = thing.Position what = thing pos2 = pos1 end function effect2(thing) e1 = true posz1 = thing.Position what2 = thing posz2 = posz1 end function addShock() createPart(Vector3.new(1,1,1),"White",mod) RightShock = Part RightShock.Transparency = 0.7 RightShock.Reflectance = 0 createMesh("Special","Brick",Vector3.new(0.3,1.2,0.3),Part) Mesh.MeshId = "http://www.roblox.com/asset/?id=1033714" createWeld(Part,RightDrill,CFrame.new(0,0,0)*CFrame.Angles(0,0,0)) createPart(Vector3.new(1,1,1),"Pastal light blue",mod) LeftShock = Part LeftShock.Transparency = 0.7 LeftShock.Reflectance = 0 createMesh("Special","Brick",Vector3.new(0.3,1.2,0.3),Part) Mesh.MeshId = "http://www.roblox.com/asset/?id=1033714" createWeld(Part,LeftDrill,CFrame.new(0,0,0)*CFrame.Angles(0,0,0)) LineColor = "Pastel light blue" Shocks = true function STouch(part) if math.random(1,5) == 5 and ShockDeb == false then print("STUNNED!") if part.Parent:findFirstChild("Humanoid") ~= nil then ShockDeb = true pcall(function() part.Parent.Humanoid.WalkSpeed = 0 part.Parent.Torso.Anchored = true end) wait(2) pcall(function() part.Parent.Humanoid.WalkSpeed = 16 part.Parent.Torso.Anchored = false end) ShockDeb = false end end end function onTouch(hit) STouch(hit) end RightShock.Touched:connect(onTouch) function onTouch(hit) STouch(hit) end LeftShock.Touched:connect(onTouch) end function removeShock() pcall(function() RightShock:Destroy() LeftShock:Destroy() end) LineColor = "White" Shocks = false end createPart(Vector3.new(1,1,1),"White",mod) RightHandle = Part createMesh("Cylinder","Brick",Vector3.new(0.5,0.05,0.5),Part) createWeld(Part,plyr.Character["Right Arm"],CFrame.new(0,1,0)*CFrame.Angles(0,0,0)) createPart(Vector3.new(1,1,1),"White",mod) RightDrill = Part RightDrill.Reflectance = 0.2 createMesh("Special","Brick",Vector3.new(0.2,1,0.2),Part) Mesh.MeshId = "http://www.roblox.com/asset/?id=1033714" createWeld(Part,RightHandle,CFrame.new(0,0.4,0)*CFrame.Angles(math.rad(180),0,0)) RDWeld = Weld createPart(Vector3.new(1,1,1),"Pastel light blue",mod) LeftHandle = Part createMesh("Cylinder","Brick",Vector3.new(0.5,0.05,0.5),Part) createWeld(Part,plyr.Character["Left Arm"],CFrame.new(0,1,0)*CFrame.Angles(0,0,0)) createPart(Vector3.new(1,1,1),"Pastel light blue",mod) LeftDrill = Part LeftDrill.Reflectance = 0.2 createMesh("Special","Brick",Vector3.new(0.2,1,0.2),Part) Mesh.MeshId = "http://www.roblox.com/asset/?id=1033714" createWeld(Part,LeftHandle,CFrame.new(0,0.4,0)*CFrame.Angles(math.rad(180),0,0)) LDWeld = Weld --Joints createPart(Vector3.new(1,1,1),"White",mod) RAJ = Part RAJ.Transparency = 1 createMesh("Block","Brick",Vector3.new(0.2,0.2,0.2),Part) createWeld(Part,plyr.Character.Torso,CFrame.new(-1.5,-0.6,0)*CFrame.Angles(0,0,0)) NiceWeldRight = Weld createWeld(plyr.Character["Right Arm"],RAJ,CFrame.new(0,0.6,0)*CFrame.Angles(0,0,0)) RightArmJoint = Weld RightArmJoint.Parent = nil createPart(Vector3.new(1,1,1),"Pastel light blue",mod) LAJ = Part LAJ.Transparency = 1 createMesh("Block","Brick",Vector3.new(0.2,0.2,0.2),Part) createWeld(Part,plyr.Character.Torso,CFrame.new(1.5,-0.6,0)*CFrame.Angles(0,0,0)) NiceWeldLeft = Weld createWeld(plyr.Character["Left Arm"],LAJ,CFrame.new(0,0.6,0)*CFrame.Angles(0,0,0)) LeftArmJoint = Weld LeftArmJoint.Parent = nil --JointEnd if script.Parent.className ~= "HopperBin" then hb = Instance.new("HopperBin") hb.Parent = plyr.Backpack hb.Name = "Rainbow Dash's Drills" script.Parent = hb end hb = script.Parent debounce = false function Select(mouse) BattleEnd = false mod.Parent = plyr.Character welds:MakeJoints() backArms() function onKeyDown(key) if debounce == false then debounce = true key:lower() ----------- if string.byte(key) == 113 and Spinning == false then if DrillOut == false then DrillOut = true for i = 1,10 do RDWeld.C0 = RDWeld.C0 - Vector3.new(0,0.08,0) LDWeld.C0 = LDWeld.C0 - Vector3.new(0,0.08,0) wait() end effect1(RightDrill) effect2(LeftDrill) else e1 = false for i = 1,10 do RDWeld.C0 = RDWeld.C0 + Vector3.new(0,0.08,0) LDWeld.C0 = LDWeld.C0 + Vector3.new(0,0.08,0) wait() end DrillOut = false end --Teleport---------------------- elseif string.byte(key) == 116 then if (plyr.Character.Torso.Position-mouse.Hit.p).magnitude < 2000 then e1 = false for i,v in pairs(Lines:GetChildren()) do v:Remove() end pos1 = plyr.Character.Torso.Position plyr.Character:MoveTo(mouse.Hit.p) wait() pos2 = plyr.Character.Torso.Position createPart(Vector3.new(1,1,1),"Pastel light blue",workspace) Partz = Part Partz.Name = "Line" Partz.Anchored = true Partz.Size = Vector3.new(1,(pos1-pos2).magnitude,1) Partz.CFrame = CFrame.new((pos1+pos2)/2,pos1)*CFrame.Angles(math.pi/2,0,0) createMesh("Cylinder","Brick",Vector3.new(0.5,1,0.5),Partz) wait() for i = 1,10 do pcall(function() Partz.Transparency = Partz.Transparency + 0.05 end) wait() end game:getService("Debris"):AddItem(Partz,0.1) effect1(RightDrill) effect2(LeftDrill) end end if DrillOut == true then if string.byte(key) == 101 and Spinning == false then if math.random(1,2) == 1 then EOn = true function onTouch(hit) if hit.Parent:findFirstChild("Humanoid") ~= nil then if EOn == true then EOn = false hit.Parent.Humanoid:TakeDamage(EDmg) wait(0.5) EOn = true end end end RightDrill.Touched:connect(onTouch) backArms() for i = 1,5 do RightArmJoint.C1 = RightArmJoint.C1*CFrame.fromEulerAnglesXYZ(math.rad(30),0,0) wait() end for i = 1,5 do RightArmJoint.C1 = RightArmJoint.C1*CFrame.fromEulerAnglesXYZ(math.rad(-30),0,0) wait() end EOn = false else EOn = true function onTouch(hit) if hit.Parent:findFirstChild("Humanoid") ~= nil then if EOn == true then EOn = false hit.Parent.Humanoid:TakeDamage(EDmg) wait(0.5) EOn = true end end end LeftDrill.Touched:connect(onTouch) backArms() for i = 1,5 do LeftArmJoint.C1 = LeftArmJoint.C1*CFrame.fromEulerAnglesXYZ(math.rad(30),0,0) wait() end for i = 1,5 do LeftArmJoint.C1 = LeftArmJoint.C1*CFrame.fromEulerAnglesXYZ(math.rad(-30),0,0) wait() end EOn = false end --Spin win-------------- elseif string.byte(key) == 114 then backArms() if Spinning == false then SpinDeb = true SpinT = true for i = 1,10 do RightArmJoint.C1 = RightArmJoint.C1*CFrame.fromEulerAnglesXYZ(math.rad(4),math.rad(2),math.rad(-0.5)) LeftArmJoint.C1 = LeftArmJoint.C1*CFrame.fromEulerAnglesXYZ(math.rad(4),math.rad(-2),math.rad(0.5)) wait() end for i = 1,10 do RightArmJoint.C1 = RightArmJoint.C1*CFrame.fromEulerAnglesXYZ(0,0,math.rad(8.5)) LeftArmJoint.C1 = LeftArmJoint.C1*CFrame.fromEulerAnglesXYZ(0,0,math.rad(-8.5)) wait() end NiceWeldRight.C0 = NiceWeldRight.C0 + Vector3.new(0.1,0,0) NiceWeldLeft.C0 = NiceWeldLeft.C0 - Vector3.new(0.1,0,0) function onTouch(hit) if hit.Parent:findFirstChild("Humanoid") ~= nil then if SpinT == true then SpinT = false hit.Parent.Humanoid:TakeDamage(EDmg) wait(0.1) SpinT = true end end end LeftDrill.Touched:connect(onTouch) function onTouch(hit) if hit.Parent:findFirstChild("Humanoid") ~= nil then if SpinT == true then SpinT = false hit.Parent.Humanoid:TakeDamage(EDmg) wait(0.1) SpinT = true end end end RightDrill.Touched:connect(onTouch) Spinning = true SpinDeb = false plyr.Character.Humanoid.WalkSpeed = 25 else SpinT = false plyr.Character.Humanoid.WalkSpeed = 16 Spinning = false end elseif string.byte(key) == 122 then if Shocks == false then addShock() else removeShock() end --------- end end EOn = false debounce = false end end mouse.KeyDown:connect(onKeyDown) end hb.Selected:connect(Select) function onDeselect(mouse) pcall(function() if DrillOut == true then for i = 1,10 do RDWeld.C0 = RDWeld.C0 + Vector3.new(0,0.08,0) LDWeld.C0 = LDWeld.C0 + Vector3.new(0,0.08,0) end end DrillOut = false BattleEnd = true EOn = false e1 = false Spinning = false setJoint("Both") SpinT = false plyr.Character.TLua.Humanoid.WalkSpeed = 16 end) end hb.Deselected:connect(onDeselect) coroutine.resume(coroutine.create(function() while true do if Spinning then plyr.Character.Torso.CFrame = plyr.Character.Torso.CFrame*CFrame.fromEulerAnglesXYZ(0,math.rad(60),0) end wait() end end ) ) coroutine.resume(coroutine.create(function() for i = 1,math.huge do if e1 then posz1 = what2.Position createPart(Vector3.new(1,1,1),LineColor,Lines) Partz = Part Partz.Name = "LineD" .. i Partz.Transparency = 0 Partz.Anchored = true Partz.Size = Vector3.new(1,(posz1-posz2).magnitude,1) Partz.CFrame = CFrame.new((posz1+posz2)/2,posz1)*CFrame.Angles(math.pi/2,0,0) createMesh("Cylinder","Brick",Vector3.new(0.2,1,0.2),Partz) delay(0,function() for iz = 0 , 1 , 0.1 do wait() Lines["LineD" .. i].Transparency = 1*iz end game:getService("Debris"):AddItem(Partz) end) posz2 = posz1 end wait() end end ) ) coroutine.resume(coroutine.create(function() for i = 1,math.huge do if e1 then pos1 = what.Position createPart(Vector3.new(1,1,1),LineColor,Lines) Partz = Part Partz.Name = "Line" .. i Partz.Transparency = 0 Partz.Anchored = true Partz.Size = Vector3.new(1,(pos1-pos2).magnitude,1) Partz.CFrame = CFrame.new((pos1+pos2)/2,pos1)*CFrame.Angles(math.pi/2,0,0) createMesh("Cylinder","Brick",Vector3.new(0.2,1,0.2),Partz) delay(0,function() for iz = 0 , 1 , 0.1 do wait() Lines["Line" .. i].Transparency = 1*iz end game:getService("Debris"):AddItem(Partz) end) pos2 = pos1 end wait() end end ) )