local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UIS = game:GetService("UserInputService") local player = Players.LocalPlayer local NORMAL_SPEED = 10 local SPRINT_SPEED = 35 local WSOD_SPEED = 80 local WSOD_TIME = 3 local MAX_HP = 100 local sprinting = false local wsodActive = false local gui = Instance.new("ScreenGui") gui.Name = "ForsakenGUI" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local char, hum, root local idle, walk, run, wsod local function loadAnim(id, priority) local a = Instance.new("Animation") a.AnimationId = id local t = hum:LoadAnimation(a) t.Priority = priority return t end local function stopAllAnims() if idle then idle:Stop() end if walk then walk:Stop() end if run then run:Stop() end if wsod then wsod:Stop() end end local toggleFrame = Instance.new("Frame", gui) toggleFrame.Size = UDim2.fromScale(0.18,0.07) toggleFrame.Position = UDim2.fromScale(0.05,0.45) toggleFrame.BackgroundColor3 = Color3.fromRGB(140,0,0) toggleFrame.Active = true toggleFrame.Draggable = true local toggleBtn = Instance.new("TextButton", toggleFrame) toggleBtn.Size = UDim2.fromScale(1,1) toggleBtn.TextScaled = true toggleBtn.Text = "OPEN" toggleBtn.BackgroundColor3 = toggleFrame.BackgroundColor3 toggleBtn.TextColor3 = Color3.new(1,1,1) local main = Instance.new("Frame", gui) main.Size = UDim2.fromScale(0.6,0.45) main.Position = UDim2.fromScale(0.2,0.25) main.BackgroundColor3 = Color3.fromRGB(15,15,15) main.BorderColor3 = Color3.fromRGB(150,0,0) main.BorderSizePixel = 3 main.Visible = false main.Active = true main.Draggable = true local function mkBtn(text, y) local b = Instance.new("TextButton", main) b.Size = UDim2.fromScale(0.9,0.22) b.Position = UDim2.fromScale(0.05, y) b.TextScaled = true b.Text = text b.BackgroundColor3 = Color3.fromRGB(130,0,0) b.TextColor3 = Color3.new(1,1,1) return b end local punchBtn = mkBtn("Punch [Z]", 0.05) local wsodBtn = mkBtn("Walk Speed Override [X]", 0.32) local sprintBtn = mkBtn("Sprint OFF [L]", 0.59) local hud = Instance.new("Frame", gui) hud.Size = UDim2.fromScale(0.32,0.11) hud.Position = UDim2.fromScale(0.02,0.87) hud.BackgroundTransparency = 1 local hpBack = Instance.new("Frame", hud) hpBack.Size = UDim2.fromScale(1,0.45) hpBack.BackgroundColor3 = Color3.fromRGB(30,30,30) local hpBar = Instance.new("Frame", hpBack) hpBar.Size = UDim2.fromScale(1,1) hpBar.BackgroundColor3 = Color3.fromRGB(200,0,0) local stamBack = Instance.new("Frame", hud) stamBack.Size = UDim2.fromScale(1,0.45) stamBack.Position = UDim2.fromScale(0,0.55) stamBack.BackgroundColor3 = Color3.fromRGB(30,30,30) local stamBar = Instance.new("Frame", stamBack) stamBar.Size = UDim2.fromScale(1,1) stamBar.BackgroundColor3 = Color3.fromRGB(255,255,255) toggleBtn.MouseButton1Click:Connect(function() main.Visible = not main.Visible toggleBtn.Text = main.Visible and "CLOSE" or "OPEN" end) local function setupCharacter(character) char = character hum = char:WaitForChild("Humanoid") root = char:WaitForChild("HumanoidRootPart") hum.MaxHealth = MAX_HP hum.Health = MAX_HP hum.WalkSpeed = NORMAL_SPEED idle = loadAnim("rbxassetid://95203125292023", Enum.AnimationPriority.Idle) walk = loadAnim("rbxassetid://131520975704727", Enum.AnimationPriority.Movement) run = loadAnim("rbxassetid://116229217913998", Enum.AnimationPriority.Movement) wsod = loadAnim("rbxassetid://119380285634530", Enum.AnimationPriority.Action) idle:Play() hpBack.BackgroundColor3 = Color3.fromRGB(30,30,30) hpBar.Size = UDim2.fromScale(1,1) hpBar.BackgroundColor3 = Color3.fromRGB(200,0,0) hum.Died:Connect(function() stopAllAnims() sprinting = false wsodActive = false hpBar.Size = UDim2.fromScale(0,1) end) hum.HealthChanged:Connect(function(h) hpBar.Size = UDim2.fromScale(math.clamp(h / hum.MaxHealth, 0, 1), 1) end) end player.CharacterAdded:Connect(setupCharacter) if player.Character then setupCharacter(player.Character) end local function doPunch() if not hum or hum.Health <= 0 then return end stopAllAnims() local punchAnim = Instance.new("Animation") punchAnim.AnimationId = "rbxassetid://129358357219637" local punchTrack = hum:LoadAnimation(punchAnim) punchTrack.Priority = Enum.AnimationPriority.Action punchTrack.Looped = false punchTrack:Play() punchTrack.Stopped:ConnectOnce(function() if hum and hum.Health > 0 then idle:Play() end end) end punchBtn.MouseButton1Click:Connect(doPunch) local function stopWSOD() wsodActive = false if root then root.AssemblyLinearVelocity = Vector3.zero end if hum then hum.AutoRotate = true; hum.WalkSpeed = sprinting and SPRINT_SPEED or NORMAL_SPEED end wsod:Stop() end local function doWSOD() if wsodActive or not hum then return end wsodActive = true stopAllAnims() wsod:Play() hum.AutoRotate = false local dir = root.CFrame.LookVector local start = tick() local params = RaycastParams.new() params.FilterDescendantsInstances = {char} params.FilterType = Enum.RaycastFilterType.Blacklist local conn conn = RunService.Heartbeat:Connect(function() if root then root.AssemblyLinearVelocity = dir * WSOD_SPEED end local hit = workspace:Raycast(root.Position, dir * 3, params) if hit then conn:Disconnect() stopWSOD() end if tick() - start >= WSOD_TIME then conn:Disconnect() stopWSOD() end end) end wsodBtn.MouseButton1Click:Connect(doWSOD) local function toggleSprint() if not hum then return end sprinting = not sprinting if sprinting then hum.WalkSpeed = SPRINT_SPEED stopAllAnims() run:Play() sprintBtn.Text = "Sprint ON [L]" else hum.WalkSpeed = NORMAL_SPEED run:Stop() sprintBtn.Text = "Sprint OFF [L]" end end sprintBtn.MouseButton1Click:Connect(toggleSprint) UIS.InputBegan:Connect(function(input, gpe) if gpe or not hum or hum.Health <= 0 then return end if input.KeyCode == Enum.KeyCode.Z then doPunch() elseif input.KeyCode == Enum.KeyCode.X then doWSOD() elseif input.KeyCode == Enum.KeyCode.L then toggleSprint() end end) RunService.Heartbeat:Connect(function() if not hum or wsodActive or sprinting then return end if hum.MoveDirection.Magnitude > 0 then if not walk.IsPlaying then stopAllAnims() walk:Play() end else if not idle.IsPlaying then stopAllAnims() idle:Play() end end end)