Duplicated NPC's Play Animations Different (multiple weird bugs)

Hello there. So, I am making an RPG game where there are mobs you fight and they can chase after you and hit you. However, for some reason only some of the NPC’s play the animations, I found that after I duplicated and placed some of the characters (in studio) that the animations start to progressively stop working (one arm frozen, to two, to whole body) since the start of the game but only some NPCs.

When I created my first mob, the walk and hit animation works perfect. Then, I duplicated that mob to create some more and then the attack animation stopped working and my arms completely don’t move even when it walks. And after that one arm works, one doesn’t, and finally the entire body is frozen when it moves (not walk, not attack)

Please see attached video where you can see that at first animations work fine and by the end the animations don’t work at all.

Does anyone know why or can help me troubleshoot PLEASE?

Note: Every character has the same stuff inside, to my knowledge every property is the same, just appearance is different. The animation scripts are all the same too.

2 Likes

Update: Tried it in roblox game and got this bug:


I switched ID’s to be under group game and still same bug. I switched format to this “https://www.roblox.com/asset/?id=18523891086” instead of “rbxassetid://18523891086” and still same thing. Here’s the script:

local classModule = require(game:GetService("ReplicatedStorage"):WaitForChild("Modules"):WaitForChild("ClassModule"))
local mob = script.Parent
local debounce = false

local anim = Instance.new("Animation")
anim.AnimationId = "https://www.roblox.com/asset/?id=18523891086"
local attack = mob:WaitForChild("Humanoid"):WaitForChild("Animator"):LoadAnimation(anim)

for _, Object in pairs(mob:GetChildren()) do
	if not Object:IsA("BasePart") then continue end
	Object.Touched:Connect(function(hit)
		if (mob.Humanoid.Health < 1) then return end
		if not debounce and game.Players:GetPlayerFromCharacter(hit.Parent) then
			debounce = true
			attack:Play()
			game.Players:GetPlayerFromCharacter(hit.Parent).Character:WaitForChild("Humanoid"):TakeDamage(classModule[script.Parent.Parent.Name][script.Parent.Name]["Damage"])
			task.wait(classModule[script.Parent.Parent.Name][script.Parent.Name]["Cooldown"])
			debounce = false
		end
	end)
end
1 Like