Wither dyton prop leak by Hendra
Key RequiredUniversal

Wither dyton prop leak by Hendra

Universal ScriptMahendraaaaMahendraaaa 223 views 2.5K executesUpdated Aug 15, 2026
Unrated
00
Lua Script•674 lines (30492 chars)
-- [[ MINECRAFT WITHER BOSS - BEDROCK ARTILLERY & FLING OVERLOAD V6.0.9 ]] --
-- Engine Core: DYTON_txt (Engine Reset Layout)
-- Josep Bart Core: Absolute Head Tumpuk, Pet Breath & Levitation Sway Idle Animation

local Players = game:GetService("Players")
local LP = Players.LocalPlayer
local RS = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")

local OwnerName = LP.Name
local petMode = false
local rampageMode = false
local wingRemoteCache = {}
local PERMANENT_PROP_LOCK = {}
local currentCFrames = {}
local lastNetworkUpdate = 0
local lastColorUpdate = 0
local lastScanTime = 0
local colorIndex = 1

-- [[ ANIMATION & ADAPTIVE SYSTEM VARIABLES ]] --
local isSummoning = false
local summonStartTime = 0
local summonOriginPos = Vector3.zero
local rampageBlacklist = {}
local targetAttackTrack = { player = nil, startTime = 0, initialPos = Vector3.zero }
local hasFetchedBall = false

-- [[ ADAPTIVE VARIABLE CONTROL ]] --
local estimatedPing = 0.03
local witherCurrentPos = Vector3.zero
local lastAttackTime = 0
local activeProjectiles = {}
local lastLookAtPos = Vector3.zero

-- =============================================================================
-- [[ CONFIGURASI MANUAL WITHER BOSS - BY JOSEP BART ]] --
-- =============================================================================
local WITHER_SPEED = 8         -- Kecepatan terbang Wither mengejar target
local PROJECTILE_SPEED = 15    -- Dipercepat agar proyektil melesat responsif
local ATTACK_COOLDOWN = 1.3    -- Cooldown jeda tembakan (detik)
local HOVER_HEIGHT = 24        -- Tinggi Wither melayang di atas kepala target
local RANDOM_DRIFT_SCALE = 50   -- Jangkauan gerak acak Wither saat menyerang
local RAMPAGE_RADIUS = 400     -- Jarak maksimal Wither mau mengejar target

local SUMMON_DURATION = 11.5   -- Durasi waktu animasi spawn (detik)
local IMPACT_LINGER_TIME = 0.5 -- Durasi proyektil nempel + Fling di badan target
local MAX_STUCK_TIME = 6.0    -- Batas waktu toleransi jika target kebal sebelum di-skip

-- [[ PENGATURAN POSISI WITHER SAAT JADI PET (Belakang Player) ]] --
local PET_OFFSET = Vector3.new(-5, 6, 1) -- (Kanan/Kiri, Atas/Bawah, Belakang/Depan)

local MANUAL_ROTATION = Vector3.new(-20, 360, 0)
local TargetPlayer = nil
-- =============================================================================

local COLORS = {
    AbyssRed = Color3.fromRGB(100, 0, 180),
    DarkAbyss = Color3.fromRGB(30, 0, 60),
    Void = Color3.fromRGB(10, 0, 20),
    Accent = Color3.fromRGB(255, 255, 255),
    SuccessGreen = Color3.fromRGB(0, 255, 120),
    WarningRed = Color3.fromRGB(15, 30, 60),

    PureWhiteOnly = Color3.fromRGB(255, 255, 255),
    SoulArmorWhite = Color3.fromRGB(0, 0, 0),
    SoulAuraBlue = Color3.fromRGB(180, 220, 255)
}

local function getAbyssColor(t, offset)
    if isSummoning then
        return COLORS.PureWhiteOnly
    elseif rampageMode then
        local cycle = (t * 1.5 + (offset * 0.15)) % 1
        return cycle < 0.5 and COLORS.SoulArmorWhite:Lerp(COLORS.SoulAuraBlue, cycle * 2) or COLORS.SoulAuraBlue:Lerp(COLORS.SoulArmorWhite, (cycle - 0.5) * 2)
    else
        local cycle = (t * 0.3 + (offset * 0.1)) % 1
        return cycle < 0.5 and COLORS.AbyssRed:Lerp(COLORS.DarkAbyss, cycle * 2) or COLORS.DarkAbyss:Lerp(COLORS.Void, (cycle - 0.5) * 2)
    end
end

local function getOff(base, target) return base:ToObjectSpace(target) end

local baseRef = CFrame.new(199.91932678222656, 12.894913673400879, -64.45938873291016, -0.9999717473983765, 0.0023622966837137938, -0.007140748668462038, 0.00002453153138048947, 0.9504163265228271, 0.31098055839538574, 0.0075213126838207245, 0.31097161769866943, -0.9503894448280334)

local WitherParts = {
    getOff(baseRef, CFrame.new(199.91932678222656, 12.894913673400879, -64.45938873291016, -0.9999717473983765, 0.0023622966837137938, -0.007140748668462038, 0.00002453153138048947, 0.9504163265228271, 0.31098055839538574, 0.0075213126838207245, 0.31097161769866943, -0.9503894448280334)), -- [1] Kepala Tengah (Utama)
    getOff(baseRef, CFrame.new(203.3807373046875, 12.144608497619629, -64.58366394042969, -0.9881877899169922, 0.0020154754165560007, 0.15324385464191437, 0.04300922527909279, 0.9633787870407104, 0.2646729052066803, -0.14709845185279846, 0.26813700795173645, -0.9520856738090515)), -- [2] Kepala Kanan
    getOff(baseRef, CFrame.new(196.47140502929688, 12.144608497619629, -64.46726989746094, -0.9922080039978027, 0.0019081804202869534, -0.12461142241954803, -0.030268877744674683, 0.9662537574768066, 0.255808562040329, 0.12089492380619049, 0.25758394598960876, -0.9586628675460815)), -- [3] Kepala Kiri
    getOff(baseRef, CFrame.new(200.55374145507812, 9.997815132141113, -65.8962631225586, 0.011634256690740585, -0.9998592734336853, 0.01209464855492115, -0.9996784925460815, -0.011900508776307106, -0.022389855235815048, 0.02253078483045101, -0.011830298230051994, -0.9996806383132935)),
    getOff(baseRef, CFrame.new(201.73304748535156, 11.699615478515625, -65.55762481689453, -0.9997870922088623, -0.020352469757199287, 0.0034083069767802954, -0.020009975880384445, 0.9965177774429321, 0.08094435930252075, -0.005043855868279934, 0.08085893094539642, -0.9967127442359924)),
    getOff(baseRef, CFrame.new(197.95692443847656, 11.64893627166748, -65.57623291015625, -0.9997870922088623, -0.020352384075522423, 0.003408305812627077, -0.020009886473417282, 0.9965177774429321, 0.08094478398561478, -0.005043855868279934, 0.08085934817790985, -0.9967127442359924)),
    getOff(baseRef, CFrame.new(199.9916534423828, 9.876144409179688, -65.82450103759766, -0.9997870922088623, -0.020351946353912354, 0.0034083069767802954, -0.020009439438581467, 0.9965176582336426, 0.08094686269760132, -0.005043855868279934, 0.08086142688989639, -0.9967127442359924)),
    getOff(baseRef, CFrame.new(200.1062469482422, 8.116905212402344, -65.7476577758789, -0.9997904300689697, -0.020351704210042953, 0.0034083081409335136, -0.020009208470582962, 0.9965173006057739, 0.08094825595617294, -0.005043872632086277, 0.08086279034614563, -0.9967158436775208)),
    getOff(baseRef, CFrame.new(200.07086181640625, 6.217313766479492, -65.79713439941406, -0.9997870922088623, -0.020351329818367958, 0.0034082906786352396, -0.020008813589811325, 0.9965173006057739, 0.08094976842403412, -0.005043855868279934, 0.0808643251657486, -0.9967123866081238)),
    getOff(baseRef, CFrame.new(200.62400817871094, 6.589557647705078, -66.70326232910156, 0.014601275324821472, -0.999857485294342, 0.008065760135650635, -0.9589880108833313, -0.01172405481338501, 0.2832024097442627, -0.2830718159675598, -0.011869758367538452, -0.9590224027633667))
}

local function GetBallSilent()
    local b = LP.Backpack:FindFirstChild("SoccerBall") or (LP.Character and LP.Character:FindFirstChild("SoccerBall"))

    if not b and not hasFetchedBall then
        hasFetchedBall = true
        pcall(function()
            game:GetService("ReplicatedStorage").RE:FindFirstChild("1Too1l"):InvokeServer("PickingTools", "SoccerBall")
        end)
    end

    local ballsFolder = workspace:FindFirstChild("WorkspaceCom") and workspace.WorkspaceCom:FindFirstChild("001_SoccerBalls")
    if ballsFolder then
        local ball = ballsFolder:FindFirstChild("Soccer" .. LP.Name)
        if ball then
            ball.CanCollide = false
            return ball
        end
    end
    return nil
end

local function FindNearestPrey()
    local nearestPlayer = nil
    local shortestDistance = RAMPAGE_RADIUS
    local myPos = witherCurrentPos

    for _, p in ipairs(Players:GetPlayers()) do
        if p ~= LP and Players:FindFirstChild(p.Name) and not rampageBlacklist[p.Name] then
            local char = p.Character
            if char then
                local hum = char:FindFirstChildOfClass("Humanoid")
                if hum and hum.Health > 0 and not hum.Sit then
                    local torso = char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso") or char:FindFirstChild("HumanoidRootPart")
                    if torso then
                        local dist = (myPos - torso.Position).Magnitude
                        if dist < shortestDistance then
                            shortestDistance = dist
                            nearestPlayer = p
                        end
                    end
                end
            end
        end
    end
    return nearestPlayer
end

-- [[ GUI SYSTEM V6.0.9 ]] --
local sg = Instance.new("ScreenGui", CoreGui)
sg.Name = "Abyss_Wither_Control"
local main = Instance.new("Frame", sg)
main.Size, main.Position = UDim2.new(0, 180, 0, 165), UDim2.new(0.05, 0, 0.4, 0)
main.BackgroundColor3, main.BorderSizePixel = Color3.fromRGB(10, 10, 10), 0
main.ClipsDescendants = true

local titleBar = Instance.new("Frame", main)
titleBar.Size, titleBar.BackgroundColor3 = UDim2.new(1, 0, 0, 25), Color3.fromRGB(25, 25, 25)
titleBar.BorderSizePixel = 0

local titleLabel = Instance.new("TextLabel", titleBar)
titleLabel.Size, titleLabel.Position = UDim2.new(1, -10, 1, 0), UDim2.new(0, 5, 0, 0)
titleLabel.BackgroundTransparency, titleLabel.Text = 1, "Wither Of Soulking V6.0.9"
titleLabel.TextColor3, titleLabel.Font, titleLabel.TextSize = Color3.new(1, 1, 1), Enum.Font.SourceSansBold, 12
titleLabel.TextXAlignment = Enum.TextXAlignment.Left

local ballStatusLabel = Instance.new("TextLabel", main)
ballStatusLabel.Size = UDim2.new(1, -10, 0, 15)
ballStatusLabel.Position = UDim2.new(0, 5, 1, -30)
ballStatusLabel.BackgroundTransparency = 1
ballStatusLabel.Text = "BALL: FETCHING..."
ballStatusLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
ballStatusLabel.Font = Enum.Font.Code
ballStatusLabel.TextSize = 10
ballStatusLabel.TextXAlignment = Enum.TextXAlignment.Left

local creditLabel = Instance.new("TextLabel", main)
creditLabel.Size, creditLabel.Position = UDim2.new(1, 0, 0, 15), UDim2.new(0, 0, 1, -15)
creditLabel.BackgroundTransparency, creditLabel.Text = 1, "By DYTON_txt "
creditLabel.TextColor3, creditLabel.Font, creditLabel.TextSize = COLORS.Accent, Enum.Font.Code, 10

local dragging, dragStart, startPos
titleBar.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragging, dragStart, startPos = true, input.Position, main.Position
    end
end)
UIS.InputChanged:Connect(function(input)
    if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
        local delta = input.Position - dragStart
        main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
    end
end)
UIS.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end)

local function styleBtn(b)
    b.BackgroundColor3, b.BorderSizePixel, b.BorderColor3 = COLORS.Void, 1, Color3.fromRGB(40, 40, 40)
    b.TextColor3, b.Font, b.TextSize = Color3.new(0.8, 0.8, 0.8), Enum.Font.SourceSansBold, 11
    b.MouseEnter:Connect(function() b.BorderColor3 = (rampageMode and COLORS.SoulAuraBlue or COLORS.Accent) b.TextColor3 = Color3.new(1,1,1) end)
    b.MouseLeave:Connect(function() b.BorderColor3 = Color3.fromRGB(40, 40, 40) b.TextColor3 = Color3.new(0.8,0.8,0.8) end)
end

local container = Instance.new("Frame", main)
container.Size, container.Position, container.BackgroundTransparency = UDim2.new(1, -10, 1, -65), UDim2.new(0, 5, 0, 30), 1

local function createBtn(txt, pos, size)
    local b = Instance.new("TextButton", container)
    b.Text, b.Position, b.Size = txt, pos, size styleBtn(b)
    return b
end

local SummonBtn = createBtn("ACTIVATE WITHER", UDim2.new(0,0,0,0), UDim2.new(1,0,0.28,0))

local TargetBox = Instance.new("TextBox", container)
TargetBox.Size = UDim2.new(1, 0, 0.26, 0)
TargetBox.Position = UDim2.new(0, 0, 0.34, 0)
TargetBox.BackgroundColor3 = Color3.fromRGB(5, 5, 5)
TargetBox.BorderSizePixel = 1
TargetBox.BorderColor3 = Color3.fromRGB(40, 40, 40)
TargetBox.TextColor3 = Color3.fromRGB(180, 180, 180)
TargetBox.PlaceholderText = "Type Target & Press Enter"
TargetBox.PlaceholderColor3 = Color3.fromRGB(80, 80, 80)
TargetBox.Font = Enum.Font.Code
TargetBox.TextSize = 10
TargetBox.ClearTextOnFocus = false

local RampageBtn = createBtn("TARGET ALL: OFF", UDim2.new(0, 0, 0.66, 0), UDim2.new(1, 0, 0.28, 0))

TargetBox.FocusLost:Connect(function(enterPressed)
    if enterPressed then
        if rampageMode then return end
        local searchKey = TargetBox.Text:lower()
        if searchKey == "" then
            TargetPlayer = nil
            TargetBox.Text = ""
            TargetBox.BorderColor3 = Color3.fromRGB(40, 40, 40)
            return
        end

        local found = false
        for _, p in ipairs(Players:GetPlayers()) do
            if p.Name:lower():find(searchKey) or p.DisplayName:lower():find(searchKey) then
                TargetPlayer = p
                TargetBox.Text = p.DisplayName
                TargetBox.BorderColor3 = COLORS.SuccessGreen
                found = true
                break
            end
        end

        if not found then
            TargetPlayer = nil
            TargetBox.Text = "[NOT FOUND]"
            TargetBox.BorderColor3 = COLORS.WarningRed
            task.wait(1)
            TargetBox.Text = ""
            TargetBox.BorderColor3 = Color3.fromRGB(40, 40, 40)
        end
    end
end)

SummonBtn.MouseButton1Click:Connect(function()
    petMode = not petMode
    if petMode then
        SummonBtn.TextColor3 = COLORS.Accent
        SummonBtn.Text = "DEACTIVATE WITHER"
        hasFetchedBall = false

        local char = LP.Character
        if char and char:FindFirstChild("HumanoidRootPart") then
            summonOriginPos = char.HumanoidRootPart.Position
            witherCurrentPos = summonOriginPos
            lastLookAtPos = summonOriginPos + Vector3.new(0, 0, -1)
            isSummoning = true
            summonStartTime = tick()
        end

        local p = workspace:WaitForChild("WorkspaceCom"):WaitForChild("001_TrafficCones")
        local targetName = (OwnerName == "terasiremik") and "Propterasiremik" or ("Prop" .. OwnerName)

        local rawProps = {}
        for _, v in ipairs(p:GetChildren()) do
            if v.Name == targetName then table.insert(rawProps, v) end
        end

        for id, storedProp in pairs(PERMANENT_PROP_LOCK) do
            if not storedProp or not storedProp.Parent then PERMANENT_PROP_LOCK[id] = nil end
        end

        for _, prop in ipairs(rawProps) do
            local alreadyRegistered = false
            for id, storedProp in pairs(PERMANENT_PROP_LOCK) do
                if storedProp == prop then alreadyRegistered = true break end
            end
            if not alreadyRegistered then
                for id = 1, 15 do
                    if not PERMANENT_PROP_LOCK[id] then
                        PERMANENT_PROP_LOCK[id] = prop
                        break
                    end
                end
            end
        end

        wingRemoteCache = {}
        for id = 1, 15 do
            if PERMANENT_PROP_LOCK[id] and PERMANENT_PROP_LOCK[id].Parent then
                table.insert(wingRemoteCache, PERMANENT_PROP_LOCK[id])
            end
        end
    else
        SummonBtn.TextColor3 = Color3.new(0.8,0.8,0.8)
        SummonBtn.Text = "ACTIVATE WITHER"
        rampageMode = false
        isSummoning = false
        hasFetchedBall = false
        RampageBtn.Text = "TARGET ALL: OFF"
        RampageBtn.TextColor3 = Color3.new(0.8, 0.8, 0.8)
        TargetBox.Text = ""
        TargetBox.BorderColor3 = Color3.fromRGB(40, 40, 40)
        table.clear(currentCFrames)
        table.clear(activeProjectiles)
        table.clear(rampageBlacklist)
    end
end)

RampageBtn.MouseButton1Click:Connect(function()
    if not petMode or isSummoning then return end
    rampageMode = not rampageMode
    if rampageMode then
        table.clear(rampageBlacklist)
        RampageBtn.Text = "SOUL RAMPAGE: ACTIVE "
        RampageBtn.TextColor3 = COLORS.SoulAuraBlue
        TargetBox.Text = "[SOUL HUNTER]"
        TargetBox.BorderColor3 = COLORS.SoulAuraBlue
    else
        rampageMode = false
        RampageBtn.Text = "TARGET ALL: OFF"
        RampageBtn.TextColor3 = Color3.new(0.8, 0.8, 0.8)
        TargetPlayer = nil
        TargetBox.Text = ""
        TargetBox.BorderColor3 = Color3.fromRGB(40, 40, 40)
    end
end)

local function getTargetTorso(player)
    if not player or not player.Parent or not Players:FindFirstChild(player.Name) or not player.Character then return nil end
    local char = player.Character
    return char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso") or char:FindFirstChild("HumanoidRootPart")
end

-- [[ MAIN PATHFINDER & BEDROCK FLING ENGINE WITH JOSEP PREDICTIVE MATH ]] --
RS.Heartbeat:Connect(function(dt)
    local totalProps = #wingRemoteCache
    if not petMode or totalProps < 1 then return end

    local t = tick()
    local activeBall = GetBallSilent()
    local flingActiveThisFrame = false

    for _, proj in pairs(activeProjectiles) do
        if proj.IsStuck then flingActiveThisFrame = true break end
    end

    if isSummoning then
        ballStatusLabel.Text = "WITHER: AWAKENING (WHITE)..."
        ballStatusLabel.TextColor3 = COLORS.PureWhiteOnly
    elseif not activeBall then
        ballStatusLabel.Text = "BALL: DISPAWNED / MISSING "
        ballStatusLabel.TextColor3 = COLORS.WarningRed
    elseif flingActiveThisFrame then
        ballStatusLabel.Text = "BALL: FLINGING TARGET "
        ballStatusLabel.TextColor3 = (rampageMode and COLORS.SoulAuraBlue or COLORS.Accent)
    else
        ballStatusLabel.Text = rampageMode and "BALL: SOUL RAMPAGE MODE " or "BALL: PET HOVER LOCK "
        ballStatusLabel.TextColor3 = rampageMode and COLORS.SoulAuraBlue or COLORS.SuccessGreen
    end

    if rampageMode and not isSummoning then
        if TargetPlayer then
            local enemyChar = TargetPlayer.Character
            local enemyHum = enemyChar and enemyChar:FindFirstChildOfClass("Humanoid")
            local enemyTorso = getTargetTorso(TargetPlayer)

            if not enemyChar or not enemyHum or enemyHum.Health <= 0 or enemyHum.Sit or rampageBlacklist[TargetPlayer.Name] or not Players:FindFirstChild(TargetPlayer.Name) then
                TargetPlayer = nil
            elseif enemyTorso then
                local currentVelocity = enemyTorso.AssemblyLinearVelocity.Magnitude
                local distanceMoved = (enemyTorso.Position - targetAttackTrack.initialPos).Magnitude

                if currentVelocity > 120 or (flingActiveThisFrame and distanceMoved > 85) then
                    rampageBlacklist[TargetPlayer.Name] = true
                    TargetPlayer = nil
                elseif t - targetAttackTrack.startTime > MAX_STUCK_TIME and distanceMoved < 8 then
                    rampageBlacklist[TargetPlayer.Name] = true
                    TargetPlayer = nil
                end
            end
        end

        if t - lastScanTime > 0.35 then
            lastScanTime = t
            if not TargetPlayer then
                local prey = FindNearestPrey()
                if prey then
                    TargetPlayer = prey
                    targetAttackTrack.player = prey
                    targetAttackTrack.startTime = t
                    if prey.Character and getTargetTorso(prey) then
                        targetAttackTrack.initialPos = getTargetTorso(prey).Position
                    end
                    TargetBox.Text = "HUNTING: " .. prey.DisplayName
                    TargetBox.BorderColor3 = COLORS.SoulAuraBlue
                else
                    TargetBox.Text = "[SCANNING FAIL...]"
                    TargetBox.BorderColor3 = Color3.fromRGB(40, 40, 40)
                end
            end
        end
    end

    local finalPos
    local isPetState = false

    if isSummoning then
        local elapsed = t - summonStartTime
        if elapsed >= SUMMON_DURATION then
            isSummoning = false
        else
            local rotationSpeed = (elapsed ^ 2) * 12
            local currentAngle = elapsed * rotationSpeed
            local currentHeight = (elapsed / SUMMON_DURATION) * HOVER_HEIGHT
            witherCurrentPos = summonOriginPos + Vector3.new(0, currentHeight, 0)
            finalPos = CFrame.new(witherCurrentPos) * CFrame.Angles(0, currentAngle, 0)
        end
    end

    if not isSummoning then
        local currentTarget = TargetPlayer

        if not rampageMode and (not currentTarget or not currentTarget.Character or not getTargetTorso(currentTarget)) then
            currentTarget = LP
            isPetState = true
        end

        local targetTorso = getTargetTorso(currentTarget)

        if not targetTorso and rampageMode then
            finalPos = CFrame.new(witherCurrentPos, lastLookAtPos)
        elseif targetTorso then
            local idealTargetPos
            if isPetState then
                local ownerChar = LP.Character
                local ownerRoot = ownerChar and ownerChar:FindFirstChild("HumanoidRootPart")
                if ownerRoot then
                    -- [[ Poin B: Levitation Sway (Ayunan Melayang Naik-Turun) khusus posisi Pet ]] --
                    local swayY = math.sin(t * 1.8) * 0.45
                    local animatedOffset = PET_OFFSET + Vector3.new(0, swayY, 0)
                    idealTargetPos = (ownerRoot.CFrame * CFrame.new(animatedOffset)).Position
                else
                    idealTargetPos = targetTorso.Position + Vector3.new(0, 8, 5)
                end
            else
                local driftX = math.sin(t * 1.5) * RANDOM_DRIFT_SCALE
                local driftZ = math.cos(t * 1.2) * RANDOM_DRIFT_SCALE
                local driftY = math.sin(t * 2.5) * (RANDOM_DRIFT_SCALE * 0.4)
                idealTargetPos = targetTorso.Position + Vector3.new(driftX, HOVER_HEIGHT + driftY, driftZ)
            end

            local moveDirection = (idealTargetPos - witherCurrentPos)
            local distance = moveDirection.Magnitude

            if distance > 0.1 then
                local speedMod = isPetState and 15 or 5
                local maxMove = WITHER_SPEED * speedMod * dt
                local step = math.min(distance, maxMove)
                witherCurrentPos = witherCurrentPos + (moveDirection.Unit * step)
            end

            local rawLookAt
            if isPetState then
                local ownerChar = LP.Character
                local ownerRoot = ownerChar and ownerChar:FindFirstChild("HumanoidRootPart")
                if ownerRoot then
                    rawLookAt = ownerRoot.Position + (ownerRoot.CFrame.LookVector * 50)
                else
                    rawLookAt = witherCurrentPos + Vector3.new(0, 0, -5)
                end
            else
                rawLookAt = Vector3.new(targetTorso.Position.X, witherCurrentPos.Y, targetTorso.Position.Z)
            end

            lastLookAtPos = lastLookAtPos:Lerp(rawLookAt, 1 - math.exp(-14 * dt))
            finalPos = CFrame.new(witherCurrentPos, lastLookAtPos)
        else
            finalPos = CFrame.new(witherCurrentPos)
        end
    end

    local rotCF = CFrame.Angles(math.rad(MANUAL_ROTATION.X), math.rad(MANUAL_ROTATION.Y), math.rad(MANUAL_ROTATION.Z))
    local lerpAlpha = 1 - math.exp(-22 * dt)

    if not isSummoning then
        for auraId, projData in pairs(activeProjectiles) do
            local currentEnemyTorso = getTargetTorso(TargetPlayer)

            if currentEnemyTorso then
                local enemyVelocity = currentEnemyTorso.AssemblyLinearVelocity
                local pingAndFpsOffset = dt + 0.05
                local predictedPosition = currentEnemyTorso.Position + (enemyVelocity * pingAndFpsOffset)

                if projData.IsStuck then
                    projData.CurrentPos = predictedPosition

                    if activeBall then
                        activeBall.CFrame = CFrame.new(predictedPosition)
                        activeBall.Velocity = Vector3.new(0, 9e10, 0)
                    end

                    if t - projData.ImpactTime >= IMPACT_LINGER_TIME then
                        activeProjectiles[auraId] = nil
                    end
                else
                    projData.TargetPos = predictedPosition
                    local pDir = (projData.TargetPos - projData.CurrentPos)
                    local pDist = pDir.Magnitude

                    if pDist > 1.8 then
                        local pStep = math.min(pDist, PROJECTILE_SPEED * 3.5 * dt)
                        projData.CurrentPos = projData.CurrentPos + (pDir.Unit * pStep)
                    else
                        projData.IsStuck = true
                        projData.ImpactTime = t
                        projData.CurrentPos = predictedPosition

                        if activeBall then
                            activeBall.CFrame = CFrame.new(predictedPosition)
                            activeBall.Velocity = Vector3.new(0, 9e10, 0)
                        end
                    end
                end
            else
                activeProjectiles[auraId] = nil
            end
        end
    else
        table.clear(activeProjectiles)
    end

    for i = 1, totalProps do
        local targetCF
        if i <= 10 then
            local offset = WitherParts[i]

            -- [[ Poin 1: Breath of the Void (Efek Bernapas Asynchronous di 3 Kepala) ]] --
            if isPetState and not isSummoning then
                if i == 1 then -- Kepala Tengah (Maju Mundur)
                    local breathZ = math.sin(t * 2.5) * 0.22
                    offset = offset * CFrame.new(0, 0, breathZ)
                elseif i == 2 then -- Kepala Kanan (Asynchronous breathing)
                    local breathZ = math.cos(t * 2.3) * 0.18
                    offset = offset * CFrame.new(0, 0, breathZ)
                elseif i == 3 then -- Kepala Kiri (Asynchronous breathing)
                    local breathZ = math.sin(t * 2.1) * 0.18
                    offset = offset * CFrame.new(0, 0, breathZ)
                end
            end

            targetCF = finalPos * rotCF * offset
        else
            -- [[ ABSOLUTE HEAD STACK ALIGNMENT WITH INTEGRATED BREATH SYNC ]] --
            local auraId = i - 10
            local activeProj = activeProjectiles[auraId]

            if activeProj and not isSummoning then
                targetCF = CFrame.new(activeProj.CurrentPos, lastLookAtPos)
            else
                local targetHeadId
                if auraId == 1 or auraId == 2 then
                    targetHeadId = 2
                elseif auraId == 3 or auraId == 4 then
                    targetHeadId = 3
                else
                    targetHeadId = 1
                end

                -- Mengambil CFrame Kepala yang sudah teranimasi napas di loop atas agar peluru ikut menempel sempurna
                local headCFrame = currentCFrames[targetHeadId] or finalPos
                targetCF = headCFrame
            end
        end

        currentCFrames[i] = (currentCFrames[i] or targetCF):Lerp(targetCF, lerpAlpha)
    end

    if TargetPlayer and getTargetTorso(TargetPlayer) and not isSummoning then
        if t - lastAttackTime > ATTACK_COOLDOWN then
            lastAttackTime = t

            local availableAuras = {}
            for auraId = 1, 5 do
                if not activeProjectiles[auraId] then
                    table.insert(availableAuras, auraId)
                end
            end

            local freeCount = #availableAuras
            if freeCount > 0 then
                local burstCount = math.random(1, math.min(3, freeCount))
                local enemyTorso = getTargetTorso(TargetPlayer)

                task.defer(function()
                    for k = 1, burstCount do
                        local auraId = availableAuras[k]

                        local targetHeadId
                        if auraId == 1 or auraId == 2 then targetHeadId = 2
                        elseif auraId == 3 or auraId == 4 then targetHeadId = 3
                        else targetHeadId = 1 end

                        local headCFrame = currentCFrames[targetHeadId]

                        if headCFrame and enemyTorso and TargetPlayer then
                            local enemyVelocity = enemyTorso.AssemblyLinearVelocity
                            local predictedTargetPos = enemyTorso.Position + (enemyVelocity * (dt + 0.05))

                            activeProjectiles[auraId] = {
                                CurrentPos = headCFrame.Position,
                                TargetPos = predictedTargetPos,
                                IsStuck = false,
                                ImpactTime = 0
                            }
                        end
                        if k < burstCount then task.wait(math.random(4, 9) / 100) end
                    end
                end)
            end
        end
    end

    if t - lastNetworkUpdate > 0.014 then
        local canUpdateColor = (t - lastColorUpdate > 0.05)
        local frameCFrames = currentCFrames
        local startSend = os.clock()

        for i = 1, totalProps do
            local prop = wingRemoteCache[i]
            local targetCFrame = frameCFrames[i]

            if prop and targetCFrame then
                task.spawn(function()
                    local cfR = prop:FindFirstChild("SetCurrentCFrame")
                    if cfR then
                        pcall(function()
                            cfR:InvokeServer(targetCFrame)
                            if i == 1 then
                                estimatedPing = (estimatedPing * 0.85) + ((os.clock() - startSend) * 0.15)
                            end
                        end)
                    end

                    if canUpdateColor and i == colorIndex then
                        local crR = prop:FindFirstChild("ChangePropColor")
                        if crR then pcall(function() crR:InvokeServer(getAbyssColor(t, i)) end) end
                    end
                end)
            end
        end

        if canUpdateColor then
            colorIndex = (colorIndex % totalProps) + 1
            lastColorUpdate = t
        end
        lastNetworkUpdate = t
    end
end)

Features & Information

Silakan menikmati

Community Comments (1)

LuckyEscaper1337LuckyEscaper1337Sep 19, 2026

Skidded

More Scripts for Universal Scripts