Edit 2
All server examples are inside one script and using the same variables, and all client examples are in the same script, using the same sent variables as shown in the server screenshots. The NPC is being returned properly, however the invokedNeutral example continues to be adamant that the RootPart’s position doesn’t exist.
That wouldn’t work with the rig I’m using, it’s a standard R15 and FindFirstChild(‘PrimaryPart’) would look for a part named “PrimaryPart,” rather than the model’s actual primary part, HumanoidRootPart.
Nothing on both counts. FindFirstChild(‘PrimaryPart’) broke the alert function bc there’s no part named “PrimaryPart” in the NPC, and returned nil, so that’s definitely not it lol
Combined the remote functions into one, added parameters to tell the remote function which state the NPC swaps to, and simply used this in areas needed.
local npcRoot = npc:FindFirstChild('HumanoidRootPart') or npc:WaitForChild('HumanoidRootPart')