
KeylessUniversal

-- 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)No comments yet for this script.



