THE EVIL ORB some kind of bossfight
Key RequiredUniversal

THE EVIL ORB some kind of bossfight

Universal Scriptnothing_but_breadnothing_but_bread 703 views 1.9K executesUpdated Jan 31, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•164 lines (10077 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local Debris = game:GetService("Debris")

local player = Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()
local hum = char:WaitForChild("Humanoid")
local hrp = char:WaitForChild("HumanoidRootPart")
local camera = workspace.CurrentCamera

local spikeFolder = workspace:FindFirstChild("StalkerStash") or Instance.new("Folder", workspace)

-- MASTER CONFIG
local START_SPEED, MAX_SPEED = 16, 26
local ACCELERATION, TURN_SENSITIVITY = 0.018, 0.028
local active, isAttacking = true, false
local teleporting, isHeavyShaking = false, false 
local teleportFreeze, windupFreeze = false, false

-- INVISIBLE CONFIG
local isInvisible, invisEndTime, invisAbilityUnlock, invisCooldown = false, 0, 0, 0
local deck = {2, 3, 4, 5, 6} 

local function shuffle()
    deck = {2, 3, 4, 5, 6}; for i = #deck, 2, -1 do local j = math.random(i); deck[j], deck[i] = deck[i], deck[j] end
end
shuffle()

local function addVoidParticles(parent, color1, color2)
    local p = Instance.new("ParticleEmitter", parent)
    p.Color = ColorSequence.new(color1, color2)
    p.LightEmission, p.Size = 0.5, NumberSequence.new({NumberSequenceKeypoint.new(0, 2), NumberSequenceKeypoint.new(1, 0)})
    p.Texture, p.Lifetime, p.Rate = "rbxassetid://243017145", NumberRange.new(0.5, 1), 50
    p.Speed, p.Transparency = NumberRange.new(2, 5), NumberSequence.new({NumberSequenceKeypoint.new(0, 0), NumberSequenceKeypoint.new(1, 1)})
end

local stalker = Instance.new("Part", workspace)
stalker.Name, stalker.Shape, stalker.Size = "VoidStalker", "Ball", Vector3.new(8, 8, 8)
stalker.Color, stalker.Material, stalker.Anchored, stalker.CanCollide = Color3.new(0,0,0), "Neon", true, false
local mainHighlight = Instance.new("Highlight", stalker)
mainHighlight.OutlineColor, mainHighlight.FillTransparency, mainHighlight.DepthMode = Color3.new(1, 0, 0), 1, Enum.HighlightDepthMode.Occluded 
local cc = Instance.new("ColorCorrectionEffect", camera)
addVoidParticles(stalker, Color3.new(0,0,0), Color3.new(0.5, 0, 1))

local function randomShake(intensity, duration)
    task.spawn(function()
        isHeavyShaking = true; local t = 0
        while t < duration and active do
            local dt = RunService.RenderStepped:Wait(); t += dt
            local cur = intensity * (1 - (t / duration))
            if hum then hum.CameraOffset = Vector3.new(math.random(-100, 100), math.random(-100, 100), math.random(-100, 100))/100 * cur end
        end
        if hum then hum.CameraOffset = Vector3.new(0,0,0) end; isHeavyShaking = false 
    end)
end

local function sonicBoom(pos)
    local ring = Instance.new("Part", workspace); ring.Shape, ring.Size = "Cylinder", Vector3.new(0.1, 10, 10)
    ring.Anchored, ring.CanCollide, ring.Color, ring.Material, ring.Transparency = true, false, Color3.new(1,1,1), "Neon", 0.5
    ring.CFrame = CFrame.new(pos) * CFrame.Angles(0, 0, math.rad(90))
    TweenService:Create(ring, TweenInfo.new(0.5), {Size = Vector3.new(0.1, 70, 70), Transparency = 1}):Play()
    Debris:AddItem(ring, 0.5)
end

-- RESTORED RING + RAYCAST
local function CreateLockOn(duration)
    local beam = Instance.new("Part", workspace); beam.Anchored, beam.CanCollide, beam.Material = true, false, "Neon"
    beam.Color, beam.Transparency = Color3.new(1, 0, 0), 0.6; Debris:AddItem(beam, duration)
    
    local ring = Instance.new("Part", workspace); ring.Shape, ring.Size = "Cylinder", Vector3.new(0.2, 30, 30)
    ring.Anchored, ring.CanCollide, ring.Color = true, false, Color3.new(0,0,0)
    local ringH = Instance.new("Highlight", ring); ringH.OutlineColor, ringH.FillTransparency = Color3.new(1,0,0), 1
    Debris:AddItem(ring, duration)

    local rP = RaycastParams.new(); rP.FilterType = Enum.RaycastFilterType.Exclude; rP.FilterDescendantsInstances = {stalker, spikeFolder}
    
    task.spawn(function()
        local startT, currentTargetPos = tick(), hrp.Position 
        while tick() - startT < duration and active do
            RunService.RenderStepped:Wait(); local progress = (tick() - startT) / duration
            currentTargetPos = currentTargetPos:Lerp(hrp.Position, 0.07) 
            local origin = stalker.Position; local direction = (currentTargetPos - origin).Unit * 2000 
            local result = workspace:Raycast(origin, direction, rP)
            local bLen = result and result.Distance or 2000
            local bEnd = result and result.Position or (origin + direction)
            
            beam.Size = Vector3.new(0.15 + (progress * 0.7), 0.15 + (progress * 0.7), bLen)
            beam.CFrame = CFrame.lookAt(origin, bEnd) * CFrame.new(0, 0, -bLen/2)
            
            local rSize = 30 * (1 - progress)
            ring.Size = Vector3.new(0.2, rSize, rSize)
            ring.CFrame = CFrame.lookAt(stalker.Position, currentTargetPos) * CFrame.Angles(0, math.rad(90), 0)
        end
    end)
end

local cVel, cSpd, abilityTimer = Vector3.new(0,0,0), START_SPEED, tick() + 5
local main; main = RunService.Heartbeat:Connect(function(dt)
    if not active or hum.Health <= 0 then 
        active = false; stalker:Destroy(); cc:Destroy(); main:Disconnect(); return 
    end

    if isInvisible then
        cSpd = 20
        if tick() > invisEndTime then
            isInvisible = false; stalker.Transparency, stalker.Color, mainHighlight.OutlineTransparency, invisCooldown = 0, Color3.new(0,0,0), 0, tick() + 8
        end
    end

    if not teleportFreeze and not windupFreeze and (not isAttacking or teleporting or isInvisible) then
        local targetDir = (hrp.Position - stalker.Position).Unit
        cVel = cVel:Lerp(targetDir, TURN_SENSITIVITY)
        stalker.Position += cVel * (cSpd + ((isInvisible) and 0 or math.max(0, hum.WalkSpeed - 16))) * dt
        if not isInvisible then cSpd = math.min(cSpd + ACCELERATION, MAX_SPEED) end
    end

    local dist = (stalker.Position - hrp.Position).Magnitude
    if not isHeavyShaking then
        if dist < 80 then
            local intensity = 1 - (dist / 80)
            cc.TintColor = Color3.new(1, 1 - (intensity * 0.7), 1 - (intensity * 0.7))
            hum.CameraOffset = Vector3.new(math.random(-5,5), math.random(-5,5), math.random(-5,5))/100 * (intensity * 4)
        else cc.TintColor = Color3.new(1,1,1); hum.CameraOffset = hum.CameraOffset:Lerp(Vector3.new(0,0,0), 0.1) end
    end

    if not isAttacking and not teleporting and not (isInvisible and tick() < invisAbilityUnlock) and (tick() > abilityTimer or dist > 350) then
        if #deck == 0 then shuffle() end
        local move = table.remove(deck, 1)
        if move == 6 and (isInvisible or tick() < invisCooldown) then move = math.random(2, 5) end
        isAttacking = true
        task.spawn(function()
            if move == 2 then -- DASH
                for i = 1, 3 do if not active then break end
                    windupFreeze = true; if not isInvisible then stalker.Color = Color3.new(1,0,0) end
                    CreateLockOn(3); task.wait(3); windupFreeze = false
                    if active then sonicBoom(stalker.Position); randomShake(15, 1.2); local d, t = (hrp.Position-stalker.Position).Unit, tick()
                    while tick()-t < 0.8 and active do stalker.Position += d * 145 * RunService.Heartbeat:Wait() end
                    if not isInvisible then stalker.Color = Color3.new(0,0,0) end end
                end
            elseif move == 3 then -- EXPANSION
                windupFreeze = true; local fE = tick()+1.5; while tick()<fE and active do if not isInvisible then stalker.Color = Color3.new(0.6,0,1) end; task.wait(0.1); if not isInvisible then stalker.Color = Color3.new(0,0,0) end; task.wait(0.1) end
                if active then if not isInvisible then stalker.Color = Color3.new(0.6,0,1) end; local gE = tick()+5; while tick()<gE and active do stalker.Size += Vector3.one*(24*RunService.Heartbeat:Wait()) end
                if not isInvisible then stalker.Color = Color3.new(0,0,0) end; windupFreeze = false; TweenService:Create(stalker, TweenInfo.new(2), {Size=Vector3.new(8,8,8)}):Play(); task.wait(2)
                local cE = tick()+3; while tick()<cE and active do stalker.Position += (hrp.Position-stalker.Position).Unit*50*RunService.Heartbeat:Wait() end end
            elseif move == 5 then -- FLICKER
                teleporting = true; for i = 1, math.random(1, 8) do if not active then break end
                if not isInvisible then stalker.Color, mainHighlight.OutlineColor = Color3.new(1,1,1), Color3.new(0,0,0) end; task.wait(0.5)
                stalker.Position = hrp.Position + (Vector3.new(math.random(-1,1), 0.1, math.random(-1,1)).Unit * math.random(20, 25))
                teleportFreeze = true; sonicBoom(stalker.Position); randomShake(22, 0.6); if not isInvisible then stalker.Color, mainHighlight.OutlineColor = Color3.new(0,0,0), Color3.new(1,0,0) end; task.wait(0.2); teleportFreeze = false; task.wait(2.8) end; teleporting = false
            elseif move == 6 then -- INVISIBLE
                windupFreeze = true; local startFade = tick()
                while tick() - startFade < 3 and active do cSpd = 0; local alpha = (tick()-startFade)/3; stalker.Transparency, mainHighlight.OutlineTransparency = alpha*0.9, alpha; RunService.Heartbeat:Wait() end
                windupFreeze = false; if active then isInvisible, invisEndTime, invisAbilityUnlock = true, tick()+15, tick()+5 end
            end
            
            if isInvisible then stalker.Transparency, mainHighlight.OutlineTransparency, stalker.Color = 0.9, 0.9, Color3.new(0,0,0)
            else stalker.Color, stalker.Transparency, mainHighlight.OutlineTransparency, cSpd = Color3.new(0,0,0), 0, 0, START_SPEED end
            abilityTimer, isAttacking = tick() + 10, false
        end)
    end
    if (stalker.Position - hrp.Position).Magnitude < (stalker.Size.X / 2) + 1.5 then hum.Health = 0 end
end)
stalker.Position = hrp.Position + (Vector3.new(math.random(-1,1), 0.1, math.random(-1,1)).Unit * 85)

Features & Information

ITS A EPIK BOSS FIGHT WERE YOU HAVE TO SURVIVE AN EVIL ORB FOR 90 SECONDS basically 1:30 minutes shout out for ma bro that game me the idea he is also the same maker of the normal evil orb script

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts