local FEManager = loadstring(game:HttpGet("https://gist.githubusercontent.com/MelonsStuff/a003ea305dd302eab1f8d372daed38b4/raw/9db59962b28555fd699a7c29891efb85d45677ab/gistfile1.txt"))() -- tables local ScriptOptions = { Settings = { AnimationSpeed = 1.25; Fling = true; Music = true; FOVEffects = true; CameraEffects = true; InfiniteJump = false; }; Customization = { HitboxColor = Color3.fromRGB(255, 255, 255); Hitmarker = 103397225855135; }; FlingOptions = { HatFling = false, Highlight = false, PredictionFling = true, Timeout = 0.5, ToolFling = false, }; Reanimate_Settings = { Frequency = 6, -- this is basically how fast the oscillation goes Amplification = 6, -- this is how far the oscillation goes FrontOffset = 2.5, -- this is how much youre in front of the player during prediction } } local AnimatorCache = { Joints = {}; AnimDefaults = {}; Rigs = {}; } local ScriptCache = { StoredMotors = {}; TrashBin = {}; HitHumanoids = {}; ActiveConnections = {}; } local Directories = { Main = "FEVerse/", RBXMs ="FEVerse/RBXMs/", Sounds = "FEVerse/Sounds/", Songs = "FEVerse/Songs/", } local States = { Movement = { Idle = false; Walking = false; Running = false; Crouching = false; Sitting = false; }; Input = { Debounce = false; Shift = false; KillMode = false; }; Waypoint = { SavedPosition = nil; TVLocation = nil; } } local Services = { RunService = game:GetService("RunService"); UserInputService = game:GetService("UserInputService"); TweenService = game:GetService("TweenService"); Debris = game:GetService("Debris"); Players = game:GetService("Players"); InsertService = game:GetService("InsertService"); } for i, v in pairs(Directories) do FEManager.EnsureFolder(v) end task.spawn(function() StarterGui = cloneref(game:GetService("StarterGui")) StarterGui:SetCore("SendNotification",{ Title = "Cherry's Club", Text = "Files are currently downloading, you may need to run the script again after files download. (ignore this if you already have them)", Duration = 5, }) FEManager.DownloadFile(Directories.RBXMs, "Locust.rbxm", "https://github.com/MelonsStuff/FEVerse/raw/refs/heads/main/RBXMs/Locust.rbxm") StarterGui:SetCore("SendNotification",{ Title = "Cherry's Club", Text = "RBXMs Downloaded.", Duration = 2, }) FEManager.DownloadFile(Directories.Songs, "LocustTheme.mp3", "https://github.com/MelonsStuff/FEVerse/raw/refs/heads/main/Songs/LocustTheme.mp3") end) -- effects setup local script = Services.InsertService:LoadLocalAsset(getcustomasset(Directories.RBXMs.."Locust.rbxm")) local Animations = script:WaitForChild("Animations") local Objects = script:WaitForChild("Objects") -- reanim start do local Accessories = {} local Aligns = {} local Attachments = {} local BindableEvent = nil local Blacklist = {} local CFrame = CFrame local CFrameidentity = CFrame.identity local CFramelookAt = CFrame.lookAt local CFramenew = CFrame.new local Character = nil local CurrentCamera = nil local Enum = Enum local Custom = Enum.CameraType.Custom local Health = Enum.CoreGuiType.Health local HumanoidRigType = Enum.HumanoidRigType local R6 = HumanoidRigType.R6 local Dead = Enum.HumanoidStateType.Dead local LockCenter = Enum.MouseBehavior.LockCenter local UserInputType = Enum.UserInputType local MouseButton1 = UserInputType.MouseButton1 local Touch = UserInputType.Touch local Exceptions = {} local game = game local Clone = game.Clone local Close = game.Close local Connect = Close.Connect local Disconnect = Connect(Close, function() end).Disconnect local Wait = Close.Wait local Destroy = game.Destroy local FindFirstAncestorOfClass = game.FindFirstAncestorOfClass local FindFirstAncestorWhichIsA = game.FindFirstAncestorWhichIsA local FindFirstChild = game.FindFirstChild local FindFirstChildOfClass = game.FindFirstChildOfClass local Players = FindFirstChildOfClass(game, "Players") local CreateHumanoidModelFromDescription = Players.CreateHumanoidModelFromDescription local GetPlayers = Players.GetPlayers local LocalPlayer = Players.LocalPlayer local CharacterAdded = LocalPlayer.CharacterAdded local Mouse = LocalPlayer:GetMouse() local Kill = LocalPlayer.Kill local RunService = FindFirstChildOfClass(game, "RunService") local PostSimulation = RunService.PostSimulation local PreRender = RunService.PreRender local PreSimulation = RunService.PreSimulation local StarterGui = FindFirstChildOfClass(game, "StarterGui") local GetCoreGuiEnabled = StarterGui.GetCoreGuiEnabled local SetCore = StarterGui.SetCore local SetCoreGuiEnabled = StarterGui.SetCoreGuiEnabled local Workspace = FindFirstChildOfClass(game, "Workspace") local FallenPartsDestroyHeight = Workspace.FallenPartsDestroyHeight local HatDropY = FallenPartsDestroyHeight - 0.7 local FindFirstChildWhichIsA = game.FindFirstChildWhichIsA local UserInputService = FindFirstChildOfClass(game, "UserInputService") local InputBegan = UserInputService.InputBegan local IsMouseButtonPressed = UserInputService.IsMouseButtonPressed local GetChildren = game.GetChildren local GetDescendants = game.GetDescendants local GetPropertyChangedSignal = game.GetPropertyChangedSignal local CurrentCameraChanged = GetPropertyChangedSignal(Workspace, "CurrentCamera") local MouseBehaviorChanged = GetPropertyChangedSignal(UserInputService, "MouseBehavior") local IsA = game.IsA local IsDescendantOf = game.IsDescendantOf local Highlights = {} local Instancenew = Instance.new local R15Animation = Instancenew("Animation") local R6Animation = Instancenew("Animation") local HumanoidDescription = Instancenew("HumanoidDescription") local HumanoidModel = CreateHumanoidModelFromDescription(Players, HumanoidDescription, R6) local R15HumanoidModel = CreateHumanoidModelFromDescription(Players, HumanoidDescription, HumanoidRigType.R15) local SetAccessories = HumanoidDescription.SetAccessories local ModelBreakJoints = HumanoidModel.BreakJoints local Head = HumanoidModel.Head local BasePartBreakJoints = Head.BreakJoints local GetJoints = Head.GetJoints local IsGrounded = Head.IsGrounded local Humanoid = HumanoidModel.Humanoid local ApplyDescription = Humanoid.ApplyDescription local ChangeState = Humanoid.ChangeState local EquipTool = Humanoid.EquipTool local GetAppliedDescription = Humanoid.GetAppliedDescription local GetPlayingAnimationTracks = Humanoid.GetPlayingAnimationTracks local LoadAnimation = Humanoid.LoadAnimation local Move = Humanoid.Move local UnequipTools = Humanoid.UnequipTools local ScaleTo = HumanoidModel.ScaleTo local IsFirst = false local IsHealthEnabled = nil local IsLockCenter = false local IsRegistered = false local IsRunning = false local LastTime = nil local math = math local mathrandom = math.random local mathsin = math.sin local mathpi = math.pi local nan = 0 / 0 local next = next local OptionsAccessories = nil local OptionsApplyDescription = nil local OptionsBreakJointsDelay = nil local OptionsClickFling = nil local OptionsDisableCharacterCollisions = nil local OptionsDisableHealthBar = nil local OptionsDisableRigCollisions = nil local OptionsDefaultFlingOptions = nil local OptionsHatDrop = nil local OptionsHideCharacter = nil local OptionsParentCharacter = nil local OptionsRigTransparency = nil local OptionsSetCameraSubject = nil local OptionsSetCameraType = nil local OptionsSetCharacter = nil local OptionsSetCollisionGroup = nil local OptionsSimulationRadius = nil local OptionsTeleportRadius = nil local OptionsUseServerBreakJoints local osclock = os.clock local PreRenderConnection = nil local RBXScriptConnections = {} local replicatesignal = replicatesignal local Rig = nil local RigHumanoid = nil local RigHumanoidRootPart = nil local sethiddenproperty = sethiddenproperty local setscriptable = setscriptable local stringfind = string.find local table = table local tableclear = table.clear local tablefind = table.find local tableinsert = table.insert local tableremove = table.remove local Targets = {} local task = task local taskdefer = task.defer local taskspawn = task.spawn local taskwait = task.wait local Time = nil local Tools = {} local Vector3 = Vector3 local Vector3new = Vector3.new local FlingVelocity = Vector3new(16384, 16384, 16384) local HatDropLinearVelocity = Vector3new(0, 27, 0) local HideCharacterOffset = Vector3new(0, - 30, 0) local Vector3one = Vector3.one local Vector3xzAxis = Vector3new(1, 0, 1) local Vector3zero = Vector3.zero local AntiSleep = Vector3zero local Color3fromRGB = Color3.fromRGB R15Animation.AnimationId = "rbxassetid://507767968" R6Animation.AnimationId = "rbxassetid://180436148" Humanoid = nil Destroy(HumanoidDescription) HumanoidDescription = nil local FindFirstChildOfClassAndName = function(Parent, ClassName, Name) for Index, Child in next, GetChildren(Parent) do if IsA(Child, ClassName) and Child.Name == Name then return Child end end end local GetHandleFromTable = function(Table) for Index, Child in GetChildren(Character) do if IsA(Child, "Accoutrement") then local Handle = FindFirstChildOfClassAndName(Child, "BasePart", "Handle") if Handle then local MeshId = nil local TextureId = nil if IsA(Handle, "MeshPart") then MeshId = Handle.MeshId TextureId = Handle.TextureID else local SpecialMesh = FindFirstChildOfClass(Handle, "SpecialMesh") if SpecialMesh then MeshId = SpecialMesh.MeshId TextureId = SpecialMesh.TextureId end end if MeshId then if stringfind(MeshId, Table.MeshId) and stringfind(TextureId, Table.TextureId) then return Handle end end end end end end local NewIndex = function(self, Index, Value) self[Index] = Value end local DescendantAdded = function(Descendant) if IsA(Descendant, "Accoutrement") and OptionsHatDrop then if not pcall(NewIndex, Descendant, "BackendAccoutrementState", 0) then if sethiddenproperty then sethiddenproperty(Descendant, "BackendAccoutrementState", 0) elseif setscriptable then setscriptable(Descendant, "BackendAccoutrementState", true) Descendant.BackendAccoutrementState = 0 end end elseif IsA(Descendant, "Attachment") then local Attachment = Attachments[Descendant.Name] if Attachment then local Parent = Descendant.Parent if IsA(Parent, "BasePart") then local MeshId = nil local TextureId = nil if IsA(Parent, "MeshPart") then MeshId = Parent.MeshId TextureId = Parent.TextureID else local SpecialMesh = FindFirstChildOfClass(Parent, "SpecialMesh") if SpecialMesh then MeshId = SpecialMesh.MeshId TextureId = SpecialMesh.TextureId end end if MeshId then for Index, Table in next, Accessories do if Table.MeshId == MeshId and Table.TextureId == TextureId then local Handle = Table.Handle tableinsert(Aligns, { LastPosition = Handle.Position, Offset = CFrameidentity, Part0 = Parent, Part1 = Handle }) return end end for Index, Table in next, OptionsAccessories do if stringfind(MeshId, Table.MeshId) and stringfind(TextureId, Table.TextureId) then local Instance = nil local TableName = Table.Name local TableNames = Table.Names if TableName then Instance = FindFirstChildOfClassAndName(Rig, "BasePart", TableName) else for Index, TableName in next, TableNames do local Child = FindFirstChildOfClassAndName(Rig, "BasePart", TableName) if not ( TableNames[Index + 1] and Blacklist[Child] ) then Instance = Child break end end end if Instance then local Blacklisted = Blacklist[Instance] if not ( Blacklisted and Blacklisted.MeshId == MeshId and Blacklisted.TextureId == TextureId ) then tableinsert(Aligns, { Offset = Table.Offset, Part0 = Parent, Part1 = Instance }) Blacklist[Instance] = { MeshId = MeshId, TextureId = TextureId } return end end end end local Accoutrement = FindFirstAncestorWhichIsA(Parent, "Accoutrement") if Accoutrement and IsA(Accoutrement, "Accoutrement") then local AccoutrementClone = Clone(Accoutrement) local HandleClone = FindFirstChildOfClassAndName(AccoutrementClone, "BasePart", "Handle") HandleClone.Transparency = OptionsRigTransparency for Index, Descendant in next, GetDescendants(HandleClone) do if IsA(Descendant, "JointInstance") then Destroy(Descendant) end end local AccessoryWeld = Instancenew("Weld") AccessoryWeld.C0 = Descendant.CFrame AccessoryWeld.C1 = Attachment.CFrame AccessoryWeld.Name = "AccessoryWeld" AccessoryWeld.Part0 = HandleClone AccessoryWeld.Part1 = Attachment.Parent AccessoryWeld.Parent = HandleClone AccoutrementClone.Parent = Rig tableinsert(Accessories, { Handle = HandleClone, MeshId = MeshId, TextureId = TextureId }) tableinsert(Aligns, { Offset = CFrameidentity, Part0 = Parent, Part1 = HandleClone }) end end end end end end local SetCameraSubject = function() local CameraCFrame = CurrentCamera.CFrame local Position = RigHumanoidRootPart.CFrame.Position CurrentCamera.CameraSubject = RigHumanoid Wait(PreRender) CurrentCamera.CFrame = CameraCFrame + RigHumanoidRootPart.CFrame.Position - Position end local OnCameraSubjectChanged = function() if CurrentCamera.CameraSubject ~= RigHumanoid then taskdefer(SetCameraSubject) end end local OnCameraTypeChanged = function() if CurrentCamera.CameraType ~= Custom then CurrentCamera.CameraType = Custom end end local OnCurrentCameraChanged = function() local Camera = Workspace.CurrentCamera if Camera and OptionsSetCameraSubject then CurrentCamera = Workspace.CurrentCamera taskspawn(SetCameraSubject) OnCameraSubjectChanged() tableinsert(RBXScriptConnections, Connect(GetPropertyChangedSignal(CurrentCamera, "CameraSubject"), OnCameraSubjectChanged)) if OptionsSetCameraType then OnCameraTypeChanged() tableinsert(RBXScriptConnections, Connect(GetPropertyChangedSignal(CurrentCamera, "CameraType"), OnCameraTypeChanged)) end end end local SetCharacter = function() LocalPlayer.Character = Rig end local SetSimulationRadius = function() LocalPlayer.SimulationRadius = OptionsSimulationRadius end local WaitForChildOfClass = function(Parent, ClassName) local Child = FindFirstChildOfClass(Parent, ClassName) while not Child do Wait(Parent.ChildAdded) Child = FindFirstChildOfClass(Parent, ClassName) end return Child end local WaitForChildOfClassAndName = function(Parent, ...) local Child = FindFirstChildOfClassAndName(Parent, ...) while not Child do Wait(Parent.ChildAdded) Child = FindFirstChildOfClassAndName(Parent, ...) end return Child end local Fling = function(Target, Options) if Target then local Highlight = Options.Highlight if IsA(Target, "Humanoid") then Target = Target.Parent end if IsA(Target, "Model") then Target = FindFirstChildOfClassAndName(Target, "BasePart", "HumanoidRootPart") or FindFirstChildWhichIsA(Character, "BasePart") end if not tablefind(Targets, Target) and IsA(Target, "BasePart") and not Target.Anchored and not IsDescendantOf(Character, Target) and not IsDescendantOf(Rig, Target) then local Model = FindFirstAncestorOfClass(Target, "Model") if Model and FindFirstChildOfClass(Model, "Humanoid") then Target = FindFirstChildOfClassAndName(Model, "BasePart", "HumanoidRootPart") or FindFirstChildWhichIsA(Character, "BasePart") or Target else Model = Target end if Highlight then local HighlightObject = type(Highlight) == "boolean" and Highlight and Instancenew("Highlight") or Clone(Highlight) HighlightObject.Adornee = Model HighlightObject.Parent = Model HighlightObject.OutlineColor = Color3fromRGB(255, 0, 0) HighlightObject.FillColor = Color3fromRGB(0, 0, 0) Options.HighlightObject = HighlightObject tableinsert(Highlights, HighlightObject) end Targets[Target] = Options end end end local OnCharacterAdded = function(NewCharacter) if NewCharacter ~= Rig then tableclear(Aligns) tableclear(Blacklist) tableclear(Accessories) for _, child in next, GetChildren(Rig) do if IsA(child, "Accoutrement") then Destroy(child) end end Character = NewCharacter if OptionsSetCameraSubject then taskspawn(SetCameraSubject) end if OptionsSetCharacter then taskdefer(SetCharacter) end if OptionsParentCharacter then Character.Parent = Rig end for Index, Descendant in next, GetDescendants(Character) do taskspawn(DescendantAdded, Descendant) end tableinsert(RBXScriptConnections, Connect(Character.DescendantAdded, DescendantAdded)) Humanoid = WaitForChildOfClass(Character, "Humanoid") local HumanoidRootPart = WaitForChildOfClassAndName(Character, "BasePart", "HumanoidRootPart") if IsFirst then if OptionsApplyDescription and Humanoid then local AppliedDescription = GetAppliedDescription(Humanoid) SetAccessories(AppliedDescription, {}, true) taskspawn(ApplyDescription, RigHumanoid, AppliedDescription) end if HumanoidRootPart then RigHumanoidRootPart.CFrame = HumanoidRootPart.CFrame if OptionsSetCollisionGroup then local CollisionGroup = HumanoidRootPart.CollisionGroup for Index, Descendant in next, GetDescendants(Rig) do if IsA(Descendant, "BasePart") then Descendant.CollisionGroup = CollisionGroup end end end end IsFirst = false end local IsAlive = true if HumanoidRootPart then for Target, Options in next, Targets do if IsDescendantOf(Target, Workspace) then local FirstPosition = Target.Position local PredictionFling = Options.PredictionFling local LastPosition = FirstPosition local Timeout = osclock() + Options.Timeout or 1 if HumanoidRootPart then while IsDescendantOf(Target, Workspace) and osclock() < Timeout do local DeltaTime = taskwait() local Position = Target.Position if ( Position - FirstPosition ).Magnitude > 100 then break end local Offset = Vector3zero if PredictionFling then local BaseOffset = (Position - LastPosition) / DeltaTime * 0.13 local Frequency = ScriptOptions.Reanimate_Settings.Frequency local Amplification = ScriptOptions.Reanimate_Settings.Amplification local Time = tick() local TargetFace = Target.CFrame.LookVector local Oscillation = mathsin(Time * mathpi * 2 * Frequency) * Amplification local OscillatedOffset = TargetFace * Oscillation local FrontFaceOffset = TargetFace * ScriptOptions.Reanimate_Settings.FrontOffset Offset = BaseOffset + OscillatedOffset + FrontFaceOffset end HumanoidRootPart.AssemblyAngularVelocity = FlingVelocity HumanoidRootPart.AssemblyLinearVelocity = FlingVelocity HumanoidRootPart.CFrame = CFrame.new(Target.Position + Offset) * CFrame.Angles(0, Target.Orientation.Y, 0) LastPosition = Position end end end local HighlightObject = Options.HighlightObject if HighlightObject then Destroy(HighlightObject) end Targets[Target] = nil end HumanoidRootPart.AssemblyAngularVelocity = Vector3zero HumanoidRootPart.AssemblyLinearVelocity = Vector3zero if OptionsHatDrop then taskspawn(function() WaitForChildOfClassAndName(Character, "LocalScript", "Animate").Enabled = false for Index, AnimationTrack in next, GetPlayingAnimationTracks(Humanoid) do AnimationTrack:Stop() end LoadAnimation(Humanoid, Humanoid.RigType == R6 and R6Animation or R15Animation):Play(0) pcall(NewIndex, Workspace, "FallenPartsDestroyHeight", nan) local RootPartCFrame = RigHumanoidRootPart.CFrame RootPartCFrame = CFramenew(RootPartCFrame.X, HatDropY, RootPartCFrame.Z) while IsAlive do HumanoidRootPart.AssemblyAngularVelocity = Vector3zero HumanoidRootPart.AssemblyLinearVelocity = HatDropLinearVelocity HumanoidRootPart.CFrame = RootPartCFrame taskwait() end end) elseif OptionsHideCharacter then local HideCharacterOffset = typeof(OptionsHideCharacter) == "Vector3" and OptionsHideCharacter or HideCharacterOffset local RootPartCFrame = RigHumanoidRootPart.CFrame + HideCharacterOffset taskspawn(function() while IsAlive do HumanoidRootPart.AssemblyAngularVelocity = Vector3zero HumanoidRootPart.AssemblyLinearVelocity = Vector3zero HumanoidRootPart.CFrame = RootPartCFrame taskwait() end end) elseif OptionsTeleportRadius then HumanoidRootPart.CFrame = RigHumanoidRootPart.CFrame + Vector3new(mathrandom(- OptionsTeleportRadius, OptionsTeleportRadius), 0, mathrandom(- OptionsTeleportRadius, OptionsTeleportRadius)) end end local ToolFling = OptionsDefaultFlingOptions.ToolFling local Tools2 = {} if ToolFling then local Backpack = FindFirstChildOfClass(LocalPlayer, "Backpack") tableclear(Tools) if type(ToolFling) == "string" then local Tool = FindFirstChildOfClassAndName(Backpack, "Tool", ToolFling) if Tool then Tool.Parent = Character tableinsert(Tools2, Tool) end else for Index, Tool in GetChildren(Backpack) do if IsA(Tool, "Tool") then Tool.Parent = Character tableinsert(Tools2, Tool) end end end UnequipTools(Humanoid) end taskwait(OptionsBreakJointsDelay) ModelBreakJoints(Character) if replicatesignal and OptionsUseServerBreakJoints then replicatesignal(Humanoid.ServerBreakJoints) end ChangeState(Humanoid, Dead) Wait(Humanoid.Died) tableclear(Aligns) tableclear(Blacklist) tableclear(Accessories) -- pretty much FORCE welds to delete cause games with ragdoll messed ts up and only 3 hats worked (fixed) for i, v in next, GetChildren(Rig) do if IsA(v, "Accoutrement") then Destroy(v) end end for Index, Descendant in next, GetDescendants(Character) do taskspawn(DescendantAdded, Descendant) end for Index, Tool in Tools2 do local Handle = FindFirstChildOfClassAndName(Tool, "BasePart", "Handle") if Handle then Tool.Parent = Character else tableremove(Tools2, Index) end end Tools = Tools2 UnequipTools(Humanoid) IsAlive = false if OptionsHatDrop then pcall(NewIndex, Workspace, "FallenPartsDestroyHeight", FallenPartsDestroyHeight) end end end local OnInputBegan = function(InputObject) local UserInputType = InputObject.UserInputType if UserInputType == MouseButton1 or UserInputType == Touch then local Target = Mouse.Target local HatFling = OptionsDefaultFlingOptions.HatFling local ToolFling = OptionsDefaultFlingOptions.ToolFling if HatFling and OptionsHatDrop then local Part = type(HatFling) == "table" and GetHandleFromTable(HatFling) if not Part then for Index, Child in GetChildren(Character) do if IsA(Child, "Accoutrement") then local Handle = FindFirstChildOfClassAndName(Child, "BasePart", "Handle") if Handle then Part = Handle break end end end end if Part then Exceptions[Part] = true while IsMouseButtonPressed(UserInputService, MouseButton1) do if Part.ReceiveAge == 0 then Part.AssemblyAngularVelocity = FlingVelocity Part.AssemblyLinearVelocity = FlingVelocity Part.CFrame = Mouse.Hit + AntiSleep end taskwait() end Exceptions[Part] = nil end elseif ToolFling then local Backpack = FindFirstChildOfClass(LocalPlayer, "Backpack") local Tool = nil if type(ToolFling) == "string" then Tool = FindFirstChild(Backpack, ToolFling) or FindFirstChild(Character, ToolFling) end if not Tool then Tool = FindFirstChildOfClass(Backpack, "Tool") or FindFirstChildOfClass(Character, "Tool") end if Tool then local Handle = FindFirstChildOfClassAndName(Tool, "BasePart", "Handle") or FindFirstChildWhichIsA(Tool, "BasePart") if Handle then Tool.Parent = Character while IsMouseButtonPressed(UserInputService, MouseButton1) do if Handle.ReceiveAge == 0 then Handle.AssemblyAngularVelocity = FlingVelocity Handle.AssemblyLinearVelocity = FlingVelocity Handle.CFrame = Mouse.Hit + AntiSleep end taskwait() end UnequipTools(Humanoid) Handle.AssemblyAngularVelocity = Vector3zero Handle.AssemblyLinearVelocity = Vector3zero Handle.CFrame = RigHumanoidRootPart.CFrame end end else Fling(Target, OptionsDefaultFlingOptions) end end end local OnPostSimulation = function() Time = osclock() local DeltaTime = Time - LastTime LastTime = Time if not OptionsSetCharacter and IsLockCenter then local Position = RigHumanoidRootPart.Position RigHumanoidRootPart.CFrame = CFramelookAt(Position, Position + CurrentCamera.CFrame.LookVector * Vector3xzAxis) end if OptionsSimulationRadius then pcall(SetSimulationRadius) end AntiSleep = mathsin(Time * 15) * 0.0015 * Vector3one local Axis = 27 + mathsin(Time) for Index, Table in next, Aligns do local Part0 = Table.Part0 if not Exceptions[Part0] then if Part0.ReceiveAge == 0 then if IsDescendantOf(Part0, Workspace) and not GetJoints(Part0)[1] and not IsGrounded(Part0) then local Part1 = Table.Part1 Part0.AssemblyAngularVelocity = Vector3zero local LinearVelocity = Part1.AssemblyLinearVelocity * Axis Part0.AssemblyLinearVelocity = Vector3new(LinearVelocity.X, Axis, LinearVelocity.Z) Part0.CFrame = Part1.CFrame * Table.Offset + AntiSleep end else local Frames = Table.Frames or - 1 Frames = Frames + 1 Table.Frames = Frames end end end if not OptionsSetCharacter and Humanoid then Move(RigHumanoid, Humanoid.MoveDirection) RigHumanoid.Jump = Humanoid.Jump end end local OnPreRender = function() local Position = RigHumanoidRootPart.Position RigHumanoidRootPart.CFrame = CFramelookAt(Position, Position + CurrentCamera.CFrame.LookVector * Vector3xzAxis) for Index, Table in next, Aligns do local Part0 = Table.Part0 if Part0.ReceiveAge == 0 and IsDescendantOf(Part0, Workspace) and not GetJoints(Part0)[1] and not IsGrounded(Part0) then Part0.CFrame = Table.Part1.CFrame * Table.Offset end end end local OnMouseBehaviorChanged = function() IsLockCenter = UserInputService.MouseBehavior == LockCenter if IsLockCenter then PreRenderConnection = Connect(PreRender, OnPreRender) tableinsert(RBXScriptConnections, PreRenderConnection) elseif PreRenderConnection then Disconnect(PreRenderConnection) tableremove(RBXScriptConnections, tablefind(RBXScriptConnections, PreRenderConnection)) end end local OnPreSimulation = function() if OptionsDisableCharacterCollisions and Character then for Index, Descendant in next, GetDescendants(Character) do if IsA(Descendant, "BasePart") then Descendant.CanCollide = false end end end for Index, Descendant in next, GetChildren(Rig) do if IsA(Descendant, "BasePart") then Descendant.CanCollide = false end end end local Register = function() repeat IsRegistered = pcall(SetCore, StarterGui, "ResetButtonCallback", BindableEvent) taskwait() until IsRegistered end Start = function(Options) if not IsRunning then IsFirst = true IsRunning = true Options = Options or {} OptionsAccessories = Options.Accessories or {} OptionsApplyDescription = Options.ApplyDescription OptionsBreakJointsDelay = Options.BreakJointsDelay or 0 OptionsClickFling = Options.ClickFling OptionsDisableCharacterCollisions = Options.DisableCharacterCollisions OptionsDisableHealthBar = Options.DisableHealthBar OptionsDisableRigCollisions = Options.DisableRigCollisions OptionsDefaultFlingOptions = Options.DefaultFlingOptions or {} OptionsHatDrop = Options.HatDrop OptionsHideCharacter = Options.HideCharacter OptionsParentCharacter = Options.ParentCharacter local OptionsRigSize = Options.RigSize OptionsRigTransparency = Options.RigTransparency or 1 OptionsSetCameraSubject = Options.SetCameraSubject OptionsSetCameraType = Options.SetCameraType OptionsSetCharacter = Options.SetCharacter OptionsSetCollisionGroup = Options.SetCollisionGroup OptionsSimulationRadius = Options.SimulationRadius OptionsTeleportRadius = Options.TeleportRadius OptionsUseServerBreakJoints = Options.UseServerBreakJoints if OptionsDisableHealthBar then IsHealthEnabled = GetCoreGuiEnabled(StarterGui, Health) SetCoreGuiEnabled(StarterGui, Health, false) end BindableEvent = Instancenew("BindableEvent") tableinsert(RBXScriptConnections, Connect(BindableEvent.Event, Stop)) Rig = Objects:FindFirstChild("StarterCharacter"):Clone() Rig.Name = "non" RigHumanoid = Rig.Humanoid RigHumanoidRootPart = Rig.HumanoidRootPart Rig.Parent = Workspace for Index, Descendant in next, GetDescendants(Rig) do if IsA(Descendant, "Attachment") then Attachments[Descendant.Name] = Descendant elseif IsA(Descendant, "BasePart") or IsA(Descendant, "Decal") then Descendant.Transparency = OptionsRigTransparency end end if OptionsRigSize then ScaleTo(Rig, OptionsRigSize) RigHumanoid.JumpPower = 50 RigHumanoid.WalkSpeed = 16 end OnCurrentCameraChanged() tableinsert(RBXScriptConnections, Connect(CurrentCameraChanged, OnCurrentCameraChanged)) if OptionsClickFling then tableinsert(RBXScriptConnections, Connect(InputBegan, OnInputBegan)) end local Character = LocalPlayer.Character if Character then OnCharacterAdded(Character) end tableinsert(RBXScriptConnections, Connect(CharacterAdded, OnCharacterAdded)) LastTime = osclock() tableinsert(RBXScriptConnections, Connect(PostSimulation, OnPostSimulation)) if not OptionsSetCharacter then OnMouseBehaviorChanged() tableinsert(RBXScriptConnections, Connect(MouseBehaviorChanged, OnMouseBehaviorChanged)) end if OptionsDisableCharacterCollisions or OptionsDisableRigCollisions then OnPreSimulation() tableinsert(RBXScriptConnections, Connect(PreSimulation, OnPreSimulation)) end IsRegistered = pcall(SetCore, StarterGui, "ResetButtonCallback", BindableEvent) if not IsRegistered then taskspawn(Register) end return { BindableEvent = BindableEvent, Fling = Fling, Rig = Rig } end end Stop = function() if IsRunning then IsFirst = false IsRunning = false for Index, Highlight in Highlights do Destroy(Highlight) end tableclear(Highlights) for Index, RBXScriptConnection in next, RBXScriptConnections do Disconnect(RBXScriptConnection) end tableclear(RBXScriptConnections) Destroy(BindableEvent) if Character.Parent == Rig then Character.Parent = Workspace end if Humanoid then ChangeState(Humanoid, Dead) end Destroy(Rig) if OptionsDisableHealthBar and not GetCoreGuiEnabled(StarterGui, Health) then SetCoreGuiEnabled(StarterGui, Health, IsHealthEnabled) end if IsRegistered then pcall(SetCore, StarterGui, "ResetButtonCallback", true) else IsRegistered = pcall(SetCore, StarterGui, "ResetButtonCallback", true) end end end end local Rad = math.rad Empyrean = Start({ Accessories = { -- Swords / Spears Rig { Name = "RigTorso", MeshId = "92048094600083", TextureId = "89519907183882", Offset = CFrame.new(0, -2, 0) * CFrame.Angles(0, Rad(0), Rad(60)) }, { Name = "RigUpperRL", MeshId = "76624859423759", TextureId = "81203167910667", Offset = CFrame.new(0, 1.25, 0) * CFrame.Angles(Rad(0), Rad(-180), Rad(135)) }, { Name = "RigUpperLL", MeshId = "76624859423759", TextureId = "124580012086562", Offset = CFrame.new(0, 1.25, 0) * CFrame.Angles(Rad(0), 0, Rad(135)) }, { Name = "RigLowerRL", MeshId = "18610679741", TextureId = "18625348232", Offset = CFrame.new(.2, 2, 0) * CFrame.Angles(Rad(135), Rad(0), Rad(0)) }, { Name = "RigLowerLL", MeshId = "18610679813", TextureId = "18626048026", Offset = CFrame.new(-.2, 2, 0) * CFrame.Angles(Rad(135), Rad(0), Rad(0)) }, { Name = "RigUpperLA", MeshId = "75709149822509", TextureId = "120166750183004", Offset = CFrame.new(0, 2.25, 0) * CFrame.Angles(Rad(0), Rad(0), Rad(-45)) }, { Name = "RigUpperRA", MeshId = "17605983196", TextureId = "17606581728", Offset = CFrame.new(0, 2, 0) * CFrame.Angles(Rad(0), Rad(0), Rad(0)) }, { Name = "RigLowerLA", MeshId = "110382824830787", TextureId = "119800753686181", Offset = CFrame.new(0, 5.5, 0) * CFrame.Angles(0, Rad(-0), Rad(0)) }, { Name = "RigLowerRA", MeshId = "110382824830787", TextureId = "119800753686181", Offset = CFrame.new(0, 5.5, 0) * CFrame.Angles(0, Rad(-0), Rad(0)) }, -- Block Rig { Name = "RigTorso", MeshId = "17345242336", TextureId = "17345250641", Offset = CFrame.new(0, -2, 0) * CFrame.Angles(0, Rad(0), Rad(0)) }, { Name = "RigUpperLL", MeshId = "70807086513216", TextureId = "87564259970629", Offset = CFrame.new(0, 2, 0) * CFrame.Angles(Rad(0), Rad(0), Rad(0)) }, { Name = "RigLowerLL", MeshId = "98818051326497", TextureId = "87142331045456", Offset = CFrame.new(0, 2, 0) * CFrame.Angles(Rad(0), Rad(0), Rad(0)) }, { Name = "RigUpperRL", MeshId = "115322100534609", TextureId = "140198794837319", Offset = CFrame.new(0, 2, 0) * CFrame.Angles(Rad(0), Rad(0), Rad(0)) }, { Name = "RigLowerRL", MeshId = "97418736735022", TextureId = "84047101371984", Offset = CFrame.new(0, 2, 0) * CFrame.Angles(Rad(0), Rad(0), Rad(0)) }, { Name = "RigUpperLA", MeshId = "106942781700680", TextureId = "90838563977106", Offset = CFrame.new(0, 2.25, 0) * CFrame.Angles(Rad(0), Rad(0), Rad(0)) }, { Name = "RigUpperRA", MeshId = "82433902584666", TextureId = "129625048922193", Offset = CFrame.new(0, 2, 0) * CFrame.Angles(Rad(0), Rad(0), Rad(0)) }, { Name = "RigLowerLA", MeshId = "17323421898", TextureId = "75930329122564", Offset = CFrame.new(0, 2, 0) * CFrame.Angles(0, Rad(-0), Rad(0)) }, { Name = "RigLowerRA", MeshId = "17323421898", TextureId = "95461117386269", Offset = CFrame.new(0, 2, 0) * CFrame.Angles(0, Rad(-0), Rad(0)) }, }, ApplyDescription = true, BreakJointsDelay = 0.265, ClickFling = false, DefaultFlingOptions = { HatFling = false, Highlight = true, PredictionFling = true, Timeout = 0.5, ToolFling = false, }, DisableCharacterCollisions = true, DisableHealthBar = true, DisableRigCollisions = true, HatDrop = false, HideCharacter = Vector3.new(0, -30, 0), ParentCharacter = true, RigSize = 1, RigTransparency = 0.75, R15 = false, SetCameraSubject = true, SetCameraType = true, SetCharacter = false, SetCollisionGroup = true, SimulationRadius = 2147483647, TeleportRadius = 12, UseServerBreakJoints = true, }) -- character setup local Camera = workspace.CurrentCamera local Player = Services.Players.LocalPlayer local Character = Empyrean.Rig local Locust = Character:WaitForChild("Locust") local Humanoid = Character:WaitForChild("Humanoid") local Head = Character:WaitForChild("Head") local RootPart = Character:WaitForChild("HumanoidRootPart") local Mouse = Player:GetMouse() local Theme = Instance.new("Sound", RootPart) if Services.RunService:IsStudio() then Theme.SoundId = "rbxasset://Locust.mp3" else Theme.SoundId = getcustomasset(Directories.Songs.."LocustTheme.mp3") end Theme.Volume = 1 Theme.Looped = true Theme:Play() -- animator module local Contains = function(Table, Check) for Index, Value in next, Table do if rawequal(Check, Index) or rawequal(Check, Value) then return true end end return false end local Edit = function(Joint, Change, Duration, Style, Direction) if typeof(Style) == "EnumItem" and Style.Name == "Constant" then Joint.CFrame = Change return end Style = Enum.EasingStyle[Style.Name] Direction = Enum.EasingDirection[Direction.Name] local Anim = game:GetService("TweenService"):Create(Joint, TweenInfo.new(Duration, Style, Direction), {CFrame = Change}) Anim:Play() return Anim end for i, v in pairs(Locust:GetDescendants()) do if v:IsA("Bone") then AnimatorCache.AnimDefaults[v.Name] = v.CFrame AnimatorCache.Joints[v.Name] = v end end local LoadBoneAnimation = function(Rig: Model, KeyframeSequence: KeyframeSequence) local Sequence = KeyframeSequence assert(Sequence:IsA("KeyframeSequence"), "KeyframeSequence Missing!") local Class = {} Class.Speed = 1 Class.KeepLast = 0 local Keyframes = KeyframeSequence:GetKeyframes() table.sort(Keyframes, function(a, b) return a.Time < b.Time end) -- Thanks 10k_i, roblox not sorting by default. Class.Length = Keyframes[#(Keyframes)].Time local Yield = function(Seconds) local Elapsed = 0 local Target = Seconds / (Class.Speed * ScriptOptions.Settings.AnimationSpeed) repeat Elapsed += Services.RunService.Heartbeat:Wait() until Elapsed >= Target end if Sequence:FindFirstChild("xSIXxNull", true) or Sequence:FindFirstChild("xSIXxCustomDir", true) or Sequence:FindFirstChild("xSIXxCustomStyle", true) then -- Moon Suite Fix local Children = Sequence:GetChildren() for i = 1, #(Children) do if Children[i]:FindFirstChild("Torso") then local Limbs = Children[i].Torso:GetChildren() for l = 1, #(Limbs) do Limbs[l].Parent = Children[i].HumanoidRootPart.Torso end Children[i].Torso:Destroy() end end end local Descendants = Sequence:GetDescendants() for i = 1, #(Descendants) do if Descendants[i]:IsA("IntValue") or Descendants[i]:IsA("StringValue") or Descendants[i]:IsA("Folder") then Descendants[i]:Destroy() end if Descendants[i].Parent ~= Sequence and Descendants[i]:IsA("Pose") and not Rig:FindFirstChild(Descendants[i].Name, true) then Descendants[i]:Destroy() end end Class.Stopped = true Class.IsPlaying = false Class.TimePosition = 0 Class.Looped = Sequence.Loop local Completion = Instance.new("BindableEvent") local Reached = Instance.new("BindableEvent") Class.Completed = Completion.Event Class.KeyframeReached = Reached.Event Class["Play"] = function(self, FadeIn, Speed) if Speed and Speed < 0 then Speed += (Speed*2) end Class.Speed = Speed or Class.Speed Class.Stopped = false Class.IsPlaying = true task.spawn(function() wait(1/60) if FadeIn ~= nil then Class.TimePosition -= FadeIn end Class.Completed:Connect(function() if Class.Looped ~= false then Class.TimePosition = 0 end end) repeat game:GetService("RunService").Heartbeat:Wait() Class.TimePosition += (1 * Class.Speed) / (60 * Class.Speed) until Class.IsPlaying == false or Class.Stopped ~= false end) task.spawn(function() if FadeIn ~= nil then task.wait(1/55) task.spawn(function() local Frames = Keyframes[1]:GetDescendants() for i = 1, #(Frames) do local Pose = Frames[i] if Contains(AnimatorCache.Joints, Pose.Name) then task.spawn(function() for i = 1, 2 do Edit(AnimatorCache.Joints[Pose.Name], AnimatorCache.AnimDefaults[Pose.Name] * Pose.CFrame, FadeIn, Pose.EasingStyle, Pose.EasingDirection) task.wait() end end) end end end) Yield(FadeIn) end repeat for K = 1, #(Keyframes) do local K0, K1, K2 = Keyframes[K-1], Keyframes[K], Keyframes[K+1] if Class.Stopped ~= true then if K0 ~= nil then Yield(K1.Time - K0.Time) end task.spawn(function() for i = 1, #(K1:GetDescendants()) do local Pose = K1:GetDescendants()[i] if Contains(AnimatorCache.Joints, Pose.Name) then local Duration = K2 ~= nil and (K2.Time - K1.Time) / Class.Speed or 0.5 Edit(AnimatorCache.Joints[Pose.Name], AnimatorCache.AnimDefaults[Pose.Name] * Pose.CFrame, Duration, Pose.EasingStyle, Pose.EasingDirection) end end end) if K == #(Keyframes) and Class.KeepLast > 0 then Yield(Class.KeepLast) end Reached:Fire(K1.Name) else break end end Completion:Fire() until Class.Looped ~= true or Class.Stopped ~= false Class.IsPlaying = false end) end Class["Stop"] = function() Class.Stopped = true Class.IsPlaying = false end Class["AdjustSpeed"] = function(self, Speed) if Speed < 0 then Speed += (Speed*2) end Class.Speed = Speed or Class.Speed end return Class end -- animator functions local PlayAnim = function(Rig: Model, Animation: KeyframeSequence, AnimSpeed: number) if not AnimatorCache.Rigs[Rig] then AnimatorCache.Rigs[Rig] = {} end if not AnimatorCache.Rigs[Rig][Animation.Name] then AnimatorCache.Rigs[Rig][Animation.Name] = LoadBoneAnimation(Rig, Animation) end for Name, Track in pairs(AnimatorCache.Rigs[Rig]) do if Name ~= Animation.Name then Track:Stop() end end local AnimInstance = AnimatorCache.Rigs[Rig][Animation.Name] if not AnimInstance.IsPlaying then AnimInstance:Play(AnimSpeed or 1) end return AnimInstance end local StopAnim = function(Rig: Model, Animation: KeyframeSequence) if not AnimatorCache.Rigs[Rig] then AnimatorCache.Rigs[Rig] = {} end if not AnimatorCache.Rigs[Rig][Animation.Name] then AnimatorCache.Rigs[Rig][Animation.Name] = LoadBoneAnimation(Rig, Animation) end AnimatorCache.Rigs[Rig][Animation.Name]:Stop() end local RestoreMovement = function() if RootPart.Velocity.Magnitude < 1 and workspace:FindPartOnRay(Ray.new(RootPart.Position, (CFrame.new(RootPart.Position, RootPart.Position + Vector3.new(0, -1, 0))).LookVector * 4), Character) then States.Movement.Idle = true States.Movement.Walking = false States.Movement.Running = false PlayAnim(Locust, Animations.Idle, .1) elseif RootPart.Velocity.Magnitude > 1 and workspace:FindPartOnRay(Ray.new(RootPart.Position, (CFrame.new(RootPart.Position, RootPart.Position + Vector3.new(0, -1, 0))).LookVector * 4), Character) then States.Movement.Idle = false States.Movement.Walking = true States.Movement.Running = false PlayAnim(Locust, Animations.Walk, .1) end end -- functions local PlayUISFX = function(Audio: number) local Sound = Instance.new("Sound", workspace) Sound.SoundId = "rbxassetid://" .. Audio Sound.Volume = 1 Sound.PlayOnRemove = true Sound:Destroy() return Sound end local PlaySFX = function(Audio: number) local Sound = Instance.new("Sound", RootPart) Sound.SoundId = "rbxassetid://" .. Audio Sound.Volume = 1 Sound.PlayOnRemove = true Sound:Destroy() return Sound end local PlaySong = function(Parent: Instance, Audio: number) local Sound = Instance.new("Sound", Parent) Sound.Volume = 1 Sound.SoundId = Audio return Sound end local FlashHitHighlight = function(Target: Model?) if not Target or not Target:IsA("Model") then return end if Target:FindFirstChild("HitHighlight") then return end local Highlight = Instance.new("Highlight") Highlight.Name = "HitHighlight" Highlight.Adornee = Target Highlight.FillColor = Color3.fromRGB(0, 0, 0) Highlight.OutlineColor = Color3.fromRGB(255, 255, 255) Highlight.FillTransparency = 1 Highlight.OutlineTransparency = 1 Highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop Highlight.Parent = Target local FlashIn = Services.TweenService:Create(Highlight, TweenInfo.new(0.1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {FillTransparency = 0.3, OutlineTransparency = 0}) local FadeOut = Services.TweenService:Create(Highlight,TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {FillTransparency = 1,OutlineTransparency = 1}) FlashIn:Play() FlashIn.Completed:Once(function() FadeOut:Play() end) FadeOut.Completed:Once(function() Highlight:Destroy() end) end local CanHit = function(Target: Instance) local Time = os.clock() if ScriptCache.HitHumanoids[Target] and Time < ScriptCache.HitHumanoids[Target] then return false end ScriptCache.HitHumanoids[Target] = Time + 1.15 return true end local NewHitbox = function(Position: Vector3 | CFrame, Size: number, HitSound: number) local Hitbox = Instance.new("Part") Hitbox.Size = Size or Vector3.new(4, 4, 4) Hitbox.Color = ScriptOptions.Customization.HitboxColor Hitbox.Material = Enum.Material.ForceField Hitbox.Transparency = 0.5 Hitbox.Anchored = true Hitbox.CanCollide = false Hitbox.CanQuery = false Hitbox.CanTouch = true Hitbox.CFrame = Position or RootPart.CFrame -- RootPart.CFrame * CFrame.new(0, 0, -(4 / 2 + 2)) Hitbox.Parent = workspace local OverlapParams = OverlapParams.new() OverlapParams.FilterType = Enum.RaycastFilterType.Exclude OverlapParams.FilterDescendantsInstances = {Character} local HitboxParts = workspace:GetPartsInPart(Hitbox, OverlapParams) for i, v in pairs(HitboxParts) do local Target = v:FindFirstAncestorOfClass("Model") if Target and Target:FindFirstChildOfClass("Humanoid") then local TargetRoot = Target:FindFirstChild("HumanoidRootPart") if TargetRoot and CanHit(Target) then FlashHitHighlight(Target) if ScriptOptions.Settings.Fling then Empyrean.Fling(Target, ScriptOptions) PlaySFX(ScriptOptions.Customization.Hitmarker) PlaySFX(HitSound or 108515070727256) end end end end local HitboxFade = game:GetService("TweenService"):Create(Hitbox, TweenInfo.new(0.5), {Transparency = 1}) HitboxFade:Play() game:GetService("Debris"):AddItem(Hitbox, 0.5) return Hitbox -- added incase you wanna make it animated or even position it somewhere else end local SetWalkSpeed = function(Speed: number) Humanoid.WalkSpeed = Speed end local SetRootAnchored = function(Anchored: boolean) RootPart.Anchored = Anchored end -- attacks local ToggleCrouch = function() States.Movement.Crouching = not States.Movement.Crouching States.Movement.Idle = false States.Movement.Walking = false States.Movement.Running = false States.Movement.Sitting = false end local ToggleSit = function() States.Movement.Sitting = not States.Movement.Sitting States.Movement.Crouching = false States.Movement.Idle = false States.Movement.Walking = false States.Movement.Running = false end local Waypoint = function() if not States.Waypoint.SavedPosition then States.Waypoint.SavedPosition = RootPart.Position if States.Waypoint.TVLocation then States.Waypoint.TVLocation:Destroy() end local Part = Objects:WaitForChild("TeleportPart"):Clone() Part.CFrame = CFrame.new(States.Waypoint.SavedPosition + Vector3.new(0, -2.975, 0)) Part.Parent = workspace States.Waypoint.TVLocation = Part else if States.Input.Debounce then return end if States.Waypoint.TVLocation then States.Waypoint.TVLocation:Destroy() States.Waypoint.TVLocation = nil end SetRootAnchored(true) States.Input.Debounce = true local TeleportAnim = PlayAnim(Locust, Animations.Spawn, 0.1) RootPart.CFrame = CFrame.new(States.Waypoint.SavedPosition) TeleportAnim.Completed:Wait() States.Waypoint.SavedPosition = nil States.Input.Debounce = false SetRootAnchored(false) RestoreMovement() end end local ToggleKillMode = function() States.Input.KillMode = not States.Input.KillMode end local Kill = function(Target) if States.Input.Debounce then return end if not States.Input.KillMode then return end if not Target then return end local Model = Target and Target:FindFirstAncestorOfClass("Model") if not Model or not Model:FindFirstChildOfClass("Humanoid") then return end local TargetRoot = Model:FindFirstChild("HumanoidRootPart") if not TargetRoot then return end if not CanHit(Model) then return end States.Input.Debounce = true SetRootAnchored(true) local KillAnim = PlayAnim(Locust, Animations.Kill, 0.1) FlashHitHighlight(Model) if ScriptOptions.Settings.Fling then Empyrean.Fling(Target, ScriptOptions.FlingOptions) PlaySFX(ScriptOptions.Customization.Hitmarker or 108515070727256) end KillAnim.Completed:Wait() SetRootAnchored(false) States.Input.Debounce = false RestoreMovement() end -- input local KeyDown = Services.UserInputService.InputBegan:Connect(function(Key, GPE) if GPE then return end if Key.UserInputType == Enum.UserInputType.MouseButton1 then Kill(Mouse.Target) end if Key.KeyCode == Enum.KeyCode.Q then ToggleCrouch() end if Key.KeyCode == Enum.KeyCode.C then ToggleSit() end if Key.KeyCode == Enum.KeyCode.X then ToggleKillMode() end if Key.KeyCode == Enum.KeyCode.E then Waypoint() end if Key.KeyCode == Enum.KeyCode.T then end if Key.KeyCode == Enum.KeyCode.LeftShift then States.Input.Shift = true end end) table.insert(ScriptCache.ActiveConnections, KeyDown) local KeyUp = Services.UserInputService.InputEnded:Connect(function(Key, GPE) if GPE then return end if Key.KeyCode == Enum.KeyCode.LeftShift then States.Input.Shift = false end end) table.insert(ScriptCache.ActiveConnections, KeyUp) local InfiniteJump = Services.UserInputService.JumpRequest:Connect(function() if ScriptOptions.Settings.InfiniteJump and Humanoid then Humanoid:ChangeState(Enum.HumanoidStateType.Jumping) end end) table.insert(ScriptCache.ActiveConnections, InfiniteJump) -- mobile ui local GUI = script:WaitForChild("UIs").MobileUI GUI.Parent = game:GetService("CoreGui") table.insert(ScriptCache.TrashBin, GUI) local UpdateUI = function() local LastInput = Services.UserInputService:GetLastInputType() if LastInput == Enum.UserInputType.Touch then GUI.Enabled = true else GUI.Enabled = false end end UpdateUI() Services.UserInputService.LastInputTypeChanged:Connect(UpdateUI) GUI.AbilitiesUI["ToggleKill"].MouseButton1Down:connect(function() ToggleKillMode() end) GUI.AbilitiesUI["Waypoint"].MouseButton1Down:connect(function() Waypoint() end) GUI.AbilitiesUI["Sit"].MouseButton1Down:connect(function() ToggleSit() end) GUI.AbilitiesUI["Crouch"].MouseButton1Down:connect(function() ToggleCrouch() end) GUI.AbilitiesUI["Sprint"].MouseButton1Down:connect(function() States.Input.Shift = not States.Input.Shift end) -- settings ui local MainGUI = script.UIs:WaitForChild("MainGUI") MainGUI.Parent = game:GetService("CoreGui") table.insert(ScriptCache.TrashBin, MainGUI) local SettingsFrame = MainGUI:WaitForChild("SettingsFrame") local Vignette = MainGUI:WaitForChild("Vignette") local SettingsHolder = SettingsFrame:WaitForChild("SettingsHolder") local FloatingButton = MainGUI:WaitForChild("FloatingButton") local UIDragDetector = Instance.new("UIDragDetector", FloatingButton) UIDragDetector.DragStart:Connect(function() SettingsFrame.Visible = not SettingsFrame.Visible PlayUISFX(18755588842) end) FloatingButton.MouseEnter:Connect(function() PlayUISFX(122453173810540) end) local SetupToggle = function(Setting: boolean) local Object = SettingsHolder:FindFirstChild(Setting) if not Object then return end local Button = Object:FindFirstChildWhichIsA("TextButton") if not Button then return end Button.BackgroundColor3 = ScriptOptions.Settings[Setting] and Color3.fromRGB(0,255,0) or Color3.fromRGB(255,0,0) Button.MouseButton1Click:Connect(function() PlayUISFX(18755588842) ScriptOptions.Settings[Setting] = not ScriptOptions.Settings[Setting] Button.BackgroundColor3 = ScriptOptions.Settings[Setting] and Color3.fromRGB(0,255,0) or Color3.fromRGB(255,0,0) end) end local SetupTextBox = function(Setting: string | number) -- currently only used in the rigsize (no other textboxes will exist i think) local Object = SettingsHolder:FindFirstChild(Setting) if not Object then return end local TextBox = Object:FindFirstChildWhichIsA("TextBox") if not TextBox then return end TextBox.Text = tostring(ScriptOptions.Settings[Setting]) TextBox.FocusLost:Connect(function() local Value = tonumber(TextBox.Text) if Value then ScriptOptions.Settings[Setting] = math.clamp(Value, 0.5, 5) else TextBox.Text = tonumber(ScriptOptions.Settings[Setting]) end end) end for i, v in pairs(ScriptOptions.Settings) do local Object = SettingsHolder:FindFirstChild(i) if Object then if Object:FindFirstChild("Button") then SetupToggle(i) elseif Object:FindFirstChild("Value") then SetupTextBox(i) end end end SettingsHolder.TPToNearestSpawn.Button.MouseButton1Click:Connect(function() local RootPart = Character:FindFirstChild("HumanoidRootPart") local GetClosestSpawn = function() local ClosestSpawn, ClosestDistance = nil, math.huge for i, v in pairs(workspace:GetDescendants()) do if v:IsA("SpawnLocation") then local Distance = (RootPart.Position - v.Position).Magnitude if Distance < ClosestDistance then ClosestSpawn = v ClosestDistance = Distance end end end return ClosestSpawn end local Spawn = GetClosestSpawn() if Spawn then RootPart.CFrame = Spawn.CFrame + Vector3.new(0, 5, 0) else warn("No one is around to help.") end end) -- runservice connection local RunServiceConnection = Services.RunService.Heartbeat:Connect(function(dt) if States.Input.Debounce then StopAnim(Locust,Animations.Idle) StopAnim(Locust,Animations.Walk) StopAnim(Locust,Animations.Sprint) end if ScriptOptions.Settings.CameraEffects then local TargetOffset = States.Movement.Crouching and Vector3.new(0, 5, 0) or Vector3.new(0, 10, 0) Humanoid.CameraOffset = Humanoid.CameraOffset:Lerp(TargetOffset, 0.1) else Humanoid.CameraOffset = Humanoid.CameraOffset:Lerp(Vector3.zero, 0.1) end if not States.Input.Debounce then if States.Movement.Crouching then SetWalkSpeed(3) elseif States.Input.Shift then SetWalkSpeed(24) else SetWalkSpeed(6) end end if ScriptOptions.Settings.FOVEffects then Camera.FieldOfView = 80 + Theme.PlaybackLoudness / 100 Vignette.ImageTransparency = 1 - Theme.PlaybackLoudness / 900 else Camera.FieldOfView = 70 Vignette.ImageTransparency = 1 end if ScriptOptions.Settings.Music then Theme.Playing = true else Theme.Playing = false end local RootPartOrigin = RootPart.Position local Direction = Vector3.new(0, -1, 0) * 4 local Params = RaycastParams.new() Params.FilterDescendantsInstances = {Character} Params.FilterType = Enum.RaycastFilterType.Exclude Params.IgnoreWater = true local Result = workspace:Raycast(RootPartOrigin, Direction, Params) local HitFloor = Result and Result.Instance local HitPosition = Result and Result.Position local TorsoVelocity = (RootPart.Velocity).Magnitude local TorsoVerticalVelocity = RootPart.Velocity.Y if TorsoVelocity < 0.001 and HitFloor ~= nil and not States.Input.Debounce then if States.Movement.Crouching then States.Movement.Crouching = true PlayAnim(Locust,Animations.IdleCrouch, 0.1) elseif States.Movement.Sitting then PlayAnim(Locust, Animations.Sit, 0.1) elseif States.Movement.Idle == false then States.Movement.Idle = true PlayAnim(Locust,Animations.Idle, 0.1) end States.Movement.Walking = false States.Movement.Running = false StopAnim(Locust,Animations.Walk) StopAnim(Locust,Animations.Sprint) elseif TorsoVelocity > 6 and HitFloor ~= nil and not States.Input.Debounce and States.Input.Shift and not States.Movement.Crouching then if States.Movement.Running == false then States.Movement.Running = true PlayAnim(Locust, Animations.Sprint, 0.1) end States.Movement.Idle = false States.Movement.Walking = false StopAnim(Locust,Animations.Idle) StopAnim(Locust,Animations.Walk) elseif TorsoVelocity > 6 and HitFloor ~= nil and not States.Input.Debounce then if States.Movement.Crouching then States.Movement.Walking = true PlayAnim(Locust, Animations.WalkCrouch, 0.1) elseif States.Movement.Walking == false then States.Movement.Walking = true PlayAnim(Locust,Animations.Walk, 0.1) end States.Movement.Idle = false States.Movement.Running = false StopAnim(Locust,Animations.Idle) StopAnim(Locust,Animations.Sprint) end end) table.insert(ScriptCache.ActiveConnections, RunServiceConnection) Empyrean.BindableEvent.Event:Once(function() print("Resetting.") for i, v in ScriptCache.TrashBin do v:Destroy() end for i, v in ScriptCache.ActiveConnections do v:Disconnect() end end)