Solved this by creating a table for each player, before it does damage I do HitDetection[Player] = {}
I'm using explosions for hit detection, but it does damage for each body part the player has, which obviously makes it do way too much damage. Instead of creating an ugly system that detects when a "hit" value has been changed, or lock the part to only hitting 1 player at a time, I'd like to try and do it with tables.
script i use for damage, parts where im having issues have been commented on
local HitTable = {} local a = HitDetectionModule.new(Waterbomb, Player, true) --true = debounce local b = a:SetUp(1, false) -- 1 = number of repeats Waterbomb.Size = Vector3.new(SizeCharge[Player]) Waterbomb.Parent = Player.Character.Bin b.Event:Connect(function(Hit) local Explosion = Instance.new("Explosion") Explosion.Position = Waterbomb.Position CurrentSkill[Player] = "Waterbomb Explode" Storage.Remotes.General.Effect:FireAllClients(Player,CurrentSkill[Player],Waterbomb.CFrame, SizeCharge[Player]) Waterbomb:Destroy() Explosion.Visible = false Explosion.BlastPressure = 0 Explosion.BlastRadius = SizeCharge[Player] + 2 if Explosion.BlastRadius < 10 then Explosion.BlastRadius = 10 end Explosion.DestroyJointRadiusPercent = 0 Explosion.ExplosionType = Enum.ExplosionType.NoCraters Explosion.Parent = workspace local PlayerHitTable = HitTable[Player] Explosion.Hit:Connect(function(Part) if Part.Parent ~= Player.Character and Part.Parent:FindFirstChild("Humanoid") and not Part.Parent:FindFirstChild("ForceField") then --table.insert(HitTable[Player], Part.Parent) -- this gives an error (table expected, got nil) table.insert(HitTable, Part.Parent) -- this works, but I need it to keep track for each player local Damage = Player.Stats.Level.Value * 1.8 + Power[Player] Part.Parent.Humanoid:TakeDamage(Damage) local BVV = Instance.new("BodyVelocity") BVV.MaxForce = Vector3.new(math.huge,math.huge,math.huge) BVV.Velocity = Vector3.new(math.random(5,10),SizeCharge[Player]+ 20,math.random(5,10)) BVV.Parent = Part.Parent:FindFirstChild("HumanoidRootPart") delay(.8, function() BVV:Destroy() end) print(Damage) end end) end)
thanks for reading!