Jasonphobia script
Key RequiredUniversal Patched

Jasonphobia script

Universal ScriptRob_SB4Rob_SB4 18.6K views 35 executesUpdated Jun 21, 2025
3.3/ 5(3 votes)
2167% Positive
Lua Script•318 lines (10649 chars)
writefile("RUN.mp3", game:HttpGet("https://github.com/ian49972/smth/raw/refs/heads/main/RUN.mp3"))


-- Create ScreenGui
local gui = Instance.new("ScreenGui")
gui.Name = "SimpleFadeGui"
gui.ResetOnSpawn = false
gui.Parent = game.Players.LocalPlayer:WaitForChild("PlayerGui")

-- Create TextLabel
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(0.4, 0, 0.1, 0)
textLabel.Position = UDim2.new(0.3, 0, 0.45, 0)
textLabel.BackgroundTransparency = 1
textLabel.TextScaled = true
textLabel.Font = Enum.Font.GothamBold
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.Text = "Made by ban_thid or just Rob"
textLabel.Parent = gui

-- Fade out effect
for i = 1, 30 do
	textLabel.TextTransparency = i / 30
	textLabel.TextStrokeTransparency = i / 30
	wait(0.1)
end

-- Optionally, destroy after fading
wait(0.2)
gui:Destroy()

-- SERVICES
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Lighting = game:GetService("Lighting")
local TweenService = game:GetService("TweenService")

-- PLAYER SETUP
local player = Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()
local hum = char:WaitForChild("Humanoid")
local hrp = char:WaitForChild("HumanoidRootPart")
local originalSpawn = hrp.CFrame

-- VARIABLES
local maps = {
    115430544439657,
    107690645083160,
    101535581314104,
}
local chosenMapId = maps[math.random(1, #maps)]
local mapModel = game:GetObjects("rbxassetid://"..chosenMapId)[1]
mapModel.Parent = workspace

local function getRandomSpawn()
    local parts = mapModel:GetDescendants()
    local candidates = {}
    for _, v in ipairs(parts) do
        if v:IsA("BasePart") and v.CanCollide and v.Size.Magnitude > 2 then
            table.insert(candidates, v)
        end
    end
    return candidates[math.random(1, #candidates)]
end

hrp.CFrame = getRandomSpawn().CFrame + Vector3.new(0, 3, 0)

-- KILLER SETUP
local killer = game:GetObjects("rbxassetid://70629105087017")[1]
killer.Parent = workspace
local killerHRP = killer:WaitForChild("HumanoidRootPart")
local killerHum = killer:WaitForChild("Humanoid")
killerHRP.CFrame = getRandomSpawn().CFrame + Vector3.new(0, 3, 0)

-- ANIMATIONS
local Animator = loadstring(game:HttpGet("https://raw.githubusercontent.com/ProudNamed/SuperLightning/refs/heads/main/AnimModule/MainModule"))()
local function loadAnim(model, id)
    local a = game:GetObjects("rbxassetid://"..id)[1]
    a.Parent = model
    return Animator.new(model, a)
end

local killerAnims = {
    Run = loadAnim(killer, "93054787145505"),
    Walk = loadAnim(killer, "93622022596108"),
    Slash = loadAnim(killer, "126830014841198")
}
local playerAnims = {
    Idle = loadAnim(char, "131082534135875"),
    Walk = loadAnim(char, "108018357044094"),
    Run  = loadAnim(char, "136252471123500"),
}

-- STAMINA & SPEED SETTINGS
local playerMaxStam, playerStam = 100, 100
local killerMaxStam, killerStam = 110, 110
local playerDrain, playerRecover = 20, 25
local killerDrain, killerRecover = 15, 10
local playerWalkSpeed, playerSprintSpeed = 16, 27
local killerWalkSpeed, killerSprintSpeed = 13, 28

-- GUI SETUP
local gui = Instance.new("ScreenGui", player:WaitForChild("PlayerGui"))
gui.Name = "GameUI"

local function createBar(name, size, position, color, parent)
    local bg = Instance.new("Frame", parent)
    bg.Name = name.."BG"
    bg.Size, bg.Position = size, position
    bg.BackgroundColor3, bg.BorderSizePixel = Color3.new(0, 0, 0), 2
    local fill = Instance.new("Frame", bg)
    fill.Name = name.."Fill"
    fill.Size = UDim2.new(1, 0, 1, 0)
    fill.BackgroundColor3 = color
    return fill
end

local playerStaminaFill = createBar("PlayerStam", UDim2.new(0,200,0,25), UDim2.new(0.5,-100,1,-90), Color3.new(0,1,0), gui)
local killerBill = Instance.new("BillboardGui", killerHRP)
killerBill.Size, killerBill.StudsOffset, killerBill.AlwaysOnTop = UDim2.new(0,100,0,15), Vector3.new(0,3,0), true
local killerStaminaFill = createBar("KillerStam", UDim2.new(1,0,1,0), UDim2.new(0,0,0,0), Color3.new(1,0,0), killerBill)

local sprintBtn = Instance.new("TextButton", gui)
sprintBtn.Size, sprintBtn.Position = UDim2.new(0,120,0,40), UDim2.new(0.5, -60, 1, -50)
sprintBtn.BackgroundColor3, sprintBtn.TextColor3, sprintBtn.Text = Color3.new(1,0,0), Color3.new(1,1,1), "SPRINT"
local isSprinting = false
sprintBtn.MouseButton1Down:Connect(function()
    if playerStam > 0 then
        isSprinting = not isSprinting
        hum.WalkSpeed = isSprinting and playerSprintSpeed or playerWalkSpeed
        sprintBtn.Text = isSprinting and "STOP" or "SPRINT"
        sprintBtn.BackgroundColor3 = isSprinting and Color3.new(0,1,0) or Color3.new(1,0,0)
    end
end)

-- SOUND + TIMER SETUP
local sound = Instance.new("Sound")
sound.SoundId = getcustomasset("RUN.mp3")
sound.Volume = 1
sound.Looped = false
sound.Parent = workspace
sound:Play()

local timerLabel = Instance.new("TextLabel", gui)
timerLabel.Size, timerLabel.Position, timerLabel.Font, timerLabel.TextSize = UDim2.new(0,150,0,50), UDim2.new(0.5,-75,0,10), Enum.Font.SourceSansBold, 40
timerLabel.TextColor3 = Color3.fromRGB(255,255,255)
timerLabel.BackgroundTransparency = 1

local countdown = 73

-- NIGHT MODE
Lighting.ClockTime = 0.0
Lighting.FogEnd, Lighting.FogStart = 100,0

-- SLASH HANDLER WITH HITBOX EXTENSION
local lastSlash = 0
local slashCooldown = 2

local function canSlash()
    return tick() - lastSlash >= slashCooldown
end

local function trySlash(hit)
    if not canSlash() then return end
    if hit:IsDescendantOf(char) then
        lastSlash = tick()
        killerAnims.Slash:Play()
        local h = hit.Parent:FindFirstChildOfClass("Humanoid")
        if h then h:TakeDamage(20) end
    end
end

killerHRP.Touched:Connect(trySlash)

-- Additional hitbox around killerHRP for aggressive attacks when close
local hitbox = Instance.new("Part")
hitbox.Transparency = 1
hitbox.CanCollide = false
hitbox.Anchored = true
hitbox.Size = Vector3.new(6, 6, 6) -- hitbox bigger than killerHRP
hitbox.CFrame = killerHRP.CFrame
hitbox.Parent = workspace

hitbox.Touched:Connect(trySlash)

-- AI PATHFINDING USING RAYCASTS + OBSTACLE ESCAPE
local function facePlayer()
    local dir = (hrp.Position - killerHRP.Position)
    if dir.Magnitude > 1 then
        killerHRP.CFrame = CFrame.new(killerHRP.Position, Vector3.new(hrp.Position.X, killerHRP.Position.Y, hrp.Position.Z))
    end
end

local function detectObstacle()
    local from = killerHRP.Position + Vector3.new(0,2,0)
    local to = hrp.Position + Vector3.new(0,2,0)
    local params = RaycastParams.new()
    params.FilterDescendantsInstances = {killer, char, hitbox}
    params.FilterType = Enum.RaycastFilterType.Blacklist
    local res = workspace:Raycast(from, to - from, params)
    return res
end

local function teleportOutOfObstacle(hitPos, normal)
    -- Move the killer 5 studs away from obstacle surface along normal, and slightly upward
    local newPos = hitPos + normal * 5 + Vector3.new(0,3,0)
    -- Teleport killer smoothly, but not near player
    if (newPos - hrp.Position).Magnitude < 15 then
        -- If newPos too close to player, move away along killer to player vector
        local dir = (killerHRP.Position - hrp.Position).Unit
        newPos = killerHRP.Position + dir * 10 + Vector3.new(0,3,0)
    end
    killerHRP.CFrame = CFrame.new(newPos, Vector3.new(hrp.Position.X, newPos.Y, hrp.Position.Z))
    hitbox.CFrame = killerHRP.CFrame
end

-- UPDATE
local killerIsSprinting = false
task.spawn(function()
    while true do
        task.wait(0.1)
        facePlayer()
        local obstacle = detectObstacle()
        if obstacle then
            teleportOutOfObstacle(obstacle.Position, obstacle.Normal)
        end

        if not killerIsSprinting and killerStam >= killerMaxStam - 0.1 then
            killerIsSprinting = true
        end

        if killerIsSprinting then
            killerHum.WalkSpeed = killerSprintSpeed
            killerStam = math.max(killerStam - killerDrain * 0.1, 0)
            if not killerAnims.Run.IsPlaying then
                killerAnims.Walk:Stop()
                killerAnims.Run:Play()
            end
            if killerStam <= 0 then
                killerIsSprinting = false
            end
        else
            killerHum.WalkSpeed = killerWalkSpeed
            killerStam = math.min(killerStam + killerRecover * 0.1, killerMaxStam)
            if not killerAnims.Walk.IsPlaying then
                killerAnims.Run:Stop()
                killerAnims.Walk:Play()
            end
        end

        -- Move the hitbox with killer
        hitbox.CFrame = killerHRP.CFrame

        killerHum:MoveTo(hrp.Position)
        playerStaminaFill.Size = UDim2.new(playerStam/playerMaxStam,0,1,0)
        killerStaminaFill.Size = UDim2.new(killerStam/killerMaxStam,0,1,0)
    end
end)

RunService.Heartbeat:Connect(function(dt)
    local moving = hrp.Velocity.Magnitude > 1
    if isSprinting and playerStam > 0 and moving then
        playerStam = math.max(playerStam - playerDrain * dt, 0)
        if playerStam == 0 then
            isSprinting = false
            hum.WalkSpeed = playerWalkSpeed
            sprintBtn.Text = "SPRINT"
            sprintBtn.BackgroundColor3 = Color3.new(1,0,0)
        end
    else
        playerStam = math.min(playerStam + playerRecover * dt, playerMaxStam)
    end

    if not moving then
        if not playerAnims.Idle.IsPlaying then
            playerAnims.Run:Stop(); playerAnims.Walk:Stop(); playerAnims.Idle:Play()
        end
    elseif isSprinting then
        if not playerAnims.Run.IsPlaying then
            playerAnims.Idle:Stop(); playerAnims.Walk:Stop(); playerAnims.Run:Play()
        end
    else
        if not playerAnims.Walk.IsPlaying then
            playerAnims.Idle:Stop(); playerAnims.Run:Stop(); playerAnims.Walk:Play()
        end
    end

    playerStaminaFill.Size = UDim2.new(playerStam/playerMaxStam,0,1,0)
end)

-- TIMER
local cleanupCalled = false
local function cleanup()
    if cleanupCalled then return end
    cleanupCalled = true
    if player and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
        player.Character.HumanoidRootPart.CFrame = originalSpawn
    end
    Lighting.ClockTime = 14
    sound:Stop()
    mapModel:Destroy()
    killer:Destroy()
    hitbox:Destroy()
    gui:Destroy()
end

spawn(function()
    while countdown >= 0 do
        local mm = string.format("%02d", math.floor(countdown / 60))
        local ss = string.format("%02d", (countdown % 60))
        timerLabel.Text = mm .. ":" .. ss
        task.wait(1)
        countdown -= 1
    end
    cleanup()
end)

hum.Died:Connect(cleanup)

Features & Information

Yep a Jason forsaken script (try to survive...) this script pretty buggy

Community Comments (2)

NuculearBomb24NuculearBomb24Jun 21, 2025

honestly works with xeno and I LOVE IT ITS SUPER FUN FOR WHEN YOUR BORED!!

vicosanchvicosanchAug 13, 2025

The script of map doesn't working anymore more...

More Scripts for Universal Scripts