Hi! I'm making a levelling system where when the exp you gained is over the maxexp then you will level up and any spare exp will be added on. However, when I add a ton of exp it will come up with the error message: Maximum event re-entrancy depth exceeded for IntValue.Changed (x2). Please can someone tell me how I should rearrange my code to stop this from happening.

Script in ServerSriptService:

local function onPlayerAdded(player)
	local hidden = Instance.new("Folder",player)
	hidden.Name = "hidden"
	
	local level = Instance.new("IntValue",hidden)
	level.Name = "Level"
	
	local exp = Instance.new("IntValue",hidden)
	exp.Name = "Exp"
	
	local maxexp = Instance.new("IntValue",hidden)
	maxexp.Name = "MaxExp"
	
		if level.Value == 0 then
			maxexp.Value = 20
		elseif level.Value == 1 then
			maxexp.Value = 40
		elseif level.Value == 2 then
			maxexp.Value = 60
		elseif level.Value == 3 then
			maxexp.Value = 80
		elseif level.Value == 4 then
			maxexp.Value = 100
		elseif level.Value == 5 then
			maxexp.Value = 120
		elseif level.Value == 6 then
			maxexp.Value = 140
		elseif level.Value == 7 then
			maxexp.Value = 160
		elseif level.Value == 8 then
			maxexp.Value = 180
		elseif level.Value == 9 then
			maxexp.Value = 200
		elseif level.Value == 10 then
			maxexp.Value = 250
		elseif level.Value == 11 then
			maxexp.Value = 300
		elseif level.Value == 12 then
			maxexp.Value = 350
		elseif level.Value == 13 then
			maxexp.Value = 400

	end
	
	
	
	
	exp.Changed:Connect(function()
		if exp.Value >= maxexp.Value then
			local spareExp = exp.Value - maxexp.Value
			level.Value += 1
			exp.Value = 0
			if level.Value == 0 then
				maxexp.Value = 20
			elseif level.Value == 1 then
				maxexp.Value = 40
			elseif level.Value == 2 then
				maxexp.Value = 60
			elseif level.Value == 3 then
				maxexp.Value = 80
			elseif level.Value == 4 then
				maxexp.Value = 100
			elseif level.Value == 5 then
				maxexp.Value = 120
			elseif level.Value == 6 then
				maxexp.Value = 140
			elseif level.Value == 7 then
				maxexp.Value = 160
			elseif level.Value == 8 then
				maxexp.Value = 180
			elseif level.Value == 9 then
				maxexp.Value = 200
			elseif level.Value == 10 then
				maxexp.Value = 250
			elseif level.Value == 11 then
				maxexp.Value = 300
			elseif level.Value == 12 then
				maxexp.Value = 350
			elseif level.Value == 13 then
				maxexp.Value = 400
				
			end
			exp.Value += spareExp
		end
	end)
end

game.Players.PlayerAdded:Connect(onPlayerAdded)