(VFX Update) Sukuna Script for ES Dismantle Cleave Domain
Key Required

(VFX Update) Sukuna Script for ES Dismantle Cleave Domain

Smooth SlicingExeSExeS 2.6K views 719 executesUpdated Mar 12, 2026
4.0/ 5(5 votes)
4180% Positive
Lua Script•767 lines (24640 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local CoreGui = game:GetService("CoreGui")
local TweenService = game:GetService("TweenService")
local lp = Players.LocalPlayer

local Config = {
    VisiblePoints = true, 
    VFX = true,
    Music = true,
    BatchSize = 100        
}

-- Epic Initialization Sequence (Console)
print("\n========================================")
print("🩸 AWAKENING THE KING OF CURSES...")
task.wait(0.8)
warn("   \"Domain Expansion: Malevolent Shrine.\"")
task.wait(1)
print("🔗 Loading Cursed Techniques (VFX ENABLED)...")
task.wait(0.5)
print("========================================\n")

-- Base CFrame of the sword
local baseCF = CFrame.new(
    7.82324982, 0.237220764, 0.352325439,
    0.9998101, 0.00494627282, -0.0188489575,
    -0.00540907215, 0.999683261, -0.024581708,
    0.018721398, 0.0246789958, 0.999520183
)

local activeAnimations = {}
local activePoints = {} 
local activeVFX = {}
local shrineCooldown = false

-- ==========================================
-- UTILITY & SOUND FUNCTIONS
-- ==========================================

-- Background Music
local bgMusic
local function setupMusic()
    if bgMusic then bgMusic:Destroy() end
    bgMusic = Instance.new("Sound")
    bgMusic.SoundId = "rbxassetid://904562208" -- Dark ominous ambient track
    bgMusic.Volume = 0.5
    bgMusic.Looped = true
    bgMusic.Parent = workspace
    if Config.Music then
        bgMusic:Play()
    end
end
setupMusic()

local function playSound(id, volume, pitch)
    if not Config.Music then return end
    local char = lp.Character
    if not char then return end
    local root = char:FindFirstChild("HumanoidRootPart")
    if not root then return end
    
    local sound = Instance.new("Sound")
    sound.SoundId = "rbxassetid://" .. tostring(id)
    sound.Volume = volume or 1
    sound.PlaybackSpeed = pitch or 1
    sound.Parent = root
    sound:Play()
    game.Debris:AddItem(sound, 5) 
end

local function getBlade()
    local char = lp.Character
    if not char then return nil end
    local weapon = char:FindFirstChild("Weapon")
    if not weapon then return nil end
    local hitParts = weapon:FindFirstChild("HitParts")
    if not hitParts then return nil end
    return hitParts:FindFirstChild("MainBlade")
end

local function clearHitboxes()
    for _, conn in ipairs(activeAnimations) do
        if conn then conn:Disconnect() end
    end
    table.clear(activeAnimations)
    table.clear(activePoints)
    
    for _, vfx in ipairs(activeVFX) do
        if vfx and vfx.Parent then vfx:Destroy() end
    end
    table.clear(activeVFX)

    local blade = getBlade()
    if not blade then return end
    
    for _, child in ipairs(blade:GetChildren()) do
        if child:IsA("Attachment") and child:GetAttribute("IsSukunaHitbox") then
            child:Destroy()
        end
    end
end

-- ==========================================
-- VFX GENERATORS
-- ==========================================

local function addCursedEnergy(parent)
    if not Config.VFX then return end
    local pe = Instance.new("ParticleEmitter")
    pe.Color = ColorSequence.new({
        ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)),
        ColorSequenceKeypoint.new(0.5, Color3.fromRGB(100, 0, 0)),
        ColorSequenceKeypoint.new(1, Color3.fromRGB(0, 0, 0))
    })
    pe.Size = NumberSequence.new({
        NumberSequenceKeypoint.new(0, 0.5),
        NumberSequenceKeypoint.new(1, 0)
    })
    pe.Transparency = NumberSequence.new({
        NumberSequenceKeypoint.new(0, 0),
        NumberSequenceKeypoint.new(1, 1)
    })
    pe.Lifetime = NumberRange.new(0.3, 0.6)
    pe.Rate = 20
    pe.Speed = NumberRange.new(1, 3)
    pe.EmissionDirection = Enum.NormalId.Back
    pe.Parent = parent
    return pe
end

local function addFireVFX(parent)
    if not Config.VFX then return end
    local fire = Instance.new("Fire")
    fire.Color = Color3.fromRGB(255, 100, 0)
    fire.SecondaryColor = Color3.fromRGB(255, 0, 0)
    fire.Heat = 25
    fire.Size = 4
    fire.Parent = parent
    return fire
end

local function spawnDomainSphere()
    if not Config.VFX then return end
    local char = lp.Character
    if not char then return end
    local root = char:FindFirstChild("HumanoidRootPart")
    if not root then return end

    local domain = Instance.new("Part")
    domain.Shape = Enum.PartType.Ball
    domain.Size = Vector3.new(1, 1, 1)
    domain.Material = Enum.Material.ForceField
    domain.Color = Color3.fromRGB(255, 0, 0)
    domain.Transparency = 0.5
    domain.Anchored = true
    domain.CanCollide = false
    domain.Position = root.Position
    domain.Parent = workspace
    table.insert(activeVFX, domain)

    -- Expand domain
    local tweenInfo = TweenInfo.new(2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
    local tween = TweenService:Create(domain, tweenInfo, {Size = Vector3.new(250, 250, 250), Transparency = 0.8})
    tween:Play()
end

local function spawnPhysicalShrine()
    if not Config.VFX then return end
    local char = lp.Character
    if not char then return end
    local root = char:FindFirstChild("HumanoidRootPart")
    if not root then return end

    local shrineModel = Instance.new("Model")
    shrineModel.Name = "PhysicalShrine"
    shrineModel.Parent = workspace
    table.insert(activeVFX, shrineModel)

    -- Shrine Base
    local base = Instance.new("Part")
    base.Size = Vector3.new(40, 3, 40)
    base.Anchored = true
    base.CanCollide = false
    base.Color = Color3.fromRGB(20, 20, 20)
    base.Material = Enum.Material.Slate
    -- Positioned right behind the player
    base.CFrame = root.CFrame * CFrame.new(0, -3.5, -15)
    base.Parent = shrineModel

    -- Shrine Altar / Main Body
    local altar = Instance.new("Part")
    altar.Size = Vector3.new(20, 15, 20)
    altar.Anchored = true
    altar.CanCollide = false
    altar.Color = Color3.fromRGB(40, 10, 10)
    altar.Material = Enum.Material.Wood
    altar.CFrame = base.CFrame * CFrame.new(0, 9, 0)
    altar.Parent = shrineModel

    -- Shrine Roof
    local roof = Instance.new("Part")
    roof.Size = Vector3.new(35, 8, 35)
    roof.Anchored = true
    roof.CanCollide = false
    roof.Color = Color3.fromRGB(10, 10, 10)
    roof.Material = Enum.Material.Slate
    roof.CFrame = altar.CFrame * CFrame.new(0, 11.5, 0) * CFrame.Angles(0, math.pi/4, 0)
    roof.Parent = shrineModel

    -- Animate popping up from the ground
    local parts = {base, altar, roof}
    for _, p in ipairs(parts) do
        local targetCF = p.CFrame
        p.CFrame = targetCF * CFrame.new(0, -60, 0) -- Start underground
        local tw = TweenService:Create(p, TweenInfo.new(2, Enum.EasingStyle.Bounce, Enum.EasingDirection.Out), {CFrame = targetCF})
        tw:Play()
    end
end

local function spawnShockwave()
    if not Config.VFX then return end
    local char = lp.Character
    if not char then return end
    local root = char:FindFirstChild("HumanoidRootPart")
    if not root then return end

    local wave = Instance.new("Part")
    wave.Shape = Enum.PartType.Cylinder
    wave.Size = Vector3.new(1, 1, 1)
    wave.Material = Enum.Material.Neon
    wave.Color = Color3.fromRGB(255, 50, 50)
    wave.Transparency = 0.2
    wave.Anchored = true
    wave.CanCollide = false
    wave.CFrame = root.CFrame * CFrame.new(0, -2.5, 0) * CFrame.Angles(0, 0, math.pi/2)
    wave.Parent = workspace
    table.insert(activeVFX, wave)

    local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
    local tween = TweenService:Create(wave, tweenInfo, {Size = Vector3.new(0.5, 150, 150), Transparency = 1})
    tween:Play()
    
    tween.Completed:Connect(function()
        if wave and wave.Parent then wave:Destroy() end
    end)
end

local function createPoint(blade, offsetCFrame, vfxType)
    local att = Instance.new("Attachment")
    att.Name = "DmgPoint" 
    att:SetAttribute("IsSukunaHitbox", true) 
    att.Visible = Config.VisiblePoints
    att.CFrame = baseCF * offsetCFrame
    att.Parent = blade
    
    if vfxType == "Cursed" then
        addCursedEnergy(att)
    elseif vfxType == "Fire" then
        addFireVFX(att)
    end
    
    table.insert(activePoints, att)
    return att
end

-- ==========================================
-- ROTATION & MOVEMENT ENGINES
-- ==========================================

local function animateAttack(points, spinSpeeds)
    local elapsed = 0
    local conn
    
    local originalCFs = {}
    for i, p in ipairs(points) do
        originalCFs[i] = p.CFrame
    end

    conn = RunService.Heartbeat:Connect(function(dt)
        elapsed = elapsed + dt

        local rotation = CFrame.Angles(
            math.rad(spinSpeeds.X * elapsed),
            math.rad(spinSpeeds.Y * elapsed),
            math.rad(spinSpeeds.Z * elapsed)
        )

        for i = 1, #points do
            local p = points[i]
            if p and p.Parent then
                p.CFrame = rotation * originalCFs[i]
            end
        end
    end)
    table.insert(activeAnimations, conn)
end

-- NEW: A specific engine for Malevolent Shrine that wildly teleports hitboxes
local function animateShrineStorm(points)
    local conn
    conn = RunService.Heartbeat:Connect(function(dt)
        for i = 1, #points do
            local p = points[i]
            if p and p.Parent then
                -- Teleports every point randomly inside the 250 stud radius every frame
                local rx = (math.random() - 0.5) * 250
                local ry = (math.random() - 0.5) * 250
                local rz = (math.random() - 0.5) * 250
                local rot = CFrame.Angles(math.random()*math.pi*2, math.random()*math.pi*2, math.random()*math.pi*2)
                p.CFrame = baseCF * CFrame.new(rx, ry, rz) * rot
            end
        end
    end)
    table.insert(activeAnimations, conn)
end

local function prayAnimation(duration)
    local char = lp.Character
    if not char then return end
    local humanoid = char:FindFirstChildOfClass("Humanoid")
    if not humanoid then return end

    local elapsed = 0
    local conn
    conn = RunService.Stepped:Connect(function(dt)
        elapsed = elapsed + dt
        if elapsed >= duration then
            conn:Disconnect()
            return
        end
        
        if humanoid.RigType == Enum.HumanoidRigType.R6 then
            local rs = char:FindFirstChild("Torso") and char.Torso:FindFirstChild("Right Shoulder")
            local ls = char:FindFirstChild("Torso") and char.Torso:FindFirstChild("Left Shoulder")
            if rs then rs.Transform = CFrame.Angles(math.pi/2, -math.pi/4, 0) end
            if ls then ls.Transform = CFrame.Angles(math.pi/2, math.pi/4, 0) end
        elseif humanoid.RigType == Enum.HumanoidRigType.R15 then
            local rs = char:FindFirstChild("RightUpperArm") and char.RightUpperArm:FindFirstChild("RightShoulder")
            local ls = char:FindFirstChild("LeftUpperArm") and char.LeftUpperArm:FindFirstChild("LeftShoulder")
            local re = char:FindFirstChild("RightLowerArm") and char.RightLowerArm:FindFirstChild("RightElbow")
            local le = char:FindFirstChild("LeftLowerArm") and char.LeftLowerArm:FindFirstChild("LeftElbow")
            
            if rs then rs.Transform = CFrame.Angles(math.pi/2.5, -math.pi/6, 0) end
            if ls then ls.Transform = CFrame.Angles(math.pi/2.5, math.pi/6, 0) end
            if re then re.Transform = CFrame.Angles(0, 0, 0) end
            if le then le.Transform = CFrame.Angles(0, 0, 0) end
        end
    end)
end

-- ==========================================
-- SUKUNA'S CURSED TECHNIQUES
-- ==========================================

local isAttacking = false

local function executeSlash()
    if isAttacking then return end
    local blade = getBlade()
    if not blade then warn("Equip your weapon first!") return end
    isAttacking = true
    
    playSound(1046985834, 1.5, 1)
    clearHitboxes()
    
    local points = {}
    for i = -40, 40, 2 do
        table.insert(points, createPoint(blade, CFrame.new(15, i, i), "Cursed"))   
        table.insert(points, createPoint(blade, CFrame.new(15, i, -i), "Cursed"))  
    end
    animateAttack(points, Vector3.new(2500, 0, 0)) 
    isAttacking = false
end

local function executeRush()
    if isAttacking then return end
    local blade = getBlade()
    if not blade then warn("Equip your weapon first!") return end
    isAttacking = true
    
    playSound(1046985834, 1.5, 0.7)
    clearHitboxes()
    
    local points = {}
    for y = -20, 20, 4 do
        for z = -40, 40, 4 do
            table.insert(points, createPoint(blade, CFrame.new(10, y, z), "Cursed"))
        end
    end
    animateAttack(points, Vector3.new(3500, 1000, 0)) 
    isAttacking = false
end

local function executeShrine()
    if isAttacking then return end
    
    if shrineCooldown then 
        warn("[Sukuna] Malevolent Shrine is currently on cooldown!")
        return 
    end
    
    local blade = getBlade()
    if not blade then warn("Equip your weapon first!") return end
    isAttacking = true
    
    -- Handle Shrine Cooldown Logic
    shrineCooldown = true
    task.spawn(function()
        local sg = CoreGui:FindFirstChild("SukunaHub")
        local btn = sg and sg:FindFirstChild("MainFrame") and sg.MainFrame:FindFirstChild("BtnShrine")
        for i = 30, 1, -1 do
            if btn then btn.Text = "Shrine Cooldown (" .. i .. "s)" end
            task.wait(1)
        end
        shrineCooldown = false
        if btn then btn.Text = "Malevolent Shrine" end
        print("[Sukuna] Malevolent Shrine is ready to be cast again!")
    end)
    
    playSound(3149714151, 2, 1) -- Domain Expansion sound
    clearHitboxes()
    prayAnimation(2)
    spawnDomainSphere() -- Red expanding sphere
    spawnPhysicalShrine() -- Physical temple structure
    
    local points = {}
    -- Create 400 hitboxes that will act as the inescapable cutting storm
    for i = 1, 400 do
        table.insert(points, createPoint(blade, CFrame.new(0,0,0), "Cursed"))
    end
    
    -- Teleports hitboxes omnidirectionally constantly inside the domain
    animateShrineStorm(points)
    isAttacking = false
end

local function executeWorldSlash()
    if isAttacking then return end
    local blade = getBlade()
    if not blade then warn("Equip your weapon first!") return end
    isAttacking = true
    
    playSound(1010899204, 2, 0.8)
    clearHitboxes()
    
    local points = {}
    for y = -20, 20, 5 do
        for z = -20, 20, 5 do
            table.insert(points, createPoint(blade, CFrame.new(15, y, z), "Cursed"))
        end
    end
    animateAttack(points, Vector3.new(0, 0, 1000))
    isAttacking = false
end

local function executeFireArrow()
    if isAttacking then return end
    local blade = getBlade()
    if not blade then warn("Equip your weapon first!") return end
    isAttacking = true
    
    playSound(289315275, 2, 1)
    clearHitboxes()
    
    local points = {}
    -- [OP BUFF]: Starts extremely close (x=1.5), extends incredibly far (x=250), with higher density (step 3)
    for x = 1.5, 250, 3 do
        for angle = 0, math.pi*2, math.pi/4 do
            local y = math.sin(angle) * 7
            local z = math.cos(angle) * 7
            table.insert(points, createPoint(blade, CFrame.new(x, y, z), "Fire"))
        end
    end
    animateAttack(points, Vector3.new(4000, 0, 0)) -- Faster rotation
    isAttacking = false
end

local function executeSpiderweb()
    if isAttacking then return end
    local blade = getBlade()
    if not blade then warn("Equip your weapon first!") return end
    isAttacking = true
    
    playSound(144485303, 2, 1)
    clearHitboxes()
    spawnShockwave() -- Spawns red ground shockwave
    
    local points = {}
    math.randomseed(os.time())
    for i = 1, 200 do
        local rx = (math.random() - 0.5) * 2 * 40
        local ry = -3 
        local rz = (math.random() - 0.5) * 2 * 40
        local pos = Vector3.new(rx, ry, rz)
        local flatPos = pos + Vector3.new(pos.X, 0, pos.Z).Unit
        local offsetCF = CFrame.new(pos, flatPos)
        table.insert(points, createPoint(blade, offsetCF, "Cursed"))
    end
    animateAttack(points, Vector3.new(0, 2000, 0))
    isAttacking = false
end

local function executeHalfCut()
    if isAttacking then return end
    local blade = getBlade()
    if not blade then warn("Equip your weapon first!") return end
    isAttacking = true
    
    playSound(1046985834, 2, 0.4)
    clearHitboxes()
    
    local points = {}
    local lineWidth = 100  
    local startDist = 1.5  
    local layers = 25      
    local distStep = 4     
    
    for i = 0, layers - 1 do
        local currentDist = startDist + (i * distStep)
        for z = -lineWidth, lineWidth, 1.5 do
            local vfx = (i % 5 == 0) and "Cursed" or nil
            table.insert(points, createPoint(blade, CFrame.new(currentDist, 1.5, z), vfx))
        end
    end
    
    local elapsed = 0
    local conn
    local originalCFs = {}
    for i, p in ipairs(points) do
        originalCFs[i] = p.CFrame
    end

    conn = RunService.Heartbeat:Connect(function(dt)
        elapsed = elapsed + dt
        local dropAmount = elapsed * 0.8 
        for i = 1, #points do
            local p = points[i]
            if p and p.Parent then
                p.CFrame = originalCFs[i] * CFrame.new(0, -dropAmount, 0)
            end
        end
    end)
    table.insert(activeAnimations, conn)
    isAttacking = false
end

local function executeLineOfDeathHorizontal()
    if isAttacking then return end
    local blade = getBlade()
    if not blade then warn("Equip your weapon first!") return end
    isAttacking = true
    
    playSound(1046985834, 2, 0.6)
    clearHitboxes()
    
    local points = {}
    local lineWidth = 150  
    local startDist = 5    
    local heightOffset = 1.5 
    local curveStrength = 0.0008 
    
    for z = -lineWidth, lineWidth, 1.5 do
        local curve = (z * z) * curveStrength
        table.insert(points, createPoint(blade, CFrame.new(startDist - curve, heightOffset, z), "Cursed"))
    end
    isAttacking = false
end

local function executeLineOfDeathVertical()
    if isAttacking then return end
    local blade = getBlade()
    if not blade then warn("Equip your weapon first!") return end
    isAttacking = true
    
    playSound(1046985834, 2, 0.6)
    clearHitboxes()
    
    local points = {}
    local lineWidth = 150  
    local startDist = 5    
    local curveStrength = 0.0008 
    
    for y = -lineWidth, lineWidth, 1.5 do
        local curve = (y * y) * curveStrength
        table.insert(points, createPoint(blade, CFrame.new(startDist - curve, y, 0), "Cursed"))
    end
    
    local elapsed = 0
    local conn
    local originalCFs = {}
    for i, p in ipairs(points) do
        originalCFs[i] = p.CFrame
    end

    conn = RunService.Heartbeat:Connect(function(dt)
        elapsed = elapsed + dt
        local travelAmount = elapsed * 100

        for i = 1, #points do
            local p = points[i]
            if p and p.Parent then
                p.CFrame = originalCFs[i] * CFrame.new(travelAmount, 0, 0)
            end
        end
    end)
    table.insert(activeAnimations, conn)
    
    isAttacking = false
end

local function executeCalamity()
    if isAttacking then return end
    local blade = getBlade()
    if not blade then warn("Equip your weapon first!") return end
    isAttacking = true
    
    playSound(289315275, 3, 0.5)
    clearHitboxes()
    spawnDomainSphere() 
    
    local points = {}
    local width = 80
    local height = 80
    local step = 8 
    
    for y = -height/2, height/2, step do
        for z = -width/2, width/2, step do
            table.insert(points, createPoint(blade, CFrame.new(30, y, z), "Cursed"))
        end
        if #points % Config.BatchSize == 0 then task.wait() end
    end
    animateAttack(points, Vector3.new(2000, 2000, 2000))
    isAttacking = false
end

-- ==========================================
-- GUI CREATION
-- ==========================================

if CoreGui:FindFirstChild("SukunaHub") then
    CoreGui.SukunaHub:Destroy()
end

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "SukunaHub"
ScreenGui.Parent = CoreGui

local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 280, 0, 710)
MainFrame.Position = UDim2.new(0.5, -140, 0.5, -355)
MainFrame.BackgroundColor3 = Color3.fromRGB(15, 0, 0)
MainFrame.BorderSizePixel = 2
MainFrame.BorderColor3 = Color3.fromRGB(150, 0, 0)
MainFrame.Active = true
MainFrame.Draggable = true 
MainFrame.Parent = ScreenGui

local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, 0, 0, 40)
Title.BackgroundTransparency = 1
Title.Text = "" 
Title.TextColor3 = Color3.fromRGB(255, 50, 50)
Title.TextSize = 24
Title.Font = Enum.Font.Code
Title.Parent = MainFrame

task.spawn(function()
    local textToType = "🩸 SUKUNA HUB 🩸"
    for i = 1, #textToType do
        Title.Text = string.sub(textToType, 1, i)
        task.wait(0.05)
    end
end)

local function createButton(name, text, yPos, callback, isSupreme, widthOffset)
    local wOff = widthOffset or 0.9
    local btn = Instance.new("TextButton")
    btn.Name = name
    btn.Size = UDim2.new(wOff, 0, 0, 40)
    
    if wOff < 0.9 then
        btn.Position = UDim2.new(0.05 + (0.9 - wOff), 0, 0, yPos)
    else
        btn.Position = UDim2.new(0.05, 0, 0, yPos)
    end
    
    if isSupreme then
        btn.BackgroundColor3 = Color3.fromRGB(70, 0, 0)
        btn.BorderColor3 = Color3.fromRGB(255, 0, 0)
        btn.TextColor3 = Color3.fromRGB(255, 255, 100)
    else
        btn.BackgroundColor3 = Color3.fromRGB(40, 0, 0)
        btn.BorderColor3 = Color3.fromRGB(200, 0, 0)
        btn.TextColor3 = Color3.fromRGB(255, 200, 200)
    end
    
    btn.TextSize = 13
    btn.Font = Enum.Font.Code
    btn.Text = text
    btn.Parent = MainFrame
    
    btn.MouseButton1Click:Connect(function()
        if name == "BtnShrine" and shrineCooldown then return end
        
        if not (name == "BtnVFX" or name == "BtnMusic" or name == "BtnVis") then
            if name ~= "BtnShrine" then
                btn.Text = "Casting..."
            end
            callback()
            task.wait(0.5)
            if name ~= "BtnShrine" then
                btn.Text = text
            end
        else
            callback()
        end
    end)
    return btn
end

-- Attack Buttons
createButton("BtnSlash", "Dismantle (X Wave)", 50, executeSlash)
createButton("BtnRush", "Cleave (Colossal Grid)", 100, executeRush)
createButton("BtnShrine", "Malevolent Shrine", 150, executeShrine)
createButton("BtnWorldSlash", "World Slash (Wall)", 200, executeWorldSlash)
createButton("BtnFuga", "Fuga (Fire Arrow)", 250, executeFireArrow)
createButton("BtnSpiderweb", "Spiderweb (Ground)", 300, executeSpiderweb)
createButton("BtnHalfCut", "Half/Cut (Go/Jo)", 350, executeHalfCut)
createButton("BtnLineOfDeathH", "Line of Death (Horiz Curve)", 400, executeLineOfDeathHorizontal)
createButton("BtnLineOfDeathV", "Line of Death (Vert Curve)", 450, executeLineOfDeathVertical)
createButton("BtnCalamity", "🔥 CALAMITY (Vortex) 🔥", 520, executeCalamity, true)

-- Utility Toggles
local btnVis = createButton("BtnVis", Config.VisiblePoints and "👁️ Hitboxes: ON" or "👁️ Hitboxes: OFF", 575, function() end, false, 0.42)
btnVis.Position = UDim2.new(0.05, 0, 0, 575)
btnVis.MouseButton1Click:Connect(function()
    Config.VisiblePoints = not Config.VisiblePoints
    btnVis.Text = Config.VisiblePoints and "👁️ Hitboxes: ON" or "👁️ Hitboxes: OFF"
    for _, p in ipairs(activePoints) do
        if p and p.Parent then p.Visible = Config.VisiblePoints end
    end
end)

local btnVFX = createButton("BtnVFX", Config.VFX and "✨ VFX: ON" or "✨ VFX: OFF", 575, function() end, false, 0.42)
btnVFX.Position = UDim2.new(0.53, 0, 0, 575)
btnVFX.MouseButton1Click:Connect(function()
    Config.VFX = not Config.VFX
    btnVFX.Text = Config.VFX and "✨ VFX: ON" or "✨ VFX: OFF"
end)

local btnMusic = createButton("BtnMusic", Config.Music and "🎵 Music: ON" or "🎵 Music: OFF", 620, function() end, false, 0.9)
btnMusic.MouseButton1Click:Connect(function()
    Config.Music = not Config.Music
    btnMusic.Text = Config.Music and "🎵 Music: ON" or "🎵 Music: OFF"
    if bgMusic then
        if Config.Music then bgMusic:Play() else bgMusic:Stop() end
    end
end)

createButton("BtnClear", "Disable (Clear Hitboxes/VFX)", 665, function()
    clearHitboxes()
    print("[Sukuna] Hitboxes and VFX cleared.")
end)

print("[Sukuna Hub V22] OP Fuga & Physical Shrine Loaded!")

Features & Information

Sukuna Script for Smooth Slicing it adds: Sukuna Attacks with op hitboxes effects And some stuff
#sukuna smooth slicing moveset#smooth slicing#sukuna#moveset#attacks

Community Comments (8)

ExeSExeSMar 12, 2026

Compatible with all executors

crackahh999crackahh999Mar 12, 2026

How do I make things work I have the gui but is it mobile supported because it just shoots a big beam outa my ahh and it doesn’t do anything

Replying to @crackahh999
ExeSExeSMar 12, 2026(edited)

@crack999 it increases your hitbox, the beam you see is your hitbox you can hide it too, btw i recommend using spiderweb its op

lackoklackokMar 12, 2026

lags but works

Belbouhh23Belbouhh23Mar 12, 2026

Why I was black listed

Replying to @Belbouhh23
ExeSExeSMar 13, 2026

@Belbouhh23 what do you mean sir

chibahiroki143chibahiroki143Mar 20, 2026

bruh it didn't work

Cool_guy124Cool_guy124Aug 2, 2026

What games is it supporting

More Scripts for Smooth Slicing