local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local function hasItem(itemName) return LocalPlayer.Backpack:FindFirstChild(itemName) or (LocalPlayer.Character and LocalPlayer.Character:FindFirstChild(itemName)) end task.spawn(function() local hrp = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") if not hrp then return end while not hasItem("Key") do local droppedKey = workspace:FindFirstChild("Key") if droppedKey and droppedKey:FindFirstChild("Handle") then hrp.CFrame = droppedKey.Handle.CFrame task.wait(0.1) local prompt = droppedKey:FindFirstChildOfClass("ProximityPrompt", true) if prompt then fireproximityprompt(prompt) end else local cabinetsFolder = workspace:FindFirstChild("Cabinets") if cabinetsFolder then for _, cabinet in ipairs(cabinetsFolder:GetChildren()) do if hasItem("Key") then break end local prompt = cabinet:FindFirstChild("Interact") and cabinet.Interact:FindFirstChild("ProximityPrompt") if prompt then hrp.CFrame = prompt.Parent.CFrame task.wait(0.1) fireproximityprompt(prompt) end end end end task.wait(0.1) end local function moveCube(cubeName, targetCFrame) local cube = workspace:FindFirstChild(cubeName) if cube then hrp.CFrame = cube.CFrame task.wait(0.2) cube.CFrame = targetCFrame task.wait(0.1) end end moveCube("CubeBlue", CFrame.new(-232.50116, 2.995718, 324.521393, -0.195426568, 3.29802206e-05, 0.980718315, 5.09467427e-05, 1, -2.34765394e-05, -0.980718315, 4.5376466e-05, -0.195426568)) moveCube("CubeRed", CFrame.new(-231.208191, 2.97400475, 339.952942, 0.969550431, 6.79164223e-05, -0.244891807, -7.6817676e-05, 1, -2.67962969e-05, 0.244891807, 4.47923812e-05, 0.969550431)) moveCube("CubeYellow", CFrame.new(-230.200409, 2.98604703, 307.768372, -3.56527016e-05, 0.878266335, 0.478171736, -1, -8.53283491e-05, 8.21636131e-05, 0.000112963135, -0.478171706, 0.878266335)) if not hasItem("WireCutter") then local wireCutter = workspace:FindFirstChild("WireCutter") or workspace:WaitForChild("WireCutter", 15) if wireCutter and wireCutter:FindFirstChild("Handle") then local prompt = wireCutter.Handle:FindFirstChild("ProximityPrompt") while not hasItem("WireCutter") do hrp.CFrame = wireCutter.Handle.CFrame task.wait() if prompt then fireproximityprompt(prompt) else local p2 = wireCutter:FindFirstChildOfClass("ProximityPrompt", true) if p2 then fireproximityprompt(p2) end end task.wait() end end end if not hasItem("Keycard") then local droppedKeycard = workspace:FindFirstChild("Keycard") if droppedKeycard and droppedKeycard:FindFirstChild("Handle") then while not hasItem("Keycard") do hrp.CFrame = droppedKeycard.Handle.CFrame task.wait() local prompt = droppedKeycard:FindFirstChildOfClass("ProximityPrompt", true) if prompt then fireproximityprompt(prompt) end task.wait() end else local entities = workspace:FindFirstChild("Entities") or workspace:WaitForChild("Entities", 15) if entities then local locust = entities:FindFirstChild("Locust") or entities:WaitForChild("Locust", 15) if locust and locust:FindFirstChild("Handle") then if not locust:FindFirstChildOfClass("Highlight") then local hl = Instance.new("Highlight") hl.FillColor = Color3.new(1, 0, 0) hl.OutlineColor = Color3.new(1, 1, 1) hl.Parent = locust end local prompt = locust.Handle:FindFirstChild("ProximityPrompt") if prompt then prompt.RequiresLineOfSight = false prompt.MaxActivationDistance = 50 while not hasItem("Keycard") do hrp.CFrame = locust.Handle.CFrame * CFrame.new(0, 15, 0) task.wait() fireproximityprompt(prompt) task.wait() end end end end end end if hasItem("Key") and hasItem("WireCutter") and hasItem("Keycard") then hrp.CFrame = CFrame.new(-27, 4, 74) task.wait(0.5) if fireproximityprompt then for _, descendant in ipairs(workspace:GetDescendants()) do if descendant:IsA("ProximityPrompt") then descendant.RequiresLineOfSight = false fireproximityprompt(descendant) end end end end task.wait(1) hrp.CFrame = CFrame.new(-27, 4, 27) end)