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!")