Ok, so my place has flashbangs, and when you press G, the animation plays. When the animation is done, the weld that attached the grenade to the arm is destroyed, and the grenade is thrown. But for some reason, after 1/10th of a second, the flashbang sort of stops in mid air then resumes flying a split second later. I have no idea why it's doing this, I tried disabling the scripts to isolate the problem, and I figured out it happens 1/10th of a second after the Weld is destroyed. Any suggestions as to how I would go about fixing this?
EDIT: Added Code
function ThrowGrenade(Grenade)
_G.MainGui.CrossHair1.Visible = false
_G.MainGui.CrossHair3.Visible = true
Humanoid.WalkSpeed = 16
local Grenade = Grenade:Clone()
Grenade.Parent = game.Workspace
for _,v in pairs(Grenade:GetChildren()) do
if v:IsA("BasePart") and v ~= Grenade:WaitForChild("Center") then
local Weld = Instance.new("Weld")
Weld.Part0 = Grenade:WaitForChild("Center")
Weld.Part1 = v
Weld.C0 = Grenade.Center.CFrame:toObjectSpace(v.CFrame)
Weld.Parent = v
v.Anchored = false
end
end
Grenade:WaitForChild("Center").Anchored = false
local Weld = Instance.new("Weld")
Weld.Part0 = FakeRArm
Weld.Part1 = Grenade:WaitForChild("Center")
Weld.C0 = _G.GripC0
Weld.Parent = FakeRArm
_G.TweenJoint(_G.LWeld2,CF(),CFANG(0,RAD(80),0),_G.Linear,0.25)
_G.TweenJoint(_G.RWeld2,CF(),CFANG(0,RAD(-80),0),_G.Linear,0.25)
_G.TweenJoint(_G.LWeld,_G.ArmC0[1],CF(-0.2,0.8,0.1) * CFANG(0,0,RAD(-30)),_G.Linear,0.25)
_G.TweenJoint(_G.RWeld,_G.ArmC0[2],CF(0.2,0.8,0.1) * CFANG(0,0,RAD(30)),_G.Linear,0.25)
wait(0.3)
local Ring = Grenade:WaitForChild("Ring"):Clone()
Ring.Parent = _G.TextureFolder
Ring:BreakJoints()
local RingWeld = Instance.new("Weld")
RingWeld.Part0 = _G.FakeLArm
RingWeld.Part1 = Ring
RingWeld.C0 = _G.FakeLArm.CFrame:toObjectSpace(Ring.CFrame)
RingWeld.Parent = _G.FakeLArm
Grenade:WaitForChild("Ring").Transparency = 1
_G.TweenJoint(_G.LWeld2,CF(),CFANG(0,RAD(45),0),_G.Sine,0.2)
_G.TweenJoint(_G.RWeld2,CF(),CFANG(0,RAD(-45),0),_G.Sine,0.2)
_G.TweenJoint(_G.LWeld,_G.ArmC0[1],CF(0,0.8,0.1),_G.Sine,0.2)
_G.TweenJoint(_G.RWeld,_G.ArmC0[2],CF(0,0.8,0.1),_G.Sine,0.2)
wait(0.2)
Ring:Destroy()
_G.TweenJoint(_G.LWeld2,CF(),CF(),_G.Sine,0.3)
_G.TweenJoint(_G.RWeld2,CF(),CF(),_G.Sine,0.3)
_G.TweenJoint(_G.LWeld,_G.ArmC0[1],CF(0,0.5,0.1) * CFANG(RAD(90),0,0),_G.Sine,0.3)
_G.TweenJoint(_G.RWeld,_G.ArmC0[2],CF(0,0.4,0.1) * CFANG(RAD(-80),0,0),_G.Sine,0.3)
wait(0.3)
repeat wait() until (not _G.Keys["g"])
_G.TweenJoint(_G.RWeld,_G.ArmC0[2],CF(0,0.8,0.1) * CFANG(RAD(-10),0,0),_G.Sine,0.1)
wait(0.07)
Weld:Destroy() --This is the weld that holds the grenade to the arm
Grenade.Center.Velocity = Grenade.Center.Velocity + ((_G.HeadBase.CFrame * CFANG(RAD(10),0,0)).lookVector * 150)
Grenade.Center.CanCollide = true
Grenade.Main.Player.Value = Player
Grenade.Main.Parent = Grenade
Grenade.Main.Disabled = false
wait(0.4)
_G.SwapAnim(0.2)
_G.MainGui.CrossHair3.Visible = false
end

5 comments
Someone might be able to fix it if you edit your post and have the script there.
Also, that's probably due to lag.
Is your script a local script? If so, that could be the issue. That lag could be the time it takes for the server to get the weld removal and then send it back to your client.
Yes, the script that removes the weld is a local script, but the script also removes welds from magazines and there is no lag at all
I added the code