From 10e7ccaf1e8347b5391a1cce59004132efc3da52 Mon Sep 17 00:00:00 2001 From: ostrichman1 <130143996+ostrichman1@users.noreply.github.com> Date: Wed, 15 Apr 2026 22:58:15 +0100 Subject: [PATCH 01/12] Fix :clown command --- MainModule/Server/Commands/Fun.luau | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/MainModule/Server/Commands/Fun.luau b/MainModule/Server/Commands/Fun.luau index 64f0cea633..c06394614e 100644 --- a/MainModule/Server/Commands/Fun.luau +++ b/MainModule/Server/Commands/Fun.luau @@ -1594,11 +1594,7 @@ return function(Vargs, env) Position = UDim2.fromScale(0, 0); }) if p and p.Parent == service.Players then - if service.RunService:IsStudio() then - p:Kick("You were saved by the Studio environment.") - else - service.TeleportService:Teleport(527443962, p, nil, bg) - end + p:Kick("You were taken...") end task.wait(0.5) pcall(function() van:Destroy() end) From cbf7754e86159d9259098862befe5f7e621f2f0e Mon Sep 17 00:00:00 2001 From: ostrichman1 <130143996+ostrichman1@users.noreply.github.com> Date: Wed, 15 Apr 2026 23:29:53 +0100 Subject: [PATCH 02/12] Modify :vibrate, :glitch, :ghostglitch commands --- MainModule/Server/Commands/Fun.luau | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/MainModule/Server/Commands/Fun.luau b/MainModule/Server/Commands/Fun.luau index c06394614e..1a4f31b104 100644 --- a/MainModule/Server/Commands/Fun.luau +++ b/MainModule/Server/Commands/Fun.luau @@ -20,7 +20,12 @@ return function(Vargs, env) Fun = true; AdminLevel = "Moderators"; Function = function(plr: Player, args: {string}) - local num = tostring(args[2] or 15) + local num = tonumber(args[2]) or 15 + + if num <= 0 then + error("Intensity must be above 0") + end + local scr = Deps.Assets.Glitcher:Clone() scr.Num.Value = num scr.Type.Value = "trippy" @@ -46,7 +51,12 @@ return function(Vargs, env) Fun = true; AdminLevel = "Moderators"; Function = function(plr: Player, args: {string}) - local num = tostring(args[2] or 150) + local num = tonumber(args[2]) or 150 + + if num <= 0 then + error("Intensity must be above 0") + end + local scr = Deps.Assets.Glitcher:Clone() scr.Num.Value = num scr.Type.Value = "ghost" @@ -72,7 +82,12 @@ return function(Vargs, env) Fun = true; AdminLevel = "Moderators"; Function = function(plr: Player, args: {string}) - local num = tostring(args[2] or 0.1) + local num = tonumber(args[2]) or 0.1 + + if num <= 0 then + error("Intensity must be above 0") + end + local scr = Deps.Assets.Glitcher:Clone() scr.Num.Value = num scr.Type.Value = "vibrate" From ee8807857dca6b8ca7aa08f3dde72ceb6f4fad1b Mon Sep 17 00:00:00 2001 From: ostrichman1 <130143996+ostrichman1@users.noreply.github.com> Date: Wed, 15 Apr 2026 23:35:10 +0100 Subject: [PATCH 03/12] Fix :material --- MainModule/Server/Commands/Fun.luau | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/MainModule/Server/Commands/Fun.luau b/MainModule/Server/Commands/Fun.luau index 1a4f31b104..210db6a8c4 100644 --- a/MainModule/Server/Commands/Fun.luau +++ b/MainModule/Server/Commands/Fun.luau @@ -56,7 +56,7 @@ return function(Vargs, env) if num <= 0 then error("Intensity must be above 0") end - + local scr = Deps.Assets.Glitcher:Clone() scr.Num.Value = num scr.Type.Value = "ghost" @@ -800,12 +800,12 @@ return function(Vargs, env) local chosenMat = args[2] or "Plastic" if not args[2] then - Functions.Hint("Material wasn't supplied; Plastic was chosen instead") + Functions.Hint("Material wasn't supplied; Plastic was chosen instead", {plr}) elseif tonumber(args[2]) then chosenMat = table.find(mats, tonumber(args[2])) end - if not chosenMat then + if not chosenMat or not Enum.Material:FromName(chosenMat) then Remote.MakeGui(plr, "Output", {Title = "Error"; Message = "Invalid material choice";}) return end From 00287b140a672f77a40163c29260657a1c96493d Mon Sep 17 00:00:00 2001 From: ostrichman1 <130143996+ostrichman1@users.noreply.github.com> Date: Wed, 15 Apr 2026 23:37:30 +0100 Subject: [PATCH 04/12] Modify :neon --- MainModule/Server/Commands/Fun.luau | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MainModule/Server/Commands/Fun.luau b/MainModule/Server/Commands/Fun.luau index 210db6a8c4..5ff6a9e855 100644 --- a/MainModule/Server/Commands/Fun.luau +++ b/MainModule/Server/Commands/Fun.luau @@ -825,7 +825,7 @@ return function(Vargs, env) Neon = { Prefix = Settings.Prefix; Commands = {"neon", "neonify"}; - Args = {"player", "(optional)color"}; + Args = {"player", "color"}; Description = "Make the target neon"; Fun = true; AdminLevel = "Moderators"; From 30d68b4dfe46325697efbdb0bf96a8dcb57dbec4 Mon Sep 17 00:00:00 2001 From: ostrichman1 <130143996+ostrichman1@users.noreply.github.com> Date: Wed, 15 Apr 2026 23:45:24 +0100 Subject: [PATCH 05/12] Modify :forest --- MainModule/Server/Commands/Fun.luau | 1 + 1 file changed, 1 insertion(+) diff --git a/MainModule/Server/Commands/Fun.luau b/MainModule/Server/Commands/Fun.luau index 5ff6a9e855..4c93ea1bf3 100644 --- a/MainModule/Server/Commands/Fun.luau +++ b/MainModule/Server/Commands/Fun.luau @@ -1411,6 +1411,7 @@ return function(Vargs, env) for i, p in players do if not Admin.CheckAuthority(plr, p, "timeout") then table.remove(players, i) + Functions.Hint(`Unable to send {service.FormatPlayer(p)} to The Forest (insufficient permission level)`, {plr}) end end service.TeleportService:TeleportAsync(209424751, players) From 2d7a2e21a029aab7c53ad22f5a1baa275ddecb8a Mon Sep 17 00:00:00 2001 From: ostrichman1 <130143996+ostrichman1@users.noreply.github.com> Date: Wed, 15 Apr 2026 23:53:15 +0100 Subject: [PATCH 06/12] Fix :rainbowify --- MainModule/Server/Commands/Fun.luau | 27 +------------------ .../Dependencies/Assets/Rainbowify.client.lua | 21 +++++++++++++++ .../Dependencies/Assets/Rainbowify.meta.json | 5 ++++ 3 files changed, 27 insertions(+), 26 deletions(-) create mode 100644 MainModule/Server/Dependencies/Assets/Rainbowify.client.lua create mode 100644 MainModule/Server/Dependencies/Assets/Rainbowify.meta.json diff --git a/MainModule/Server/Commands/Fun.luau b/MainModule/Server/Commands/Fun.luau index 4c93ea1bf3..f7946ac0c2 100644 --- a/MainModule/Server/Commands/Fun.luau +++ b/MainModule/Server/Commands/Fun.luau @@ -670,32 +670,7 @@ return function(Vargs, env) Fun = true; AdminLevel = "Moderators"; Function = function(plr: Player, args: {string}) - local scr = Core.NewScript("ClientScript", [[ - local restore = {} - local tween = game:GetService("TweenService") - - repeat - task.wait() - local char = script.Parent.Parent - local clr = BrickColor.random() - for i, v in next, char:GetChildren() do - if v:IsA("BasePart") and v.Name ~= "HumanoidRootPart" then - if not restore[v] then - restore[v] = v.Color - end - v.Color = Color3.fromHSV(os.clock() % 1, 1, 1) - end - end - until not char or script.Name == "Stop" -- signal to unrainbowify - - if script.Name == "Stop" then - for item, clr in next, restore do - item.Color = clr -- restore old colors - end - script:Destroy() - end - ]], true) - scr.Name = "Rainbowify" + local scr = Deps.Assets.Rainbowify for i, v in service.GetPlayers(plr, args[1]) do if v.Character and v.Character:FindFirstChild("HumanoidRootPart") then diff --git a/MainModule/Server/Dependencies/Assets/Rainbowify.client.lua b/MainModule/Server/Dependencies/Assets/Rainbowify.client.lua new file mode 100644 index 0000000000..5ab33ee666 --- /dev/null +++ b/MainModule/Server/Dependencies/Assets/Rainbowify.client.lua @@ -0,0 +1,21 @@ +local restore = {} + +repeat + task.wait() + local char = script.Parent.Parent + for i, v in next, char:GetChildren() do + if v:IsA("BasePart") and v.Name ~= "HumanoidRootPart" then + if not restore[v] then + restore[v] = v.Color + end + v.Color = Color3.fromHSV(os.clock() % 1, 1, 1) + end + end +until not char or script.Name == "Stop" -- signal to unrainbowify + +if script.Name == "Stop" then + for item, clr in next, restore do + item.Color = clr -- restore old colors + end + script:Destroy() +end \ No newline at end of file diff --git a/MainModule/Server/Dependencies/Assets/Rainbowify.meta.json b/MainModule/Server/Dependencies/Assets/Rainbowify.meta.json new file mode 100644 index 0000000000..5077db135e --- /dev/null +++ b/MainModule/Server/Dependencies/Assets/Rainbowify.meta.json @@ -0,0 +1,5 @@ +{ + "properties": { + "Disabled": true + } +} From 5f7fce9ee40f1a538ba8d7a31758b7707f01d597 Mon Sep 17 00:00:00 2001 From: ostrichman1 <130143996+ostrichman1@users.noreply.github.com> Date: Thu, 16 Apr 2026 00:01:40 +0100 Subject: [PATCH 07/12] Fix :shrek --- MainModule/Server/Commands/Fun.luau | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/MainModule/Server/Commands/Fun.luau b/MainModule/Server/Commands/Fun.luau index f7946ac0c2..2cc45e514f 100644 --- a/MainModule/Server/Commands/Fun.luau +++ b/MainModule/Server/Commands/Fun.luau @@ -1894,8 +1894,10 @@ return function(Vargs, env) for _, v in service.GetPlayers(plr, args[1]) do Routine(function() if v.Character and v.Character:FindFirstChild("HumanoidRootPart") then - Admin.RunCommand(`{Settings.Prefix}pants`, v.Name, "233373970") - Admin.RunCommand(`{Settings.Prefix}shirt`, v.Name, "133078195") + for _, v in v.Character:GetChildren() do + if v.Name == "Shirt" then local cl = v:Clone() cl.Parent = v.Parent cl.ShirtTemplate = "http://www.roblox.com/asset/?id=133078195" v:Destroy() end + if v.Name == "Pants" then local cl = v:Clone() cl.Parent = v.Parent cl.PantsTemplate = "http://www.roblox.com/asset/?id=233373970" v:Destroy() end + end for _, v in v.Character:GetChildren() do if v:IsA("Accoutrement") or v:IsA("CharacterMesh") then From b48761877c502e8ab7241313a27db80023cee240 Mon Sep 17 00:00:00 2001 From: ostrichman1 <130143996+ostrichman1@users.noreply.github.com> Date: Thu, 16 Apr 2026 00:07:06 +0100 Subject: [PATCH 08/12] Modify :freefall to add default height --- MainModule/Server/Commands/Fun.luau | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/MainModule/Server/Commands/Fun.luau b/MainModule/Server/Commands/Fun.luau index 2cc45e514f..509e65a8e0 100644 --- a/MainModule/Server/Commands/Fun.luau +++ b/MainModule/Server/Commands/Fun.luau @@ -2369,9 +2369,11 @@ return function(Vargs, env) Fun = true; AdminLevel = "Moderators"; Function = function(plr: Player, args: {string}) + local num = tonumber(args[2]) or 200 + for i, v in service.GetPlayers(plr, args[1]) do if v.Character:FindFirstChild("HumanoidRootPart") then - v.Character.HumanoidRootPart.CFrame = v.Character.HumanoidRootPart.CFrame+Vector3.new(0, tonumber(args[2]), 0) + v.Character.HumanoidRootPart.CFrame = v.Character.HumanoidRootPart.CFrame+Vector3.new(0, num, 0) end end end From ca08310ab1b948f2dd2bdf4ca3ed3c8835d012bb Mon Sep 17 00:00:00 2001 From: ostrichman1 <130143996+ostrichman1@users.noreply.github.com> Date: Thu, 16 Apr 2026 00:40:11 +0100 Subject: [PATCH 09/12] Add R15 support to :stickman --- MainModule/Server/Commands/Fun.luau | 65 ++++++++++++++++++++++++----- 1 file changed, 54 insertions(+), 11 deletions(-) diff --git a/MainModule/Server/Commands/Fun.luau b/MainModule/Server/Commands/Fun.luau index 509e65a8e0..29979f891b 100644 --- a/MainModule/Server/Commands/Fun.luau +++ b/MainModule/Server/Commands/Fun.luau @@ -2389,23 +2389,66 @@ return function(Vargs, env) Function = function(plr: Player, args: {string}) for kay, player in service.GetPlayers(plr, args[1]) do local m = player.Character + local r6 = m:FindFirstChild("Torso") ~= nil + + if r6 then + if m.Head:FindFirstChild("Mesh") then + m.Head.Mesh:Destroy() + end + + local b = service.New("SpecialMesh") + b.Parent = m.Head + b.MeshType = "Sphere" + b.Scale = Vector3.new(0.5, 1, 1) + + m.Head.Transparency = 0 + m.Head.BrickColor = BrickColor.new(0, 0, 0) + else + local w = service.New("WeldConstraint") + local s = service.New("Part") + s.Anchored = false + s.Shape = Enum.PartType.Ball + s.Size = Vector3.new(1, 1, 1) + s.BrickColor = BrickColor.new(0, 0, 0) + s.Material = Enum.Material.SmoothPlastic + + w.Part0 = s + w.Part1 = m.Head + w.Parent = s + + s.CFrame = m.Head.CFrame + s.Parent = m.Head + + local f = service.New("Decal") + f.Parent = s + f.Texture = "rbxasset://textures/face.png" + + m.Head.Transparency = 1 + end + + local whitelistedLimbs = { + "Head", + "LeftUpperArm", + "RightUpperArm", + "LeftLowerLeg", + "RightLowerLeg" + } + for i, v in m:GetChildren() do - if v:IsA("Part") then + if v:IsA("BasePart") then + if v.Name ~= "Head" then + v.Transparency = 1 + end + + if not r6 and not table.find(whitelistedLimbs, v.Name) then + continue + end + local s = service.New("SelectionPartLasso") s.Parent = m.HumanoidRootPart s.Part = v s.Humanoid = m.Humanoid s.Color = BrickColor.new(0, 0, 0) - v.Transparency = 1 - m.Head.Transparency = 0 - if m.Head:FindFirstChild("Mesh") then - m.Head.Mesh:Destroy() - end - local b = service.New("SpecialMesh") - b.Parent = m.Head - b.MeshType = "Sphere" - b.Scale = Vector3.new(0.5, 1, 1) - m.Head.BrickColor = BrickColor.new("Black") end end end From d35dee14defebb2cdae3140b642a28d1b98fc76a Mon Sep 17 00:00:00 2001 From: ostrichman1 <130143996+ostrichman1@users.noreply.github.com> Date: Thu, 16 Apr 2026 12:47:22 +0100 Subject: [PATCH 10/12] Fix R15 support for :dog --- MainModule/Server/Commands/Fun.luau | 55 +++++++++++++++++------------ 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/MainModule/Server/Commands/Fun.luau b/MainModule/Server/Commands/Fun.luau index 29979f891b..471bbf021a 100644 --- a/MainModule/Server/Commands/Fun.luau +++ b/MainModule/Server/Commands/Fun.luau @@ -2680,13 +2680,12 @@ return function(Vargs, env) plr.Character.Pants.Parent = plr.Character.HumanoidRootPart end local char, torso, ca1, ca2 = plr.Character, plr.Character:FindFirstChild("Torso") or plr.Character:FindFirstChild("UpperTorso"), CFrame.Angles(0, math.rad(90), 0), CFrame.Angles(0, math.rad(-90), 0) - local head = char:FindFirstChild("Head") torso.Transparency = 1 for _, v in torso:GetChildren() do if v:IsA("Motor6D") then - local lc0 = service.New("CFrameValue", {Name = "LastC0";Value = v.C0;Parent = v}) + service.New("CFrameValue", {Name = "LastC0";Value = v.C0;Parent = v}) end end @@ -2704,7 +2703,7 @@ return function(Vargs, env) }) local attachment = service.New("Attachment", {Parent = st}) - local bf = service.New("VectorForce", {Force = Vector3.new(0, 2e3, 0), Parent = st, Attachment0 = attachment}) + service.New("VectorForce", {Force = Vector3.new(0, 2e3, 0), Parent = st, Attachment0 = attachment}) st.CFrame = torso.CFrame st.Parent = char @@ -2717,6 +2716,31 @@ return function(Vargs, env) end end elseif human.RigType == Enum.HumanoidRigType.R15 then + local bypass = {} + + for _, animType in plr.Character.Animate:GetChildren() do + if not animType:IsA("StringValue") then + continue + end + + for _, anim in animType:GetChildren() do + local allowed = {"run", "walk"} + + if table.find(allowed, animType.Name) then + table.insert(bypass, anim.AnimationId) + continue + end + + anim.AnimationId = "rbxassetid://0" + end + end + + for _, anim in plr.Character.Humanoid.Animator:GetPlayingAnimationTracks() do + if not table.find(bypass, anim.Animation.AnimationId) then + anim:Stop() + end + end + if plr.Character:FindFirstChild("Shirt") then plr.Character.Shirt.Parent = plr.Character.HumanoidRootPart end @@ -2728,25 +2752,12 @@ return function(Vargs, env) uppertorso.Transparency = 1 lowertorso.Transparency = 1 + head.NeckRigAttachment.CFrame = CFrame.new(0, 1, 2) * CFrame.Angles(0, 0, 0) - for _, v in uppertorso:GetChildren() do - if v:IsA("Motor6D") then - local lc0 = service.New("CFrameValue", {Name = "LastC0";Value = v.C0;Parent = v}) - end - end - - for _, v in lowertorso:GetChildren() do - if v:IsA("Motor6D") then - local lc0 = service.New("CFrameValue", {Name = "LastC0";Value = v.C0;Parent = v}) - end - end - - head.Neck.C0 = CFrame.new(0, -.5, -2) * CFrame.Angles(0, 0, 0) - - char.RightUpperArm["RightShoulder"].C0 = CFrame.new(.5, -1, -1.5) * ca1 - char.LeftUpperArm["LeftShoulder"].C0 = CFrame.new(-.5, -1, -1.5) * ca2 - char.RightUpperLeg["RightHip"].C0 = CFrame.new(1, -0.3, 1.5) * ca1 - char.LeftUpperLeg["LeftHip"].C0 = CFrame.new(-1, -0.3, 1.5) * ca2 + char.UpperTorso.RightShoulderRigAttachment.CFrame = CFrame.new(.5, -1, -1.5) * ca1 + char.UpperTorso.LeftShoulderRigAttachment.CFrame = CFrame.new(-.5, -1, -1.5) * ca2 + char.LowerTorso.RightHipRigAttachment.CFrame = CFrame.new(1, 0.2, 1.5) * ca1 + char.LowerTorso.LeftHipRigAttachment.CFrame = CFrame.new(-1, 0.2, 1.5) * ca2 local st = service.New("Seat", { Name = "Adonis_Torso", TopSurface = 0, @@ -2755,7 +2766,7 @@ return function(Vargs, env) }) local attachment = service.New("Attachment", {Parent = st}) - local bf = service.New("VectorForce", {Force = Vector3.new(0, 2e3, 0), Parent = st, Attachment0 = attachment}) + service.New("VectorForce", {Force = Vector3.new(0, 2e3, 0), Parent = st, Attachment0 = attachment}) st.CFrame = uppertorso.CFrame st.Parent = char From cc5cb130d6bd0c8bf49806ed8312b1fd24be992e Mon Sep 17 00:00:00 2001 From: ostrichman1 <130143996+ostrichman1@users.noreply.github.com> Date: Thu, 16 Apr 2026 12:53:06 +0100 Subject: [PATCH 11/12] Removed optional tags from arguments for :flatten and :oldflatten --- MainModule/Server/Commands/Fun.luau | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MainModule/Server/Commands/Fun.luau b/MainModule/Server/Commands/Fun.luau index 471bbf021a..4e53f6adbd 100644 --- a/MainModule/Server/Commands/Fun.luau +++ b/MainModule/Server/Commands/Fun.luau @@ -3378,7 +3378,7 @@ return function(Vargs, env) Flatten = { Prefix = Settings.Prefix; Commands = {"flatten", "2d", "flat"}; - Args = {"player", "optional num"}; + Args = {"player", "num"}; Description = "Flatten."; Fun = true; AdminLevel = "Moderators"; @@ -3500,7 +3500,7 @@ return function(Vargs, env) OldFlatten = { Prefix = Settings.Prefix; Commands = {"oldflatten", "o2d", "oflat"}; - Args = {"player", "optional num"}; + Args = {"player", "num"}; Description = "Old Flatten. Went lazy on this one."; Fun = true; AdminLevel = "Moderators"; From 9d4801c1ce165bdbe0c6e4f4e1af139dce8a76f9 Mon Sep 17 00:00:00 2001 From: ostrichman1 <130143996+ostrichman1@users.noreply.github.com> Date: Mon, 27 Apr 2026 21:30:33 +0100 Subject: [PATCH 12/12] Minor modifcations to fun commands --- MainModule/Server/Commands/Fun.luau | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/MainModule/Server/Commands/Fun.luau b/MainModule/Server/Commands/Fun.luau index 4e53f6adbd..61095696cd 100644 --- a/MainModule/Server/Commands/Fun.luau +++ b/MainModule/Server/Commands/Fun.luau @@ -22,9 +22,7 @@ return function(Vargs, env) Function = function(plr: Player, args: {string}) local num = tonumber(args[2]) or 15 - if num <= 0 then - error("Intensity must be above 0") - end + assert(num > 0, "Intensity must be above 0") local scr = Deps.Assets.Glitcher:Clone() scr.Num.Value = num @@ -53,9 +51,7 @@ return function(Vargs, env) Function = function(plr: Player, args: {string}) local num = tonumber(args[2]) or 150 - if num <= 0 then - error("Intensity must be above 0") - end + assert(num > 0, "Intensity must be above 0") local scr = Deps.Assets.Glitcher:Clone() scr.Num.Value = num @@ -84,9 +80,7 @@ return function(Vargs, env) Function = function(plr: Player, args: {string}) local num = tonumber(args[2]) or 0.1 - if num <= 0 then - error("Intensity must be above 0") - end + assert(num > 0, "Intensity must be above 0") local scr = Deps.Assets.Glitcher:Clone() scr.Num.Value = num @@ -2369,11 +2363,9 @@ return function(Vargs, env) Fun = true; AdminLevel = "Moderators"; Function = function(plr: Player, args: {string}) - local num = tonumber(args[2]) or 200 - for i, v in service.GetPlayers(plr, args[1]) do if v.Character:FindFirstChild("HumanoidRootPart") then - v.Character.HumanoidRootPart.CFrame = v.Character.HumanoidRootPart.CFrame+Vector3.new(0, num, 0) + v.Character.HumanoidRootPart.CFrame = v.Character.HumanoidRootPart.CFrame+Vector3.new(0, tonumber(args[2]) or 200, 0) end end end