Weird double kills logging?

image
I’ve been wanting to track kills stat changes that are higher than 1 aka manually me changing stats and my system detected changes higher than 1 but nothing makes sense really and this image above proves it. Here is the block of code responsible for the logging:

    local Kills = Instance.new("NumberValue")
	Kills.Name = "Kills"
	local KillsDataStore = DataStore2("Kills", Player)
	Kills.Value = KillsDataStore:Get(0)
	local OldKills = Kills.Value
	Kills.Changed:Connect(function(Value)
		KillsDataStore:Set(Value)
		local Character = Player.Character
		if Character ~= nil and Character:FindFirstChild("Head") then
			local RankGui = Character.Head:FindFirstChild("RankGui")
			if RankGui ~= nil then
				Functions.GiveRank(Player, RankGui)
			end
		end
		if Value - OldKills == 1 then
			Leaderstats.Streak.Value += 1
			if Value / 100 == math.floor(Value / 100) then
				LocalValues.Spins.Value += 1
				GeneralEvent:FireClient(Player, "Message", "EventMessage", "+1 CLAN SPIN")
			end
		end
		if math.abs(Value - OldKills) > 1 then
			local Message = Player.Name.."'s Kills changed!\n"
				.."Old Kills: "..OldKills.."\n"
				.."Current Kills: "..Value
			local Webhook = ""
			Functions.SendWebhookMessage(Message, Webhook)
		end
		OldKills = Value
	end)
	Kills.Parent = Leaderstats

What am I doing wrong? I know for sure I’m not adding up 2 kills at any point only 1 per kill and there is no way to get 2 kills at once for the change event to trigger with a change of 2

stands = {}
CTF_mode = false


function onHumanoidDied(humanoid, player)
	local stats = player:findFirstChild("leaderstats")
	if stats ~= nil then
		local deaths = stats:findFirstChild("Wipeouts")
		local streak = stats:findFirstChild("Streak")
		deaths.Value = deaths.Value + 1
		streak.Value = 0

		local killer = getKillerOfHumanoidIfStillInGame(humanoid)

		handleKillCount(humanoid, player)
	end
end

function onPlayerRespawn(property, player)

	if property == "Character" and player.Character ~= nil then
		local humanoid = player.Character.Humanoid
		local p = player
		local h = humanoid
		humanoid.Died:connect(function() onHumanoidDied(h, p) end )
	end
end

function getKillerOfHumanoidIfStillInGame(humanoid)

	local tag = humanoid:findFirstChild("creator")

	if tag ~= nil then

		local killer = tag.Value
		if killer.Parent ~= nil then 
			return killer
		end
	end

	return nil
end

function handleKillCount(humanoid, player)
	local killer = getKillerOfHumanoidIfStillInGame(humanoid)
	if killer ~= nil then
		local stats = killer:findFirstChild("leaderstats")
		if stats ~= nil then
			local kills = stats:findFirstChild("KOs")
			local streak = stats:findFirstChild("Streak")
			if killer ~= player then
				kills.Value = kills.Value + 1
				streak.Value = streak.Value + 1

			else
				kills.Value = kills.Value - 1

			end
		end
	end
end


-----------------------------------------------



function findAllFlagStands(root)
	local c = root:children()
	for i=1,#c do
		if (c[i].className == "Model" or c[i].className == "Part") then
			findAllFlagStands(c[i])
		end
		if (c[i].className == "FlagStand") then
			table.insert(stands, c[i])
		end
	end
end

function hookUpListeners()
	for i=1,#stands do
		stands[i].FlagCaptured:connect(onCaptureScored)
	end
end

function onPlayerEntered(newPlayer)

	if CTF_mode == true then

		local stats = Instance.new("IntValue")
		stats.Name = "leaderstats"

		local captures = Instance.new("IntValue")
		captures.Name = "Captures"
		captures.Value = 0


		captures.Parent = stats

		while true do
			if newPlayer.Character ~= nil then break end
			wait(5)
		end

		stats.Parent = newPlayer

	else

		local stats = Instance.new("IntValue")
		stats.Name = "leaderstats"

		local kills = Instance.new("IntValue")
		kills.Name = "KOs"
		kills.Value = 0

		local deaths = Instance.new("IntValue")
		deaths.Name = "Wipeouts"
		deaths.Value = 0

		local streak = Instance.new("IntValue")
		streak.Name = "Streak"
		streak.Value = 0

		kills.Parent = stats
		deaths.Parent = stats
		streak.Parent = stats

		while true do
			if newPlayer.Character ~= nil then break end
			wait(5)
		end

		local humanoid = newPlayer.Character.Humanoid

		humanoid.Died:connect(function() onHumanoidDied(humanoid, newPlayer) end )

		newPlayer.Changed:connect(function(property) onPlayerRespawn(property, newPlayer) end )


		stats.Parent = newPlayer

	end

end


function onCaptureScored(player)

	local ls = player:findFirstChild("leaderstats")
	if ls == nil then return end
	local caps = ls:findFirstChild("Captures")
	if caps == nil then return end
	caps.Value = caps.Value + 1

end


findAllFlagStands(game.Workspace)
hookUpListeners()
if (#stands > 0) then CTF_mode = true end
game.Players.ChildAdded:connect(onPlayerEntered)

This is a modified copy of the KOs/WOs ‘leaderstats’ script which includes a ‘streak/spree’ stat.
https://create.roblox.com/marketplace/asset/53310/Leaderboard

What does that has to do with this?