local Workspace = game:GetService("Workspace") local Players = game:GetService("Players") local Debris = game:GetService("Debris") -- Settings local NUKE_COUNT = 60 local COUNTDOWN_TIME = 5 local RANGE = 100 local MIN_HEIGHT = 150 local MAX_HEIGHT = 300 local EXPLOSION_SOUND_ID = "rbxassetid://138186576" -- boom local SIREN_SOUND_ID = "rbxassetid://9118823109" -- warning siren (change if needed) -- Function: camera shake for nearby players local function shakeCamera(position) for _, player in pairs(Players:GetPlayers()) do local char = player.Character if char and char:FindFirstChild("HumanoidRootPart") then local dist = (char.HumanoidRootPart.Position - position).Magnitude if dist < 80 then local cam = Workspace.CurrentCamera local event = Instance.new("BindableEvent") event.Event:Connect(function() local cam = Workspace.CurrentCamera local shakePower = math.clamp(5 - (dist / 20), 1, 5) local shakeTime = 0.3 local start = tick() while tick() - start < shakeTime do local offset = Vector3.new( math.random(-shakePower, shakePower) / 10, math.random(-shakePower, shakePower) / 10, math.random(-shakePower, shakePower) / 10 ) cam.CFrame = cam.CFrame * CFrame.new(offset) wait(0.03) end end) event:Fire() event:Destroy() end end end end -- Function: create a falling nuke local function spawnNuke(position) local nuke = Instance.new("Part") nuke.Size = Vector3.new(4, 8, 4) nuke.BrickColor = BrickColor.new("Really red") nuke.Material = Enum.Material.Metal nuke.Anchored = false nuke.CanCollide = true nuke.Position = position nuke.Name = "FallingNuke" local smoke = Instance.new("Smoke") smoke.Size = 10 smoke.RiseVelocity = 5 smoke.Parent = nuke nuke.Touched:Connect(function(hit) if not nuke or not nuke.Parent then return end local explosion = Instance.new("Explosion") explosion.BlastRadius = 25 explosion.BlastPressure = 1000000 explosion.Position = nuke.Position explosion.Parent = Workspace -- Fire for i = 1, 5 do local fire = Instance.new("Fire") fire.Size = 15 fire.Heat = 10 local firePart = Instance.new("Part") firePart.Anchored = true firePart.CanCollide = false firePart.Transparency = 1 firePart.Position = nuke.Position + Vector3.new(math.random(-5, 5), 0, math.random(-5, 5)) fire.Parent = firePart firePart.Parent = Workspace Debris:AddItem(firePart, 5) end -- Explosion sound local boom = Instance.new("Sound", Workspace) boom.SoundId = EXPLOSION_SOUND_ID boom.Volume = 2 boom.Position = nuke.Position boom:Play() Debris:AddItem(boom, 5) shakeCamera(nuke.Position) nuke:Destroy() end) nuke.Parent = Workspace end -- Function: display 3D countdown above center local function showCountdown(seconds) local part = Instance.new("Part") part.Anchored = true part.CanCollide = false part.Transparency = 1 part.Position = Vector3.new(0, 60, 0) part.Size = Vector3.new(1, 1, 1) part.Name = "CountdownDisplay" local billboard = Instance.new("BillboardGui", part) billboard.Size = UDim2.new(0, 200, 0, 100) billboard.AlwaysOnTop = true local label = Instance.new("TextLabel", billboard) label.Size = UDim2.new(1, 0, 1, 0) label.BackgroundTransparency = 1 label.TextColor3 = Color3.new(1, 0, 0) label.TextScaled = true label.Font = Enum.Font.Arcade label.Text = "Nukes Inbound..." part.Parent = Workspace for i = seconds, 0, -1 do label.Text = "NUKES INCOMING IN: " .. i wait(1) end part:Destroy() end -- Function: play siren local function playSiren() local siren = Instance.new("Sound", Workspace) siren.SoundId = SIREN_SOUND_ID siren.Volume = 2 siren.Looped = false siren:Play() Debris:AddItem(siren, 10) end -- 🚨 Start: Countdown & Siren playSiren() showCountdown(COUNTDOWN_TIME) -- 💣 Spawn 60 falling nukes after countdown for i = 1, NUKE_COUNT do local x = math.random(-RANGE, RANGE) local z = math.random(-RANGE, RANGE) local y = math.random(MIN_HEIGHT, MAX_HEIGHT) spawnNuke(Vector3.new(x, y, z)) wait(0.1) end