//Credit: DarkyBenji
//This Lua add the announcer From Fzero GX

local fzerolapsfx2
local fzerolapsfx3
local fzerolapsfx4
local fzerolapsfx5
local fzerolapsfx6
local fzerolapsfx7
local fzerolapsfx8
local fzerolapsfx9
local fzerolapsfx10
local fzerolapsfxf

freeslot(
"sfx_fzc3",
"sfx_fzc2",
"sfx_fzc1",
"sfx_fzgo",
"sfx_fzl2",
"sfx_fzl3",
"sfx_fzl4",
"sfx_fzl5",
"sfx_fzl6",
"sfx_fzl7",
"sfx_fzl8",
"sfx_fzl9",
"sfx_fzl10",
"sfx_fzfl",
"sfx_fini",
"sfx_fz1st",
"sfx_fz1st2",
"sfx_fz2nd",
"sfx_fz3rd",
"sfx_fz4th",
"sfx_fz5th",
"sfx_fz6th",
"sfx_fz7th",
"sfx_fz8th",
"sfx_fz9th",
"sfx_fz10h",
"sfx_fz11h",
"sfx_fz12h",
"sfx_fz13h",
"sfx_fz14h",
"sfx_fz15h",
"sfx_fz16h",
"sfx_fzfail",
"sfx_fzfall",
"sfx_fzhup",
"sfx_fzbad",
"sfx_fzreti",
"sfx_fsnkr",
"sfx_frsnk",
"sfx_finvc",
"sfx_fbana",
"sfx_fegmt",
"sfx_forbi",
"sfx_fjawz",
"sfx_fmine",
"sfx_fblhg",
"sfx_fkspb",
"sfx_fgrow",
"sfx_fshnk",
"sfx_fthsd",
"sfx_fhyuu",
"sfx_fpogo",
"sfx_fkchs",
"sfx_fzrest"
)

addHook("MapLoad", do
	for player in players.iterate do
        if player.mo and player.mo.valid
            local mo = player.mo
			mo.fzerofinishcooldown = 0*TICRATE
			mo.fzerodangercooldown = 0*TICRATE
			mo.fzerodanger = P_RandomRange(1, 2)//Hurry Up or Danger
			mo.fzerofinisfx = nil
			mo.fzerofirstplace = P_RandomRange(1, 2)//Alright First Place, FIIIIIIIRST PLACE
			mo.finksneaker = nil
			mo.finkrockets = nil
			mo.finkrinvincibility = nil
			mo.finkbananas = nil
			mo.finkeggmonitor = nil
			mo.finkorbinaut = nil
			mo.finkjawz = nil
			mo.finkmine = nil
			mo.finkballhog = nil
			mo.finkspb = nil
			mo.finkgrow = nil
			mo.finkshrink = nil
			mo.finkthunders = nil
			mo.finkhyudoro = nil
			mo.finkpogo = nil
			mo.finkkitchens = nil
			mo.fzeroretired = nil
			mo.fzeroeggman = nil
			mo.fzerooffcourse = nil
			mo.fzerorestart = nil
		end
	end
	fzerolapsfx2 = nil
	fzerolapsfx3 = nil
	fzerolapsfx4 = nil
	fzerolapsfx5 = nil
	fzerolapsfx6 = nil
	fzerolapsfx7 = nil
	fzerolapsfx8 = nil
	fzerolapsfx9 = nil
	fzerolapsfx10 = nil
	fzerolapsfxf = nil
end)	

addHook("ThinkFrame", do
if leveltime == 130 // Countdown
	S_StartSound(nil, sfx_fzc3)
	end
if leveltime == 165 
	S_StartSound(nil, sfx_fzc2)
	end
if leveltime == 200 
	S_StartSound(nil, sfx_fzc1)
	end
if leveltime == 235 
	S_StartSound(nil, sfx_fzgo)
	end
-- and now the main part...
for player in players.iterate do
	if player.mo and player.mo.valid then
		local mo = player.mo
			
		if leveltime >= 2*TICRATE
		and mo.fzerofinishcooldown ~= nil
			mo.fzerofinishcooldown = $1-1
		end	
		if leveltime >= 2*TICRATE and not K_IsPlayerLosing(player) //it would suck to hear danger every 10sec when you're losing 
		and mo.fzerodangercooldown ~= nil
			mo.fzerodangercooldown = $1-1
		end
-- Because when a player die, it set to nil	so let's fix that	
		if mo.fzerofinishcooldown == nil
		   mo.fzerofinishcooldown = 0*TICRATE
		   end
		if mo.fzerodangercooldown == nil
		   mo.fzerodangercooldown = 1*TICRATE
		   end
		if mo.fzerodanger == nil
		   mo.fzerodanger = P_RandomRange(1, 2)
		   end
		if mo.fzerofirstplace == nil
		   mo.fzerofirstplace = P_RandomRange(1, 2)
		   end
-- Finish!
		if player.laps == numlaps and mo.fzerofinisfx == nil
		S_StartSound(nil, sfx_fini, player)
		mo.fzerofinishcooldown = 3*TICRATE//Will say which place you get after saying "Finish"
		mo.fzerofinisfx = 1
		end
-- Alright First Place! and then other place next
		if player.kartstuff[k_position] == 1 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0 and gxChar.announceList[player.mo.skin] == nil then
			if mo.fzerofirstplace == 1
			S_StartSound(nil, sfx_fz1st, player)//Normal Volume when you hear your place
			S_StartSoundAtVolume(nil, sfx_fz1st, 200)//Lower Volume when people hear your place
			end
			if mo.fzerofirstplace == 2
			S_StartSound(nil, sfx_fz1st2, player)
			S_StartSoundAtVolume(nil, sfx_fz1st2, 200)
			end
		mo.fzerofinisfx = 2
		end
		if player.kartstuff[k_position] == 2 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0
		S_StartSound(nil, sfx_fz2nd, player)
		mo.fzerofinisfx = 2
		end
		if player.kartstuff[k_position] == 3 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0
		S_StartSound(nil, sfx_fz3rd, player)
		mo.fzerofinisfx = 2
		end
		if player.kartstuff[k_position] == 4 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0
		S_StartSound(nil, sfx_fz4th, player)
		mo.fzerofinisfx = 2
		end
		
		if player.kartstuff[k_position] == 5 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0
		S_StartSound(nil, sfx_fz5th, player)
		mo.fzerofinisfx = 2
		end
		if player.kartstuff[k_position] == 6 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0
		S_StartSound(nil, sfx_fz6th, player)
		mo.fzerofinisfx = 2
		end
		if player.kartstuff[k_position] == 7 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0
		S_StartSound(nil, sfx_fz7th, player)
		mo.fzerofinisfx = 2
		end
		if player.kartstuff[k_position] == 8 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0
		S_StartSound(nil, sfx_fz8th, player)
		mo.fzerofinisfx = 2
		end
		
		if player.kartstuff[k_position] == 9 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0
		S_StartSound(nil, sfx_fz9th, player)
		mo.fzerofinisfx = 2
		end
		if player.kartstuff[k_position] == 10 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0
		S_StartSound(nil, sfx_fz10h, player)
		mo.fzerofinisfx = 2
		end
		if player.kartstuff[k_position] == 11 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0
		S_StartSound(nil, sfx_fz11h, player)
		mo.fzerofinisfx = 2
		end
		if player.kartstuff[k_position] == 12 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0
		S_StartSound(nil, sfx_fz12h, player)
		mo.fzerofinisfx = 2
		end
		
		if player.kartstuff[k_position] == 13 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0
		S_StartSound(nil, sfx_fz13h, player)
		mo.fzerofinisfx = 2
		end
		if player.kartstuff[k_position] == 14 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0
		S_StartSound(nil, sfx_fz14h, player)
		mo.fzerofinisfx = 2
		end
		if player.kartstuff[k_position] == 15 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0
		S_StartSound(nil, sfx_fz15h, player)
		mo.fzerofinisfx = 2
		end
		if player.kartstuff[k_position] == 16 and player.laps == numlaps and mo.fzerofinisfx == 1 and mo.fzerofinishcooldown <= 0
		S_StartSound(nil, sfx_fz16h, player)
		mo.fzerofinisfx = 2
		end
--YEAH! THE FINAL LAP!
		if player.laps == numlaps -1 and fzerolapsfxf == nil
		S_StartSound(nil, sfx_fzfl)
		fzerolapsfxf = 1
		end
--Lap Counter (up to 10)
		if player.laps == numlaps -2 and numlaps == 3 and fzerolapsfx2 == nil or player.laps == numlaps -3 and numlaps == 4 and fzerolapsfx2 == nil or player.laps == numlaps -4 and numlaps == 5 and fzerolapsfx2 == nil or player.laps == numlaps -5 and numlaps == 6 and fzerolapsfx2 == nil or player.laps == numlaps -6 and numlaps == 7 and fzerolapsfx2 == nil or player.laps == numlaps -7 and numlaps == 8 and fzerolapsfx2 == nil or player.laps == numlaps -8 and numlaps == 9 and fzerolapsfx2 == nil or player.laps == numlaps -9 and numlaps == 10 and fzerolapsfx2 == nil or player.laps == numlaps -10 and numlaps == 11 and fzerolapsfx2 == nil
		S_StartSound(nil, sfx_fzl2)
		fzerolapsfx2 = 1
		end		
		if player.laps == numlaps -2 and numlaps == 4 and fzerolapsfx3 == nil or player.laps == numlaps -3 and numlaps == 5 and fzerolapsfx3 == nil or player.laps == numlaps -4 and numlaps == 6 and fzerolapsfx3 == nil or player.laps == numlaps -5 and numlaps == 7 and fzerolapsfx3 == nil or player.laps == numlaps -6 and numlaps == 8 and fzerolapsfx3 == nil or player.laps == numlaps -7 and numlaps == 9 and fzerolapsfx3 == nil or player.laps == numlaps -8 and numlaps == 10 and fzerolapsfx3 == nil or player.laps == numlaps -9 and numlaps == 11 and fzerolapsfx3 == nil
		S_StartSound(nil, sfx_fzl3)
		fzerolapsfx3 = 1
		end
		if player.laps == numlaps -2 and numlaps == 5 and fzerolapsfx4 == nil or player.laps == numlaps -3 and numlaps == 6 and fzerolapsfx4 == nil or player.laps == numlaps -4 and numlaps == 7 and fzerolapsfx4 == nil or player.laps == numlaps -5 and numlaps == 8 and fzerolapsfx4 == nil or player.laps == numlaps -6 and numlaps == 9 and fzerolapsfx4 == nil or player.laps == numlaps -7 and numlaps == 10 and fzerolapsfx4 == nil or player.laps == numlaps -8 and numlaps == 11 and fzerolapsfx4 == nil
		S_StartSound(nil, sfx_fzl4)
		fzerolapsfx4 = 1
		end
		if player.laps == numlaps -2 and numlaps == 6 and fzerolapsfx5 == nil or player.laps == numlaps -3 and numlaps == 7 and fzerolapsfx5 == nil or player.laps == numlaps -4 and numlaps == 8 and fzerolapsfx5 == nil or player.laps == numlaps -5 and numlaps == 9 and fzerolapsfx5 == nil or player.laps == numlaps -6 and numlaps == 10 and fzerolapsfx5 == nil or player.laps == numlaps -7 and numlaps == 11 and fzerolapsfx5 == nil
		S_StartSound(nil, sfx_fzl5)
		fzerolapsfx5 = 1
		end
		if player.laps == numlaps -2 and numlaps == 7 and fzerolapsfx6 == nil or player.laps == numlaps -3 and numlaps == 8 and fzerolapsfx6 == nil or player.laps == numlaps -4 and numlaps == 9 and fzerolapsfx6 == nil or player.laps == numlaps -5 and numlaps == 10 and fzerolapsfx6 == nil or player.laps == numlaps -6 and numlaps == 11 and fzerolapsfx6 == nil
		S_StartSound(nil, sfx_fzl6)
		fzerolapsfx6 = 1
		end
		if player.laps == numlaps -2 and numlaps == 8 and fzerolapsfx7 == nil or player.laps == numlaps -3 and numlaps == 9 and fzerolapsfx7 == nil or player.laps == numlaps -4 and numlaps == 10 and fzerolapsfx7 == nil or player.laps == numlaps -5 and numlaps == 11 and fzerolapsfx7 == nil
		S_StartSound(nil, sfx_fzl7)
		fzerolapsfx7 = 1
		end
		if player.laps == numlaps -2 and numlaps == 9 and fzerolapsfx8 == nil or player.laps == numlaps -3 and numlaps == 10 and fzerolapsfx8 == nil or player.laps == numlaps -4 and numlaps == 11 and fzerolapsfx8 == nil
		S_StartSound(nil, sfx_fzl8)
		fzerolapsfx8 = 1
		end
		if player.laps == numlaps -2 and numlaps == 10 and fzerolapsfx9 == nil or player.laps == numlaps -3 and numlaps == 11 and fzerolapsfx9 == nil
		S_StartSound(nil, sfx_fzl9)
		fzerolapsfx9 = 1
		end
		if player.laps == numlaps -2 and numlaps == 11 and fzerolapsfx10 == nil
		S_StartSound(nil, sfx_fzl10)
		fzerolapsfx10 = 1
		end
--Other Detail 
		//When you're losing, only trigger at the Final Lap
		if K_IsPlayerLosing(player) and player.lives == 1 and splitscreen == 0 and mo.fzerodangercooldown <= 0 and player.laps == numlaps -1 then
			if mo.fzerodanger == 1
			S_StartSound(nil, sfx_fzhup, player)//Hurry Up!
			end
			if mo.fzerodanger == 2
			S_StartSound(nil, sfx_fzbad, player)//Danger!
			end
		mo.fzerodangercooldown = 10*TICRATE
		mo.fzerodanger = P_RandomRange(1, 2)//We reroll Bois
		end
		
		//"Sneaker!"
		if player.kartstuff[k_itemtype] == KITEM_SNEAKER and mo.finksneaker == nil
		S_StartSound(nil, sfx_fsnkr, player)
		mo.finksneaker = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_SNEAKER and mo.finksneaker == 1
		mo.finksneaker = nil
		end
				
		//"Rocket Sneakers!"
		if player.kartstuff[k_itemtype] == KITEM_ROCKETSNEAKER and mo.finkrockets == nil
		S_StartSound(nil, sfx_frsnk, player)
		mo.finkrockets = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_ROCKETSNEAKER and mo.finkrockets == 1
		mo.finkrockets = nil
		end
				
		//"Invincibility!"
		if player.kartstuff[k_itemtype] == KITEM_INVINCIBILITY and mo.finkinvincibility == nil
		S_StartSound(nil, sfx_finvc, player)
		mo.finkinvincibility = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_INVINCIBILITY and mo.finkinvincibility == 1
		mo.finkinvincibility = nil
		end
				
		//"Bananas!"
		if player.kartstuff[k_itemtype] == KITEM_BANANA and mo.finkbananas == nil
		S_StartSound(nil, sfx_fbana, player)
		mo.finkbananas = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_BANANA and mo.finkbananas == 1
		mo.finkbananas = nil
		end
				
		//"Eggman Monitor!"
		if player.kartstuff[k_itemtype] == KITEM_EGGMAN and mo.finkeggmonitor == nil
		S_StartSound(nil, sfx_fegmt, player)
		mo.finkeggmonitor = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_EGGMAN and mo.finkeggmonitor == 1
		mo.finkeggmonitor = nil
		end
				
		//"Orbinaut!"
		if player.kartstuff[k_itemtype] == KITEM_ORBINAUT and mo.finkorbinaut == nil
		S_StartSound(nil, sfx_forbi, player)
		mo.finkorbinaut = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_ORBINAUT and mo.finkorbinaut == 1
		mo.finkorbinaut = nil
		end
				
		//"Jawz!"
		if player.kartstuff[k_itemtype] == KITEM_JAWZ and mo.finkjawz == nil
		S_StartSound(nil, sfx_fjawz, player)
		mo.finkjawz = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_JAWZ and mo.finkjawz == 1
		mo.finkjawz = nil
		end
				
		//"Mine!"
		if player.kartstuff[k_itemtype] == KITEM_MINE and mo.finkmine == nil
		S_StartSound(nil, sfx_fmine, player)
		mo.finkmine = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_MINE and mo.finkmine == 1
		mo.finkmine = nil
		end
				
		//"Ballhog!"
		if player.kartstuff[k_itemtype] == KITEM_BALLHOG and mo.finkballhog == nil
		S_StartSound(nil, sfx_fblhg, player)
		mo.finkballhog = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_BALLHOG and mo.finkballhog == 1
		mo.finkballhog = nil
		end
				
		//"Self-Propelled Bomb!"
		if player.kartstuff[k_itemtype] == KITEM_SPB and mo.finkspb == nil
		S_StartSound(nil, sfx_fkspb, player)
		mo.finkspb = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_SPB and mo.finkspb == 1
		mo.finkspb = nil
		end
				
		//"Grow!"
		if player.kartstuff[k_itemtype] == KITEM_GROW and mo.finkgrow == nil
		S_StartSound(nil, sfx_fgrow, player)
		mo.finkgrow = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_GROW and mo.finkgrow == 1
		mo.finkgrow = nil
		end
				
		//"Shrink!"
		if player.kartstuff[k_itemtype] == KITEM_SHRINK and mo.finkshrink == nil
		S_StartSound(nil, sfx_fshnk, player)
		mo.finkshrink = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_SHRINK and mo.finkshrink == 1
		mo.finkshrink = nil
		end
				
		//"Thunder Shield!"
		if player.kartstuff[k_itemtype] == KITEM_THUNDERSHIELD and mo.finkthunders == nil
		S_StartSound(nil, sfx_fthsd, player)
		mo.finkthunders = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_THUNDERSHIELD and mo.finkthunders == 1
		mo.finkthunders = nil
		end
				
		//"Hyudoro!"
		if player.kartstuff[k_itemtype] == KITEM_HYUDORO and mo.finkhyudoro == nil
		S_StartSound(nil, sfx_fhyuu, player)
		mo.finkhyudoro = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_HYUDORO and mo.finkhyudoro == 1
		mo.finkhyudoro = nil
		end
				
		//"Pogo Spring!"
		if player.kartstuff[k_itemtype] == KITEM_POGOSPRING and mo.finkpogo == nil
		S_StartSound(nil, sfx_fpogo, player)
		mo.finkpogo = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_POGOSPRING and mo.finkpogo == 1
		mo.finkpogo = nil
		end

		//"Kitchen Sink!"
		if player.kartstuff[k_itemtype] == KITEM_KITCHENSINK and mo.finkkitchens == nil
		S_StartSound(nil, sfx_fkchs, player)
		mo.finkkitchens = 1
		end
		if player.kartstuff[k_itemtype] != KITEM_KITCHENSINK and mo.finkkitchens == 1
		mo.finkkitchens = nil
		end
																					
		//Broken Down! you're gonna blow up!
		if player.kartstuff[k_eggmanexplode] == 4*TICRATE and mo.fzeroeggman == nil
		S_StartSound(nil, sfx_fzfail, player)//Player Around you will (not) hear it
		mo.fzeroeggman = 1
		end
		if player.kartstuff[k_eggmanexplode] <= 3*TICRATE and mo.fzeroeggman == 1
		mo.fzeroeggman = nil
		end
		
		//No Contest = Retired
		if player.lives == 0 and splitscreen == 0 and mo.fzeroretired == nil
		S_StartSound(nil, sfx_fzreti, player)
		mo.fzeroretired = 1
		end
		
		//Tfw you get pwned and fall off the track
		if player.kartstuff[k_wipeoutslow] > 0 and player.playerstate == PST_DEAD and mo.fzerooffcourse == nil 
		S_StartSound(nil, sfx_fzfall, player)
		S_StartSoundAtVolume(nil, sfx_fzfall, 155)
		mo.fzerooffcourse = 1
		end
		if player.kartstuff[k_spinouttimer] > 0 and player.playerstate == PST_DEAD and mo.fzerooffcourse == nil 
		S_StartSound(nil, sfx_fzfall, player)
		mo.fzerooffcourse = 1
		end
		
		//DropDash After Respawn
		if player.kartstuff[k_dropdash] >= TICRATE/4 and mo.fzerorestart == nil 
		S_StartSound(nil, sfx_fzrest, player)
		mo.fzerorestart = 1
		end
		
	end
end

end)