-- 🤪 Silly Goober Hub v4.0 (FIXED & STABLE) 🤪 local p = game.Players.LocalPlayer local c = p.Character or p.CharacterAdded:Wait() local h = c:WaitForChild("Humanoid") local r = c:WaitForChild("HumanoidRootPart") -- Wait for full character load repeat wait() until c:FindFirstChild("Head") and (c:FindFirstChild("Torso") or c:FindFirstChild("UpperTorso")) local torso = c:FindFirstChild("Torso") or c:FindFirstChild("UpperTorso") local head = c.Head -- Kill default animations if c:FindFirstChild("Animate") then c.Animate:Destroy() end -- Create tool local tool = Instance.new("Tool") tool.Name = "🤪 Silly Grab 🤪" tool.RequiresHandle = false tool.Parent = p.Backpack -- GUI for barrel roll text local gui = Instance.new("ScreenGui", p.PlayerGui) gui.ResetOnSpawn = false local txt = Instance.new("TextLabel", gui) txt.Size = UDim2.new(0, 600, 0, 100) txt.Position = UDim2.new(0.5, -300, 0.3, 0) txt.BackgroundTransparency = 1 txt.TextColor3 = Color3.new(1, 1, 0) txt.TextStrokeColor3 = Color3.new(1, 0, 0) txt.TextStrokeTransparency = 0.2 txt.TextScaled = true txt.Font = Enum.Font.GothamBold txt.Text = "" -- Animation state local animState = "idle" local barrelRolling = false local barrelStart = 0 -- Get joints and save originals local neck = head:FindFirstChild("Neck") or torso:FindFirstChild("Neck") local waist = torso:FindFirstChild("Waist") or r:FindFirstChild("RootJoint") local originalNeckC0 = neck and neck.C0 or CFrame.new() local originalWaistC0 = waist and waist.C0 or CFrame.new() -- Barrel roll detection h.StateChanged:Connect(function(_, new) if new == Enum.HumanoidStateType.Jumping and not barrelRolling then barrelRolling = true animState = "barrel" barrelStart = tick() txt.Text = "🔄 DO A BARREL ROLL! 🔄" spawn(function() wait(1.5) txt.Text = "" barrelRolling = false animState = "idle" end) end end) -- Main animation loop (Motor6D transforms - NO PHYSICS BREAKING!) game:GetService("RunService").RenderStepped:Connect(function() if not neck or not waist then return end local time = tick() local moving = h.MoveDirection.Magnitude > 0 -- Set state if not barrelRolling then animState = moving and "walk" or "idle" end -- Apply goofy animations (only affects joints, not physics!) if animState == "idle" then -- Helicopter head neck.C0 = originalNeckC0 * CFrame.Angles(0, time*4, math.sin(time*6)*0.2) elseif animState == "walk" then -- WACKY wobble local wave = math.sin(time*10) neck.C0 = originalNeckC0 * CFrame.Angles(0, 0, wave*0.4) * CFrame.new(0, math.abs(wave)*0.15, 0) waist.C0 = originalWaistC0 * CFrame.Angles(0, 0, -wave*0.3) elseif animState == "barrel" then -- TRUE barrel roll local roll = (time - barrelStart) * 10 waist.C0 = originalWaistC0 * CFrame.Angles(0, 0, roll) neck.C0 = originalNeckC0 * CFrame.Angles(0, 0, roll*1.5) end end) -- Get random player local function getRandom() local plrs = {} for _, v in pairs(game.Players:GetPlayers()) do if v ~= p and v.Character and v.Character:FindFirstChild("HumanoidRootPart") then table.insert(plrs, v) end end return #plrs > 0 and plrs[math.random(#plrs)] or nil end -- ULTRA FLING local function flingVictim(victimChar) local vr = victimChar:FindFirstChild("HumanoidRootPart") local vh = victimChar:FindFirstChild("Humanoid") if vr and vh then vh:ChangeState(Enum.HumanoidStateType.FallingDown) vr.AssemblyLinearVelocity = r.CFrame.LookVector * 150 + Vector3.new(0, 80, 0) vr.AssemblyAngularVelocity = Vector3.new(0, 40, 0) end end -- HOMING HEAD-FIRST TACKLE (fixed!) tool.Activated:Connect(function() local target = getRandom() if not target then return end local tr = target.Character.HumanoidRootPart -- Disable running so we don't fight physics h:SetStateEnabled(Enum.HumanoidStateType.Running, false) -- Smooth homing charge (lerp position, don't snap!) for i = 1, 25 do local alpha = i / 25 local targetPos = tr.Position + Vector3.new(0, 3, 0) local newPos = r.Position:Lerp(targetPos, alpha) -- Face target and tilt head-first local lookCFrame = CFrame.new(newPos, tr.Position) r.CFrame = lookCFrame * CFrame.Angles(math.rad(-90 * alpha), 0, 0) wait(0.03) end -- YEET! flingVictim(target.Character) -- Reset properly wait(0.3) h:SetStateEnabled(Enum.HumanoidStateType.Running, true) r.CFrame = CFrame.new(r.Position, r.Position + r.CFrame.LookVector) animState = "idle" end) print("🤪 SILLY GOOBER HUB v4.0 - FIXED & STABLE! 🤪") print("Jump for barrel roll! Equip tool to tackle random players!")