Orbital strike cannon
Key RequiredUniversal

Orbital strike cannon

Universal ScriptYzn_lolYzn_lol 1.8K views 1.2K executesUpdated Feb 7, 2026
0.0/ 5(2 votes)
020% Positive
Lua Script•183 lines (4767 chars)
--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()

Features & Information

This is an orbital strike cannon

Community Comments (2)

filter1ngenabledfilter1ngenabledApr 9, 2026

what games is it FE in?

yruk665yruk665Sep 12, 2026

Не работает на других(

More Scripts for Universal Scripts