--Credit: DarkyBenji
--This Lua adda the announcers From Daytona USA, Daytona USA2, Daytona USA Championship
local dusalapsxf
local dusa_an = CV_RegisterVar({
    name = "dusa_an",
    defaultvalue = "4",
    flags = 0,
    possiblevalue = {MIN = 0, MAX = 4}
  })
 local dusa_rs = CV_RegisterVar({
    name = "dusa_rs",
    defaultvalue = "2",
    flags = 0,
    possiblevalue = {MIN = 0, MAX = 2}
  })
 rawset(_G, "dusa_an_enable", CV_RegisterVar({
  name = "dusa_an_enable",
  defaultvalue = "On",
  flags = CV_NETVAR,
  PossibleValue = {Off = 0, On = 1},
}))
freeslot(
  "sfx_dusa3",
  "sfx_dusa2",
  "sfx_dusa1",
  "sfx_dusago",
  "sfx_dusafl",
  "sfx_dusat3",
  "sfx_dusat2",
  "sfx_dusat1",
  "sfx_dusatg",
  "sfx_dusatf",
  "sfx_dusac3",
  "sfx_dusac2",
  "sfx_dusac1",
  "sfx_dusacg",
  "sfx_dusacf",
  "sfx_dusaw",
  "sfx_dusatw",
  "sfx_dusacw",
  "sfx_dusas",
  "sfx_dusats",
  "sfx_dusacs",
  "sfx_dusat",
  "sfx_dusatt",
  "sfx_dusact",
  "sfx_dusap",
  "sfx_dusatp",
  "sfx_dusacp"
  )
addHook("MapLoad", function ()
  server.dusaan = P_RandomRange(1, 3)
  server.dusars = P_RandomRange(1, 2)
  dusalapsxf = nil
end)	
addHook("ThinkFrame", function ()
  if leveltime == 1 and dusa_an.value > 0 and dusa_an_enable.value == 1 and gametype == 0 and gamemap != 3 then -- Start your engines! 
    if server.dusaan == 1 and dusa_an.value == 4 or dusa_an.value == 1 then
      if server.dusars == 1 and dusa_rs.value == 2 or dusa_rs.value == 1  then
        S_StartSound(nil, sfx_dusat) --conditions are met
      else
        S_StartSound(nil, sfx_dusas) --conditions are not met
      end
    end
    if server.dusaan == 2 and dusa_an.value == 4 or dusa_an.value == 2 then
      if server.dusars == 1 and dusa_rs.value == 2 or dusa_rs.value == 1 then
        S_StartSound(nil, sfx_dusatt) --conditions are met
      else
        S_StartSound(nil, sfx_dusats) --conditions are not met
      end
    end
    if server.dusaan == 3 and dusa_an.value == 4 or dusa_an.value == 3 then
      if server.dusars == 1 and dusa_rs.value == 2 or dusa_rs.value == 1 then
        S_StartSound(nil, sfx_dusact) --conditions are met
      else
        S_StartSound(nil, sfx_dusacs) --conditions are not met
      end
    end
  end
  if leveltime == 115 and dusa_an.value > 0 and dusa_an_enable.value == 1 and gametype == 0 and gamemap != 3 then -- Position
    if server.dusaan == 1 and dusa_an.value == 4 or dusa_an.value == 1 then
      S_StartSound(nil, sfx_dusap)
    end
    if server.dusaan == 2 and dusa_an.value == 4 or dusa_an.value == 2 then
      S_StartSound(nil, sfx_dusatp)
    end
    if server.dusaan == 3 and dusa_an.value == 4 or dusa_an.value == 3 then
      S_StartSound(nil, sfx_dusacp)
    end
  end
  if leveltime == starttime - TICRATE*3 and dusa_an.value > 0 and dusa_an_enable.value == 1 and gametype == 0 and gamemap != 3 then -- Countdown
    if server.dusaan == 1 and dusa_an.value == 4 or dusa_an.value == 1 then
      S_StartSound(nil, sfx_dusa3)
    end
    if server.dusaan == 2 and dusa_an.value == 4 or dusa_an.value == 2 then
      S_StartSound(nil, sfx_dusat3)
    end
    if server.dusaan == 3 and dusa_an.value == 4 or dusa_an.value == 3 then
      S_StartSound(nil, sfx_dusac3)
    end
  end
  if leveltime == starttime - TICRATE*2 and dusa_an.value > 0 and dusa_an_enable.value == 1 and gametype == 0 and gamemap != 3 then
    if server.dusaan == 1 and dusa_an.value == 4 or dusa_an.value == 1 then
      S_StartSound(nil, sfx_dusa2)
    end
    if server.dusaan == 2 and dusa_an.value == 4 or dusa_an.value == 2 then
      S_StartSound(nil, sfx_dusat2)
    end
    if server.dusaan == 3 and dusa_an.value == 4 or dusa_an.value == 3 then
      S_StartSound(nil, sfx_dusac2)
    end
  end
  if leveltime == starttime - TICRATE and dusa_an.value > 0 and dusa_an_enable.value == 1 and gametype == 0 and gamemap != 3 then
    if server.dusaan == 1 and dusa_an.value == 4 or dusa_an.value == 1 then
      S_StartSound(nil, sfx_dusa1)
    end
    if server.dusaan == 2 and dusa_an.value == 4 or dusa_an.value == 2 then
      S_StartSound(nil, sfx_dusat1)
    end
    if server.dusaan == 3 and dusa_an.value == 4 or dusa_an.value == 3 then
      S_StartSound(nil, sfx_dusac1)
    end
  end
  if leveltime == starttime and dusa_an.value > 0 and dusa_an_enable.value == 1 and gametype == 0 and gamemap != 3 then
    if server.dusaan == 1 and dusa_an.value == 4 or dusa_an.value == 1 then
      S_StartSound(nil, sfx_dusago)
    end
    if server.dusaan == 2 and dusa_an.value == 4 or dusa_an.value == 2 then
      S_StartSound(nil, sfx_dusatg)
    end
    if server.dusaan == 3 and dusa_an.value == 4 or dusa_an.value == 3 then
      S_StartSound(nil, sfx_dusacg)
    end
  end
  -- and now the main part...
  for player in players.iterate do
    if player.mo and player.mo.valid then
      local mo = player.mo
      --The white flag is out! This is the final lap!
      if player.laps == numlaps and dusalapsxf == nil and dusa_an_enable.value == 1 and gametype == 0 and gamemap != 3 then
        if server.dusaan == 1 and dusa_an.value == 4 or dusa_an.value == 1 then
          S_StartSound(nil, sfx_dusafl)
          dusalapsxf = 1
        end
        if server.dusaan == 2 and dusa_an.value == 4 or dusa_an.value == 2 then
          S_StartSound(nil, sfx_dusatf)
          dusalapsxf = 1
        end
        if server.dusaan == 3 and dusa_an.value == 4 or dusa_an.value == 3 then
          S_StartSound(nil, sfx_dusacf)
          dusalapsxf = 1
        end
      end
      -- A new winner!
      if player.position == 1 and player.laps > numlaps and dusalapsxf == 1 and dusa_an_enable.value == 1 and gametype == 0 and gamemap != 3 then
        if server.dusaan == 1 and dusa_an.value == 4 or dusa_an.value == 1 then
          S_StartSound(nil, sfx_dusaw, player)--Normal Volume when you hear your place
          S_StartSoundAtVolume(nil, sfx_dusaw, 155)
          dusalapsxf = 2
        end
        if server.dusaan == 2 and dusa_an.value == 4 or dusa_an.value == 2 then
          S_StartSound(nil, sfx_dusatw, player)--Normal Volume when you hear your place
          S_StartSoundAtVolume(nil, sfx_dusatw, 155)
          dusalapsxf = 2
        end
        if server.dusaan == 3 and dusa_an.value == 4 or dusa_an.value == 3 then
          S_StartSound(nil, sfx_dusacw, player)--Normal Volume when you hear your place
          S_StartSoundAtVolume(nil, sfx_dusacw, 155)
          dusalapsxf = 2
        end
      end
    end
  end
end)