-- Declare variables for state tracking local soulSearchActive = false local soulFlightActive = false local soulTransfusionActive = false local highlightInstances = {} -- Store highlight instances to remove later local labelInstances = {} -- Store label instances to remove later -- Create "Soul Search" tool in the toolbar local player = game.Players.LocalPlayer local backpack = player.Backpack local soulSearchTool = Instance.new("Tool") soulSearchTool.Name = "Soul Search" soulSearchTool.RequiresHandle = false -- No physical handle required -- Add the Soul Search tool to the player's backpack soulSearchTool.Parent = backpack -- Create "Soul Flight" tool in the toolbar local soulFlightTool = Instance.new("Tool") soulFlightTool.Name = "Soul Flight" soulFlightTool.RequiresHandle = false -- No physical handle required -- Add the Soul Flight tool to the player's backpack soulFlightTool.Parent = backpack -- Create "Soul Transfusion" tool in the toolbar local soulTransfusionTool = Instance.new("Tool") soulTransfusionTool.Name = "Soul Transfusion" soulTransfusionTool.RequiresHandle = false -- No physical handle required -- Add the Soul Transfusion tool to the player's backpack soulTransfusionTool.Parent = backpack -- Create GUI to display the text "Soul God moveset made by bacon god" at the top of the screen local screenGui = Instance.new("ScreenGui") screenGui.Parent = player.PlayerGui local textLabel = Instance.new("TextLabel") textLabel.Parent = screenGui textLabel.Size = UDim2.new(1, 0, 0, 50) -- Full width and 50px height textLabel.Position = UDim2.new(0, 0, 0, 0) -- Position at the top textLabel.Text = "Soul God moveset made by bacon god" textLabel.TextColor3 = Color3.fromRGB(255, 255, 255) -- White text textLabel.BackgroundTransparency = 1 -- No background textLabel.Font = Enum.Font.SourceSansBold textLabel.TextSize = 24 textLabel.TextStrokeTransparency = 0.8 -- Add text outline textLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) -- Black outline -- Function to activate the Soul Search ability local function activateSoulSearch() -- Highlight all players in green and show tool names from their backpacks for _, otherPlayer in pairs(game.Players:GetPlayers()) do if otherPlayer ~= player then local character = otherPlayer.Character if character and character:FindFirstChild("HumanoidRootPart") then -- Create a highlight local highlight = Instance.new("Highlight") highlight.Parent = character highlight.FillColor = Color3.fromRGB(0, 255, 0) -- Green color highlight.FillTransparency = 0.5 highlight.OutlineTransparency = 0.5 highlight.OutlineColor = Color3.fromRGB(0, 255, 0) table.insert(highlightInstances, highlight) -- Store the highlight instance -- Display the items in their backpack above their head local head = character:FindFirstChild("Head") if head then local toolNameLabel = Instance.new("BillboardGui") toolNameLabel.Parent = head toolNameLabel.Adornee = head toolNameLabel.Size = UDim2.new(0, 200, 0, 50) toolNameLabel.StudsOffset = Vector3.new(0, 2, 0) toolNameLabel.AlwaysOnTop = true local toolNameText = Instance.new("TextLabel") toolNameText.Parent = toolNameLabel toolNameText.Size = UDim2.new(1, 0, 1, 0) toolNameText.TextColor3 = Color3.fromRGB(255, 255, 255) toolNameText.BackgroundTransparency = 1 toolNameText.Font = Enum.Font.SourceSansBold -- Make text bold toolNameText.TextStrokeTransparency = 0.8 -- Add an outline to the text toolNameText.TextStrokeColor3 = Color3.fromRGB(0, 0, 0) -- Black outline -- Collect the tools from the player's backpack local toolNames = {} local backpack = otherPlayer.Backpack for _, tool in pairs(backpack:GetChildren()) do if tool:IsA("Tool") then table.insert(toolNames, tool.Name) end end -- Display the tool names as a comma-separated list toolNameText.Text = table.concat(toolNames, ", ") -- Store the label instance table.insert(labelInstances, toolNameLabel) end end end end end -- Function to deactivate the Soul Search ability local function deactivateSoulSearch() -- Remove the highlights and tool name labels for _, highlight in pairs(highlightInstances) do highlight:Destroy() end highlightInstances = {} -- Clear the stored highlights for _, label in pairs(labelInstances) do label:Destroy() end labelInstances = {} -- Clear the stored labels end -- Function to activate Soul Flight ability (play animation) local function activateSoulFlight() -- Check if the player already has a character and humanoid local character = player.Character if character and character:FindFirstChild("Humanoid") then local humanoid = character:FindFirstChild("Humanoid") -- Load the animation for the flying effect local animator = character:FindFirstChild("Humanoid").Animator if not animator then animator = Instance.new("Animator") animator.Parent = humanoid end -- Create the flying animation (using the provided animation ID) local flyingAnimation = Instance.new("Animation") flyingAnimation.AnimationId = "rbxassetid://16597322398" -- Soul Flight Animation ID local animationTrack = humanoid:LoadAnimation(flyingAnimation) -- Play the animation animationTrack:Play() -- Set the player to float or fly upwards local bodyVelocity = Instance.new("BodyVelocity") bodyVelocity.MaxForce = Vector3.new(5000, 5000, 5000) bodyVelocity.Velocity = Vector3.new(0, 50, 0) -- Adjust velocity for floating bodyVelocity.Parent = character:FindFirstChild("HumanoidRootPart") -- End the floating after 5 seconds (or as desired) game:GetService("Debris"):AddItem(bodyVelocity, 5) -- Remove after 5 seconds end end -- Function to deactivate Soul Flight ability (stop animation) local function deactivateSoulFlight() -- Check if the player has a character local character = player.Character if character and character:FindFirstChild("HumanoidRootPart") then -- Stop flying or floating (remove BodyVelocity) local bodyVelocity = character.HumanoidRootPart:FindFirstChild("BodyVelocity") if bodyVelocity then bodyVelocity:Destroy() end end end -- Function to teleport the player to the nearest player (Soul Transfusion) local function activateSoulTransfusion() local closestPlayer = nil local shortestDistance = math.huge -- Start with a very high value -- Loop through all players to find the closest one for _, otherPlayer in pairs(game.Players:GetPlayers()) do if otherPlayer ~= player and otherPlayer.Character then local character = otherPlayer.Character if character and character:FindFirstChild("HumanoidRootPart") then local distance = (player.Character.HumanoidRootPart.Position - character.HumanoidRootPart.Position).Magnitude if distance < shortestDistance then shortestDistance = distance closestPlayer = otherPlayer end end end end -- Teleport to the closest player if closestPlayer then player.Character:SetPrimaryPartCFrame(closestPlayer.Character.HumanoidRootPart.CFrame) end end -- Toggle the Soul Search ability on and off when the tool is activated soulSearchTool.Activated:Connect(function() soulSearchActive = not soulSearchActive -- Toggle the state if soulSearchActive then activateSoulSearch() else deactivateSoulSearch() end end) -- Toggle the Soul Flight ability on and off when the SoulFlight tool is activated soulFlightTool.Activated:Connect(function() soulFlightActive = not soulFlightActive -- Toggle the state if soulFlightActive then activateSoulFlight() else deactivateSoulFlight() end end) -- Activate Soul Transfusion when the SoulTransfusion tool is activated soulTransfusionTool.Activated:Connect(activateSoulTransfusion) -- atomic local player = game.Players.LocalPlayer local playerGui = player.PlayerGui local hotbar = playerGui:FindFirstChild("Hotbar") local backpack = hotbar:FindFirstChild("Backpack") local hotbarFrame = backpack:FindFirstChild("Hotbar") local baseButton = hotbarFrame:FindFirstChild("1").Base local ToolName = baseButton.ToolName ToolName.Text = "Soul Slashes" -- put the name of the base move 1 local player = game.Players.LocalPlayer local playerGui = player.PlayerGui local hotbar = playerGui:FindFirstChild("Hotbar") local backpack = hotbar:FindFirstChild("Backpack") local hotbarFrame = backpack:FindFirstChild("Hotbar") local baseButton = hotbarFrame:FindFirstChild("2").Base local ToolName = baseButton.ToolName ToolName.Text = "Soul Absorb" -- put the name of the base move 2 local player = game.Players.LocalPlayer local playerGui = player.PlayerGui local hotbar = playerGui:FindFirstChild("Hotbar") local backpack = hotbar:FindFirstChild("Backpack") local hotbarFrame = backpack:FindFirstChild("Hotbar") local baseButton = hotbarFrame:FindFirstChild("3").Base local ToolName = baseButton.ToolName ToolName.Text = "Soul Pulse" -- put the name of the base move 3 local player = game.Players.LocalPlayer local playerGui = player.PlayerGui local hotbar = playerGui:FindFirstChild("Hotbar") local backpack = hotbar:FindFirstChild("Backpack") local hotbarFrame = backpack:FindFirstChild("Hotbar") local baseButton = hotbarFrame:FindFirstChild("4").Base local ToolName = baseButton.ToolName ToolName.Text = "Ghostly Counter" -- put the name of the base move 4 local Players = game:GetService("Players") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") local function findGuiAndSetText() local screenGui = playerGui:FindFirstChild("ScreenGui") if screenGui then local magicHealthFrame = screenGui:FindFirstChild("MagicHealth") if magicHealthFrame then local textLabel = magicHealthFrame:FindFirstChild("TextLabel") if textLabel then textLabel.Text = "100% SOUL ABSORPTION" -- put the name of the ult name ultimate text end end end end -- move 1 playerGui.DescendantAdded:Connect(findGuiAndSetText) findGuiAndSetText() local animationId = 15290930205 -- the anim that will get track local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function onAnimationPlayed(animationTrack) if animationTrack.Animation.AnimationId == "rbxassetid://" .. animationId then local p = game.Players.LocalPlayer local Humanoid = p.Character:WaitForChild("Humanoid") for _, animTrack in pairs(Humanoid:GetPlayingAnimationTracks()) do animTrack:Stop() end local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = "rbxassetid://16719183472" -- the specific anim local Anim = Humanoid:LoadAnimation(AnimAnim) local startTime = 1.8 -- speed for specific Anim:Play() Anim:AdjustSpeed(0) Anim.TimePosition = startTime Anim:AdjustSpeed(1) end end -- end of move 1 -- move 2 humanoid.AnimationPlayed:Connect(onAnimationPlayed) local animationId = 15145462680 -- the move that it will track local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function onAnimationPlayed(animationTrack) if animationTrack.Animation.AnimationId == "rbxassetid://" .. animationId then local p = game.Players.LocalPlayer local Humanoid = p.Character:WaitForChild("Humanoid") for _, animTrack in pairs(Humanoid:GetPlayingAnimationTracks()) do animTrack:Stop() end local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = "rbxassetid://15125307874" -- the specific move ur gonna replace local Anim = Humanoid:LoadAnimation(AnimAnim) local startTime = 0 -- speed for the specific anim Anim:Play() Anim:AdjustSpeed(0) Anim.TimePosition = startTime Anim:AdjustSpeed(1.3) end end -- end of move 2 -- move 3 humanoid.AnimationPlayed:Connect(onAnimationPlayed) local animationId = 15295895753 -- the anim that will track local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function onAnimationPlayed(animationTrack) if animationTrack.Animation.AnimationId == "rbxassetid://" .. animationId then local p = game.Players.LocalPlayer local Humanoid = p.Character:WaitForChild("Humanoid") for _, animTrack in pairs(Humanoid:GetPlayingAnimationTracks()) do animTrack:Stop() end local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = "rbxassetid://16597912086" -- the specific anim local Anim = Humanoid:LoadAnimation(AnimAnim) local startTime = 0.25 -- speed for specific anim Anim:Play() Anim:AdjustSpeed(0) Anim.TimePosition = startTime Anim:AdjustSpeed(1) delay(1.8, function() Anim:Stop() end) end end -- end of move 3 -- move 3 (aerial) humanoid.AnimationPlayed:Connect(onAnimationPlayed) local animationId = 15295336270 -- the anim that will track local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function onAnimationPlayed(animationTrack) if animationTrack.Animation.AnimationId == "rbxassetid://" .. animationId then local p = game.Players.LocalPlayer local Humanoid = p.Character:WaitForChild("Humanoid") for _, animTrack in pairs(Humanoid:GetPlayingAnimationTracks()) do animTrack:Stop() end local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = "rbxassetid://16597322398" -- the specific anim local Anim = Humanoid:LoadAnimation(AnimAnim) local startTime = 0.5 -- speed for specific anim Anim:Play() Anim:AdjustSpeed(0) Anim.TimePosition = startTime Anim:AdjustSpeed(1) delay(1.8, function() Anim:Stop() end) end end -- end of move 3 (aerial) -- move 4 humanoid.AnimationPlayed:Connect(onAnimationPlayed) local animationId = 15311685628 -- the specific anim that will get track local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function onAnimationPlayed(animationTrack) if animationTrack.Animation.AnimationId == "rbxassetid://" .. animationId then local p = game.Players.LocalPlayer local Humanoid = p.Character:WaitForChild("Humanoid") for _, animTrack in pairs(Humanoid:GetPlayingAnimationTracks()) do animTrack:Stop() end local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = "rbxassetid://18896127525" -- the specific anim local Anim = Humanoid:LoadAnimation(AnimAnim) local startTime = 1.8 -- the speed for the specific anim Anim:Play() Anim:AdjustSpeed(0) Anim.TimePosition = startTime Anim:AdjustSpeed(1) end end -- end of move 4 -- move 4 (landed) humanoid.AnimationPlayed:Connect(onAnimationPlayed) local animationId = 15334974550 -- the specific anim that will get track local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function onAnimationPlayed(animationTrack) if animationTrack.Animation.AnimationId == "rbxassetid://" .. animationId then local p = game.Players.LocalPlayer local Humanoid = p.Character:WaitForChild("Humanoid") for _, animTrack in pairs(Humanoid:GetPlayingAnimationTracks()) do animTrack:Stop() end local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = "rbxassetid://18181589384" -- the specific anim local Anim = Humanoid:LoadAnimation(AnimAnim) local startTime = 0.25 -- the speed for the specific anim Anim:Play() Anim:AdjustSpeed(0) Anim.TimePosition = startTime Anim:AdjustSpeed(1) end end -- end of move 4 (landed) -- move 4 (finisher) humanoid.AnimationPlayed:Connect(onAnimationPlayed) local animationId = 15487418517 -- the specific anim that will get track local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function onAnimationPlayed(animationTrack) if animationTrack.Animation.AnimationId == "rbxassetid://" .. animationId then local p = game.Players.LocalPlayer local Humanoid = p.Character:WaitForChild("Humanoid") for _, animTrack in pairs(Humanoid:GetPlayingAnimationTracks()) do animTrack:Stop() end local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = "rbxassetid://18464372850" -- the specific anim local Anim = Humanoid:LoadAnimation(AnimAnim) local startTime = 2 -- the speed for the specific anim Anim:Play() Anim:AdjustSpeed(0) Anim.TimePosition = startTime Anim:AdjustSpeed(1) end end -- end of move 4 (finisher) -- ult move 1 humanoid.AnimationPlayed:Connect(onAnimationPlayed) local animationId = 15520132233 -- the anim will get track local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function onAnimationPlayed(animationTrack) if animationTrack.Animation.AnimationId == "rbxassetid://" .. animationId then local p = game.Players.LocalPlayer local Humanoid = p.Character:WaitForChild("Humanoid") for _, animTrack in pairs(Humanoid:GetPlayingAnimationTracks()) do animTrack:Stop() end local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = "rbxassetid://14719290328" -- the specific anim local Anim = Humanoid:LoadAnimation(AnimAnim) local startTime = 2 -- speed for specific anim Anim:Play() Anim:AdjustSpeed(0) Anim.TimePosition = startTime Anim:AdjustSpeed(0.4) end end -- end of ult move 1 -- ult move 2 humanoid.AnimationPlayed:Connect(onAnimationPlayed) local animationId = 15676072469 -- the anim will get track local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function onAnimationPlayed(animationTrack) if animationTrack.Animation.AnimationId == "rbxassetid://" .. animationId then local p = game.Players.LocalPlayer local Humanoid = p.Character:WaitForChild("Humanoid") for _, animTrack in pairs(Humanoid:GetPlayingAnimationTracks()) do animTrack:Stop() end local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = "rbxassetid://17860467628" -- the specific anim local Anim = Humanoid:LoadAnimation(AnimAnim) local startTime = 2 -- speed for specific anim Anim:Play() Anim:AdjustSpeed(0) Anim.TimePosition = startTime Anim:AdjustSpeed(0.5) end end -- end of ult move 2 -- ult move 3 humanoid.AnimationPlayed:Connect(onAnimationPlayed) local animationId = 16062410809 -- the anim will get track local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function onAnimationPlayed(animationTrack) if animationTrack.Animation.AnimationId == "rbxassetid://" .. animationId then local p = game.Players.LocalPlayer local Humanoid = p.Character:WaitForChild("Humanoid") for _, animTrack in pairs(Humanoid:GetPlayingAnimationTracks()) do animTrack:Stop() end local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = "rbxassetid://18440406788" -- the specific anim local Anim = Humanoid:LoadAnimation(AnimAnim) local startTime = 1 -- speed for specific anim Anim:Play() Anim:AdjustSpeed(0) Anim.TimePosition = startTime Anim:AdjustSpeed(0.5) end end -- end of ult move 3 -- ult move 3 (landed) humanoid.AnimationPlayed:Connect(onAnimationPlayed) local animationId = 16062712948 -- the anim will get track local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function onAnimationPlayed(animationTrack) if animationTrack.Animation.AnimationId == "rbxassetid://" .. animationId then local p = game.Players.LocalPlayer local Humanoid = p.Character:WaitForChild("Humanoid") for _, animTrack in pairs(Humanoid:GetPlayingAnimationTracks()) do animTrack:Stop() end local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = "rbxassetid://12983333733" -- the specific anim local Anim = Humanoid:LoadAnimation(AnimAnim) local startTime = 2 -- speed for specific anim Anim:Play() Anim:AdjustSpeed(0) Anim.TimePosition = startTime Anim:AdjustSpeed(0.5) end end -- end of ult move 3 (landed) -- ult move 4 humanoid.AnimationPlayed:Connect(onAnimationPlayed) local animationId = 16082123712 -- the anim will get track local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function onAnimationPlayed(animationTrack) if animationTrack.Animation.AnimationId == "rbxassetid://" .. animationId then local p = game.Players.LocalPlayer local Humanoid = p.Character:WaitForChild("Humanoid") for _, animTrack in pairs(Humanoid:GetPlayingAnimationTracks()) do animTrack:Stop() end local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = "rbxassetid://15125307874" -- the specific anim local Anim = Humanoid:LoadAnimation(AnimAnim) local startTime = 2 -- speed for specific anim Anim:Play() Anim:AdjustSpeed(0) Anim.TimePosition = startTime Anim:AdjustSpeed(0.25) end end -- end of ult move 4 -- ult move 4 (landed) humanoid.AnimationPlayed:Connect(onAnimationPlayed) local animationId = 16057411888 -- the anim will get track local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function onAnimationPlayed(animationTrack) if animationTrack.Animation.AnimationId == "rbxassetid://" .. animationId then local p = game.Players.LocalPlayer local Humanoid = p.Character:WaitForChild("Humanoid") for _, animTrack in pairs(Humanoid:GetPlayingAnimationTracks()) do animTrack:Stop() end local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = "rbxassetid://18903642853" -- the specific anim local Anim = Humanoid:LoadAnimation(AnimAnim) local startTime = 2 -- speed for specific anim Anim:Play() Anim:AdjustSpeed(0) Anim.TimePosition = startTime Anim:AdjustSpeed(0.1) end end -- end of ult move 4 (landed) -- wall combo humanoid.AnimationPlayed:Connect(onAnimationPlayed) local animationId = 15955393872 -- the anim that will get track local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function onAnimationPlayed(animationTrack) if animationTrack.Animation.AnimationId == "rbxassetid://" .. animationId then local p = game.Players.LocalPlayer local Humanoid = p.Character:WaitForChild("Humanoid") for _, animTrack in pairs(Humanoid:GetPlayingAnimationTracks()) do animTrack:Stop() end local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = "rbxassetid://18903642853" -- the specific anim local Anim = Humanoid:LoadAnimation(AnimAnim) local startTime = 0.05 -- speed for the specific anim Anim:Play() Anim:AdjustSpeed(0) Anim.TimePosition = startTime Anim:AdjustSpeed(1) end end -- end of wall combo -- ult anim humanoid.AnimationPlayed:Connect(onAnimationPlayed) local animationId = 15391323441 -- the anim will get track local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function onAnimationPlayed(animationTrack) if animationTrack.Animation.AnimationId == "rbxassetid://" .. animationId then local p = game.Players.LocalPlayer local Humanoid = p.Character:WaitForChild("Humanoid") for _, animTrack in pairs(Humanoid:GetPlayingAnimationTracks()) do animTrack:Stop() end local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = "rbxassetid://14719290328" -- the specific anim local Anim = Humanoid:LoadAnimation(AnimAnim) local startTime = 0 -- the specific anim Anim:Play() Anim:AdjustSpeed(0) Anim.TimePosition = startTime Anim:AdjustSpeed(0.5) end end -- the end of ult anim -- m1's humanoid.AnimationPlayed:Connect(onAnimationPlayed) local Players = game:GetService("Players") local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") -- the anim that will get track local animationIdsToStop = { [10469493270] = true, [10469630950] = true, [10469639222] = true, [10469643643] = true, } -- the specific anim local replacementAnimations = { ["10469643643"] = "rbxassetid://17889290569", -- 4th m1's dont change the [12345678910] change the rbxassetid://123.. ["10469639222"] = "rbxassetid://17889471098", -- 3rd m1's dont change the [12345678910] change the rbxassetid://123.. ["10469630950"] = "rbxassetid://17889461810", -- 2nd m1's dont change the [12345678910] change the rbxassetid://123.. ["10469493270"] = "rbxassetid://17889458563", -- 1st m1's dont change the [12345678910] change the rbxassetid://123.. } local queue = {} local isAnimating = false local function playReplacementAnimation(animationId) if isAnimating then table.insert(queue, animationId) return end -- end of m1s -- ignore isAnimating = true local replacementAnimationId = replacementAnimations[tostring(animationId)] if replacementAnimationId then local AnimAnim = Instance.new("Animation") AnimAnim.AnimationId = replacementAnimationId local Anim = humanoid:LoadAnimation(AnimAnim) Anim:Play() Anim.Stopped:Connect(function() isAnimating = false if #queue > 0 then local nextAnimationId = table.remove(queue, 1) playReplacementAnimation(nextAnimationId) end end) else isAnimating = false end end local function stopSpecificAnimations() for _, track in ipairs(humanoid:GetPlayingAnimationTracks()) do local animationId = tonumber(track.Animation.AnimationId:match("%d+")) if animationIdsToStop[animationId] then track:Stop() end end end local function onAnimationPlayed(animationTrack) local animationId = tonumber(animationTrack.Animation.AnimationId:match("%d+")) if animationIdsToStop[animationId] then stopSpecificAnimations() animationTrack:Stop() local replacementAnimationId = replacementAnimations[tostring(animationId)] if replacementAnimationId then playReplacementAnimation(animationId) end end end humanoid.AnimationPlayed:Connect(onAnimationPlayed) local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoidRootPart = character:WaitForChild("HumanoidRootPart") local function onBodyVelocityAdded(bodyVelocity) if bodyVelocity:IsA("BodyVelocity") then bodyVelocity.Velocity = Vector3.new(bodyVelocity.Velocity.X, 0, bodyVelocity.Velocity.Z) end end character.DescendantAdded:Connect(onBodyVelocityAdded) for _, descendant in pairs(character:GetDescendants()) do onBodyVelocityAdded(descendant) end player.CharacterAdded:Connect(function(newCharacter) character = newCharacter humanoidRootPart = character:WaitForChild("HumanoidRootPart") character.DescendantAdded:Connect(onBodyVelocityAdded) for _, descendant in pairs(character:GetDescendants()) do onBodyVelocityAdded(descendant) end end)