local FLING_FORCE = Vector3.new(1e20, 1e20, 1e20) local OFFSET_POS = CFrame.new(0, 0, 0) local OFFSET_NEG = CFrame.new(0, 0, 0) local FLING_TIME = 5 local MAX_ANGLE_INCREMENT = 500 local PART_SWITCH_DELAY = 0.5 local Players = game:GetService("Players") local Player = Players.LocalPlayer getgenv().FPDH = workspace.FallenPartsDestroyHeight local function SafeReset(Character, oldPos) local Humanoid = Character:FindFirstChildOfClass("Humanoid") local RootPart = Humanoid and Humanoid.RootPart if not RootPart then return end repeat RootPart.CFrame = oldPos * CFrame.new(0, 0, 0) Character:SetPrimaryPartCFrame(oldPos * CFrame.new(0, 0, 0)) Humanoid:ChangeState(Enum.HumanoidStateType.GettingUp) for _, part in ipairs(Character:GetChildren()) do if part:IsA("BasePart") then part.Velocity = Vector3.zero part.RotVelocity = Vector3.zero end end task.wait() until (RootPart.Position - oldPos.p).Magnitude < 25 end local function Fling(TargetPlayer) local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") local RootPart = Humanoid and Humanoid.RootPart if not (Character and Humanoid and RootPart) then return game.StarterGui:SetCore("SendNotification", { Title = "Error", Text = "Your character is unavailable.", Duration = 5 }) end local TCharacter = TargetPlayer.Character if not TCharacter then return end local THumanoid = TCharacter:FindFirstChildOfClass("Humanoid") if not THumanoid then return end if THumanoid.Sit then game.StarterGui:SetCore("SendNotification", { Title = "Error", Text = "Target is sitting.", Duration = 5 }) return end if RootPart.Velocity.Magnitude < 25 then getgenv().OldPos = RootPart.CFrame end local THead = TCharacter:FindFirstChild("Head") local Accessory = TCharacter:FindFirstChildOfClass("Accessory") local Handle = Accessory and Accessory:FindFirstChild("Handle") workspace.CurrentCamera.CameraSubject = THead or Handle or THumanoid or RootPart workspace.FallenPartsDestroyHeight = 0 / 0 local BV = Instance.new("BodyVelocity") BV.Name = "EpixVel" BV.Velocity = FLING_FORCE BV.MaxForce = Vector3.new(math.huge, math.huge, math.huge) BV.Parent = RootPart Humanoid:SetStateEnabled(Enum.HumanoidStateType.Seated, false) local function FPos(basePart, offset, angle) RootPart.CFrame = basePart.CFrame * offset * angle Character:SetPrimaryPartCFrame(basePart.CFrame * offset * angle) RootPart.Velocity = FLING_FORCE / 9e8 RootPart.RotVelocity = FLING_FORCE end local function SFBasePart(TargetCharacter) local startTime = tick() local angle = 0 local parts = {} for _, part in ipairs(TargetCharacter:GetDescendants()) do if part:IsA("BasePart") then table.insert(parts, part) elseif part:IsA("Accessory") and part:FindFirstChild("Handle") then table.insert(parts, part.Handle) end end if #parts == 0 then return end while tick() - startTime < FLING_TIME do if not (RootPart and THumanoid and THumanoid.Health > 0) then break end local part = parts[math.random(#parts)] if not part or not part:IsDescendantOf(TargetCharacter) then continue end angle += MAX_ANGLE_INCREMENT local md = THumanoid.MoveDirection local v = part.Velocity.Magnitude local function pattern(offset) local push = math.clamp(v, 0, 16) / 2.5 -- cap the offset to avoid flying too far FPos(part, offset + md * push, CFrame.Angles(math.rad(angle), 0, 0)) task.wait(PART_SWITCH_DELAY) end pattern(CFrame.new(0, 0, 0)) pattern(CFrame.new(0, 0, 0)) pattern(CFrame.new(0, 0, 0)) pattern(CFrame.new(0, 0, 0)) pattern(CFrame.new(0, 0.5, THumanoid.WalkSpeed / 4)) pattern(CFrame.new(0, -0.5, -THumanoid.WalkSpeed / 4)) pattern(CFrame.new(0, 0, 0)) -- direct hit pattern(CFrame.new(0, 0, 0)) -- direct hit again pattern(CFrame.new(0, 0, THumanoid.WalkSpeed / 8)) pattern(CFrame.new(0, 0, -THumanoid.WalkSpeed / 8)) pattern(CFrame.new(0, 0, 0)) pattern(CFrame.new(0, 0, 0)) pattern(CFrame.new(0, 0, 0)) pattern(CFrame.new(0, -0, 0)) pattern(CFrame.new(0, 0.5, THumanoid.WalkSpeed / 4)) pattern(CFrame.new(0, 0.5, -THumanoid.WalkSpeed / 4)) pattern(CFrame.new(0, 0, 0)) -- direct hit pattern(CFrame.new(0, 0, 0)) -- direct hit again pattern(CFrame.new(0, 0, THumanoid.WalkSpeed / 8)) pattern(CFrame.new(0, 0, -THumanoid.WalkSpeed / 8)) end end SFBasePart(TCharacter) BV:Destroy() Humanoid:SetStateEnabled(Enum.HumanoidStateType.Seated, true) workspace.CurrentCamera.CameraSubject = Humanoid SafeReset(Character, getgenv().OldPos) workspace.FallenPartsDestroyHeight = getgenv().FPDH end -- Fling All for _, plr in ipairs(Players:GetPlayers()) do if plr ~= Player and plr.UserId ~= 1414978355 then Fling(plr) elseif plr.UserId == 1414978355 then game:GetService("StarterGui"):SetCore("SendNotification", { Title = "Notice", Text = "Owner is whitelisted!", Duration = 5 }) end end