I wrote a bit of how it should function :
Wave system
Table with all the zombie types, their spawn rate, and their HP and damage like was suggested
Three tables for each difficulties
→ In these tables :
local WaveCount = amount of waves in the difficulty
local ZombieTypes = {table including all the zombies that can be spawned specifically in the current wave}
Make each waves pass after there’s no zombies left in the game.Workspace.LoadedZombies folder
after Wave2 or 3 depending on the amount of waves the difficulty has no more zombies spawn, victory, and if the player wants they can reload the game.
(I’m not saying your code does not work, I’m just slow at pace and I kinda need some further help)