I'm making a zombie that can lose his limbs, and for exemple, when he loses a leg, I want him to hop on one leg instead of continuing with his default run animation. I've tried editing the animate script with some ifs, but he just does nothing now when he loses a leg. So does anyone have an idea how I would go about this?

Below are the two functions I changed, I also added my "hop" animation to the animation table in the default "Animate" script by roblox.

function onRunning(speed)
	if speed > 0.5 then
		local scale = 16.0
		if script.Parent:findFirstChild("RightUpperLeg") == nil or script.Parent:findFirstChild("LeftUpperLeg") == nil then
			playAnimation("hop", 0.2, Humanoid)
		else
			playAnimation("walk", 0.2, Humanoid)
		end
		setAnimationSpeed(speed / scale)
		pose = "Running"
	else
		if emoteNames[currentAnim] == nil then
			playAnimation("idle", 0.2, Humanoid)
			pose = "Standing"
		end
	end
end

function stepAnimate(currentTime)
	local amplitude = 1
	local frequency = 1
  	local deltaTime = currentTime - lastTick
  	lastTick = currentTime

	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 script.Parent:findFirstChild("RightUpperLeg") == nil or script.Parent:findFirstChild("LeftUpperLeg") == nil then
			playAnimation("hop", 0.2, Humanoid)
		else
			playAnimation("walk", 0.2, 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

	-- Tool Animation handling
	local tool = Character:FindFirstChildOfClass("Tool")
	if tool and (tool.RequiresHandle or tool:FindFirstChild("Handle")) then
	
		local animStringValueObject = getToolAnim(tool)

		if animStringValueObject then
			toolAnim = animStringValueObject.Value
			-- message recieved, delete StringValue
			animStringValueObject.Parent = nil
			toolAnimTime = currentTime + .3
		end

		if currentTime > toolAnimTime then
			toolAnimTime = 0
			toolAnim = "None"
		end

		animateTool()		
	else
		stopToolAnimations()
		toolAnim = "None"
		toolAnimInstance = nil
		toolAnimTime = 0
	end
end