function onRunning(S)if S>.01 then if Figure and(Humanoid and Humanoid.WalkSpeed<17)then playAnimation("\119\097\108\107",.1,Humanoid)elseif Figure and(Humanoid and Humanoid.WalkSpeed>17)then playAnimation("\114\117\110",.1,Humanoid)end if currentAnimInstance and currentAnimInstance.AnimationId=="\104\116\116\112\058\047\047\119\119\119\046\114\111\098\108\111\120\046\099\111\109\047\097\115\115\101\116\047\063\105\100\061\049\056\048\052\050\054\051\053\052"then setAnimationSpeed(S/14.5)end pose="\082\117\110\110\105\110\103"else playAnimation("\105\100\108\101",.1,Humanoid)pose="\083\116\097\110\100\105\110\103"end end function onDied()pose="\068\101\097\100"end function onJumping()playAnimation("\106\117\109\112",.1,Humanoid)jumpAnimTime=jumpAnimDuration pose="\074\117\109\112\105\110\103"end function onClimbing(S)playAnimation("\099\108\105\109\098",.1,Humanoid)setAnimationSpeed(S/12.0)pose="\067\108\105\109\098\105\110\103"end function onGettingUp()pose="\071\101\116\116\105\110\103\085\112"end function onFreeFall()if jumpAnimTime<=0 then playAnimation("\102\097\108\108",fallTransitionTime,Humanoid)end pose="\070\114\101\101\070\097\108\108"end function onFallingDown()pose="\070\097\108\108\105\110\103\068\111\119\110"end function onSeated()pose="\083\101\097\116\101\100"end function onPlatformStanding()pose="\080\108\097\116\102\111\114\109\083\116\097\110\100\105\110\103"end function onSwimming(S)if S>0 then pose="\082\117\110\110\105\110\103"else pose="\083\116\097\110\100\105\110\103"end end function getTool()for S,a in ipairs(Figure:GetChildren())do if a.className=="\084\111\111\108"then return a end end return nil end function getToolAnim(S)for S,a in ipairs(S:GetChildren())do if a.Name=="\116\111\111\108\097\110\105\109"and a.className=="\083\116\114\105\110\103\086\097\108\117\101"then return a end end return nil end function animateTool()if toolAnim=="\078\111\110\101"then playToolAnimation("\116\111\111\108\110\111\110\101",toolTransitionTime,Humanoid)return end if toolAnim=="\083\108\097\115\104"then playToolAnimation("\116\111\111\108\115\108\097\115\104",0,Humanoid)return end if toolAnim=="\076\117\110\103\101"then playToolAnimation("\116\111\111\108\108\117\110\103\101",0,Humanoid)return end end function moveSit()RightShoulder.MaxVelocity=.15 LeftShoulder.MaxVelocity=.15 RightShoulder:SetDesiredAngle(1.57)LeftShoulder:SetDesiredAngle(-1.57)RightHip:SetDesiredAngle(1.57)LeftHip:SetDesiredAngle(-1.57)end local S=0 function move(a)local j=1 local u=1 local P=a-S S=a local V=0 local C=false if jumpAnimTime>0 then jumpAnimTime=jumpAnimTime-P end if pose=="\070\114\101\101\070\097\108\108"and jumpAnimTime<=0 then playAnimation("\102\097\108\108",fallTransitionTime,Humanoid)elseif pose=="\083\101\097\116\101\100"then playAnimation("\115\105\116",.5,Humanoid)return elseif pose=="\082\117\110\110\105\110\103"then if Figure and(Humanoid and Humanoid.WalkSpeed<17)then playAnimation("\119\097\108\107",.1,Humanoid)elseif Figure and(Humanoid and Humanoid.WalkSpeed>17)then playAnimation("\114\117\110",.1,Humanoid)end elseif pose=="\068\101\097\100"or pose=="\071\101\116\116\105\110\103\085\112"or pose=="\070\097\108\108\105\110\103\068\111\119\110"or pose=="\083\101\097\116\101\100"or pose=="\080\108\097\116\102\111\114\109\083\116\097\110\100\105\110\103"then stopAllAnimations()j=.1 u=1 C=true end if C then local S=j*math.sin(a*u)RightShoulder:SetDesiredAngle(S+V)LeftShoulder:SetDesiredAngle(S-V)RightHip:SetDesiredAngle(-S)LeftHip:SetDesiredAngle(-S)end local p=getTool()if p and p:FindFirstChild("\072\097\110\100\108\101")then local S=getToolAnim(p)if S then toolAnim=S.Value S.Parent=nil toolAnimTime=a+.3 end if a>toolAnimTime then toolAnimTime=0 toolAnim="\078\111\110\101"end animateTool()else stopToolAnimations()toolAnim="\078\111\110\101"toolAnimInstance=nil toolAnimTime=0 end end

function onRunning(speed)
    if speed>0.01 then
        if Figure and Humanoid and Humanoid.WalkSpeed<17 then
            playAnimation("walk", 0.1, Humanoid);
        elseif Figure and Humanoid and Humanoid.WalkSpeed>17 then
            playAnimation("run", 0.1, Humanoid);
        end;
        if currentAnimInstance and currentAnimInstance.AnimationId == "http://www.roblox.com/asset/?id=180426354" then
            setAnimationSpeed(speed / 14.5)
        end
        pose = "Running"
    else
        playAnimation("idle", 0.1, Humanoid)
        pose = "Standing"
    end
end
function onDied()
    pose = "Dead"
end
function onJumping()
    playAnimation("jump", 0.1, Humanoid)
    jumpAnimTime = jumpAnimDuration
    pose = "Jumping"
end
function onClimbing(speed)
    playAnimation("climb", 0.1, Humanoid)
    setAnimationSpeed(speed / 12.0)
    pose = "Climbing"
end
function onGettingUp()
    pose = "GettingUp"
end
function onFreeFall()
    if (jumpAnimTime <= 0) then
        playAnimation("fall", fallTransitionTime, Humanoid)
    end
    pose = "FreeFall"
end
function onFallingDown()
    pose = "FallingDown"
end
function onSeated()
    pose = "Seated"
end
function onPlatformStanding()
    pose = "PlatformStanding"
end
function onSwimming(speed)
    if speed>0 then
        pose = "Running"
    else
        pose = "Standing"
    end
end

function getTool()
    for _, kid in ipairs(Figure:GetChildren()) do
        if kid.className == "Tool" then return kid end
    end
    return nil
end

function getToolAnim(tool)
    for _, c in ipairs(tool:GetChildren()) do
        if c.Name == "toolanim" and c.className == "StringValue" then
            return c
        end
    end
    return nil
end

function animateTool()

    if (toolAnim == "None") then
        playToolAnimation("toolnone", toolTransitionTime, Humanoid)
        return
    end

    if (toolAnim == "Slash") then
        playToolAnimation("toolslash", 0, Humanoid)
        return
    end

    if (toolAnim == "Lunge") then
        playToolAnimation("toollunge", 0, Humanoid)
        return
    end
end

function moveSit()
    RightShoulder.MaxVelocity = 0.15
    LeftShoulder.MaxVelocity = 0.15
    RightShoulder:SetDesiredAngle(3.14 /2)
    LeftShoulder:SetDesiredAngle(-3.14 /2)
    RightHip:SetDesiredAngle(3.14 /2)
    LeftHip:SetDesiredAngle(-3.14 /2)
end

local lastTick = 0

function move(time)
    local amplitude = 1
    local frequency = 1
    local deltaTime = time - lastTick
    lastTick = time

    local climbFudge = 0
    local setAngles = false

    if (jumpAnimTime > 0) then
        jumpAnimTime = jumpAnimTime - deltaTime
    end

    if (pose == "FreeFall" and jumpAnimTime <= 0) then
        playAnimation("fall", fallTransitionTime, Humanoid)
    elseif (pose == "Seated") then
        playAnimation("sit", 0.5, Humanoid)
        return
    elseif (pose == "Running") then
        if Figure and Humanoid and Humanoid.WalkSpeed<17 then
            playAnimation("walk", 0.1, Humanoid);
        elseif Figure and Humanoid and Humanoid.WalkSpeed>17 then
            playAnimation("run", 0.1, Humanoid);
        end;
    elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then
        stopAllAnimations()
        amplitude = 0.1
        frequency = 1
        setAngles = true
    end
    if (setAngles) then
        local desiredAngle = amplitude * math.sin(time * frequency)
        RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
        LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
        RightHip:SetDesiredAngle(-desiredAngle)
        LeftHip:SetDesiredAngle(-desiredAngle)
    end
    -- Tool Animation handling
    local tool = getTool()
    if tool and tool:FindFirstChild("Handle") then
        local animStringValueObject = getToolAnim(tool)
        if animStringValueObject then
            toolAnim = animStringValueObject.Value
            -- message recieved, delete StringValue
            animStringValueObject.Parent = nil
            toolAnimTime = time + .3
        end
        if time > toolAnimTime then
            toolAnimTime = 0
            toolAnim = "None"
        end
        animateTool()
    else
        stopToolAnimations()
        toolAnim = "None"
        toolAnimInstance = nil
        toolAnimTime = 0
    end
end