local stands = workspace:WaitForChild("stands") local player = game.Players.LocalPlayer local remotes = game.ReplicatedStorage:WaitForChild("remotes") local clientNPCaction = remotes:WaitForChild("clientNPCaction") local respawn = remotes:WaitForChild("respawn") local vim = game:GetService("VirtualInputManager") local cam = workspace.CurrentCamera local ts = game:GetService("TweenService") local function getCharacter() return player.Character or player.CharacterAdded:Wait() end local function getHrp() local char = getCharacter() return char:WaitForChild("HumanoidRootPart") end local lemonadeStands = {} for _, stand in ipairs(stands:GetChildren()) do local npc = stand:FindFirstChild("Lemonade man") if npc then local promptPart = npc:FindFirstChild("prompt") or stand:FindFirstChild("prompt") local prompt = promptPart and promptPart:FindFirstChildWhichIsA("ProximityPrompt") if prompt then table.insert(lemonadeStands, { stand = stand, npc = npc, prompt = prompt, promptPart = promptPart }) end end end local function holdE(t) vim:SendKeyEvent(true, Enum.KeyCode.E, false, game) task.wait(t) vim:SendKeyEvent(false, Enum.KeyCode.E, false, game) end local function tweenTo(hrp, pos) local tween = ts:Create(hrp, TweenInfo.new(3, Enum.EasingStyle.Linear), {CFrame = CFrame.new(pos)}) tween:Play() tween.Completed:Wait() end local function lookAt(pos) local cframe = CFrame.new(cam.CFrame.Position, pos) cam.CFrame = cframe end local function canSeePrompt(promptPart) local origin = cam.CFrame.Position local direction = (promptPart.Position - origin).Unit local ray = Ray.new(origin, direction * 100) local hit, pos = workspace:FindPartOnRay(ray, player.Character) if hit then local distance = (pos - promptPart.Position).Magnitude return distance < 1 end return false end local function getGlueLabel() local gui = player.PlayerGui:FindFirstChild("RunTIme") if gui then return gui:FindFirstChild("glued") end return nil end local function waitForGlueLabel() local label repeat label = getGlueLabel() task.wait(0.1) until label and label.Visible == true end local corners = { Vector3.new(-254, 2, 254), Vector3.new(254, 2, 254), Vector3.new(254, 2, -254), Vector3.new(-254, 2, -254) } while true do local data = lemonadeStands[math.random(1, #lemonadeStands)] clientNPCaction:FireServer("instantSwitch", data.npc) task.wait(0.3) local hrp = getHrp() local head = data.npc:FindFirstChild("Head") if head then hrp.CFrame = CFrame.new(head.Position) task.wait(0.2) end if data.promptPart then for i = 1, 10 do lookAt(data.promptPart.Position) task.wait(0.1) if canSeePrompt(data.promptPart) then break end hrp.CFrame = hrp.CFrame + (data.promptPart.Position - hrp.Position).Unit * 2 end end task.wait(0.5) holdE(0.5) local start = tick() local i = 1 while tick() - start < 60 do hrp = getHrp() tweenTo(hrp, corners[i]) i = i + 1 if i > #corners then i = 1 end end waitForGlueLabel() respawn:FireServer() task.wait(5) end