FE Sukuna (REUPLOAD)
Key Required

FE Sukuna (REUPLOAD)

Forsakenzxrealmzxrealm 3.3K views 300 executesUpdated Oct 16, 2025
1.7/ 5(3 votes)
1233% Positive
Lua Script•318 lines (11163 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local Debris = game:GetService("Debris")

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local rootPart = character:FindFirstChild("HumanoidRootPart") or character

local abilityInProgress = false
local malShrineActive = false

local m1Cooldown = 2
local disCooldownTime = 5
local shrineCooldownTime = 18
local grappleCooldownTime = 5

local disNextAvailableTime = 0
local grappleNextAvailableTime = 0

local idleAnimId = "rbxassetid://115268929362938"
local walkAnimId = "rbxassetid://123678890237669"
local runAnimId  = "rbxassetid://132086389849889"
local m1AnimId   = "rbxassetid://135853087227453"

local function createAnimation(animId)
    local anim = Instance.new("Animation")
    anim.AnimationId = animId
    return anim
end

local idleTrack = humanoid:LoadAnimation(createAnimation(idleAnimId))
local walkTrack = humanoid:LoadAnimation(createAnimation(walkAnimId))
local runTrack  = humanoid:LoadAnimation(createAnimation(runAnimId))
local m1Track   = humanoid:LoadAnimation(createAnimation(m1AnimId))

local walkingSoundBase = Instance.new("Sound")
walkingSoundBase.SoundId = "rbxassetid://99809965759734"
walkingSoundBase.Looped = false
walkingSoundBase.Volume = 1
walkingSoundBase.Parent = rootPart

local runningSoundBase = Instance.new("Sound")
runningSoundBase.SoundId = "rbxassetid://79222929114377"
runningSoundBase.Looped = false
runningSoundBase.Volume = 1
runningSoundBase.Parent = rootPart

local slashSfx = Instance.new("Sound")
slashSfx.SoundId = "rbxassetid://81361259756089"
slashSfx.Volume = 1
slashSfx.Parent = rootPart

local lastWalkingTime = 0
local lastRunningTime = 0
local walkingFootstepInterval = 0.5
local runningFootstepInterval = 0.3

local function updateAnimations()
    if abilityInProgress then return end
    local isMoving = humanoid.MoveDirection.Magnitude > 0
    local isRunning = humanoid.WalkSpeed > 16
    if isMoving then
        if isRunning then
            if not runTrack.IsPlaying then
                idleTrack:Stop()
                walkTrack:Stop()
                runTrack:Play()
            end
        else
            if not walkTrack.IsPlaying then
                idleTrack:Stop()
                runTrack:Stop()
                walkTrack:Play()
            end
        end
    else
        if not idleTrack.IsPlaying then
            walkTrack:Stop()
            runTrack:Stop()
            idleTrack:Play()
        end
    end
end

RunService.Heartbeat:Connect(function()
    updateAnimations()
    local currentTime = tick()
    local isMoving = humanoid.MoveDirection.Magnitude > 0
    local isRunning = humanoid.WalkSpeed > 16
    if isMoving then
        if isRunning and (currentTime - lastRunningTime >= runningFootstepInterval) then
            local runSound = runningSoundBase:Clone()
            runSound.Parent = rootPart
            runSound:Play()
            Debris:AddItem(runSound, runSound.TimeLength + 1)
            lastRunningTime = currentTime
        elseif (not isRunning) and (currentTime - lastWalkingTime >= walkingFootstepInterval) then
            local walkSound = walkingSoundBase:Clone()
            walkSound.Parent = rootPart
            walkSound:Play()
            Debris:AddItem(walkSound, walkSound.TimeLength + 1)
            lastWalkingTime = currentTime
        end
    end
end)

local function stopAllAnimations()
    local animator = humanoid:FindFirstChildOfClass("Animator")
    if animator then
        for _, track in ipairs(animator:GetPlayingAnimationTracks()) do
            track:Stop()
        end
    end
end

local function playCustomAnimation(animationId, loop)
    local anim = Instance.new("Animation")
    anim.AnimationId = "rbxassetid://" .. animationId
    local track = humanoid:LoadAnimation(anim)
    track.Looped = loop or false
    track:Play()
    return track
end

local function playCustomSound(soundId)
    local sound = Instance.new("Sound")
    sound.SoundId = "rbxassetid://" .. soundId
    sound.Volume = 1
    sound.Looped = false
    sound.Parent = rootPart
    sound:Play()
    return sound
end

local originalWalkSpeed = humanoid.WalkSpeed
local originalJumpPower = humanoid.JumpPower
local freezeCFrame = rootPart.CFrame
local freezeConnection
local function freezeCharacter()
    humanoid.WalkSpeed = 0
    humanoid.JumpPower = 0
    freezeCFrame = rootPart.CFrame
    freezeConnection = RunService.Heartbeat:Connect(function()
        rootPart.CFrame = freezeCFrame
    end)
end

local function unfreezeCharacter()
    humanoid.WalkSpeed = originalWalkSpeed
    humanoid.JumpPower = originalJumpPower
    if freezeConnection then
        freezeConnection:Disconnect()
        freezeConnection = nil
    end
end

local screenGui = Instance.new("ScreenGui")
screenGui.Parent = player:WaitForChild("PlayerGui")

local function createLabel(size, pos, bgColor, txtColor, font, text)
    local label = Instance.new("TextLabel")
    label.Size = size
    label.Position = pos
    label.BackgroundColor3 = bgColor or Color3.new(1,0,0)
    label.TextColor3 = txtColor or Color3.new(1,1,1)
    label.Font = font or Enum.Font.SourceSansBold
    label.TextScaled = true
    label.Text = text or ""
    label.Parent = screenGui
    return label
end

local disLabel = createLabel(UDim2.new(0,200,0,50), UDim2.new(1,-210,1,-60), Color3.fromRGB(139,0,0), Color3.fromRGB(255,0,0), Enum.Font.SourceSansBold, "Dismantle")
local abilityLabel = createLabel(UDim2.new(0,300,0,50), UDim2.new(1,-320,0,20), Color3.new(1,1,1), Color3.fromRGB(255,200,0), Enum.Font.GothamBlack, "malevolent shrine")
local messageLabel = createLabel(UDim2.new(0,400,0,100), UDim2.new(0.5,-200,1,-150), Color3.new(1,1,1), Color3.fromRGB(255,0,0), Enum.Font.GothamBlack, "")
messageLabel.BackgroundTransparency = 1
local grappleLabel = createLabel(UDim2.new(0,300,0,50), UDim2.new(0,20,1,-70), Color3.new(1,1,1), Color3.fromRGB(255,200,0), Enum.Font.GothamBlack, "Grapple Ready")
grappleLabel.BackgroundTransparency = 1

local function updateDisLabel()
    local remaining = disNextAvailableTime - tick()
    if remaining > 0 then
        disLabel.Text = string.format("Cooldown: %.1f", remaining)
    else
        disLabel.Text = "Dismantle"
    end
end

local function updateAbilityLabel(text)
    abilityLabel.Text = text or "malevolent shrine"
end

local function updateGrappleLabel(cooldown)
    if cooldown and cooldown > 0 then
        grappleLabel.Text = "Grapple - cooldown: " .. cooldown .. "s"
    else
        grappleLabel.Text = "Grapple Ready"
    end
end

RunService.Heartbeat:Connect(updateDisLabel)

local function onM1Click()
    if abilityInProgress or malShrineActive then return end
    abilityInProgress = true
    stopAllAnimations()
    m1Track:Play()
    slashSfx:Play()
    task.wait(m1Cooldown)
    abilityInProgress = false
end

UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if gameProcessed then return end
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        onM1Click()
    end
end)

UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if gameProcessed or abilityInProgress or malShrineActive then return end
    if input.KeyCode == Enum.KeyCode.V then
        local currentTime = tick()
        if currentTime < disNextAvailableTime then return end
        disNextAvailableTime = currentTime + disCooldownTime
        abilityInProgress = true
        stopAllAnimations()
        local anim = Instance.new("Animation")
        anim.AnimationId = "rbxassetid://121162477402224"
        local animTrack = humanoid:LoadAnimation(anim)
        animTrack:Play()
        local sound = Instance.new("Sound")
        sound.SoundId = "rbxassetid://81361259756089"
        sound.Volume = 1
        sound.Parent = rootPart
        sound:Play()
        Debris:AddItem(sound, sound.TimeLength + 1)
        local played, err = pcall(function() animTrack.Stopped:Wait() end)
        if not played then task.wait(1) end
        abilityInProgress = false
    end
end)

local canActivateShrine = true
local shrineCooldownRemaining = shrineCooldownTime

UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if gameProcessed or abilityInProgress then return end
    if input.KeyCode == Enum.KeyCode.B and canActivateShrine then
        abilityInProgress = true
        malShrineActive = true
        canActivateShrine = false
        updateAbilityLabel("Activating...")
        stopAllAnimations()
        freezeCharacter()
        messageLabel.Text = "I'm tired of this"
        local anim1 = playCustomAnimation("122580527125278", true)
        task.wait(3)
        anim1:Stop()
        messageLabel.Text = "Let's end this NOW"
        local anim2 = playCustomAnimation("96173779255396", true)
        task.wait(3)
        anim2:Stop()
        messageLabel.Text = "Ryōiki Tenkai Fukuma Mizushi"
        local anim3 = playCustomAnimation("101816924844805", false)
        local sound = playCustomSound("88406027536494")
        anim3.Stopped:Wait()
        task.wait(3)
        messageLabel.Text = ""
        unfreezeCharacter()
        malShrineActive = false
        abilityInProgress = false
        shrineCooldownRemaining = shrineCooldownTime
        while shrineCooldownRemaining > 0 do
            updateAbilityLabel("malevolent shrine - cooldown: " .. shrineCooldownRemaining .. "s")
            task.wait(1)
            shrineCooldownRemaining = shrineCooldownRemaining - 1
        end
        canActivateShrine = true
        updateAbilityLabel()
    end
end)

local canActivateGrapple = true
local grappleCooldownRemaining = grappleCooldownTime

UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if gameProcessed or abilityInProgress or malShrineActive then return end
    if input.KeyCode == Enum.KeyCode.N and canActivateGrapple then
        if tick() < grappleNextAvailableTime then return end
        grappleNextAvailableTime = tick() + grappleCooldownTime
        abilityInProgress = true
        canActivateGrapple = false
        stopAllAnimations()
        local grappleAnim = playCustomAnimation("121162477402224", false)
        playCustomSound("118208498013260")
        local mouse = player:GetMouse()
        local targetPosition = mouse.Hit.p
        local tweenInfo = TweenInfo.new(0.5, Enum.EasingStyle.Linear, Enum.EasingDirection.Out)
        local goal = {Position = targetPosition}
        local tween = TweenService:Create(rootPart, tweenInfo, goal)
        tween:Play()
        tween.Completed:Wait()
        task.wait(0.2)
        abilityInProgress = false
        grappleCooldownRemaining = grappleCooldownTime
        while grappleCooldownRemaining > 0 do
            updateGrappleLabel(grappleCooldownRemaining)
            task.wait(1)
            grappleCooldownRemaining = grappleCooldownRemaining - 1
        end
        canActivateGrapple = true
        updateGrappleLabel()
    end
end)

Features & Information

FE sukuna forsaken (REUPLOAD) I FORGOT THE CONTROLS
#forsaken

Community Comments (1)

halflife3421halflife3421Nov 17, 2025

Hey why'd you steal someones script?

More Scripts for Forsaken