
Key RequiredUniversal

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)No comments yet for this script.



