Subject Potion Sheet
Key Required

Subject Potion Sheet

HOURSMediorceExploiterMediorceExploiter 527 views 48 executesUpdated Jan 23, 2026
Unrated
00
Lua Script•301 lines (8947 chars)
--// HOURS Subject Potions GUI (Pink/Black)
--// Drag-enabled + opacity variable at top
--// Unload hotkey: M (FULL unload: disconnects + destroys GUI)

-- =========================
-- SETTINGS (EDIT THESE)
-- =========================
local UI_OPACITY = 0.15
-- 0.00 = fully transparent, 1.00 = fully opaque

-- =========================
-- FULL UNLOAD + SINGLETON
-- =========================
local SINGLETON_KEY = "__HOURS_POTIONS_GUI_SINGLETON__"

local function safeDisconnect(conn)
	if conn and typeof(conn) == "RBXScriptConnection" then
		pcall(function() conn:Disconnect() end)
	end
end

if getgenv and getgenv()[SINGLETON_KEY] and type(getgenv()[SINGLETON_KEY]) == "table" then
	pcall(function()
		local old = getgenv()[SINGLETON_KEY]
		if old.Unload then old.Unload() end
	end)
end

local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local TextService = game:GetService("TextService")

local lp = Players.LocalPlayer
local pg = lp:WaitForChild("PlayerGui")

local connections = {}
local gui

local function Unload()
	for _, c in ipairs(connections) do
		safeDisconnect(c)
	end
	table.clear(connections)

	if gui then
		pcall(function() gui:Destroy() end)
		gui = nil
	end

	if getgenv then
		getgenv()[SINGLETON_KEY] = nil
	end
end

if getgenv then
	getgenv()[SINGLETON_KEY] = { Unload = Unload }
end

-- =========================
-- POTION DATA
-- =========================
local potions = {
	{ name = "Life",      imbue = "L L L L", throw = "R L L L" },
	{ name = "Water",     imbue = "L L L R", throw = "R L L R" },
	{ name = "Crystal",   imbue = "L L L Q", throw = "R L L Q" },
	{ name = "Earth",     imbue = "L L R L", throw = "R L R L" },
	{ name = "Wind",      imbue = "L L R R", throw = "R L R R" },
	{ name = "Blood",     imbue = "L L R Q", throw = "R L R Q" },
	{ name = "Lightning", imbue = "L R L Q", throw = "R R L Q" },
	{ name = "Poison",    imbue = "L R L R", throw = "R R L R" },
	{ name = "Fire",      imbue = "L R L L", throw = "R R L L" },
	{ name = "Shadow",    imbue = "L R R L", throw = "R R R L" },
	{ name = "Frost",     imbue = "L R R R", throw = "R R R R" },
	{ name = "Nether",    imbue = "L R R Q", throw = "R R R Q" },
}

local function buildPotionText()
	local lines = {}
	table.insert(lines, "HOURS • Subject Potions")
	table.insert(lines, "------------------------")
	table.insert(lines, "")

	for _, p in ipairs(potions) do
		table.insert(lines, string.format("%s (Imbue): %s", p.name, p.imbue))
		table.insert(lines, string.format("%s (Throw): %s", p.name, p.throw))
		table.insert(lines, "")
	end

	return table.concat(lines, "\n")
end

-- =========================
-- SIMPLE DRAG HELPER (Frame drag)
-- =========================
local function makeDraggable(frame, dragHandle)
	dragHandle = dragHandle or frame

	local dragging = false
	local dragStart, startPos
	local dragConn1, dragConn2

	local function update(input)
		local delta = input.Position - dragStart
		frame.Position = UDim2.new(
			startPos.X.Scale, startPos.X.Offset + delta.X,
			startPos.Y.Scale, startPos.Y.Offset + delta.Y
		)
	end

	dragConn1 = dragHandle.InputBegan:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
			dragging = true
			dragStart = input.Position
			startPos = frame.Position

			local endedConn
			endedConn = input.Changed:Connect(function()
				if input.UserInputState == Enum.UserInputState.End then
					dragging = false
					safeDisconnect(endedConn)
				end
			end)
		end
	end)

	dragConn2 = dragHandle.InputChanged:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
			local moveConn
			moveConn = UserInputService.InputChanged:Connect(function(i)
				if dragging and i == input then
					update(i)
				end
			end)
			-- keep it lightweight: disconnect after drag ends
			table.insert(connections, moveConn)
		end
	end)

	table.insert(connections, dragConn1)
	table.insert(connections, dragConn2)
end

-- =========================
-- GUI
-- =========================
gui = Instance.new("ScreenGui")
gui.Name = "HoursPotionsGui"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
gui.Parent = pg

local main = Instance.new("Frame")
main.Name = "Main"
main.AnchorPoint = Vector2.new(0.5, 0.5)
main.Position = UDim2.new(0.5, 0, 0.5, 0)
main.Size = UDim2.new(0, 520, 0, 420)
main.BackgroundColor3 = Color3.fromRGB(10, 10, 12)
main.BackgroundTransparency = math.clamp(1 - UI_OPACITY, 0, 1)
main.BorderSizePixel = 0
main.Parent = gui

local stroke = Instance.new("UIStroke")
stroke.Thickness = 2
stroke.Color = Color3.fromRGB(255, 105, 180)
stroke.Parent = main

local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 12)
corner.Parent = main

local title = Instance.new("TextLabel")
title.Name = "Title"
title.BackgroundTransparency = 1
title.Position = UDim2.new(0, 16, 0, 10)
title.Size = UDim2.new(1, -32, 0, 28)
title.Font = Enum.Font.GothamBold
title.TextSize = 20
title.TextXAlignment = Enum.TextXAlignment.Left
title.TextColor3 = Color3.fromRGB(255, 105, 180)
title.Text = "Subject Potions • Craft Combos"
title.Parent = main

local closeHint = Instance.new("TextLabel")
closeHint.Name = "CloseHint"
closeHint.BackgroundTransparency = 1
closeHint.Position = UDim2.new(0, 16, 0, 38)
closeHint.Size = UDim2.new(1, -32, 0, 18)
closeHint.Font = Enum.Font.Gotham
closeHint.TextSize = 13
closeHint.TextXAlignment = Enum.TextXAlignment.Left
closeHint.TextColor3 = Color3.fromRGB(210, 210, 210)
closeHint.Text = "Drag the title bar • Press M to unload"
closeHint.Parent = main

local scroll = Instance.new("ScrollingFrame")
scroll.Name = "Scroll"
scroll.Position = UDim2.new(0, 16, 0, 64)
scroll.Size = UDim2.new(1, -32, 1, -110)
scroll.BackgroundColor3 = Color3.fromRGB(16, 16, 20)
scroll.BackgroundTransparency = math.clamp(1 - UI_OPACITY, 0, 1)
scroll.BorderSizePixel = 0
scroll.ScrollBarThickness = 8
scroll.ScrollingDirection = Enum.ScrollingDirection.Y
scroll.CanvasSize = UDim2.new(0, 0, 0, 0)
scroll.Parent = main

local scrollCorner = Instance.new("UICorner")
scrollCorner.CornerRadius = UDim.new(0, 10)
scrollCorner.Parent = scroll

local scrollStroke = Instance.new("UIStroke")
scrollStroke.Thickness = 1
scrollStroke.Color = Color3.fromRGB(255, 105, 180)
scrollStroke.Transparency = 0.35
scrollStroke.Parent = scroll

local pad = Instance.new("UIPadding")
pad.PaddingTop = UDim.new(0, 10)
pad.PaddingBottom = UDim.new(0, 10)
pad.PaddingLeft = UDim.new(0, 10)
pad.PaddingRight = UDim.new(0, 10)
pad.Parent = scroll

local content = Instance.new("TextLabel")
content.Name = "Content"
content.BackgroundTransparency = 1
content.Size = UDim2.new(1, -20, 0, 0)
content.Position = UDim2.new(0, 0, 0, 0)
content.Font = Enum.Font.Code
content.TextSize = 16
content.TextXAlignment = Enum.TextXAlignment.Left
content.TextYAlignment = Enum.TextYAlignment.Top
content.TextColor3 = Color3.fromRGB(245, 245, 245)
content.TextWrapped = true
content.RichText = false
content.Parent = scroll

local tip = Instance.new("TextLabel")
tip.Name = "Tip"
tip.BackgroundTransparency = 1
tip.Position = UDim2.new(0, 16, 1, -40)
tip.Size = UDim2.new(1, -32, 0, 28)
tip.Font = Enum.Font.GothamSemibold
tip.TextSize = 14
tip.TextXAlignment = Enum.TextXAlignment.Left
tip.TextColor3 = Color3.fromRGB(255, 170, 220)
tip.Text = 'Tip: "Starts with L = Imbue, R = Throw".'
tip.Parent = main

local footer = Instance.new("TextLabel")
footer.Name = "Footer"
footer.BackgroundTransparency = 1
footer.Position = UDim2.new(0, 16, 1, -18)
footer.Size = UDim2.new(1, -32, 0, 16)
footer.Font = Enum.Font.Gotham
footer.TextSize = 12
footer.TextXAlignment = Enum.TextXAlignment.Left
footer.TextColor3 = Color3.fromRGB(160, 160, 160)
footer.Text = "Format: Potion (Variant): Combo"
footer.Parent = main

-- Make draggable by grabbing title area (title + hint acts like a title bar)
local titleBar = Instance.new("Frame")
titleBar.Name = "TitleBar"
titleBar.BackgroundTransparency = 1
titleBar.Position = UDim2.new(0, 0, 0, 0)
titleBar.Size = UDim2.new(1, 0, 0, 60)
titleBar.Parent = main
title.ZIndex = 2
closeHint.ZIndex = 2
titleBar.ZIndex = 1

makeDraggable(main, titleBar)

-- Fill text + compute size for scrolling
local function refreshText()
	local txt = buildPotionText()
	content.Text = txt

	local maxWidth = math.max(1, scroll.AbsoluteSize.X - 20)
	local bounds = TextService:GetTextSize(
		txt,
		content.TextSize,
		content.Font,
		Vector2.new(maxWidth, 100000)
	)

	content.Size = UDim2.new(1, -20, 0, bounds.Y + 6)
	scroll.CanvasSize = UDim2.new(0, 0, 0, bounds.Y + 26)
end

refreshText()
table.insert(connections, scroll:GetPropertyChangedSignal("AbsoluteSize"):Connect(refreshText))

-- Unload hotkey: M
table.insert(connections, UserInputService.InputBegan:Connect(function(input, gp)
	if gp then return end
	if input.KeyCode == Enum.KeyCode.M then
		Unload()
	end
end))

Features & Information

List of subject potions & their combos (Generated by ChatGPT 5.2)
#not op#nonexploit#fair#HOURS#GOURS

Community Comments (1)

DarkSagaBloxDarkSagaBloxJan 23, 2026

w

More Scripts for HOURS