local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local BadgeService = game:GetService("BadgeService")
local events = ReplicatedStorage:WaitForChild("Events")
local mob = require(script.Parent.Mob)
local info = workspace.Info
local round = {}
local votes = {}
function round.StartGame()
local map = round.LoadMap()
info.GameRunning.Value = true
for i = 5, 0, -1 do
if i<=6 then
mob.Spawn("Arrow", 1, map)
end
info.Message.Value = "Game starting in " .. i
task.wait(1)
end
for i, player in pairs(Players:GetChildren()) do
player.Gold.Value = player.Gold.Value + player.FarmMoney.Value
end
for wave = 1, 36 do
info.Wave.Value = wave
info.Message.Value = ""
round.GetWave(wave, map)
repeat
task.wait(1)
until #workspace.Mobs:GetChildren() == 0 or not info.GameRunning.Value
if info.GameRunning.Value and wave == 36 then
info.Message.Value = "Victory"
game.SoundService.Music:Remove()
elseif info.GameRunning.Value then
local reward = 60 * wave
for i, player in pairs(Players:GetChildren()) do
player.Gold.Value = player.Gold.Value + reward
end
info.Message.Value = "Wave Reward: $" .. reward
task.wait(2)
for i = 2, 0, -1 do
info.Message.Value = "Next wave starting in " .. i
task.wait(0.7)
end
for i, player in pairs(Players:GetChildren()) do
player.Gold.Value = player.Gold.Value + player.FarmMoney.Value
end
else
break
end
if info.GameRunning.Value and wave == 26 then
for i, player in pairs(Players:GetPlayers()) do
end end end
end
function round.LoadMap()
local votedMap = round.ToggleVoting()
local mapFolder = ServerStorage.Maps:FindFirstChild(votedMap)
if not mapFolder then
mapFolder = ServerStorage.Maps.Tropical
end
local newMap = mapFolder:Clone()
newMap.Parent = workspace.Map
workspace.SpawnBox.Floor:Remove()
newMap.Base.Humanoid.HealthChanged:Connect(function(health)
if health <= 0 then
info.GameRunning.Value = false
info.Message.Value = "GAME OVER"
game.SoundService.Music:Remove()
workspace.Mobs:ClearAllChildren()
end
end)
return newMap
end
function round.ToggleVoting()
local maps = ServerStorage.Maps:GetChildren()
votes = {}
for i, map in ipairs(maps) do
votes[map.Name] = {}
end
info.Voting.Value = true
for i=10, 1, -1 do
info.Message.Value = "Map voting (" .. i .. ")"
task.wait(1)
end
local winVote = nil
local winScore = 0
for name, map in pairs(votes) do
if #map > winScore then
winScore = #map
winVote = name
end
end
if not winVote then
local n = math.random(#maps)
winVote = maps[n].Name
end
for map, maps in pairs(maps) do
if maps.Name ~= winVote then
maps:Destroy()
end
end
info.Voting.Value = false
return winVote
end
function round.ProcessVote(player, vote)
for name, mapVotes in pairs(votes) do
local oldVote = table.find(mapVotes, player.UserId)
if oldVote then
table.remove(mapVotes, oldVote)
break
end
end
table.insert(votes[vote], player.UserId)
events:WaitForChild("UpdateVoteCount"):FireAllClients(votes)
end
events:WaitForChild("VoteForMap").OnServerEvent:Connect(round.ProcessVote)
function round.GetWave(wave, map)
if wave == 1 then
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("They're back again, but stronger.", "Scared")
wait(5)
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("Listen up. I heard these new ICU enemies are no joke. So try to survive.", "Scared")
wait(8)
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("Help me defend.", "Neutral")
game.SoundService.Music["???"]:Play()
mob.Spawn("Zombie", 10, map)
elseif wave == 2 then
game.SoundService.Music["???"]:Play()
mob.Spawn("Zombie", 10, map)
elseif wave == 3 then
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("I just noticed that these new enemies have higher defense, so any unit that shoots bullets will do less damage.", "Neutral")
mob.Spawn("Zombie", 12, map)
mob.Spawn("Swift", 6, map)
elseif wave == 4 then
mob.Spawn("Zombie", 15, map)
mob.Spawn("Swift", 8, map)
elseif wave == 5 then
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("I think you've got this, you don't need my advice...", "Neutral")
wait(8)
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("I'll give you a heads-up on something big that's coming.", "Neutral")
mob.Spawn("Zombie", 15, map)
mob.Spawn("Swift", 10, map)
mob.Spawn("Helfy", 7, map)
elseif wave == 6 then
mob.Spawn("Zombie", 15, map)
mob.Spawn("Swift", 12, map)
mob.Spawn("Helfy", 7, map)
elseif wave == 7 then
mob.Spawn("Zombie", 15, map)
mob.Spawn("Swift", 12, map)
mob.Spawn("Tremend", 6, map)
mob.Spawn("Helfy", 9, map)
elseif wave == 8 then
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("Heads up, a horde is coming in the next wave!", "Scared")
mob.Spawn("Zombie", 15, map)
mob.Spawn("Swift", 15, map)
mob.Spawn("Tremend", 9, map)
mob.Spawn("Helfy", 12, map)
elseif wave == 9 then
game.SoundService.Music["Attack"]:Play()
mob.Spawn("Zombie", 25, map)
mob.Spawn("Swift", 20, map)
mob.Spawn("Tremend", 15, map)
mob.Spawn("Helfy", 16, map)
elseif wave == 10 then
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("Still alive. Good...", "Scared")
mob.Spawn("Zombie", 15, map)
mob.Spawn("Swift", 15, map)
mob.Spawn("Ignorant", 1, map)
mob.Spawn("Tremend", 9, map)
mob.Spawn("Helfy", 12, map)
elseif wave == 11 then
mob.Spawn("Zombie", 15, map)
mob.Spawn("Swift", 12, map)
mob.Spawn("Ignorant", 2, map)
mob.Spawn("Tremend", 9, map)
mob.Spawn("Promp", 8, map)
mob.Spawn("Helfy", 12, map)
elseif wave == 12 then
mob.Spawn("Ignorant", 2, map)
mob.Spawn("Tremend", 15, map)
mob.Spawn("Promp", 12, map)
mob.Spawn("Helfy", 17, map)
elseif wave == 13 then
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("Something is wrong...", "Scared")
mob.Spawn("Ignorant", 2, map)
mob.Spawn("Tremend", 15, map)
mob.Spawn("Whisper", 3, map)
mob.Spawn("Promp", 12, map)
mob.Spawn("Helfy", 17, map)
elseif wave == 14 then
mob.Spawn("Ignorant", 3, map)
mob.Spawn("Tremend", 25, map)
mob.Spawn("Whisper", 5, map)
mob.Spawn("Promp", 15, map)
mob.Spawn("Helfy", 20, map)
elseif wave == 15 then
game.SoundService.Music["Breakneck Speed A"]:Play()
mob.Spawn("Ignorant", 3, map)
mob.Spawn("Tremend", 25, map)
mob.Spawn("Whisper", 5, map)
mob.Spawn("Promp", 15, map)
mob.Spawn("Hazmat", 2, map)
mob.Spawn("Helfy", 20, map)
elseif wave == 16 then
mob.Spawn("Ignorant", 3, map)
mob.Spawn("Tremend", 25, map)
mob.Spawn("Whisper", 5, map)
mob.Spawn("Promp", 15, map)
mob.Spawn("Hazmat", 3, map)
mob.Spawn("Helfy", 20, map)
elseif wave == 17 then
mob.Spawn("Ignorant", 3, map)
mob.Spawn("Tremend", 25, map)
mob.Spawn("Whisper", 5, map)
mob.Spawn("Promp", 15, map)
mob.Spawn("Hazmat", 5, map)
elseif wave == 18 then
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("Bringing out the big guns, I see...", "Neutral")
wait(5)
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("I think you've got this. Don't give up!", "Neutral")
mob.Spawn("Ignorant", 5, map)
mob.Spawn("Whisper", 12, map)
mob.Spawn("Promp", 20, map)
mob.Spawn("Hazmat", 5, map)
mob.Spawn("Recon", 2, map)
elseif wave == 19 then
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("Something big is incoming in the next wave. Hopefully, you are prepared.", "Neutral")
mob.Spawn("Ignorant", 5, map)
mob.Spawn("Whisper", 12, map)
mob.Spawn("Promp", 25, map)
mob.Spawn("Hazmat", 6, map)
mob.Spawn("Recon", 4, map)
elseif wave == 20 then
game.SoundService.Music["Seek & Destroy"]:Play()
game.SoundService.Music["Breakneck Speed A"]:Stop()
mob.Spawn("Ignorant", 10, map)
mob.Spawn("Whisper", 20, map)
mob.Spawn("Hazmat", 6, map)
mob.Spawn("Recon", 6, map)
mob.Spawn("Manifest", 1, map)
elseif wave == 21 then
mob.Spawn("Ignorant", 5, map)
mob.Spawn("Whisper", 15, map)
mob.Spawn("Hazmat", 12, map)
mob.Spawn("Recon", 7, map)
mob.Spawn("Infantry", 2, map)
mob.Spawn("Manifest", 1, map)
elseif wave == 22 then
mob.Spawn("Ignorant", 8, map)
mob.Spawn("Whisper", 12, map)
mob.Spawn("Hazmat", 12, map)
mob.Spawn("Recon", 7, map)
mob.Spawn("Infantry", 5, map)
mob.Spawn("Manifest", 1, map)
elseif wave == 23 then
mob.Spawn("Ignorant", 8, map)
mob.Spawn("Whisper", 15, map)
mob.Spawn("Hazmat", 12, map)
mob.Spawn("Recon", 12, map)
mob.Spawn("Infantry", 7, map)
mob.Spawn("Manifest", 1, map)
elseif wave == 24 then
mob.Spawn("Ignorant", 8, map)
mob.Spawn("Whisper", 15, map)
mob.Spawn("Hazmat", 12, map)
mob.Spawn("Recon", 12, map)
mob.Spawn("Infantry", 7, map)
mob.Spawn("Manifest", 2, map)
elseif wave == 25 then
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("Uhm, is that it? Did we win?", "Neutral")
wait(5)
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("Something's not right...", "Neutral")
game.SoundService.Music["Wave_25"]:Play()
wait(9)
mob.Spawn("Cloak", 100, map)
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("NO! OUR CLOAKS HAVE BEEN INFECTED! THIS ISN'T GOOD!!!!", "Scared")
wait(6)
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("THERE ARE TOO MANY OF THEM! PLEASE TELL ME YOU'VE GOT THIS!!!", "Scared")
elseif wave == 26 then
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("Wow... I'm impressed you managed to defeat all the cloaks...", "Neutral")
wait(8)
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("At this point, I think you don't need my advice, but that doesn't stop me from giving you a heads-up on big threats.", "Neutral")
mob.Spawn("Ignorant", 12, map)
mob.Spawn("Hazmat", 20, map)
mob.Spawn("Cloak", 20, map)
mob.Spawn("Recon", 12, map)
mob.Spawn("Infantry", 7, map)
mob.Spawn("Manifest", 2, map)
elseif wave == 27 then
mob.Spawn("Ignorant", 12, map)
mob.Spawn("Hazmat", 25, map)
mob.Spawn("Cloak", 25, map)
mob.Spawn("Recon", 20, map)
mob.Spawn("Infantry", 15, map)
mob.Spawn("Heavy", 2, map)
mob.Spawn("Manifest", 3, map)
elseif wave == 28 then
mob.Spawn("Ignorant", 20, map)
mob.Spawn("Hazmat", 25, map)
mob.Spawn("Cloak", 25, map)
mob.Spawn("Recon", 25, map)
mob.Spawn("Infantry", 20, map)
mob.Spawn("Heavy", 2, map)
mob.Spawn("Manifest", 3, map)
elseif wave == 29 then
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("Heads up, something big is coming in the next wave. You got this.", "Neutral")
mob.Spawn("Ignorant", 20, map)
mob.Spawn("Hazmat", 25, map)
mob.Spawn("Cloak", 30, map)
mob.Spawn("Recon", 25, map)
mob.Spawn("Infantry", 20, map)
mob.Spawn("Heavy", 5, map)
mob.Spawn("Manifest", 4, map)
elseif wave == 30 then
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("BIG HORDE INCOMING!!!", "Scared")
game.SoundService.Music["Oversized"]:Play()
wait(9)
mob.Spawn("Cloak", 50, map)
mob.Spawn("Hazmat", 30, map)
mob.Spawn("Infantry", 30, map)
mob.Spawn("Recon", 35, map)
mob.Spawn("Manifest", 6, map)
mob.Spawn("Heavy", 6, map)
mob.Spawn("Mega_Cloak", 1, map)
elseif wave == 31 then
mob.Spawn("Cloak", 50, map)
mob.Spawn("Hazmat", 30, map)
mob.Spawn("Infantry", 30, map)
mob.Spawn("Recon", 35, map)
mob.Spawn("Manifest", 6, map)
mob.Spawn("Heavy", 6, map)
mob.Spawn("Mega_Cloak", 2, map)
elseif wave == 32 then
mob.Spawn("Cloak", 50, map)
mob.Spawn("Hazmat", 30, map)
mob.Spawn("Infantry", 30, map)
mob.Spawn("Recon", 35, map)
mob.Spawn("Manifest", 12, map)
mob.Spawn("Heavy", 12, map)
mob.Spawn("Mega_Cloak", 2, map)
elseif wave == 33 then
game.SoundService.Music["The Last Commandment"]:Play()
game.SoundService.Music["Oversized"]:Stop()
mob.Spawn("Cloak", 50, map)
mob.Spawn("Hazmat", 30, map)
mob.Spawn("Infantry", 30, map)
mob.Spawn("Recon", 35, map)
mob.Spawn("Manifest", 12, map)
mob.Spawn("Heavy", 12, map)
mob.Spawn("Juggernaut", 2, map)
mob.Spawn("Mega_Cloak", 2, map)
elseif wave == 34 then
mob.Spawn("Cloak", 50, map)
mob.Spawn("Hazmat", 30, map)
mob.Spawn("Infantry", 30, map)
mob.Spawn("Recon", 35, map)
mob.Spawn("Manifest", 12, map)
mob.Spawn("Heavy", 12, map)
mob.Spawn("Juggernaut", 2, map)
mob.Spawn("Mega_Cloak", 2, map)
elseif wave == 35 then
game.SoundService.Music["The Last Commandment"]:Stop()
game.SoundService.Music["Oversized"]:Stop()
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("I'm cutting out. .... ...", "Neutral")
wait(8)
game.SoundService.Intermediate["Dialog"]:Play()
game:GetService("ReplicatedStorage").Events.DialogueTwo:FireAllClients("Salutations, dear companion. Your journey has been long, fraught with challenges, yet you've prevailed...", "Neutral")
wait(8)
game:GetService("ReplicatedStorage").Events.DialogueTwo:FireAllClients("During your travels, you've met a multitude of your varied brethren scattered across distant lands...", "Neutral")
wait(8)
game:GetService("ReplicatedStorage").Events.DialogueTwo:FireAllClients("Only a handful among them will successfully reach this point in their journey...", "Neutral")
wait(8)
game:GetService("ReplicatedStorage").Events.DialogueTwo:FireAllClients("Your valorous deeds have affirmed your worthiness, propelling you towards the next stage of your existence...", "Neutral")
wait(8)
game:GetService("ReplicatedStorage").Events.DialogueTwo:FireAllClients("The moment has arrived for you to unite with us...", "Neutral")
wait(8)
game:GetService("ReplicatedStorage").Events.DialogueTwo:FireAllClients("You might wonder about the identity of this enigmatic voice, possessing vast knowledge and formidable abilities...", "Neutral")
wait(12)
game:GetService("ReplicatedStorage").Events.Dialogue:FireAllClients("May I ask who you are??", "Scared")
wait(8)
game:GetService("ReplicatedStorage").Events.DialogueTwo:FireAllClients("I'm delighted you've raised the question...", "Neutral")
game.SoundService.Music["Dialog"]:Pause()
game.SoundService.Music["Behind Masks"]:Play()
wait(13)
mob.Spawn("Annihilator", 1, map)
wait(10)
mob.Spawn("Juggernaut", 5, map)
mob.Spawn("Cloak", 100, map)
mob.Spawn("Mega_Cloak", 5, map)
end
return round
end
return round
Could someone help me make it so if next wave comes the sound will stop i have been trying to do this for so long but i dont know how to do it
Insert this at the top of round.GetWave, before any if wave == … conditions:
for _, s in pairs(game.SoundService.Music:GetChildren()) do
if s:IsA("Sound") then s:Stop() end
end
for _, s in pairs(game.SoundService.Intermediate:GetChildren()) do
if s:IsA("Sound") then s:Stop() end
end
Kind of a catch all attempt here.