locust by melon scripter check the description for the hats
Key Required

locust by melon scripter check the description for the hats

[UP] Just a baseplate.yesjustyesyesjustyes 1.6K views 48.3K executesUpdated Aug 9, 2026
Unrated
00
Lua Script•1778 lines (56776 chars)
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)

Features & Information

these are the hats needed to type in chat : -gh 105900284766105 89011214394076 80591929991021 74841586768030 79723296413410 71673828053110 18626055142 18625377030 17314457081 17606680159 then -pd then -sh or -net then run the script

Community Comments (0)

No comments yet for this script.

More Scripts for [UP] Just a baseplate.