EDIT: Fixed, it was one of ROBLOX's infamous variable glitches.
S1box = Instance.new('TextLabel')
S1box.Parent = S1boxS
S1box.Visible = false
S1box.TextWrapped = true
S1box.TextColor3 = Color3.new(0, 0, 0)
S1box.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)
S1box.BorderColor3 = Color3.new(0, 0, 0)
S1box.Size = UDim2.new(0, 320, 0, 60)
S1box.Position = UDim2.new(0, 25, 0, 25)
if game.Players.LocalPlayer.Character.gameChar.Value == 1 then
S1box.Text = [[Shield (17.5 second cooldown) (0 upgrades)
20% damage absorbed for 7.5 seconds
+4 % damage absorbed and +0.25 second duration per upgrade
Press '1' to use
Click to upgrade if skill points available]]
end
The textLabel says just 'Label', even though my gameChar.Value is 1. No errors cropped up, so could someone fill me in on what I did wrong?

2 comments
You're making Visible false which would make the GUI invisible so you'll be unable to see the newly made textlabel, why are you doing that?
A different function makes it visible and works.