-- wait for the local player to fully load into the game local player = game.Players.LocalPlayer while not player do task.wait() player = game.Players.LocalPlayer end local runService = game:GetService("RunService") local currentSpeedConnection = nil -- stop all currently playing animation tracks to prevent overlapping states local function StopAnimations(character) local animateScript = character:WaitForChild("Animate") local humanoid = character:WaitForChild("Humanoid") local animator = humanoid:WaitForChild("Animator") animateScript.Disabled = false for _, track in pairs(animator:GetPlayingAnimationTracks()) do track:Stop() end end -- apply the custom animation asset IDs, speed 16.5, and slightly increased playback pacing local function ApplyCustomAnimations(character) local humanoid = character:WaitForChild("Humanoid") -- verify that the character is using the R15 rig type before proceeding if humanoid.RigType ~= Enum.HumanoidRigType.R15 then warn("❌ R6 detected - R15 only bro?") return end local animateScript = character:WaitForChild("Animate") local animator = humanoid:WaitForChild("Animator") StopAnimations(character) -- set the character walkspeed to 16.5 upon execution humanoid.WalkSpeed = 16.5 -- assign the single desired head bopping idle animation to both slots animateScript.idle.Animation1.AnimationId = "rbxassetid://122257458498464" animateScript.idle.Animation2.AnimationId = "rbxassetid://122257458498464" -- remove or override the third floating pose animation slot if it exists if animateScript.idle:FindFirstChild("Animation3") then animateScript.idle.Animation3.AnimationId = "rbxassetid://122257458498464" end -- assign movement and traversal animation assets animateScript.walk.WalkAnim.AnimationId = "rbxassetid://122150855457006" animateScript.run.RunAnim.AnimationId = "rbxassetid://82598234841035" animateScript.jump.JumpAnim.AnimationId = "rbxassetid://75290611992385" animateScript.climb.ClimbAnim.AnimationId = "rbxassetid://88763136693023" animateScript.fall.FallAnim.AnimationId = "rbxassetid://18537367238" -- assign water swimming animation assets animateScript.swim.Swim.AnimationId = "rbxassetid://133308483266208" animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://109346520324160" -- refresh the humanoid state and re-enable the animate script humanoid:ChangeState(Enum.HumanoidStateType.GettingUp) animateScript.Disabled = false -- disconnect any previously running loop to prevent duplicates upon respawn if currentSpeedConnection then currentSpeedConnection:Disconnect() currentSpeedConnection = nil end -- scale up the animation speed slightly from 0.96 to 0.98 for a microscopic speed bump currentSpeedConnection = runService.RenderStepped:Connect(function() if not character or not character.Parent or humanoid.Health <= 0 then if currentSpeedConnection then currentSpeedConnection:Disconnect() currentSpeedConnection = nil end return end for _, track in ipairs(animator:GetPlayingAnimationTracks()) do local animId = track.Animation and track.Animation.AnimationId if animId == "rbxassetid://122150855457006" or animId == "rbxassetid://82598234841035" then -- adjust the speed multiplier to make the animation pacing just a fraction faster track:AdjustSpeed(0.98) end end end) print("✅ Animations, speed 16.5, and respawn persistence applied successfully") end -- handle setup for the existing character or wait until one spawns local function OnCharacterAdded(character) character:WaitForChild("Humanoid") character:WaitForChild("Animate") task.spawn(function() task.wait(0.1) -- brief safety delay to let Roblox finish resetting the character state ApplyCustomAnimations(character) end) end if player.Character then OnCharacterAdded(player.Character) end player.CharacterAdded:Connect(OnCharacterAdded)