Hi, I wanted to know how to fix this script for my bomb survival game (Yes, I know it's a copy of Super Bomb Survival, I'm only doing this for practice and I won't be releasing it to the public) I have tried using teams and loading the player using LoadCharacter() to put them back into the lobby, but for some reason it didn't work. For some reason though, the player won't teleport back to the spawn area. (By the way, this only happens if a player survives a whole round, if they die, they still get sent back to the lobby.) Anyways, here's the script:

local Bomb = game.ServerStorage.Bomb
local Coin = game.ServerStorage.Coin
local intermission = 30
local gameTime = 60
local InRound = game.ReplicatedStorage.InRound

InRound.Changed:Connect(function()
	
	for _, players in pairs(game.Players:GetChildren()) do
		local char = players.Character
		local playingTeam = game:GetService("Teams")["Playing"]
		
		players.Team = playingTeam


		if InRound.Value == true then

			local MapSpawnsFolder = game.Workspace.MapSpawns

			local MapSpawn1 = MapSpawnsFolder.MapSpawn1
			local MapSpawn2 = MapSpawnsFolder.MapSpawn2
			local MapSpawn3 = MapSpawnsFolder.MapSpawn3
			local MapSpawn4 = MapSpawnsFolder.MapSpawn4
			local MapSpawn5 = MapSpawnsFolder.MapSpawn5
			local MapSpawn6 = MapSpawnsFolder.MapSpawn6
			local MapSpawn7 = MapSpawnsFolder.MapSpawn7
			local MapSpawn8 = MapSpawnsFolder.MapSpawn8

			local spawnPicker = math.random(1, 8)


			-- pick a spawn on the MAP to send the player to
			if spawnPicker == 1 then
				local MapSpawnsFolder = game.Workspace.MapSpawns

				local MapSpawn1 = MapSpawnsFolder.MapSpawn1
				local MapSpawn2 = MapSpawnsFolder.MapSpawn2
				local MapSpawn3 = MapSpawnsFolder.MapSpawn3
				local MapSpawn4 = MapSpawnsFolder.MapSpawn4
				local MapSpawn5 = MapSpawnsFolder.MapSpawn5
				local MapSpawn6 = MapSpawnsFolder.MapSpawn6
				local MapSpawn7 = MapSpawnsFolder.MapSpawn7
				local MapSpawn8 = MapSpawnsFolder.MapSpawn8

				char.HumanoidRootPart.CFrame = MapSpawn1.CFrame

			elseif spawnPicker == 2 then
				char.HumanoidRootPart.CFrame = MapSpawn2.CFrame

			elseif spawnPicker == 3 then
				char.HumanoidRootPart.CFrame = MapSpawn3.CFrame

			elseif spawnPicker == 4 then
				char.HumanoidRootPart.CFrame = MapSpawn4.CFrame

			elseif spawnPicker == 5 then
				char.HumanoidRootPart.CFrame = MapSpawn5.CFrame

			elseif spawnPicker == 6 then
				char.HumanoidRootPart.CFrame = MapSpawn6.CFrame

			elseif spawnPicker == 7 then
				char.HumanoidRootPart.CFrame = MapSpawn7.CFrame

			elseif spawnPicker == 8 then
				char.HumanoidRootPart.CFrame = MapSpawn8.CFrame
			end
		end

		if InRound == false then
			
			for _, competitor in pairs(game.Players:GetChildren()) do
				competitor:LoadCharacter()
			end
			
		end
	end
end)
	



while true do

	local bannerTextValue = game:GetService("ReplicatedStorage").Status
	
	local IntermissionMusic = game.Workspace.Music.IntermissionMusic
	IntermissionMusic.Playing = true
	--Intermission
	repeat
		InRound.Value = false
		intermission = intermission - 1
		wait(1)
		bannerTextValue.Value = "Intermission: ".. intermission 

	until intermission == 0 
	
	IntermissionMusic.Playing = false
	--Game starts
	if intermission == 0 then
		repeat
			
			InRound.Value = true
			
			spawn(function()
				local BombCopy = Bomb:Clone()
				BombCopy.Parent = game.Workspace.Bombs
				local xPosition = math.random(-64, 64)
				local zPosition = math.random(-64, 64)
				BombCopy.Position = Vector3.new(xPosition, 100, zPosition)
				wait(4)
			end)
			
			spawn(function()
				local CoinCopy = Coin:Clone()
				CoinCopy.Parent = game.Workspace.Coins
				local xPosition = math.random(-64, 64)
				local zPosition = math.random(-64, 64)
				CoinCopy.Position = Vector3.new(xPosition, 100, zPosition)
				wait(6)
			end)

			wait(1)
			gameTime = gameTime - 1
			bannerTextValue.Value = "Game Time left: " .. gameTime

		until gameTime == 0    
	end

	local function CleanUpGame()
		local TerrainRegenerationPart = game.Workspace.TerrainRegenerationPart
		local MapBackup = game.ServerStorage.MapBackup

        game.Workspace.Map:Destroy()
		
		for _, coinObject in pairs(game.Workspace.Coins:GetChildren()) do
			coinObject:Destroy()
		end

		for _, Bomb in pairs(game.Workspace.Bombs:GetChildren()) do
			Bomb:Destroy()
		end

		game.Workspace.Terrain:FillBlock(
			TerrainRegenerationPart.CFrame,
			TerrainRegenerationPart.Size,
			Enum.Material.Grass
		)

		local MapClone = MapBackup:Clone()
		MapClone.Parent = game.Workspace
		MapClone.Name = "Map"


	end

	--reset intermission and gameTime to their regular values and clean up map
        intermission = 30
	gameTime = 60
	CleanUpGame()
end

~~~~~~~~~~~~~~~~