-- blud obby v1.5 by bubba
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
-- themes
local OfficialRed = { TextColor = Color3.fromRGB(240, 240, 240), Background = Color3.fromRGB(25, 10, 10), Topbar = Color3.fromRGB(45, 15, 15), Shadow = Color3.fromRGB(15, 5, 5), NotificationBackground = Color3.fromRGB(35, 12, 12), NotificationActionsBackground = Color3.fromRGB(180, 40, 40), TabBackground = Color3.fromRGB(50, 20, 20), TabStroke = Color3.fromRGB(80, 30, 30), TabBackgroundSelected = Color3.fromRGB(160, 40, 40), TabTextColor = Color3.fromRGB(230, 230, 230), SelectedTabTextColor = Color3.fromRGB(255, 255, 255), ElementBackground = Color3.fromRGB(35, 15, 15), ElementBackgroundHover = Color3.fromRGB(45, 20, 20), SecondaryElementBackground = Color3.fromRGB(30, 12, 12), ElementStroke = Color3.fromRGB(60, 25, 25), SecondaryElementStroke = Color3.fromRGB(50, 20, 20), SliderBackground = Color3.fromRGB(80, 30, 30), SliderProgress = Color3.fromRGB(180, 40, 40), SliderStroke = Color3.fromRGB(200, 50, 50), ToggleBackground = Color3.fromRGB(40, 15, 15), ToggleEnabled = Color3.fromRGB(180, 40, 40), ToggleDisabled = Color3.fromRGB(70, 70, 70), ToggleEnabledStroke = Color3.fromRGB(210, 50, 50), ToggleDisabledStroke = Color3.fromRGB(90, 90, 90), ToggleEnabledOuterStroke = Color3.fromRGB(100, 30, 30), ToggleDisabledOuterStroke = Color3.fromRGB(50, 50, 50), DropdownSelected = Color3.fromRGB(55, 20, 20), DropdownUnselected = Color3.fromRGB(35, 12, 12), InputBackground = Color3.fromRGB(35, 15, 15), InputStroke = Color3.fromRGB(70, 25, 25), PlaceholderColor = Color3.fromRGB(160, 160, 160) }
local BlueFunTheme = { TextColor = Color3.fromRGB(240, 240, 240), Background = Color3.fromRGB(10, 10, 25), Topbar = Color3.fromRGB(15, 15, 45), Shadow = Color3.fromRGB(5, 5, 15), NotificationBackground = Color3.fromRGB(12, 12, 35), NotificationActionsBackground = Color3.fromRGB(40, 40, 180), TabBackground = Color3.fromRGB(20, 20, 50), TabStroke = Color3.fromRGB(30, 30, 80), TabBackgroundSelected = Color3.fromRGB(40, 40, 160), TabTextColor = Color3.fromRGB(230, 230, 230), SelectedTabTextColor = Color3.fromRGB(255, 255, 255), ElementBackground = Color3.fromRGB(15, 15, 35), ElementBackgroundHover = Color3.fromRGB(20, 20, 45), SecondaryElementBackground = Color3.fromRGB(12, 12, 30), ElementStroke = Color3.fromRGB(25, 25, 60), SecondaryElementStroke = Color3.fromRGB(20, 20, 50), SliderBackground = Color3.fromRGB(30, 30, 80), SliderProgress = Color3.fromRGB(40, 40, 180), SliderStroke = Color3.fromRGB(50, 50, 200), ToggleBackground = Color3.fromRGB(15, 15, 40), ToggleEnabled = Color3.fromRGB(40, 40, 180), ToggleDisabled = Color3.fromRGB(70, 70, 70), ToggleEnabledStroke = Color3.fromRGB(50, 50, 210), ToggleDisabledStroke = Color3.fromRGB(90, 90, 90), ToggleEnabledOuterStroke = Color3.fromRGB(30, 30, 100), ToggleDisabledOuterStroke = Color3.fromRGB(50, 50, 50), DropdownSelected = Color3.fromRGB(20, 20, 55), DropdownUnselected = Color3.fromRGB(12, 12, 35), InputBackground = Color3.fromRGB(15, 15, 35), InputStroke = Color3.fromRGB(25, 25, 70), PlaceholderColor = Color3.fromRGB(160, 160, 160) }
local Window = Rayfield:CreateWindow({
Name = "BLUD OBBY HUB",
LoadingTitle = "BLUD OBBY",
LoadingSubtitle = "lololol",
ConfigurationSaving = { Enabled = true, FolderName = "BludObbyConfig", FileName = "bludconfig" },
Discord = { Enabled = false, Invite = "noinvitelink", RememberJoins = true },
KeySystem = false,
Theme = OfficialRed
})
local MainTab = Window:CreateTab("Main", 0)
local FunTab = Window:CreateTab("Fun", 0)
local S51Tab = Window:CreateTab("Stage 51", 0)
_G.TouchOff = false
_G.AntiShell = false
_G.Noclip = false
_G.InfJump = false
local Player = game.Players.LocalPlayer
local RunService = game:GetService("RunService")
local Lighting = game:GetService("Lighting")
RunService.Stepped:Connect(function()
if Player.Character then
-- Logic: If TouchOff is true, set CanTouch to false. If TouchOff is false, ensure it's true.
for _, v in pairs(Player.Character:GetDescendants()) do
if v:IsA("BasePart") then
if _G.TouchOff then
if v.CanTouch then v.CanTouch = false end
else
-- This ensures that when you disable the toggle, your parts can touch again.
if not v.CanTouch then v.CanTouch = true end
end
-- Noclip logic
if _G.Noclip then
if v.CanCollide then v.CanCollide = false end
end
end
end
end
end)
local function nukeShell()
local locs = {Player:FindFirstChild("PlayerScripts"), Player:FindFirstChild("PlayerGui"), Player.Character}
for _, folder in pairs(locs) do
if folder then
for _, v in pairs(folder:GetDescendants()) do
if v.Name:lower():find("megashellshock") then
v:Destroy()
end
end
end
end
end
-- --- MAIN ---
MainTab:CreateSection("Movement")
MainTab:CreateToggle({ Name = "Noclip", CurrentValue = false, Flag = "noclip", Callback = function(V) _G.Noclip = V end })
MainTab:CreateSection("Fixes & Stage Nerfs")
MainTab:CreateToggle({
Name = "CanTouch Off (Stage 25-29)",
CurrentValue = false,
Flag = "ctouch",
Callback = function(V)
_G.TouchOff = V
end
})
MainTab:CreateButton({
Name = "Nerf Stage 29 (Shellshock)",
Callback = function()
_G.AntiShell = true
task.spawn(function()
while _G.AntiShell do
nukeShell()
task.wait(0.5)
end
end)
Rayfield:Notify({Title = "Nerfed", Content = "MegaShellshock wiped. Platformer remains.", Duration = 3})
end,
})
MainTab:CreateButton({
Name = "Nerf Stage 41",
Callback = function()
local stages = workspace:FindFirstChild("Stages")
if stages then
local nodes = stages:FindFirstChild("Nodes", true)
if nodes then for _, n in pairs(nodes:GetChildren()) do if n.Name == "Node" then n:Destroy() end end end
end
Rayfield:Notify({Title = "Nerfed", Content = "Nodes deleted.", Duration = 3})
end,
})
MainTab:CreateButton({
Name = "Nerf Stage 45",
Callback = function()
local stages = workspace:FindFirstChild("Stages")
if stages then
local s45 = stages:FindFirstChild("Stage 45", true) or stages:FindFirstChild("45", true)
if s45 then
for _, p in pairs(s45:GetDescendants()) do
if p:IsA("BasePart") then p.CustomPhysicalProperties = PhysicalProperties.new(0.7, 2, 0.5, 100, 100) end
end
Rayfield:Notify({Title = "Ice Fixed", Content = "Gripped!", Duration = 3})
end
end
end,
})
MainTab:CreateToggle({
Name = "Fullbright",
CurrentValue = false,
Flag = "fbr",
Callback = function(Value)
Lighting.Brightness = Value and 2 or 1
Lighting.ClockTime = Value and 14 or 12
Lighting.GlobalShadows = not Value
Lighting.Ambient = Value and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(0, 0, 0)
end,
})
-- --- FUN ---
FunTab:CreateSection("Physics")
FunTab:CreateToggle({ Name = "Moon Gravity", CurrentValue = false, Flag = "grav", Callback = function(V) workspace.Gravity = V and 50 or 196.2 end })
game:GetService("UserInputService").JumpRequest:Connect(function()
if _G.InfJump then
local c = Player.Character
if c and c:FindFirstChildOfClass("Humanoid") then
c:FindFirstChildOfClass("Humanoid"):ChangeState("Jumping")
end
end
end)
FunTab:CreateToggle({ Name = "No Jump Cooldown", CurrentValue = false, Flag = "infj", Callback = function(V) _G.InfJump = V end })
-- --- STAGE 51 ---
S51Tab:CreateSection("Enphoso Boss")
S51Tab:CreateButton({
Name = "Delete Enphoso",
Callback = function()
local RS = game:GetService("ReplicatedStorage")
local sp = RS:FindFirstChild("Sprites")
if sp then
local en = sp:FindFirstChild("Enphoso")
if en then
for _, v in pairs(en:GetDescendants()) do
if v:IsA("ImageLabel") then v.Image = "rbxassetid://126248720865885" end
end
task.wait(0.1)
en:Destroy()
Rayfield:Notify({Title = "Done", Content = "Enphoso nuked.", Duration = 3})
end
end
end,
})
-- --- THEME ---
task.spawn(function()
local LastTheme = "Red"
while task.wait(0.2) do
local Gui = game:GetService("CoreGui"):FindFirstChild("Rayfield")
if Gui and Gui:FindFirstChild("Main") then
local Holder = Gui.Main:FindFirstChild("TabHolder")
if Holder then
for _, btn in pairs(Holder:GetChildren()) do
if btn:IsA("TextButton") and btn.Transparency == 0 then
if btn.Text == "Fun" and LastTheme ~= "Blue" then
Window:ModifyTheme(BlueFunTheme)
LastTheme = "Blue"
elseif (btn.Text == "Main" or btn.Text == "Stage 51") and LastTheme ~= "Red" then
Window:ModifyTheme(OfficialRed)
LastTheme = "Red"
end
end
end
end
end
end
end)