Boom aura and more
Key Required

Boom aura and more

💥 Destruction SimulatorSwrod1kSwrod1k 1K views 177 executesUpdated Dec 28, 2025
5.0/ 5(2 votes)
20100% Positive
Lua Script•545 lines (14717 chars)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer
local remote = ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("explodeRocket")

local explosionRadius = 100
local isSending = false
local visualZone = nil
local connection = nil
local autoRankUp = false
local autoSell = false
local rankUpConnection = nil
local sellConnection = nil

local baseArgs = {
    1766939568.6610703,
    nil,
    Vector3.new(0, 0, 0),
    nil
}

local function getRequiredObjects()
    local success, backpack = pcall(function()
        return player:WaitForChild("Backpack")
    end)
    
    if not success then return false end
    
    local success2, launcher = pcall(function()
        return backpack:WaitForChild("Launcher")
    end)
    
    if not success2 then return false end
    
    local success3, stats = pcall(function()
        return launcher:WaitForChild("Stats")
    end)
    
    local success4, rocket = pcall(function()
        return launcher:WaitForChild("Assets"):WaitForChild("Rocket")
    end)
    
    if not success4 then return false end
    
    local success5, boom = pcall(function()
        return rocket:WaitForChild("Boom")
    end)
    
    if success3 and success5 then
        baseArgs[2] = stats
        baseArgs[4] = boom
        return true
    end
    
    return false
end

local function createVisualZone()
    if visualZone then
        pcall(function()
            visualZone:Destroy()
        end)
    end
    
    visualZone = Instance.new("Part")
    visualZone.Name = "ExplosionZoneVisual"
    visualZone.Size = Vector3.new(explosionRadius * 2, explosionRadius * 2, explosionRadius * 2)
    visualZone.Shape = Enum.PartType.Ball
    visualZone.Anchored = true
    visualZone.CanCollide = false
    visualZone.Transparency = 0.3
    visualZone.Material = Enum.Material.Neon
    
    local surfaceGui = Instance.new("SurfaceGui")
    surfaceGui.Face = Enum.NormalId.Top
    surfaceGui.AlwaysOnTop = true
    surfaceGui.Parent = visualZone
    
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(1, 0, 1, 0)
    frame.BackgroundColor3 = Color3.fromRGB(200, 0, 255)
    frame.BackgroundTransparency = 0.2
    frame.Parent = surfaceGui
    
    local pointLight = Instance.new("PointLight")
    pointLight.Brightness = 1
    pointLight.Range = explosionRadius * 3
    pointLight.Color = Color3.fromRGB(200, 0, 255)
    pointLight.Parent = visualZone
    
    local particleEmitter = Instance.new("ParticleEmitter")
    particleEmitter.Texture = "rbxassetid://242880393"
    particleEmitter.Color = ColorSequence.new(Color3.fromRGB(200, 0, 255), Color3.fromRGB(150, 0, 200))
    particleEmitter.Size = NumberSequence.new(1, 3)
    particleEmitter.Transparency = NumberSequence.new(0.5, 1)
    particleEmitter.Lifetime = NumberRange.new(1, 2)
    particleEmitter.Rate = 50
    particleEmitter.Speed = NumberRange.new(2, 5)
    particleEmitter.Parent = visualZone
    
    visualZone.Parent = workspace
    
    if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
        visualZone.Position = player.Character.HumanoidRootPart.Position
    end
    
    return visualZone
end

local function sendExplodeAtPosition(position)
    if not getRequiredObjects() then return end
    
    baseArgs[3] = position
    pcall(function()
        remote:FireServer(unpack(baseArgs))
    end)
end

local lastPlayerPosition = Vector3.new(0, 0, 0)

local function getFastRandomPosition()
    if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
        lastPlayerPosition = player.Character.HumanoidRootPart.Position
        
        if visualZone then
            pcall(function()
                visualZone.Position = lastPlayerPosition
            end)
        end
    end
    
    local offset = Vector3.new(
        (math.random() * 2 - 1) * explosionRadius,
        (math.random() * 2 - 1) * explosionRadius * 0.3,
        (math.random() * 2 - 1) * explosionRadius
    )
    
    return lastPlayerPosition + offset
end

local function startExplosions()
    if isSending then return end
    
    isSending = true
    createVisualZone()
    
    connection = RunService.Heartbeat:Connect(function()
        if not getRequiredObjects() then return end
        
        for i = 1, 25 do
            task.spawn(function()
                local position = getFastRandomPosition()
                pcall(function()
                    sendExplodeAtPosition(position)
                end)
            end)
        end
    end)
end

local function stopExplosions()
    isSending = false
    
    if connection then
        pcall(function()
            connection:Disconnect()
        end)
        connection = nil
    end
    
    if visualZone then
        pcall(function()
            visualZone:Destroy()
        end)
        visualZone = nil
    end
end

local function changeRadius(amount)
    explosionRadius = math.clamp(explosionRadius + amount, 10, 500)
    
    if visualZone then
        pcall(function()
            visualZone.Size = Vector3.new(explosionRadius * 2, explosionRadius * 2, explosionRadius * 2)
            if visualZone:FindFirstChild("PointLight") then
                visualZone.PointLight.Range = explosionRadius * 3
            end
            if visualZone:FindFirstChild("ParticleEmitter") then
                visualZone.ParticleEmitter.Rate = math.floor(explosionRadius * 0.5)
            end
        end)
    end
    
    return explosionRadius
end

local function startAutoRankUp()
    if autoRankUp then return end
    
    autoRankUp = true
    local rankUpEvent = ReplicatedStorage.Remotes.rankUp
    
    rankUpConnection = RunService.Heartbeat:Connect(function()
        task.wait(0.1)
        pcall(function()
            rankUpEvent:FireServer()
        end)
    end)
end

local function stopAutoRankUp()
    autoRankUp = false
    
    if rankUpConnection then
        pcall(function()
            rankUpConnection:Disconnect()
        end)
        rankUpConnection = nil
    end
end

local function startAutoSell()
    if autoSell then return end
    
    autoSell = true
    local sellEvent = ReplicatedStorage.Remotes.sellBricks
    
    sellConnection = RunService.Heartbeat:Connect(function()
        task.wait(0.1)
        pcall(function()
            sellEvent:FireServer()
        end)
    end)
end

local function stopAutoSell()
    autoSell = false
    
    if sellConnection then
        pcall(function()
            sellConnection:Disconnect()
        end)
        sellConnection = nil
    end
end

local function activateBoost(boostType, duration, multiplier)
    pcall(function()
        ReplicatedStorage.Remotes.generateBoost:FireServer(boostType, duration, multiplier)
    end)
end

local function clearAllBoosts()
    pcall(function()
        ReplicatedStorage.Remotes.generateBoost:FireServer("SuperJump", -36000, 2)
        ReplicatedStorage.Remotes.generateBoost:FireServer("ExtraSpeed", -36000, 2)
        ReplicatedStorage.Remotes.generateBoost:FireServer("CoinBoost", -36000, 1000000)
        ReplicatedStorage.Remotes.generateBoost:FireServer("XPBoost", -36000, 1000000)
        ReplicatedStorage.Remotes.generateBoost:FireServer("BrickBoost", -36000, 1000000)
        ReplicatedStorage.Remotes.generateBoost:FireServer("Levels", 180, 10)
    end)
end

local repo = "https://raw.githubusercontent.com/deividcomsono/Obsidian/main/"
local Library = loadstring(game:HttpGet(repo .. "Library.lua"))()
local ThemeManager = loadstring(game:HttpGet(repo .. "addons/ThemeManager.lua"))()
local SaveManager = loadstring(game:HttpGet(repo .. "addons/SaveManager.lua"))()

local Window = Library:CreateWindow({
    Title = "by RobloxMAN",
    Footer = "v1.0",
    Icon = 95816097006870,
    ShowCustomCursor = true,
})

local Tabs = {
    Main = Window:AddTab("Main", "user"),
    Boosts = Window:AddTab("Boosts", "zap"),
    ["UI Settings"] = Window:AddTab("UI Settings", "settings"),
}

local LeftGroupBox = Tabs.Main:AddLeftGroupbox("Explosion Control", "bomb")

LeftGroupBox:AddToggle("ExplosionToggle", {
    Text = "Enable Explosions",
    Default = false,
    Callback = function(Value)
        if Value then
            startExplosions()
        else
            stopExplosions()
        end
    end,
})

LeftGroupBox:AddButton({
    Text = "Increase Radius",
    Func = function()
        changeRadius(10)
    end,
})

LeftGroupBox:AddButton({
    Text = "Decrease Radius",
    Func = function()
        changeRadius(-10)
    end,
})

LeftGroupBox:AddSlider("RadiusSlider", {
    Text = "Radius Size",
    Default = 100,
    Min = 10,
    Max = 500,
    Rounding = 0,
    Callback = function(Value)
        explosionRadius = Value
        if visualZone then
            pcall(function()
                visualZone.Size = Vector3.new(explosionRadius * 2, explosionRadius * 2, explosionRadius * 2)
                if visualZone:FindFirstChild("PointLight") then
                    visualZone.PointLight.Range = explosionRadius * 3
                end
            end)
        end
    end,
})

LeftGroupBox:AddSlider("SpeedSlider", {
    Text = "Explosion Speed",
    Default = 25,
    Min = 5,
    Max = 100,
    Rounding = 0,
})

local RightGroupBox = Tabs.Main:AddRightGroupbox("Auto Features", "refresh-cw")

RightGroupBox:AddToggle("AutoRankUpToggle", {
    Text = "Auto Rank UP",
    Default = false,
    Callback = function(Value)
        if Value then
            startAutoRankUp()
        else
            stopAutoRankUp()
        end
    end,
})

RightGroupBox:AddToggle("AutoSellToggle", {
    Text = "Auto Sell",
    Default = false,
    Callback = function(Value)
        if Value then
            startAutoSell()
        else
            stopAutoSell()
        end
    end,
})

local VisualGroupBox = Tabs.Main:AddRightGroupbox("Visuals", "eye")

VisualGroupBox:AddToggle("VisualZoneToggle", {
    Text = "Show Zone",
    Default = true,
    Callback = function(Value)
        if Value then
            if isSending and not visualZone then
                createVisualZone()
            end
        else
            if visualZone then
                pcall(function()
                    visualZone:Destroy()
                end)
                visualZone = nil
            end
        end
    end,
})

VisualGroupBox:AddLabel("Zone Color"):AddColorPicker("ZoneColor", {
    Default = Color3.fromRGB(200, 0, 255),
    Title = "Zone Color",
    Callback = function(Value)
        if visualZone then
            pcall(function()
                if visualZone:FindFirstChild("SurfaceGui") then
                    local frame = visualZone.SurfaceGui:FindFirstChild("Frame")
                    if frame then
                        frame.BackgroundColor3 = Value
                    end
                end
                if visualZone:FindFirstChild("PointLight") then
                    visualZone.PointLight.Color = Value
                end
                if visualZone:FindFirstChild("ParticleEmitter") then
                    visualZone.ParticleEmitter.Color = ColorSequence.new(Value, Color3.fromRGB(
                        math.floor(Value.R * 150),
                        math.floor(Value.G * 150),
                        math.floor(Value.B * 150)
                    ))
                end
            end)
        end
    end,
})

VisualGroupBox:AddSlider("TransparencySlider", {
    Text = "Zone Transparency",
    Default = 0.3,
    Min = 0,
    Max = 1,
    Rounding = 1,
    Callback = function(Value)
        if visualZone then
            pcall(function()
                visualZone.Transparency = Value
                if visualZone:FindFirstChild("SurfaceGui") then
                    local frame = visualZone.SurfaceGui:FindFirstChild("Frame")
                    if frame then
                        frame.BackgroundTransparency = Value + 0.2
                    end
                end
            end)
        end
    end,
})

local BoostsLeftGroupBox = Tabs.Boosts:AddLeftGroupbox("Boost Activation", "zap")

BoostsLeftGroupBox:AddButton({
    Text = "Super Jump (10h)",
    Func = function()
        activateBoost("SuperJump", 36000, 2)
    end,
})

BoostsLeftGroupBox:AddButton({
    Text = "Extra Speed (10h)",
    Func = function()
        activateBoost("ExtraSpeed", 36000, 2)
    end,
})

BoostsLeftGroupBox:AddButton({
    Text = "Coin Boost (x1M)",
    Func = function()
        activateBoost("CoinBoost", 36000, 1000000)
    end,
})

BoostsLeftGroupBox:AddButton({
    Text = "XP Boost (x1M)",
    Func = function()
        activateBoost("XPBoost", 36000, 1000000)
    end,
})

BoostsLeftGroupBox:AddButton({
    Text = "Brick Boost (x1M)",
    Func = function()
        activateBoost("BrickBoost", 36000, 1000000)
    end,
})

local BoostsRightGroupBox = Tabs.Boosts:AddRightGroupbox("Level & Clear", "trending-up")

BoostsRightGroupBox:AddButton({
    Text = "Level Up (+10)",
    Func = function()
        pcall(function()
            ReplicatedStorage.Remotes.generateBoost:FireServer("Levels", 180, 10)
        end)
    end,
})

BoostsRightGroupBox:AddButton({
    Text = "Clear All Boosts",
    Func = function()
        clearAllBoosts()
    end,
})

Library:OnUnload(function()
    stopExplosions()
    stopAutoRankUp()
    stopAutoSell()
end)

local MenuGroup = Tabs["UI Settings"]:AddLeftGroupbox("Menu")
MenuGroup:AddLabel("Menu bind"):AddKeyPicker("MenuKeybind", { 
    Default = "RightShift", 
    NoUI = true, 
    Text = "Menu keybind"
})

MenuGroup:AddButton("Unload", function() 
    Library:Unload() 
end)

Library.ToggleKeybind = Options.MenuKeybind

ThemeManager:SetLibrary(Library)
SaveManager:SetLibrary(Library)
SaveManager:IgnoreThemeSettings()
SaveManager:SetIgnoreIndexes({ "MenuKeybind" })

SaveManager:BuildConfigSection(Tabs["UI Settings"])
ThemeManager:ApplyToTab(Tabs["UI Settings"])
SaveManager:LoadAutoloadConfig()

game:GetService("Players").LocalPlayer.CharacterAdded:Connect(function()
    task.wait(1)
    if isSending and visualZone then
        pcall(function()
            visualZone:Destroy()
        end)
        visualZone = nil
        createVisualZone()
    end
end)

game:GetService("Players").LocalPlayer.CharacterRemoving:Connect(function()
    if visualZone then
        pcall(function()
            visualZone:Destroy()
        end)
        visualZone = nil
    end
end)

local function onInputBegan(input, gameProcessed)
    if gameProcessed then return end
    
    if input.KeyCode == Enum.KeyCode.RightControl then
        Library:Unload()
    end
end

game:GetService("UserInputService").InputBegan:Connect(onInputBegan)

Features & Information

Hi my discord: dualjuja Script open source Main Functions: Explosion Control Section: Enable Explosions - Toggle automatic explosions around player Increase Radius - Increase explosion radius by +10 Decrease Radius - Decrease explosion radius by -10 Radius Size (slider) - Precise radius adjustment (10-500) Explosion Speed (slider) - Explosion frequency control (5-100 per frame) Auto Features Section: Auto Rank UP - Automatic rank increase (every 0.1 seconds) Auto Sell - Automatic brick selling (every 0.1 seconds) Visuals Section: Show Zone - Show/hide visual explosion zone Zone Color - Customize zone color (default purple) Zone Transparency - Adjust zone transparency (0-100%) Boosts Section: Boost Activation: Super Jump (10h) - 10-hour jump boost Extra Speed (10h) - 10-hour speed boost Coin Boost (x1M) - x1,000,000 coin multiplier XP Boost (x1M) - x1,000,000 XP multiplier Brick Boost (x1M) - x1,000,000 brick multiplier Level & Clear: Level Up (+10) - Instant +10 level increase Clear All Boosts - Remove all active boosts Controls: Close Gui "RightControl"
#Destruction Simulator#Script Destruction Simulator#Destruction Simulator script#Destruction#Destruction Script

Community Comments (2)

HallsHallsDec 28, 2025

Op

kallowarekallowareJan 18, 2026

WWWW, VERY OP

More Scripts for 💥 Destruction Simulator