Quick actions

cmd+k|ctrl+k

Navigation

Languages

fc5r animations

Snippet info

Language

Lua

Visibility

public

Author

dinoturto

Created

2024-07-10T02:19:54.294484Z

Updated

2025-02-02T05:30:36.47613Z

local chr = owner.Character
local root = chr.HumanoidRootPart
local hum = chr.Humanoid
local speed = hum.WalkSpeed / 16

local function Lerp(a, b, t, dt)
    local alpha = 1 - (1 - t) ^ dt
    return a:Lerp(b, alpha)
end

local function joint(p0, p1, c0, c1, name)
    local w = Instance.new("Weld")
    w.Part0 = p0
    w.Part1 = p1
    w.C0 = c0
    w.C1 = c1
    w.Name = name
    w.Parent = p0
    return w
end

local sin, sinh, asin, cos, max, min, clamp, rad = math.sin, math.sinh, math.asin, math.cos, math.max, math.min, math.clamp, math.rad

local function smoothStep(x, steepness, amplitude)
	return amplitude * (1 / (1 + math.exp(-steepness * x)) - 0.5)
end

local nk = joint(chr.Torso, chr.Head, CFrame.new(0, 1, 0), CFrame.new(0, -0.5, 0), "Neck")
local rj = joint(root, chr.Torso, CFrame.new(), CFrame.new(), "RootJoint")
local rs = joint(chr.Torso, chr:FindFirstChild("Right Arm"), CFrame.new(1.5, 0.5, 0), CFrame.new(0, 0.5, 0), "Right Shoulder")
local ls = joint(chr.Torso, chr:FindFirstChild("Left Arm"), CFrame.new(-1.5, 0.5, 0), CFrame.new(0, 0.5, 0), "Left Shoulder")
local rh = joint(chr.Torso, chr:FindFirstChild("Right Leg"), CFrame.new(0.5, -1, 0), CFrame.new(0, 1, 0), "Right Hip")
local lh = joint(chr.Torso, chr:FindFirstChild("Left Leg"), CFrame.new(-0.5, -1, 0), CFrame.new(0, 1, 0), "Left Hip")

local rsc0, lsc0, rhc0, lhc0, rjc0, nkc0 = rs.C0, ls.C0, rh.C0, lh.C0, rj.C0, nk.C0

local t = os.clock()
local exactVel = 0
local vel = 0
local animMove = true
local action = "Idle"

local remote = Instance.new("RemoteEvent")
remote.Name = "inputs"
remote.Parent = owner.PlayerGui

local music = Instance.new("Sound")
music.Looped = true
music.Volume = 0.75
music.Playing = not animMove
music.Parent = root

local function playDance(animName, id, pit)
    animMove = action == animName and true or false
    action = animName
    music.SoundId = id
    music.Pitch = pit or 1
    music.TimePosition = 0
    music.Playing = not animMove
end

local animTable = {
    Idle = function()
        return {
            rj = rjc0 *
                CFrame.new(0, sin(t / 10) / 50, 0) * CFrame.Angles(-cos(t / 10) / 75, 0, 0),
            nk = nkc0 *
                CFrame.Angles(-sin(t / 10) / 75, 0, 0),
            rs = rsc0 *
                CFrame.Angles(0, -rad(3) + sin(t / 10) / 50, rad(2) - cos(t / 10) / 50),
            ls = lsc0 *
                CFrame.Angles(0, rad(3) - sin(t / 10) / 50, -rad(2) + cos(t / 10) / 50),
            rh = rhc0 *
                CFrame.new(0, -sin(t / 10) / 50, -0.075 - cos(t / 10) / 75 - cos(t / 10) / 25) *
                CFrame.Angles(-rad(1.5) + cos(t / 10) / 75 - cos(t / 10) / 50, -rad(3), rad(2)),
            lh = lhc0 *
                CFrame.new(0, -sin(t / 10) / 50, -0.075 - cos(t / 10) / 75 - cos(t / 10) / 25) *
                CFrame.Angles(-rad(1.5) + cos(t / 10) / 75 - cos(t / 10) / 50, rad(3), -rad(2))
        }
    end,
    Walk = function()
        local exactVel = vel / 32
        return {
            rj = rjc0 *
                CFrame.new(0, sin(t * speed / 3) / 7.5, 0) *
                CFrame.Angles((-cos(t * speed / 3) / 15) * -exactVel.Z * 3.5 + exactVel.Z / 4, (sin(t * speed / 6) / 7.5) * -exactVel.Z * 3, -exactVel.X / 4) *
                CFrame.Angles(0, (sin(t * speed / 6) / 15) * exactVel.X * 3, 0),
            nk = nkc0 *
                CFrame.Angles((cos(t * speed / 3) / 20) * -exactVel.Z * 3.5, (-sin(t * speed / 6) / 7.5) * -exactVel.Z * 3.5, 0) *
                CFrame.Angles(0, (sin(t * speed / 6) / 15) * -exactVel.X * 3.5, 0),
            ls = lsc0 *
                CFrame.new(0, 0, (-sin(t * speed / 6) / 4) * -exactVel.Z * 3) *
                CFrame.Angles((sin(t * speed / 6) / 2) * -exactVel.Z * 3 - exactVel.X / 4, (cos(t * speed / 6) / 7.5) * -exactVel.Z * 3, -rad(5) + exactVel.X / 16),
            rs = rsc0 *
                CFrame.new(0, 0, (sin(t * speed / 6) / 4) * -exactVel.Z * 3) *
                CFrame.Angles((-sin(t * speed / 6) / 2) * -exactVel.Z * 3 + exactVel.X / 4, (cos(t * speed / 6) / 7.5) * -exactVel.Z * 3, rad(5) + exactVel.X / 16),
            lh = lhc0 *
                CFrame.new(-0.025, max(-cos(t * speed / 6) / 2, 0), -0.25 + (cos(t * speed / 6) / 2) * -exactVel.Z * 3.5) *
                CFrame.Angles(min(-sin(t * speed / 6) / 1.5, 0.25) * -exactVel.Z * 3.5, 0, -rad(2)) *
                CFrame.Angles(exactVel.X / 4, 0, -sin(t * speed / 6) / 2 * exactVel.X * 3.5),
            rh = rhc0 *
                CFrame.new(0.025, max(cos(t * speed / 6) / 2, 0), -0.25 - (cos(t * speed / 6) / 2) * -exactVel.Z * 3.5) *
                CFrame.Angles(min(sin(t * speed / 6) / 1.5, 0.25) * -exactVel.Z * 3.5, 0, rad(2)) *
                CFrame.Angles(-exactVel.X / 4, 0, sin(t * speed / 6) / 2 * exactVel.X * 3.5)
        }
    end,
    Jump = function()
        return {
            rj = rjc0,
            nk = nkc0,
            ls = lsc0 *
                CFrame.new(0, 0.1, 0.07) *
                CFrame.Angles(rad(3) + sin(t / 8) / 15, -rad(12), -rad(9)),
            rs = rsc0 *
                CFrame.new(0, 0.1, 0.07) *
                CFrame.Angles(rad(7) + cos(t / 8) / 15, rad(15), rad(9)),
            lh = lhc0 *
                CFrame.new(0, 0.5, -0.4) *
                CFrame.Angles(-rad(26), rad(5), -rad(2)),
            rh = rhc0 *
                CFrame.new(0, 0.03, -0.07) *
                CFrame.Angles(-rad(8), 0, rad(3))
        }
    end,
    Fall = function()
        return {
            rj = rjc0 *
                CFrame.Angles(-sin(cos(t / 3) / 6) / 8, 0, 0),
            nk = nkc0,
            ls = lsc0 *
                CFrame.new(0, 0.23 + sin(t / 3) / 22 - cos(t / 1.5) / 25, 0.15 + sin(t / 3) / 30) *
                CFrame.Angles(-rad(7) - cos(t / 3) / 18, -rad(7), -rad(82) - sin(t / 3) / 7 - cos(t / 1.5) / 20),
            rs = rsc0 *
                CFrame.new(0, 0.23 + sin(t / 3) / 22 - cos(t / 1.5) / 25, 0.15 + sin(t / 3) / 30) *
                CFrame.Angles(-rad(7) + cos(t / 3) / 18, rad(7), rad(82) + sin(t / 3) / 7 + cos(t / 1.5) / 20),
            lh = lhc0 *
                CFrame.new(0, 0.1 + sin(cos(t / 4) / 4) / 8, -0.07) *
                CFrame.Angles(-rad(5) + cos(t / 3) / 20 + sin(t / 1.5) / 20, 0, -rad(4)),
            rh = rhc0 *
                CFrame.new(0, 0.2 - sin(cos(t / 2) / 4) / 8, -0.1) *
                CFrame.Angles(-rad(5) - cos(t / 3) / 20 + sin(t / 1.5) / 15, 0, rad(3))
        }
    end,
    Fly = function()
        local exactVel = vel / 32
        return {
            rj = rjc0 *
                CFrame.Angles(exactVel.Z / 3, 0, -exactVel.X / 6) *
                CFrame.new(0, sin(t / 20) / 10, 0) *
                CFrame.Angles(-cos(t / 20) / 20, 0, 0),
            nk = nkc0 *
                CFrame.Angles(-cos(t / 20) / 20, 0, 0),
            ls = lsc0 *
                CFrame.new(0, 0.125 - cos(t / 20) / 20, 0) *
                CFrame.Angles(exactVel.Z / 2, rad(7) - sin(t / 20) / 20, (-exactVel.X / 6) - rad(15) + cos(t / 20) / 20),
            rs = rsc0 *
                CFrame.new(0, 0.125 - cos(t / 20) / 20, 0) *
                CFrame.Angles(exactVel.Z / 2, -rad(7) + sin(t / 20) / 20, (-exactVel.X / 6) + rad(15) - cos(t / 20) / 20),
            lh = lhc0 *
                CFrame.new(0, 0.25, -0.375) *
                CFrame.Angles((exactVel.Z / 2) - sin(t / 20) / 10, (-exactVel.X / 6) + rad(7) - sin(t / 20) / 20, -rad(7)),
            rh = rhc0 *
                CFrame.new(0, 0.5, -0.5) *
                CFrame.Angles((exactVel.Z / 2) - sin(t / 20) / 10, (-exactVel.X / 6) - rad(7) + sin(t / 20) / 20, rad(7))
        }
    end,
    Griddy = function()
        return {
            rj = rjc0 *
                CFrame.Angles(0, sin(sin(t / 30) + t / 60) / 4, 0) *
                CFrame.new(0, -0.4 + sin(t/2)/5, 0) *
                CFrame.Angles(-rad(15) - cos(t / 2) / 10 + sin(t) / 50, 0, cos(t) / 50),
            nk = nkc0,
            ls = lsc0 *
                CFrame.new(0.4 + sin(sin(t / 8) / 2 + t / 16) / 8, -0.13 - cos(t / 2) / 12, -0.2 - sin(sin(t / 8) / 2 + t / 16) / 2) *
                CFrame.Angles(sin(t / 2) / 12 + rad(50) + sin(sin(t / 8) / 2 + t / 16) * 1.7, -sin(sin(t / 8) / 2 + t / 16) / 2, sin(sin(t / 8) / 2 + t / 16) / 2),
            rs = rsc0 *
                CFrame.new(-0.4 - sin(sin(t / 8) / 2 + t / 16) / 8, -0.13 + cos(t / 2) / 12, -0.2 - sin(sin(t / 8) / 2 + t / 16) / 2) *
                CFrame.Angles(-sin(t / 2) / 12 + rad(50) + sin(sin(t / 8) / 2 + t / 16) * 1.7, sin(sin(t / 8) / 2 + t / 16) / 2, -sin(sin(t / 8) / 2 + t / 16) / 2),
            lh = lhc0 *
                CFrame.new(0, -sin(t / 2) / 5, 0) * CFrame.new(0, 0.3 + max(-sin(t / 4) / 2, 0), -0.45 + cos(t / 4) / 8) *
                CFrame.Angles(-rad(5) - cos(t) / 50 - sin(sin(t / 2) / 10 + t / 4) / 3, rad(2), -sin(t / 4) / 20),
            rh = rhc0 *
                CFrame.new(0, -sin(t / 2) / 5, 0) * CFrame.new(0, 0.3 + max(sin(t / 4) / 2, 0), -0.45 - cos(t / 4) / 8) *
                CFrame.Angles(-rad(5) + cos(t) / 50 + sin(sin(t / 2) / 10 + t / 4) / 3, -rad(2), -sin(t / 4) / 20)
        }
    end,
    Skepta = function()
        return {
            rj = rjc0 *
                CFrame.new(-sin(sin(t / 16) * 2) / 7, -0.25 + sin(sin(t / 4) * 2) / 7, 0) *
                CFrame.Angles(rad(8), -sin(sin(t / 16) * 2) / 7, 0),
            nk = nkc0 *
                CFrame.Angles(-rad(14) + cos(t / 4) / 22, sin(t / 4) / 7, 0),
            ls = lsc0 *
                CFrame.new(0, -0.2 + sin(t / 4) / 25, 0) *
                CFrame.Angles(rad(60) - cos(t / 4) / 25, rad(7), rad(50)) *
                CFrame.new(0, -1, 0.1),
            rs = rsc0 *
                CFrame.new(0, -0.2 + sin(t / 4) / 25, 0) *
                CFrame.Angles(rad(40) - cos(t / 4) / 25, -rad(12), -rad(50)) *
                CFrame.new(0, -0.8, 0),
            lh = lhc0 *
                CFrame.new(-0.125 + sin(sin(t / 16) * 2) / 8, 0.2 - sin(sin(t / 4) * 2) / 7, -0.5 + -sin(sin(t / 16) * 2) / 2) *
                CFrame.Angles(-rad(45) + -sin(sin(t / 16) * 2) / 1.25, rad(10) + sin(sin(t / 16) * 2) / 4, -sin(-sin(t / 16) * 2) / 8),
            rh = rhc0 *
                CFrame.new(0.125 + sin(sin(t / 16) * 2) / 8, 0.2 - sin(sin(t / 4) * 2) / 7, -0.5 + sin(sin(t / 16) * 2) / 2) *
                CFrame.Angles(-rad(45) + sin(sin(t / 16) * 2) / 1.25, -rad(10) + sin(sin(t / 16) * 2) / 4, sin(sin(t / 16) * 2) / 8)
        }
    end,
    Naenae = function()
        return {
            rj = rjc0 *
                CFrame.new(sin(t / 6) / 15, -0.7 + math.abs(cos(t / 6)) / 2, 0) *
                CFrame.Angles(rad(8) - sin(t / 6) / 15, cos(t / 6) / 3, 0),
            nk = nkc0 *
                CFrame.Angles(-rad(43), -cos(t / 6) / 6, sin(t / 6) / 26),
            rs = rsc0 *
                CFrame.new(0, 0.3 - cos(t / 6 + cos(t / 6)) / 5, cos(t / 6) / 5) *
                CFrame.Angles(rad(173) - sin(t / 6) / 14, -rad(15) - cos(t / 6) / 8 + sin(t / 3) / 8, rad(12) - sin(t / 6) / 22),
            ls = lsc0 *
                CFrame.new(0.02, -0.2 - cos(t / 6) / 8, 0.1 + cos(t / 6) / 5) *
                CFrame.Angles(rad(6) - sin(t / 6) / 7, rad(16) + sin(t / 6) / 4, -rad(20) + cos(t / 6) / 5),
            rh = rhc0 *
                CFrame.new(-sin(t / 6) / 15, 0.7 - math.abs(cos(t / 6)) / 2, -sin(t / 6) / 15 + math.abs(cos(t / 6)) / 16 + cos(t / 6) / 6) *
                CFrame.Angles(-rad(8) + sin(t / 6) / 15, -cos(t / 6) / 3, -cos(t / 6) / 24) *
                CFrame.new(0.37 - cos(t / 6) / 2.2, -0.1, -0.65 + sin(t / 3) / 3.5) *
                CFrame.Angles(-rad(18) + sin(t / 3) / 7, -rad(14) + cos(t / 6) / 5, -rad(8) + cos(t / 6) / 4),
            lh = lhc0 *
                CFrame.new(-sin(t / 6) / 15, 0.7 - math.abs(cos(t / 6)) / 2, -sin(t / 6) / 15 + math.abs(cos(t / 6)) / 16 - cos(t / 6) / 6) *
                CFrame.Angles(-rad(8) + sin(t / 6) / 15, -cos(t / 6) / 3, -cos(t / 6) / 24) *
                CFrame.new(-0.37 - cos(t / 6) / 2.2, -0.1, -0.65 + sin(t / 3) / 3.5) *
                CFrame.Angles(-rad(18) + sin(t / 3) / 7, rad(14) + cos(t / 6) / 5, rad(8) + cos(t / 6) / 4)
        }
    end,
    HowLowCanYouGo = function()
        return {
            rj = rjc0 *
                CFrame.new(0, -1 - cos(t / 4 + sin(t / 4)) / 8 - cos(t / 4) / 7, 0) *
                CFrame.Angles(rad(15), sin(t / 8 + sin(t / 4)) / 8, -sin(t / 8 + sin(t / 4)) / 8),
            nk = nkc0,
            rs = rsc0 *
                CFrame.new(0.1, -0.2 + cos(t / 4 + sin(t / 4)) / 5, -0.4) *
                CFrame.Angles(rad(100) - sin(t / 4) / 8, rad(10) + cos(t / 4 + sin(t / 4)) / 15, -rad(35) - cos(t / 4 + sin(t / 4)) / 8),
            ls = lsc0 *
                CFrame.new(-0.1, -0.2 + cos(t / 4 + sin(t / 4)) / 5, -0.4) *
                CFrame.Angles(rad(100) + sin(t / 4) / 8, -rad(10) - cos(t / 4 + sin(t / 4)) / 15, rad(35) + cos(t / 4 + sin(t / 4)) / 8),
            rh = rhc0 *
                CFrame.Angles(-rad(15), -sin(t / 8 + sin(t / 4)) / 8, sin(t / 8 + sin(t / 4)) / 8) *
                CFrame.new(-0.1 + sin(t / 8 + sin(t / 4)) / 8, 1 + cos(t / 4 + sin(t / 4)) / 8 + cos(t / 4) / 7, sin(t / 8 + sin(t / 4)) / 8) *
                CFrame.Angles(0, 0, -rad(5)) *
                CFrame.new(0.75 - cos(t / 4 + sin(t / 4)) / 2.5, 0, -0.8) *
                CFrame.Angles(-rad(10), -rad(10) - cos(t / 4 + sin(t / 4)) / 5, rad(5) + cos(t / 4 + sin(t / 4)) / 5),
            lh = lhc0 *
                CFrame.Angles(-rad(15), -sin(t / 8 + sin(t / 4)) / 8, sin(t / 8 + sin(t / 4)) / 8) *
                CFrame.new(0.1 + sin(t / 8 + sin(t / 4)) / 8, 1 + cos(t / 4 + sin(t / 4)) / 8 + cos(t / 4) / 7, -sin(t / 8 + sin(t / 4)) / 8) *
                CFrame.Angles(0, 0, rad(5)) *
                CFrame.new(-0.75 + cos(t / 4 + sin(t / 4)) / 2.5, 0, -0.8) *
                CFrame.Angles(-rad(10), rad(10) + cos(t / 4 + sin(t / 4)) / 5, -rad(5) - cos(t / 4 + sin(t / 4)) / 5)
        }
    end,
    Oluwamark = function()
        return {
        rj = rjc0 *
            CFrame.new(-sinh(sin(sin(t / 22.5))) ^ 3 / 4, sin(t / 5) / 20, 0) *
            CFrame.Angles(-cos(t / 5) / 20, sinh(sin(sin(t / 22.5))) ^ 3 / 4, 0),
        nk = nkc0 *
            CFrame.Angles(-rad(15) - cos(t / 5) / 20 + sin(t / 35 + sin(t / 35)) / 2.5, 0, 0),
        rs = rsc0 *
            CFrame.new(-sinh(sin(sin(t / 22.5))) ^ 3 / 3, -0.2 + cos(t / 5) / 8 + sinh(sin(sin(t / 22.5))) ^ 3 / 8, -0.25 - sinh(sin(sin(t / 22.5))) ^ 3 / 2) *
            CFrame.Angles(rad(20) + sin(t / 5) / 4 + sinh(sin(sin(t / 22.5))) ^ 3 / 2, rad(20) + sinh(sin(sin(t / 22.5))) ^ 3 / 2, -sinh(sin(sin(t / 22.5))) ^ 3 / 2 - cos(t / 5) / 8 - sinh(sin(sin(t / 22.5))) ^ 3 / 2),
        ls = lsc0 *
            CFrame.new(-sinh(sin(sin(t / 22.5))) ^ 3 / 3, -0.2 + cos(t / 5) / 8 - sinh(sin(sin(t / 22.5))) ^ 3 / 8, -0.25 + sinh(sin(sin(t / 22.5))) ^ 3 / 2) *
            CFrame.Angles(rad(20) + sin(t / 5) / 4 - sinh(sin(sin(t / 22.5))) ^ 3 / 2, -rad(20) + sinh(sin(sin(t / 22.5))) ^ 3 / 2, -sinh(sin(sin(t / 22.5))) ^ 3 / 2 + cos(t / 5) / 8 - sinh(sin(sin(t / 22.5))) ^ 3 / 2),
        rh = rhc0 *
            CFrame.new(sinh(sin(sin(t / 22.5))) ^ 3 / 4, -sin(t / 5) / 20, sinh(sin(sin(t / 22.5))) ^ 3 / 8 - cos(t / 5) / 20) *
            CFrame.new(0.075 - sinh(sin(sin(t / 22.5))) ^ 3 / 8, 0, cos(t / 5) / 5) *
            CFrame.Angles(cos(t / 5) / 20, -sinh(sin(sin(t / 22.5))) ^ 3 / 4, 0) *
            CFrame.Angles(-rad(8) + cos(t / 5) / 10, -rad(15) - sin(t / 5) / 3, rad(5) + sinh(sin(sin(t / 22.5))) ^ 3 / 8),
        lh = lhc0 *
            CFrame.new(sinh(sin(sin(t / 22.5))) ^ 3 / 4, -sin(t / 5) / 20, -sinh(sin(sin(t / 22.5))) ^ 3 / 8 - cos(t / 5) / 20) *
            CFrame.new(-0.075 - sinh(sin(sin(t / 22.5))) ^ 3 / 8, 0, cos(t / 5) / 5) *
            CFrame.Angles(cos(t / 5) / 20, -sinh(sin(sin(t / 22.5))) ^ 3 / 4, 0) *
            CFrame.Angles(-rad(8) + cos(t / 5) / 10, rad(15) + sin(t / 5) / 3, -rad(5) + sinh(sin(sin(t / 22.5))) ^ 3 / 8)
        }
    end,
    Sidestep = function()
        return {
            rj = rjc0 *
                CFrame.new(cos(t / 8) / 10, -0.15 + math.abs(-sin(t / 4) / 4) + cos(t / 4) / 10, -cos(t / 4) / 10) *
                CFrame.Angles(-rad(2) + sin(t / 4) / 20, sin(t / 8) / 10, cos(t / 4) / 40 + sin(t / 8) / 20),
            nk = nkc0 *
                CFrame.Angles(-rad(10) + cos(t / 4) / 10, -sin(t / 8) / 10, sin(t / 4) / 20),
            rs = rsc0 *
                CFrame.new(-0.02 + sin(t / 8 + sin(t / 4)) / 10, -0.3 + sin(t / 8) / 4, 0.4 - sin(t / 8) / 4) *
                CFrame.Angles(rad(40) + cos(t / 2) / 8 + sin(t / 8) / 5, rad(15), rad(10) + sin(t / 4) / 15 + sin(t / 4) / 15 - sin(t / 8) / 15),
            ls = lsc0 *
                CFrame.new(0.02 + sin(t / 8 + sin(t / 4)) / 10, -0.3 - sin(t / 8) / 4, 0.4 + sin(t / 8) / 4) *
                CFrame.Angles(rad(40) - sin(t / 2) / 8 - sin(t / 8) / 5, -rad(15), -rad(10) - sin(t / 4) / 15 + sin(t / 4) / 15 - sin(t / 8) / 15),
            rh = rhc0 *
                CFrame.new(0, 0.1 - math.abs(-sin(t / 4) / 4) + cos(t / 2) / 20, 0) *
                CFrame.Angles(0, 0, sin(t / 8) / 14) *
                CFrame.new(0.04 - min(0, sin(t / 8) / 2.3), max(0, -sin(t / 8) / 2.4), min(0, sin(t / 8 + sin(t / 4)) / 1.7)) *
                CFrame.Angles(-rad(15) + max(sin(t / 8) / 2 - cos(t / 4) / 15, -rad(8)), -rad(10) + sin(t / 8 + cos(t / 4)) / 3, rad(3) + sin(t / 8) / 10),
            lh = lhc0 *
                CFrame.new(0, 0.1 - math.abs(-sin(t / 4) / 4) - cos(t / 2) / 20, 0) *
                CFrame.Angles(0, 0, sin(t / 8) / 14) *
                CFrame.new(-0.04 - max(0, sin(t / 8) / 2.3), max(0, sin(t / 8) / 2.4), min(0, -sin(t / 8 + sin(t / 4)) / 1.7)) *
                CFrame.Angles(-rad(15) + max(-sin(t / 8) / 2 + cos(t / 4) / 15, -rad(8)), rad(10) + sin(t / 8 + cos(t / 4)) / 3, rad(3) + sin(t / 8) / 10)
        }
    end,
    Xavier = function()
        return {
            rj = rjc0 *
                CFrame.new(sin(t / 14) / 20, -0.4 + math.abs(sin(t / 7) / 4), -0.05) *
                CFrame.Angles(0, cos(t / 14) / 50, 0) *
                CFrame.Angles(rad(15) + sin(t / 14) / 50, 0, cos(t / 14) / 30),
            nk = nkc0 *
                CFrame.Angles(0, -cos(t / 14) / 50, 0) *
                CFrame.new(cos(t / 14) / 80, 0, math.abs(sin(t / 7)) / 19) *
                CFrame.new(-sin(t / 14) / 20, 0.2 - math.abs(sin(t / 7) / 4) - cos(t / 3.5) / 80, -0.15) *
                CFrame.Angles(-rad(20) - sin(t / 14) / 50, 0, -cos(t / 14) / 30),
            rs = rsc0 *
                CFrame.new(0, -math.abs(sin(t / 7) / 4), 0) *
                CFrame.new(-0.06 + cos(t / 14) / 30, -0.2 + max(0.1, cos(t / 14) / 1.8), -0.1 - math.asin(sin(t / 14)) / 3) *
                CFrame.Angles(min(rad(70), rad(50) + sin(t / 14)) * 1.2 + sin(t / 3.5) / 20, rad(5) - sin(t / 3.5) / 15, -rad(2) + cos(t / 3.5) / 40) *
                CFrame.Angles(0, 0, -sin(t / 14) / 15),
            ls = lsc0 *
                CFrame.new(0, -math.abs(sin(t / 7) / 4), 0) *
                CFrame.new(0.06 + cos(t / 14) / 30, -0.2 - min(0.1, cos(t / 14) / 1.8), -0.1 + math.asin(sin(t / 14)) / 3) *
                CFrame.Angles(min(rad(70), rad(50) - sin(t / 14)) * 1.2 + cos(t / 3.5) / 20, -rad(5) + sin(t / 3.5) / 15, rad(2) - cos(t / 3.5) / 40) *
                CFrame.Angles(0, 0, -sin(t / 14) / 15),
            rh = rhc0 *
                CFrame.Angles(0, -cos(t / 14) / 50, 0) *
                CFrame.new(-sin(t / 14) / 20, 0.3 - math.abs(sin(t / 7) / 4), -0.1 - math.abs(sin(t / 7) / 13)) *
                CFrame.new(cos(t / 14) / 10, 0, 0) *
                CFrame.Angles(-sin(t / 14) / 40, 0, -cos(t / 14) / 11) *
                CFrame.Angles(-rad(15) - math.abs(sin(t / 7) / 13), -rad(15), rad(4)),
            lh = lhc0 *
                CFrame.Angles(0, -cos(t / 14) / 50, 0) *
                CFrame.new(-sin(t / 14) / 20, 0.3 - math.abs(sin(t / 7) / 4), -0.1 - math.abs(sin(t / 7) / 13)) *
                CFrame.new(cos(t / 14) / 10, 0, 0) *
                CFrame.Angles(-sin(t / 14) / 40, 0, -cos(t / 14) / 11) *
                CFrame.Angles(-rad(15) - math.abs(sin(t / 7) / 13), rad(15), -rad(4))
        }
    end,
    Kotonai = function()
        return {
            rj = rjc0 *
                CFrame.new(0, sin(t / 4) / 10, 0) *
                CFrame.Angles(0, 0, sin(sin(sin(t / 8) * 1.75) * 1.5) / 10),
            nk = nkc0 *
                CFrame.Angles(0, 0, -sin(sin(sin(t / 8) * 1.75) * 1.5) / 10),
            rs = rsc0 *
                CFrame.new(-cos(t / 4) / 4, sin(t / 8) / 4, -0.125 + sin(sin(sin(t / 8) * 1.75) * 1.5) / 2) *
                CFrame.Angles(0, 0, -rad(25) + sin(sin(sin(t / 8) * 1.75) * 1.5)) *
                CFrame.Angles(0, -sin(sin(sin(t / 8) * 1.75) * 1.5), 0),
            ls = lsc0 *
                CFrame.new(cos(t / 4) / 4, -sin(t / 8) / 4, -0.125 - sin(-sin(-sin(t / 8) * 1.75) * 1.5) / 2) *
                CFrame.Angles(0, 0, rad(25) + sin(-sin(-sin(t / 8) * 1.75) * 1.5)) *
                CFrame.Angles(0, -sin(-sin(-sin(t / 8) * 1.75) * 1.5), 0),
            rh = rhc0 *
                CFrame.new(-sin(sin(sin(t / 8) * 1.75) * 1.5) / 10, -sin(t / 4) / 10 - sin(sin(sin(t / 8) * 1.75) * 1.5) / 20, 0) *
                CFrame.new(sin(sin(sin(t / 8) * 1.75) * 1.5) / 10, 0, -rad(15)) *
                CFrame.Angles(0, 0, -sin(sin(sin(t / 8) * 1.75) * 1.5) / 10) *
                CFrame.Angles(-rad(7.5), 0, rad(3) - sin(sin(sin(t / 8) * 1.75) * 1.5) / 20),
            lh = lhc0 *
                CFrame.new(-sin(sin(sin(t / 8) * 1.75) * 1.5) / 10, -sin(t / 4) / 10 + sin(sin(sin(t / 8) * 1.75) * 1.5) / 20, 0) *
                CFrame.new(sin(sin(sin(t / 8) * 1.75) * 1.5) / 10, 0, -rad(15)) *
                CFrame.Angles(0, 0, -sin(sin(sin(t / 8) * 1.75) * 1.5) / 10) *
                CFrame.Angles(-rad(7.5), 0, -rad(3) - sin(sin(sin(t / 8) * 1.75) * 1.5) / 20)
        }
    end,
    SkillIssue = function()
        local value = math.asin(sin(sin(t / 18)))
        sideFactor = (math.abs(value) > 0.73) and (rad(13) * math.sign(value)) / 2 or 0
        
        return {
            rj = rjc0 *
                CFrame.new(sideFactor, -0.1 - cos(t / 4.5) / 20 + sin(t / 9 + sin(t / 4.5)) / 9, 0) *
                CFrame.Angles(0, 0, sideFactor),
            nk = nkc0 *
                CFrame.Angles(0, 0, -sideFactor * 1.2),
            rs = rsc0 *
                CFrame.new(-0.13 - sin(t / 9 + sin(t / 4.5) / 4) / 6, -0.3 + sin(t / 9 + sin(t / 4.5) / 4) / 10 - cos(t / 4.5) / 6, -0.1 - sin(t / 9 + sin(t / 4.5) / 4) / 6) *
                CFrame.Angles(rad(45) + sin(t / 9 + sin(t / 4.5) / 4) * 1.4, rad(5) - sin(t / 9 + sin(t / 4.5) / 4) / 9, -rad(6) - sin(t / 9 + sin(t / 4.5) / 4) / 4),
            ls = lsc0 *
                CFrame.new(0.13 + sin(t / 9 + sin(t / 4.5) / 4) / 6, -0.3 + sin(t / 9 + sin(t / 4.5) / 4) / 10 - cos(t / 4.5) / 6, -0.1 - sin(t / 9 + sin(t / 4.5) / 4) / 6) *
                CFrame.Angles(rad(45) + sin(t / 9 + sin(t / 4.5) / 4) * 1.4, -rad(5) + sin(t / 9 + sin(t / 4.5) / 4) / 9, rad(6) + sin(t / 9 + sin(t / 4.5) / 4) / 4),
            rh = rhc0 *
                CFrame.Angles(0, 0, -sideFactor) *
                CFrame.new(-sideFactor * 2, 0.1 + cos(t / 4.5) / 20 - sin(t / 9 + sin(t / 4.5)) / 9 - sideFactor / 2, 0) *
                CFrame.new(sideFactor * 2, 0, -0.1) *
                CFrame.Angles(0, 0, -sideFactor * 1.2),
            lh = lhc0 *
                CFrame.Angles(0, 0, -sideFactor) *
                CFrame.new(-sideFactor * 2, 0.1 + cos(t / 4.5) / 20 - sin(t / 9 + sin(t / 4.5)) / 9 + sideFactor / 2, 0) *
                CFrame.new(sideFactor * 2, 0, -0.1) *
                CFrame.Angles(0, 0, -sideFactor * 1.2)
        }
    end,
    Shuffle = function()
        return {
        rj = rjc0 *
            CFrame.new(0, sin(t / 3.5) / 10, sin(cos(t / 14) * 1.625) / 2.5) *
            CFrame.Angles(-cos(t / 3.5) / 80, 0, 0),
        nk = nkc0 *
            CFrame.Angles(-rad(7) - cos(t / 3.5) / 20, 0, 0),
        ls = lsc0 *
            CFrame.new(0.15 + sin(sin(cos(t / 14) * 1.625) * 1.625) / 4, 0.2 - sin(sin(cos(t / 14) * 1.625) * 1.625) / 2, -sin(sin(cos(t / 14) * 1.625) * 1.625) / 4) *
            CFrame.Angles(sin(sin(cos(t / 14) * 1.625) * 1.625), cos(t / 7) * sin(t / 14) / 2.5, rad(7) + sin(sin(cos(t / 14) * 1.625) * 1.625) - cos(t / 7) * cos(t / 14) / 5),
        rs = rsc0 *
            CFrame.new(-0.15 - sin(sin(cos(t / 14) * 1.625) * 1.625) / 4, -sin(sin(cos(t / 14) * 1.625) * 1.625) / 2, -sin(sin(cos(t / 14) * 1.625) * 1.625) / 4) *
            CFrame.Angles(sin(sin(cos(t / 14) * 1.625) * 1.625), -(cos(t / 7) * sin(t / 14) / 2.5), rad(7) - sin(sin(cos(t / 14) * 1.625) * 1.625) + cos(t / 7) * cos(t / 14) / 5),
        lh = lhc0 *
            CFrame.new(0, -sin(t / 3.5) / 10, -sin(cos(t / 14) * 1.625) / 2.5) *
            CFrame.Angles(cos(t / 3.5) / 80, 0, 0) *
            CFrame.new(0, -sin(sin(cos(t / 7) * 1.625) * 1.625) / 5, -0.25 + sin((cos(t / 7) * cos(t / 14) + cos(t / 14)) / 2) / 2.5) *
            CFrame.Angles(sin((-cos(t / 7) * cos(t / 14) - cos(t / 14)) / 2) / 2.5, 0.2 + sin(sin(cos(t / 14) * 1.625) * 1.625) / 5, -rad(2)),
        rh = rhc0 *
            CFrame.new(0, -sin(t / 3.5) / 10, -sin(cos(t / 14) * 1.625) / 2.5) *
            CFrame.Angles(cos(t / 3.5) / 80, 0, 0) *
            CFrame.new(max(cos(t / 7) * cos(t / 14) + cos(t / 14), 0) / 10, 0.2 + sin(sin(cos(t / 7) * 1.625) * 1.625) / 5, -0.125 + sin(cos(t / 14) * 1.625) / 2.5 - max(-cos(t / 7) * cos(t / 14) - cos(t / 14), 0) / 5) *
            CFrame.Angles(-max(-cos(t / 7) * cos(t / 14) - cos(t / 14), 0) / 1.5 + sin(cos(t / 14) * 1.625) / 5, -max(-cos(t / 7) * cos(t / 14) - cos(t / 14), 0) / 5 - max(cos(t / 7) * cos(t / 14) + cos(t / 14), 0) / 2.5, rad(2) - max(cos(t / 7) * cos(t / 14) + cos(t / 14), 0) / 10)
        }
    end,
    Hugo = function()
        return {
            nk = nkc0 *
                CFrame.new(asin(cos(t / 12)) / 16, 0, 0) *
                CFrame.Angles(min(cos(t / 6 - 1) / 10, 0) + sin(t / 24) ^ 3 / 4, -smoothStep(sin(t / 12) / 10, 3, 1) + smoothStep(-cos(t / 12) / 10, 3, 1), smoothStep(-cos(t / 12) / 20, 3, 1)),
            rj = rjc0 *
                CFrame.new(-smoothStep(sin(t / 12) / 2, 3, 1), -0.0625 + cos(t / 6) / 10 + sin(t / 2.75) / 10, 0) *
                CFrame.Angles(0, smoothStep(sin(t / 12) / 10, 3, 1), 0),
            ls = lsc0 *
                CFrame.new(0, sin(t / 12) / 3, 0.25 + cos(t / 12) / 3) *
                CFrame.Angles(rad(35) + sin(t / 12), cos(t / 12) / 4, -rad(10) + cos(t / 12) / 8),
            rs = rsc0 *
                CFrame.new(0, -sin(t / 12) / 3, 0.25 - cos(t / 12) / 3) *
                CFrame.Angles(rad(35) - sin(t / 12), cos(t / 12) / 4, rad(10) + cos(t / 12) / 8),
            lh = {Stabilized = true, Pose = lhc0 *
                CFrame.new(-sin(t / 12) ^ 3 / 2 + sin(t / 6) ^ 3 / 4, -0.175 + sin(t / 6) ^ 4 / 1.75, -0.25 + sin(t / 12) ^ 3 / 3) *
                CFrame.Angles(-math.rad(5) - sin(t / 12) ^ 3 / 4, -sin(t / 12) ^ 3 / 2, -cos(t / 6) / 4)},
            rh = {Stabilized = true, Pose = rhc0 *
                CFrame.new(-sin(t / 12) ^ 3 / 2 - sin(t / 6) ^ 3 / 4, -0.175 + sin(t / 6) ^ 4 / 1.75, -0.25 - sin(t / 12) ^ 3 / 3) *
                CFrame.Angles(-math.rad(5) + sin(t / 12) ^ 3 / 4, -sin(t / 12) ^ 3 / 2, cos(t / 6) / 4)}
        }
    end,
}

local keyFuncs = {
    One = function() playDance("Griddy", "rbxassetid://12578363577") end,
    Two = function() playDance("Skepta", "rbxassetid://16033332539") end,
    Three = function() playDance("Naenae", "rbxassetid://14817128028") end,
    Four = function() playDance("HowLowCanYouGo", "rbxassetid://9124780123") end,
    Five = function() playDance("Oluwamark", "rbxassetid://16744083583", 2) end,
    Six = function() playDance("Sidestep", "rbxassetid://16744083583", 2.5) end,
    Seven = function() playDance("Xavier", "rbxassetid://15395092532", 0.85) end,
    Eight = function() playDance("Kotonai", "rbxassetid://16769384569", 2) end,
    Nine = function() playDance("SkillIssue", "rbxassetid://16852898854") end,
    Zero = function() playDance("Shuffle", "rbxassetid://18236510817") end,
    Minus = function() playDance("Hugo", "", 1) end
}

local joints = {rj = {rj, rjc0, CFrame.new()}, nk = {nk, nkc0, CFrame.new()}, rs = {rs, rsc0, CFrame.new()}, ls = {ls, lsc0, CFrame.new()}, rh = {rh, rhc0, CFrame.new()}, lh = {lh, lhc0, CFrame.new()}}

game:GetService("RunService").PostSimulation:Connect(function(dt)
    t = os.clock() * 60
    
    exactVel = CFrame.new(root.CFrame:VectorToObjectSpace(root.Velocity))
    vel = Vector3.new(clamp(exactVel.x, -64, 64), clamp(exactVel.y, -64, 64), clamp(exactVel.z, -64, 64))
    
    if animMove then
        if hum:GetState() ~= Enum.HumanoidStateType.Climbing then
            if not hum.Sit then
                if hum.FloorMaterial == Enum.Material.Air then
                    action = "Jump"
                else
                    action = hum.MoveDirection.Magnitude > 0 and "Walk" or "Idle"
                end
            else
                action = "Sit"
            end
        else
            if math.abs(vel.Y) > 0 then
                action = "Climb"
            end
        end
    end
    
    for i, v in next, joints do
        local joint, jointc0, transform = v[1], v[2], v[3]
        if animTable[action] and animTable[action]()[i] then
            local animCF = animTable[action]()[i]
            local stabilized
            
            if typeof(animCF) == "table" and animCF["Stabilized"] then
                stabilized = true
                animCF = animCF["Pose"]
            end
            
            v[3] = Lerp(v[3], jointc0:Inverse() * animCF, 0.3, dt * 60)
            transform = v[3]
            
            joint.C0 = (stabilized and joint.Part0.CFrame:Inverse() * root.CFrame * jointc0 or jointc0) * transform
        end
    end
end)

NLS([[
local uis = game:GetService("UserInputService")
local remote = script.Parent:FindFirstChild("inputs")
if not remote then
    error("no remote found")
end

uis.InputEnded:Connect(function(key, gp)
    if not gp then
        remote:FireServer(key.KeyCode)
    end
end)
]])

remote.OnServerEvent:Connect(function(plr, key)
    if plr == owner and keyFuncs[tostring(key):sub(14)] then
        keyFuncs[tostring(key):sub(14)]()
    end
end)
INFO