Optimisation Ai's

I want to make my game more optimised it has many Ai’s (its a game similar to One More Night) and sometimes many can play at the same time but it only makes the more more laggy & glitched so I decided to use a big module script with every Ai in it, I wanted to know how I can optimised more the game so the Ai are less laggy and more optimised for players who lag more ect. I use a lot of while task.wait().




local mobs = {}

function mobs.Bacon()
	task.spawn(function()
		local Anomaly = workspace.Enemy:FindFirstChild('Bacon')
	
		local Cam6 = Anomaly.Humanoid:LoadAnimation(game.ReplicatedStorage.Animations.Bacon.Cam6.Animation)
		local Cam5 = Anomaly.Humanoid:LoadAnimation(game.ReplicatedStorage.Animations.Bacon.Cam5.Animation)
		local Cam4 = Anomaly.Humanoid:LoadAnimation(game.ReplicatedStorage.Animations.Bacon.Cam4.Animation)
		local Cam3 = Anomaly.Humanoid:LoadAnimation(game.ReplicatedStorage.Animations.Bacon.Cam3.Animation)
		local Cam2 = Anomaly.Humanoid:LoadAnimation(game.ReplicatedStorage.Animations.Bacon.Cam2.Animation)
		local Cam1 = Anomaly.Humanoid:LoadAnimation(game.ReplicatedStorage.Animations.Bacon.Cam1.Animation)
		local HallB = Anomaly.Humanoid:LoadAnimation(game.ReplicatedStorage.Animations.Bacon.HallB.Animation)
		local HallA = Anomaly.Humanoid:LoadAnimation(game.ReplicatedStorage.Animations.Bacon.HallA.Animation)
		local Door = Anomaly.Humanoid:LoadAnimation(game.ReplicatedStorage.Animations.Bacon.Door.Animation)
		local Window = Anomaly.Humanoid:LoadAnimation(game.ReplicatedStorage.Animations.Bacon.Window.Animation)
		Cam6:Play()


		local Mobs = require(game.ReplicatedStorage.Modules.Mobs)

		local timer = game.ReplicatedStorage.Values.Mobs.Bacon.Timer.Value
		--local timer = 2

		local door 

		local Ai = (10 - game.ReplicatedStorage.Values.Mobs.Bacon.Agression.Value)

		game.ReplicatedStorage.Animations.Bacon.Ready.Changed:Connect(function()

			if game.ReplicatedStorage.Animations.Bacon.Ready.Value == true then

				task.wait(game.ReplicatedStorage.Animations.Bacon.TimeWait.Value)
				if game.ReplicatedStorage.Values.Pause.Value == true then return end

				local testra 
				if game.ReplicatedStorage.Values.ChoosedModifier:FindFirstChild('Bacon-Frenzy') then
					testra = math.random(1,2)
				else
					testra = math.random(1,4)
				end
				game.ReplicatedStorage.Animations.Bacon.Ready.Value = false
				if testra == 1  then
					if game.ReplicatedStorage.Values.ChoosedModifier:FindFirstChild('Bacon-Frenzy') then

						game.ReplicatedStorage.Values.Mobs.Bacon.Timer.Value /= 2

					end
					timer = game.ReplicatedStorage.Values.Mobs.Bacon.Timer.Value
					Window:Play(0)
					Door:Stop(0)
					Anomaly.Parent.HumanoidRootPart.CFrame = workspace.Enemy.baconpoints.Window.CFrame
					game.ReplicatedStorage.Animations.Bacon.Location.Value = 9
					if door == 'Left' then
						
						game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraLeft')
					elseif door == 'Right' then
						
						game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraRight')

					end

				else

					game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera6')

					if door == 'Left' then
						game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraLeft')



						if  workspace.Doors.DoorMain.Main.Values.Closed.Value == false then
							workspace.Doors.DoorMain.Main.Values.DoorsOccupied.Value = false

							timer = game.ReplicatedStorage.Values.Mobs.Bacon.Timer.Value
							Door:Stop(0)
							Cam6:Play(0)
							game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Bacon')
							game.ReplicatedStorage.Animations.Bacon.Location.Value = 0
						else
							workspace.Doors.DoorMain.Main.Values.DoorsOccupied.Value = false
							for i, v in pairs(game.Players:GetPlayers()) do

								if v.Name == workspace.Doors.DoorMain.Main.Values.Plr.Value then

									v.leaderstats.Points.Value += 10

									game.ReplicatedStorage.Notification:FireClient(v,'door')

								end

							end
							game.ReplicatedStorage.EffectZoom:FireAllClients()
							Door:Stop()
							Cam6:Play()
							workspace.Doors.DoorMain.Main.Model.Closed["Baldi's Basics Plus: Mrs. Pomp's Stomp Sound"]:Play()
							game.ReplicatedStorage.Animations.Bacon.Location.Value = 0

						end
					elseif door == 'Right' then
						game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraRight')


						if  workspace.Doors.DoorRight.Main.Values.Closed.Value == false then
							workspace.Doors.DoorRight.Main.Values.DoorsOccupied.Value = false

							timer = game.ReplicatedStorage.Values.Mobs.Bacon.Timer.Value
							Door:Stop(0)
							Cam6:Play(0)
							game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Bacon')
							game.ReplicatedStorage.Animations.Bacon.Location.Value = 0
						else
							workspace.Doors.DoorMain.Main.Values.DoorsOccupied.Value = false
							workspace.Doors.DoorRight.Main.Values.DoorsOccupied.Value = false
							for i, v in pairs(game.Players:GetPlayers()) do

								if v.Name == workspace.Doors.DoorRight.Main.Values.Plr.Value then

									v.leaderstats.Points.Value += 10

									game.ReplicatedStorage.Notification:FireClient(v,'door')

								end

							end
							game.ReplicatedStorage.EffectZoom:FireAllClients()
							Door:Stop(0)
							Cam6:Play(0)
							workspace.Doors.DoorRight.Main.Model.Closed["Baldi's Basics Plus: Mrs. Pomp's Stomp Sound"]:Play()
							game.ReplicatedStorage.Animations.Bacon.Location.Value = 0




						end
					end
				end

			end


		end)

		while task.wait(timer) do
			if game.ReplicatedStorage.Values.Pause.Value == true then return end
			local random = math.random(1,game.ReplicatedStorage.Values.Mobs.Bacon.Chance.Value)
			print(random .. ' Bacon Chance')




			Ai -= 1




			if random == 1 or Ai == 0 then

				Ai = (10 - game.ReplicatedStorage.Values.Mobs.Bacon.Agression.Value)


				Mobs.Movement(game.ReplicatedStorage.Animations.Bacon.Location,Anomaly)
				Anomaly.HumanoidRootPart["swoosh.wav"]:Play()

				if game.ReplicatedStorage.Animations.Bacon.Location.Value == 1 then

					Cam6:Stop(0)
					Cam5:Play(0)
					game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera5')
					game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera6')
				elseif game.ReplicatedStorage.Animations.Bacon.Location.Value == 2 then
					Cam5:Stop(0)
					game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera5')
					game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera4')
					Cam4:Play()
				elseif game.ReplicatedStorage.Animations.Bacon.Location.Value == 3 then
					game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera4')
					game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera3')
					Cam4:Stop(0)
					Cam3:Play(0)
				elseif game.ReplicatedStorage.Animations.Bacon.Location.Value == 4 then
					game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera3')
					game.ReplicatedStorage.StaticFlashThing:FireAllClients('CameraHallB')
					Cam3:Stop(0)
					HallB:Play(0)
				elseif game.ReplicatedStorage.Animations.Bacon.Location.Value == 5 then
					game.ReplicatedStorage.StaticFlashThing:FireAllClients('CameraHallB')
					game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera2')
					HallB:Stop(0)
					Cam2:Play(0)
				elseif game.ReplicatedStorage.Animations.Bacon.Location.Value == 6 then
					game.ReplicatedStorage.StaticFlashThing:FireAllClients('CameraHallA')
					game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera2')
					Cam2:Stop(0)
					HallA:Play(0)
				elseif game.ReplicatedStorage.Animations.Bacon.Location.Value == 7 then
					HallA:Stop(0)
					Cam1:Play(0)
					game.ReplicatedStorage.StaticFlashThing:FireAllClients('CameraHallA')
					game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera1')
				elseif game.ReplicatedStorage.Animations.Bacon.Location.Value == 8  then
					Cam1:Stop(0)
					Window:Play(0)
					game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera1')
					Anomaly.HumanoidRootPart.CFrame = workspace.Enemy.baconpoints.Window.CFrame

				elseif game.ReplicatedStorage.Animations.Bacon.Location.Value == 9 then
					local random = math.random(1,2)
					if random == 1 and workspace.Doors.DoorMain.Main.Values.DoorsOccupied.Value == false  then
						Anomaly.HumanoidRootPart.CFrame = workspace.Enemy.baconpoints.Door.CFrame
						workspace.Doors.DoorMain.Main.Model.Closed["Hi - Pizza Place"]:Play()
						workspace.Doors.DoorMain.Main.Values.DoorsOccupied.Value = true
						Window:Stop(0)
						Door:Play(0)
						timer = 4
						door = 'Left'
						game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraLeft')

						game.ReplicatedStorage.Animations.Bacon.Ready.Value = true

					elseif random == 2 and workspace.Doors.DoorRight.Main.Values.DoorsOccupied.Value == false  then
						Anomaly.HumanoidRootPart.CFrame = workspace.Enemy.baconpoints.DoorRight.CFrame
						workspace.Doors.DoorRight.Main.Model.Closed["Hi - Pizza Place"]:Play()
						workspace.Doors.DoorRight.Main.Values.DoorsOccupied.Value = true
						Window:Stop(0)
						Door:Play(0)
						timer = 4
						game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraRight')
						door = 'Right'
						game.ReplicatedStorage.Animations.Bacon.Ready.Value = true

					end
				end		
			end
		end


	
	end)
end

function mobs.A60()
	task.spawn(function()
		local timer = game.ReplicatedStorage.Values.Mobs["A-60"].Timer
		local anomaly = workspace.Enemy:WaitForChild('A-60')
			workspace.Game.SpecialWall:Destroy()
		local door = game.ReplicatedStorage.Mobs["SpecialDoorA-60"]:Clone()
		door.Parent = workspace.Doors
		door.PartMain.ClickDetector.MaxActivationDistance = 8
		local idle = anomaly.Humanoid:LoadAnimation(game.ReplicatedStorage.Animations.A60.Idle)
		idle:Play()
		local tp = anomaly.Humanoid:LoadAnimation(game.ReplicatedStorage.Animations.A60.Tp)

		game.ReplicatedStorage.Animations.A60.Ready.Changed:Connect(function()

			if script.Ready.Value == true then

				task.wait(game.ReplicatedStorage.Animations.A60.TimeWait.Value)
				game.TweenService:Create(anomaly.HumanoidRootPart.A60Ambience,TweenInfo.new(2),{Volume = 6}):Play()
				game.TweenService:Create(anomaly.HumanoidRootPart.A60Ambience.PitchShiftSoundEffect,TweenInfo.new(2), {Octave = 1.1}):Play()
				game.TweenService:Create(anomaly.HumanoidRootPart.PointLight,TweenInfo.new(2), {Brightness = 2}):Play()
				door.Part.ParticleEmitter.Enabled = true
				tp:Play(0)
				idle:Stop(0)
				task.wait(2)
				door.Part.ParticleEmitter.Enabled = false
				tp:Stop(0)
				idle:Play(0)
				anomaly.HumanoidRootPart.A60Ambience.PitchShiftSoundEffect.Octave = 1
				anomaly.HumanoidRootPart.A60Ambience.Volume = 2
				game.ReplicatedStorage.Animations.A60.Ready.Value = false
				anomaly.HumanoidRootPart.PointLight.Brightness = 0
				anomaly.HumanoidRootPart.CFrame = workspace.Enemy["A-60Waypoints"].One.CFrame
				-- attack
				anomaly.HumanoidRootPart["Goku Teleport"]:Play()

				game.ReplicatedStorage.Animations.A60.Location.Value = 0
				anomaly.HumanoidRootPart.A60Ambience:Stop()
				if door.Main.Values.Closed.Value == true then

					for i, v in pairs(game.Players:GetPlayers()) do

						if v.Name == door.Main.Values.Plr.Value then

							v.leaderstats.Points.Value += 10

							game.ReplicatedStorage.Notification:FireClient(v,'door')

						end

					end

					game.ReplicatedStorage.Values.Energy.power.Value -= 15
					anomaly.HumanoidRootPart["Metal Impact Heavy Clunking Hits Scraping 1 (SFX)"]:Play()

				else

					for i, v in pairs(game.Players:GetPlayers()) do

						if v.HasMask.Value == true then

							v.Character.Humanoid:TakeDamage(50)

						else

							v.Character.Humanoid:TakeDamage(100)


						end

					end

				end
			end

		end)


		while task.wait(timer.Value) do
			if game.ReplicatedStorage.Values.Pause.Value == true then return end

			if game.ReplicatedStorage.Animations.A60.Ready.Value == false then

				game.ReplicatedStorage.Animations.A60.Location.Value += 1

				if game.ReplicatedStorage.Animations.A60.Location.Value == 1 then
					tp:Play(0)
					idle:Stop(0)
					task.wait(2)
					tp:Stop(0)
					idle:Play(0)
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy["A-60Waypoints"].Two.CFrame
					anomaly.HumanoidRootPart["Goku Teleport"]:Play()
					anomaly.HumanoidRootPart.PointLight.Brightness = 1

					game.TweenService:Create(anomaly.HumanoidRootPart.PointLight,TweenInfo.new(.75), {Brightness = 0}):Play()

				elseif game.ReplicatedStorage.Animations.A60.Location.Value == 2 then
					tp:Play(0)
					idle:Stop(0)
					task.wait(2)
					tp:Stop(0)
					idle:Play(0)
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy["A-60Waypoints"].Three.CFrame
					anomaly.HumanoidRootPart["Goku Teleport"]:Play()
					anomaly.HumanoidRootPart.PointLight.Brightness = 1

					game.TweenService:Create(anomaly.HumanoidRootPart.PointLight,TweenInfo.new(.75), {Brightness = 0}):Play()

				elseif game.ReplicatedStorage.Animations.A60.Location.Value == 3 then
					tp:Play(0)
					idle:Stop(0)
					task.wait(2)
					tp:Stop(0)
					idle:Play(0)
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy["A-60Waypoints"].Four.CFrame
					anomaly.HumanoidRootPart["Goku Teleport"]:Play()
					anomaly.HumanoidRootPart.PointLight.Brightness = 1

					game.TweenService:Create(anomaly.HumanoidRootPart.PointLight,TweenInfo.new(.75), {Brightness = 0}):Play()

				elseif game.ReplicatedStorage.Animations.A60.Location.Value == 4 then
					-- scream

					tp:Play(0)
					idle:Stop(0)
					task.wait(2)
					tp:Stop(0)
					idle:Play(0)
					anomaly.HumanoidRootPart.PointLight.Brightness = 1

					game.TweenService:Create(anomaly.HumanoidRootPart.PointLight,TweenInfo.new(.75), {Brightness = 0}):Play()

					anomaly.HumanoidRootPart.CFrame = workspace.Enemy["A-60Waypoints"].Five.CFrame
					anomaly.HumanoidRootPart.A60Ambience:Play()
					game.ReplicatedStorage.Animations.A60.Ready.Value = true
					anomaly.HumanoidRootPart["Goku Teleport"]:Play()




				end
			end
		end
	end)
end

function mobs.Chia()
	task.spawn(function()
		
		local anomaly = workspace.Enemy:WaitForChild('chia chicken')
		
		local idle =  anomaly.Humanoid:LoadAnimation(anomaly.Animations.Idle)
		local move = anomaly.Humanoid:LoadAnimation(anomaly.Animations.Walk)

		idle:Play()



		local timer = game.ReplicatedStorage.Values.Mobs.chia.Timer.Value
		--local timer = 2

		local Ai = (10 - game.ReplicatedStorage.Values.Mobs.chia.Agression.Value)
		while task.wait(timer) do
			--local random = 1
			if game.ReplicatedStorage.Values.Pause.Value == true then return end

			local random = math.random(1,game.ReplicatedStorage.Values.Mobs.chia.Chance.Value)
			--	print(random .. ' Chia Chance')


			Ai -= 1
			if random == 1 or Ai == 0 then
				Ai = (10 - game.ReplicatedStorage.Values.Mobs.chia.Agression.Value)
				game.ReplicatedStorage.Animations.Chia.Location.Value += 1





				if game.ReplicatedStorage.Animations.Chia.Location.Value == 1 then
					idle:Stop()
					anomaly.HumanoidRootPart["spongebob walk"]:Play()		

					move:Play()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Starta.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Startb.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera4')
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera5')

					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam4a.CFrame
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam4.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam4.CFrame
					move:Stop(0)
					idle:Play(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Stop()		

				elseif  game.ReplicatedStorage.Animations.Chia.Location.Value == 2 then
					idle:Stop(0)
					move:Play(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Play()		

					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam4b.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam3a.CFrame
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera4')
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera3')
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3b.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3c.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam3.CFrame
					move:Stop(0)
					idle:Play(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Stop()		

				elseif  game.ReplicatedStorage.Animations.Chia.Location.Value == 3 then
					idle:Stop(0)
					move:Play(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Play()		

					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3d.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3e.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3f.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3g.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3h.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.CamHallBa.CFrame
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraHallB')
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera3')

					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.CamHallB.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.CamHallB.CFrame
					idle:Play(0)
					move:Stop(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Stop()		

				elseif  game.ReplicatedStorage.Animations.Chia.Location.Value == 4 then
					idle:Stop(0)
					move:Play(0)
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.CamHallBb.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.CamHallBc.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam2a.CFrame
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera2')
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraHallB')

					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam2b.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam2.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam2.CFrame
					idle:Play(0)
					move:Stop(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Stop()		

				elseif  game.ReplicatedStorage.Animations.Chia.Location.Value == 5 then
					idle:Stop(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Play()		

					move:Play(0)
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam2c.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam2d.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.CamHallAa.CFrame
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraHallA')
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera2')

					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.CamHallA.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.CamHallA.CFrame
					idle:Play(0)
					move:Stop(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Stop()		

				elseif  game.ReplicatedStorage.Animations.Chia.Location.Value == 6 then
					idle:Stop(0)
					move:Play(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Play()		

					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.CamHallb.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.CamHallAc.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam1A.CFrame
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraHallA')
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera1')
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam1B.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam1.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam1.CFrame
					idle:Play(0)
					move:Stop(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Stop()		

				elseif  game.ReplicatedStorage.Animations.Chia.Location.Value == 7 then
					idle:Stop(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Play()		

					move:Play(0)
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam1C.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam1D.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera1')

					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Window1.CFrame
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Window.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Window.CFrame
					idle:Play(0)
					move:Stop(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Stop()		

					workspace.Doors.DoorWindow1.Main.Model.Closed["FNAF Ambience Sound Effect"]:Play()


				elseif  game.ReplicatedStorage.Animations.Chia.Location.Value == 8 and workspace.Doors.DoorRight.Main.Values.DoorsOccupied.Value == false then
					idle:Stop(0)
					move:Play(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Play()		

					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Window2.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Doora.CFrame
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraRight')
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Door.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Door.CFrame
					idle:Play(0)
					move:Stop(0)

					anomaly.HumanoidRootPart["spongebob walk"]:Stop()		

					workspace.Doors.DoorRight.Main.Values.DoorsOccupied.Value = true

				elseif  game.ReplicatedStorage.Animations.Chia.Location.Value == 9 and workspace.Doors.DoorRight.Main.Values.Closed.Value == false then
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera5')
					workspace.Doors.DoorRight.Main.Values.DoorsOccupied.Value = false
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Start.CFrame
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraRight')

					game.ReplicatedStorage.Jumpscarechia:FireAllClients()
					game.ReplicatedStorage.Animations.Chia.Location.Value = 0
				else
					workspace.Doors.DoorRight.Main.Values.DoorsOccupied.Value = false
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera5')
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraRight')

					game.ReplicatedStorage.EffectZoom:FireAllClients()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Start.CFrame
					workspace.Doors.DoorRight.Main.Model.Closed["Baldi's Basics Plus: Mrs. Pomp's Stomp Sound"]:Play()
					game.ReplicatedStorage.Animations.Chia.Location.Value = 0

				end	

			end		





		end


		
	end)
end

function mobs.Bunny()
	task.spawn(function()

		local anomaly = workspace.Enemy:WaitForChild('bunny guy')

		local idle =  anomaly.Humanoid:LoadAnimation(anomaly.Animations.Idle)
		local move = anomaly.Humanoid:LoadAnimation(anomaly.Animations.Walk)

		idle:Play()



		local timer = game.ReplicatedStorage.Values.Mobs.chia.Timer.Value+2
		--local timer = 2

		local Ai = (10 - game.ReplicatedStorage.Values.Mobs.chia.Agression.Value)+1
		while task.wait(timer) do
			--local random = 1
			if game.ReplicatedStorage.Values.Pause.Value == true then return end

			local random = math.random(1,game.ReplicatedStorage.Values.Mobs.chia.Chance.Value+1)
			--	print(random .. ' Chia Chance')


			Ai -= 1
			if random == 1 or Ai == 0 then
				Ai = (10 - game.ReplicatedStorage.Values.Mobs.chia.Agression.Value)+1
				game.ReplicatedStorage.Animations.Chia.BunnyLocation.Value += 1





				if game.ReplicatedStorage.Animations.Chia.BunnyLocation.Value == 1 then
					idle:Stop()
					anomaly.HumanoidRootPart["spongebob walk"]:Play()		

					move:Play()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Starta.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Startb.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera4')
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera5')

					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam4a.CFrame
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam4.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam4.CFrame
					move:Stop(0)
					idle:Play(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Stop()		

				elseif  game.ReplicatedStorage.Animations.Chia.BunnyLocation.Value == 2 then
					idle:Stop(0)
					move:Play(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Play()		

					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam4b.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam3a.CFrame
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera4')
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera3')
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3b.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3c.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam3.CFrame
					move:Stop(0)
					idle:Play(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Stop()		

				elseif  game.ReplicatedStorage.Animations.Chia.BunnyLocation.Value == 3 then
					idle:Stop(0)
					move:Play(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Play()		

					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3d.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3e.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3f.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3g.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam3h.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.CamHallBa.CFrame
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraHallB')
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera3')

					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.CamHallB.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.CamHallB.CFrame
					idle:Play(0)
					move:Stop(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Stop()		

				elseif  game.ReplicatedStorage.Animations.Chia.BunnyLocation.Value == 4 then
					idle:Stop(0)
					move:Play(0)
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.CamHallBb.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.CamHallBc.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam2a.CFrame
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera2')
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraHallB')

					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam2b.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam2.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam2.CFrame
					idle:Play(0)
					move:Stop(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Stop()		

				elseif  game.ReplicatedStorage.Animations.Chia.BunnyLocation.Value == 5 then
					idle:Stop(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Play()		

					move:Play(0)
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam2c.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam2d.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.CamHallAa.CFrame
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraHallA')
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera2')

					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.CamHallA.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.CamHallA.CFrame
					idle:Play(0)
					move:Stop(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Stop()		

				elseif  game.ReplicatedStorage.Animations.Chia.BunnyLocation.Value == 6 then
					idle:Stop(0)
					move:Play(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Play()		

					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.CamHallb.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.CamHallAc.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam1A.CFrame
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraHallA')
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera1')
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam1B.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam1.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Cam1.CFrame
					idle:Play(0)
					move:Stop(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Stop()		

				elseif game.ReplicatedStorage.Animations.Chia.BunnyLocation.Value == 7 then
					idle:Stop(0)
					script.Parent.HumanoidRootPart["spongebob walk"]:Play()		

					move:Play(0)
					script.Parent.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam1C.Position)
					script.Parent.Humanoid.MoveToFinished:Wait()
					script.Parent.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.Cam1D.Position)
					script.Parent.Humanoid.MoveToFinished:Wait()
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera1')

					script.Parent.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.Window1.CFrame
					script.Parent.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.WaypointsBuns.Window.Position)
					script.Parent.Humanoid.MoveToFinished:Wait()
					script.Parent.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.WaypointsBuns.Window.CFrame
					idle:Play(0)
					move:Stop(0)
					script.Parent.HumanoidRootPart["spongebob walk"]:Stop()		

					workspace.Doors.DoorWindow1.Main.Model.Closed["FNAF Ambience Sound Effect"]:Play()


				elseif game.ReplicatedStorage.Animations.Chia.BunnyLocation.Value == 8 and workspace.Doors.DoorMain.Main.Values.DoorsOccupied.Value == false then
					idle:Stop(0)
					move:Play(0)
					anomaly.HumanoidRootPart["spongebob walk"]:Play()		

					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.WaypointsBuns.Window2.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraLeft')
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.WaypointsBuns.Doora.CFrame
					anomaly.Humanoid:MoveTo(workspace.Enemy.WaypointsChia.WaypointsBuns.Door.Position)
					anomaly.Humanoid.MoveToFinished:Wait()
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.WaypointsBuns.Door.CFrame
					idle:Play(0)
					move:Stop(0)

					anomaly.HumanoidRootPart["spongebob walk"]:Stop()		

					workspace.Doors.DoorMain.Main.Values.DoorsOccupied.Value = true

				elseif game.ReplicatedStorage.Animations.Chia.BunnyLocation.Value == 9 and workspace.Doors.DoorMain.Main.Values.Closed.Value == false then
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera5')
					workspace.Doors.DoorMain.Main.Values.DoorsOccupied.Value = false
					anomaly.HumanoidRootPart.CFrame = workspace.Enemy.WaypointsChia.WaypointsBuns.Start.CFrame
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraLeft')

					game.ReplicatedStorage.Jumpscarechia:FireAllClients()
					game.ReplicatedStorage.Animations.Chia.BunnyLocation.Value = 0
				else
					workspace.Doors.DoorMain.Main.Values.DoorsOccupied.Value = false
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('Camera5')
					game.ReplicatedStorage.JumpscaresHandler:FireAllClients('CameraLeft')

					game.ReplicatedStorage.EffectZoom:FireAllClients()
					anomaly.CFrame = workspace.Enemy.WaypointsChia.WaypointsBuns.Start.CFrame
					workspace.Doors.DoorMain.Main.Model.Closed["Baldi's Basics Plus: Mrs. Pomp's Stomp Sound"]:Play()
					game.ReplicatedStorage.Animations.Chia.BunnyLocation.Value = 0

				end	

			end		



		end



	end)
end

function mobs.Bomb()
	
	task.spawn(function()
		
		local anomaly = workspace.Enemy:WaitForChild('Bomb')
		
		local idle1 = anomaly.Humanoid:LoadAnimation(anomaly.Animations.Idle1)
		local idle2 = anomaly.Humanoid:LoadAnimation(anomaly.Animations.Idle2)
		local idle2real = anomaly.Humanoid:LoadAnimation(anomaly.Animations.Idle2real)
		local idle3 = anomaly.Humanoid:LoadAnimation(anomaly.Animations.Idle3)
		idle1:Play()

		local run = anomaly.Humanoid:LoadAnimation(anomaly.Animations.RUN)


		game.ReplicatedStorage.Events.Mobs.BOMBEVENT.OnServerEvent:Connect(function(plr)

			plr.leaderstats.Points.Value += 1

			if game.ReplicatedStorage.Values.Mobs.Bomb.Nb.Value < 95 then
				if game.ReplicatedStorage.Values.ChoosedModifier:FindFirstChild('Less Effective') then
					game.ReplicatedStorage.Values.Mobs.Bomb.Nb.Value += 1

				else

					game.ReplicatedStorage.Values.Mobs.Bomb.Nb.Value += 5

				end



			end

			game.ReplicatedStorage.Events.Mobs.BOMBEVENT:FireAllClients()


		end)

		local function path()
			game.ReplicatedStorage.Values.Mobs.Bomb.Nb.Value = 100
			game.ReplicatedStorage.Events.Mobs.BOMBEVENT:FireAllClients(true)
			anomaly.Torso["Bomb Fuse"]:Play()
			anomaly.Torso["Roblox Old Walking Sound"]:Play()
			anomaly.Handle.Attachment.Fire.Enabled = true

			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints.Cam8A.Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints.Cam8B.Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera8')
			game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera5')

			anomaly.HumanoidRootPart.CFrame = workspace.Enemy.TweakerWaypoints["Cam5-A"].CFrame
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["Cam5-B"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["Cam5-C"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["Cam5A"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera5')
			game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera4')
			anomaly.HumanoidRootPart.CFrame = workspace.Enemy.TweakerWaypoints["Cam4b"].CFrame
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["Cam4a"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()

			game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera3')
			game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera4')
			anomaly.HumanoidRootPart.CFrame = workspace.Enemy.TweakerWaypoints["Cam3a"].CFrame
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["Cam3"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["Cam3b"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["Cam3c"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["Cam3d"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["Cam3e"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["Cam3f"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera3')
			game.ReplicatedStorage.StaticFlashThing:FireAllClients('CameraHallB')
			anomaly.HumanoidRootPart.CFrame = workspace.Enemy.TweakerWaypoints["CamHallB1"].CFrame
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["CamHallB2"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera2')
			game.ReplicatedStorage.StaticFlashThing:FireAllClients('CameraHallB')

			anomaly.HumanoidRootPart.CFrame = workspace.Enemy.TweakerWaypoints["Cam2A"].CFrame
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["Cam2A"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera2')
			game.ReplicatedStorage.StaticFlashThing:FireAllClients('CameraHallA')

			anomaly.HumanoidRootPart.CFrame = workspace.Enemy.TweakerWaypoints["CamHallA1"].CFrame
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["CamHallA2"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["CamHallA"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["CamHallA3"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera1')
			game.ReplicatedStorage.StaticFlashThing:FireAllClients('CameraHallA')

			anomaly.HumanoidRootPart.CFrame = workspace.Enemy.TweakerWaypoints["Cam1B"].CFrame
			anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["Cam1A"].Position)
			anomaly.Humanoid.MoveToFinished:Wait()
			local random = math.random(1,2)
			game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera1')


			if random == 1 then

				anomaly.HumanoidRootPart.CFrame = workspace.Enemy.TweakerWaypoints["WindowA"].CFrame
				anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["WindowC"].Position)
				anomaly.Humanoid.MoveToFinished:Wait()


				anomaly.HumanoidRootPart.CFrame = workspace.Enemy.TweakerWaypoints.Right["DoorB"].CFrame
				anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints.Right["DoorA"].Position)
				anomaly.Humanoid.MoveToFinished:Wait()
				game.ReplicatedStorage.StaticFlashThing:FireAllClients('CameraRight')
				task.wait(.5)
				script.Parent.Torso.explosion:Play()
				game.ReplicatedStorage.StaticFlashThing:FireAllClients('CameraRight')

				local explosion = Instance.new('Explosion')
				explosion.Parent = script.Parent
				explosion.Position = script.Parent.HumanoidRootPart.Position
				explosion.DestroyJointRadiusPercent = .01

				workspace.Doors.DoorRight.Main.Values.Health.Value -= 4



				game.ReplicatedStorage.Values.Mobs.Bomb.Here.Value = false

				local newMonster = game.ReplicatedStorage.Mobs.Bomb:Clone()
				newMonster.Parent = workspace.Enemy
				newMonster.HumanoidRootPart.CFrame = workspace.Enemy.BombWaypoints.Spawn.CFrame
				newMonster.BombHandler.Enabled = true
				newMonster.Torso.spawn:Play()
				local force = Instance.new('ForceField')
				force.Parent = newMonster
				if workspace.Doors.DoorRight.Main.Values.Closed.Value == false then

					for i, v in pairs(game.Players:GetPlayers()) do

						local explosion = Instance.new('Explosion')
						explosion.Parent = v.Character
						explosion.Position = v.Character.HumanoidRootPart.Position
						explosion.DestroyJointRadiusPercent = .01


					end


					task.wait(2)
					force:Destroy()

				else
					for i, v in pairs(game.Players:GetPlayers()) do

						if v.Name == workspace.Doors.DoorRight.Main.Values.Plr.Value then

							v.leaderstats.Points.Value += 10

							game.ReplicatedStorage.Notification:FireClient(v,'door')

						end

					end
					workspace.Doors.PartRight.Jammed.Value = true

					warn('door closed')
					task.wait(2)
					workspace.Doors.PartRight.Jammed.Value = false
					anomaly:Destroy()
					force:Destroy()

				end
			else

		
				anomaly.HumanoidRootPart.CFrame = workspace.Enemy.TweakerWaypoints["WindowA"].CFrame
				anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["WindowB"].Position)
				anomaly.Humanoid.MoveToFinished:Wait()

				game.ReplicatedStorage.StaticFlashThing:FireAllClients('CameraLeft')
				anomaly.HumanoidRootPart.CFrame = workspace.Enemy.TweakerWaypoints["DoorB"].CFrame
				anomaly.Humanoid:MoveTo(workspace.Enemy.TweakerWaypoints["DoorA"].Position)
				anomaly.Humanoid.MoveToFinished:Wait()

				task.wait(.5)
				anomaly.Torso.explosion:Play()
				game.ReplicatedStorage.StaticFlashThing:FireAllClients('CameraLeft')

				local explosion = Instance.new('Explosion')
				explosion.Parent = anomaly
				explosion.Position = anomaly.HumanoidRootPart.Position
				explosion.DestroyJointRadiusPercent = .01

				workspace.Doors.DoorMain.Main.Values.Health.Value -= 4



				game.ReplicatedStorage.Values.Mobs.Bomb.Here.Value = false

				local newMonster = game.ReplicatedStorage.Mobs.Bomb:Clone()
				newMonster.Parent = workspace.Enemy
				newMonster.HumanoidRootPart.CFrame = workspace.Enemy.BombWaypoints.Spawn.CFrame
				newMonster.BombHandler.Enabled = true
				newMonster.Torso.spawn:Play()
				local force = Instance.new('ForceField')
				force.Parent = newMonster
				game.ReplicatedStorage.StaticFlashThing:FireAllClients('Camera8')
				if workspace.Doors.DoorMain.Main.Values.Closed.Value == false then

					for i, v in pairs(game.Players:GetPlayers()) do

						local explosion = Instance.new('Explosion')
						explosion.Parent = v.Character
						explosion.Position = v.Character.HumanoidRootPart.Position
						explosion.DestroyJointRadiusPercent = .01


					end


					task.wait(2)
					force:Destroy()

				else
					for i, v in pairs(game.Players:GetPlayers()) do

						if v.Name == workspace.Doors.DoorMain.Main.Values.Plr.Value then

							v.leaderstats.Points.Value += 10

							game.ReplicatedStorage.Notification:FireClient(v,'door')

						end

					end

					workspace.Doors.PartMain.Jammed.Value = true

					warn('door closed')
					task.wait(2)
					workspace.Doors.PartMain.Jammed.Value = false
					anomaly:Destroy()
					force:Destroy()

				end
			end

		end


		game.ReplicatedStorage.Values.Mobs.Bomb.Nb.Changed:Connect(function()

			print(game.ReplicatedStorage.Values.Mobs.Bomb.Nb.Value)

			if game.ReplicatedStorage.Values.Mobs.Bomb.Nb.Value == 0 then
				idle1:Stop()
				idle2:Stop()
				anomaly.Torso["Button Click"]:Play()
				idle2real:Stop()
				idle3:Stop()
				game.ReplicatedStorage.Values.Mobs.Bomb.Here.Value = true
				anomaly.Torso.PointLight.Brightness = 1

				run:Play()
				anomaly.Torso["Fire Loop (Minute Long)"]:Stop()
				path()

			elseif game.ReplicatedStorage.Values.Mobs.Bomb.Nb.Value == 25 then
				idle2:Stop()
				anomaly.Torso.PointLight.Brightness = 0.75
				anomaly.Torso["Button Click"]:Play()
				anomaly.Torso["Fire Loop (Minute Long)"]:Play()

				idle1:Stop()
				idle2real:Stop()
				idle3:Play()
			elseif game.ReplicatedStorage.Values.Mobs.Bomb.Nb.Value == 50 then
				idle1:Stop()
				idle2:Play()
				idle2real:Stop()
				idle3:Stop()
				anomaly.Torso.PointLight.Brightness = 0.5
				anomaly.Torso["Button Click"]:Play()
				anomaly.Torso["Fire Loop (Minute Long)"]:Stop()

			elseif game.ReplicatedStorage.Values.Mobs.Bomb.Nb.Value == 75 then
				anomaly.Torso["Button Click"]:Play()
				anomaly.Torso["Fire Loop (Minute Long)"]:Stop()

				idle1:Stop()
				idle2:Stop()
				idle2real:Play()
				idle3:Stop()
				anomaly.Torso.PointLight.Brightness = 0.25

			elseif game.ReplicatedStorage.Values.Mobs.Bomb.Nb.Value == 95 then
				anomaly.Torso["Button Click"]:Play()

				idle1:Play()
				idle2:Stop()
				idle2real:Stop()
				idle3:Stop()
				anomaly.Torso.PointLight.Brightness = 0

				anomaly.Torso["Fire Loop (Minute Long)"]:Stop()

			elseif game.ReplicatedStorage.Values.Mobs.Bomb.Nb.Value == 100 then

				idle1:Play()
				idle2:Stop()
				idle2real:Stop()
				idle3:Stop()
				anomaly.Torso.PointLight.Brightness = 0
				anomaly.Torso["Fire Loop (Minute Long)"]:Stop()



			end
		end)

		while task.wait(game.ReplicatedStorage.Values.Mobs.Bomb.Drain.Value) do

			if game.ReplicatedStorage.Values.Mobs.Bomb.Here.Value == false then

				game.ReplicatedStorage.Values.Mobs.Bomb.Nb.Value -= 1

			end

		end
		
	end)
	
end



1 Like

Take note that . Is inefficient.

Example:
Bad:

script.parts.Part.Color = --color
script.parts.Part.Position = --pos

Good:

local part = script.parts.Part

part.Color = --color
part.Position = --pos

I also recommend fitting all characters in one while loop, instead of having 5 different loops.

Also does this get fired every night? You never end those connections and while loop

at the end of every night they all break and when the next night start they get back

Animations should be done client side.

You can also try employing actors to optimize.

2 Likes

Do you disconnect the loops and break the whole loop?

If not that should be done

I tweaked a bit the code now instead of doing . return end in the loops I disconnect and break the loop

Ill start doing that right now . But what is an actor?

Correct me if I am wrong,
but calling task.spawn without any pauses if you, for example, spawn 1000 entities simultaneously, will overload the task scheduler. I would recommend a single task spawn function to spawn 1000 entities to keep it separate from the main thread but not overload the scheduler.

Also when spawning multiple entities, have a pause between each entity spawn to let the engine breathe. Also, connections will persist if you delete an object. Therefore I strongly recommend storing connections in some way, maybe globally with the key being the part, for example, with the value being a list of connections for that part or object.

for example:

-- global connections
connections = {}

-- Add part as a connection
connections[part] = {}
local connection = part.Changed:Connect(function()
    print("Part changed!")
end)
table.insert(connections[part], connection)

-- Later, when you want to stop listening:
for _, connection in ipairs(connections[part]) do
            connection:Disconnect()
end
connections[part] = nil

2 Likes

Actors are Roblox’s solution to multithreaded programming. Basically it’s a container for multiple pieces of code to be run concurrently.

2 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.