I think you are moving it with the wrong tools, setting the CFrame of the HRP (or whatever the main part of the NPC is) directly is probably the best way of setting their position
Also you are moving the pivot of only one part of the model, if you want to use pivotto it might work if you apply it to the model instead of one of its children,
what is"Find_Player_Tycoon" doing? i dont think thats necessary
try doing player.character.HumanoidRootPart instead of Find_Player_Tycoon(player).HumanoidRootPart.CFrame
Find_Player_Tycoon as its name says finds fake humanoid inside players owned tycoon part where all the npcs are stored.
local function Find_Player_Tycoon(player)
for _, Tycoon in pairs(workspace:GetChildren()) do
if Tycoon.Name == "Tycoon" and Tycoon:GetAttribute("Owner") == player.Name then
return Tycoon
end
end
end
I have just tried the code you suggested but it still has the same outcome, is there away to stop that momentum and why dose it even happen?
That fake part is storage for npcs, fake part is copy of humanoidrootpart and it’s welded to the real humanoidrootpart, i have done it so i would be able to detect npcs on the player’s back, and that part shouldn’t shoot npcs