So i have this npc that shoots at the player but it damages more than expected example: when it shoots it hits the player and then it takes more than the expected damage. I have tried using debounce but its not working. The code part is from line 84 to 99
local players = game:GetService("Players") local ServerStorage = game:GetService("ServerStorage") local bullet = ServerStorage.Bullet local NPC = script.Parent local humanoid = NPC:WaitForChild("Humanoid") local gun = script.Parent.Gun local gunHandle = gun:WaitForChild("Handle") local shootPart = gun:WaitForChild("ShootPart") local fireRate = 2.5 local damage = 10 local bulletSpeed = 100 local breakLoop = false local function OnShoot() shootPart.GunFlash.Enabled = true shootPart.FlashGui.Enabled = true shootPart.Swoosh:Play() wait(0.5) shootPart.GunFlash.Enabled = false shootPart.FlashGui.Enabled = false end players.PlayerAdded:Connect(function(player) player.CharacterAdded:Connect(function(character) local humanoidRootPart = character:WaitForChild("HumanoidRootPart") local npcFollowPart = Instance.new("Part") local weldConstraint = Instance.new("WeldConstraint", npcFollowPart) npcFollowPart.CFrame = humanoidRootPart.CFrame * CFrame.new(0, 0, 7) npcFollowPart.CanCollide = false npcFollowPart.Transparency = 1 weldConstraint.Part0 = npcFollowPart weldConstraint.Part1 = humanoidRootPart npcFollowPart.Size = Vector3.new(1,1,1) npcFollowPart.Parent = character npcFollowPart.Name = "FollowPart" local HoldAnim = NPC:WaitForChild("Hold") local controller = NPC.Humanoid controller:LoadAnimation(HoldAnim):Play() while wait() do if breakLoop == true then break end NPC.Torso.CFrame = CFrame.new(NPC.Torso.Position, character.HumanoidRootPart.Position) NPC.Humanoid:MoveTo(npcFollowPart.Position) if humanoid.Health == 0 then breakLoop = true shootPart:Destroy() NPC.Torso.Oof:Play() wait(0.1) NPC.HumanoidRootPart:Destroy() end end end) end) while wait(fireRate) do local newBullet = bullet:Clone() local ShootAnim = NPC:WaitForChild("Shoot") local controller = NPC.Humanoid if breakLoop == true then break end controller:LoadAnimation(ShootAnim):Play() newBullet.Touched:Connect(function(hit) local debounce = false local human = hit.Parent:FindFirstChild("Humanoid") if human and not debounce then debounce = true human:TakeDamage(damage) shootPart.Swoosh:Stop() shootPart.Explosion:Play() wait(2.6) debounce = false end end) newBullet.Position = shootPart.Position newBullet.Parent = game.Workspace newBullet.Velocity = shootPart.CFrame.LookVector * bulletSpeed OnShoot() end