--orbital strike cannon local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Workspace = game:GetService("Workspace") local player = Players.LocalPlayer local mouse = player:GetMouse() -- Folder to hold spawned TNT local ringFolder = Workspace:FindFirstChild("RingCubes") or Instance.new("Folder") ringFolder.Name = "RingCubes" ringFolder.Parent = Workspace -- Function to create TNT cube local function createTNT(position, parent) local cube = Instance.new("Part") cube.Size = Vector3.new(4,4,4) cube.Material = Enum.Material.Plastic cube.Color = Color3.fromRGB(200,0,0) cube.Anchored = true cube.Position = position cube.Parent = parent local stripe = Instance.new("Part") stripe.Size = Vector3.new(4.1,1.3,4.1) stripe.Anchored = true stripe.Material = Enum.Material.Plastic stripe.Color = Color3.fromRGB(255,255,255) stripe.CFrame = cube.CFrame stripe.Parent = cube for _, face in pairs({"Front","Back","Left","Right"}) do local surface = Instance.new("SurfaceGui") surface.Face = Enum.NormalId[face] surface.Adornee = stripe surface.AlwaysOnTop = false surface.Parent = stripe local label = Instance.new("TextLabel") label.Size = UDim2.fromScale(1,1) label.BackgroundTransparency = 1 label.Text = "TNT" label.TextColor3 = Color3.fromRGB(0,0,0) label.TextStrokeColor3 = Color3.fromRGB(255,255,255) label.TextStrokeTransparency = 0 label.TextScaled = true label.Font = Enum.Font.Bodoni label.Parent = surface end return cube, stripe end -------------------------------------------- -- CREATE TOOLS -------------------------------------------- local function createTools() -------------------------------------------- -- ORBITAL STRIKE CANNON -------------------------------------------- local orbitalTool = Instance.new("Tool") orbitalTool.Name = "Orbital Strike Cannon" orbitalTool.RequiresHandle = false orbitalTool.CanBeDropped = false orbitalTool.Parent = player.Backpack local orbitalCanFire = false orbitalTool.Equipped:Connect(function() orbitalCanFire = false task.delay(0.2, function() orbitalCanFire = true end) end) orbitalTool.Activated:Connect(function() if not orbitalCanFire then return end if not player.Character then return end local startPos = mouse.Hit.Position + Vector3.new(0,80,0) -- higher spawn local ringCount = 7 local cubesPerRing = 25 local radiusStep = 16 local fallSpeed = 1.5 for r = 1, ringCount do local radius = r * radiusStep + 10 for i = 1, cubesPerRing do local angle = (2*math.pi / cubesPerRing) * i local cube, stripe = createTNT( startPos + Vector3.new(math.cos(angle)*radius, 0, math.sin(angle)*radius), ringFolder ) -- falling task.spawn(function() local pos = cube.Position while cube.Parent do pos -= Vector3.new(0, fallSpeed, 0) cube.CFrame = CFrame.new(pos) stripe.CFrame = cube.CFrame local hit = Workspace:Raycast(pos, Vector3.new(0,-1,0)) if hit then task.delay(2, function() if cube.Parent then local explosion = Instance.new("Explosion") explosion.Position = cube.Position explosion.BlastRadius = 25 explosion.BlastPressure = 0 explosion.DestroyJointRadiusPercent = 0 explosion.Parent = Workspace cube:Destroy() end end) break end RunService.RenderStepped:Wait() end end) end end end) -- Stabshot Tool local stabTool = Instance.new("Tool") stabTool.Name = "Stabshot" stabTool.RequiresHandle = false stabTool.CanBeDropped = false stabTool.Parent = player.Backpack local stabCanFire = false stabTool.Equipped:Connect(function() stabCanFire = false task.delay(0.2, function() stabCanFire = true end) end) stabTool.Activated:Connect(function() if not stabCanFire then return end if not player.Character then return end local spawnPos = mouse.Hit.Position local beamHeight = 40 for h = 0, beamHeight-1 do createTNT(spawnPos + Vector3.new(0,h*4,0), ringFolder) end task.delay(0.2, function() for _, part in pairs(ringFolder:GetChildren()) do if part.Position.Y >= spawnPos.Y and part.Position.Y <= spawnPos.Y + beamHeight*4 then local explosion = Instance.new("Explosion") explosion.Position = part.Position explosion.BlastRadius = 10 explosion.BlastPressure = 0 explosion.DestroyJointRadiusPercent = 0 explosion.Parent = Workspace part:Destroy() end end end) end) end -- Give tools on respawn local function giveTools() if player.Backpack then createTools() end end player.CharacterAdded:Connect(function() task.wait(0.1) -- small wait to let Backpack exist giveTools() end) -- Give tools immediately on first load giveTools()