diff --git a/code/_globalvars/lists/misc.dm b/code/_globalvars/lists/misc.dm
index eb5c500573b..6c6a02b265f 100644
--- a/code/_globalvars/lists/misc.dm
+++ b/code/_globalvars/lists/misc.dm
@@ -20,4 +20,12 @@ var/list/restricted_camera_networks = list( //Those networks can only be accesse
var/list/mineral_turfs = list()
-var/list/ruin_landmarks = list()
\ No newline at end of file
+var/list/ruin_landmarks = list()
+
+var/list/round_end_sounds = list( // Maps available round end sounds to their duration
+ 'sound/AI/newroundsexy.ogg' = 2.3 SECONDS,
+ 'sound/misc/apcdestroyed.ogg' = 3 SECONDS,
+ 'sound/misc/bangindonk.ogg' = 1.6 SECONDS,
+ 'sound/goonstation/misc/newround1.ogg' = 6.9 SECONDS,
+ 'sound/goonstation/misc/newround2.ogg' = 14.8 SECONDS
+ )
diff --git a/code/world.dm b/code/world.dm
index c98f2acc2e3..f37fd273e86 100644
--- a/code/world.dm
+++ b/code/world.dm
@@ -269,6 +269,7 @@ var/world_topic_spam_protect_time = world.timeofday
return
else
return ..(1)
+
var/delay
if(!isnull(time))
delay = max(0,time)
@@ -278,6 +279,13 @@ var/world_topic_spam_protect_time = world.timeofday
to_chat(world, "An admin has delayed the round end.")
return
to_chat(world, "Rebooting world in [delay/10] [delay > 10 ? "seconds" : "second"]. [reason]")
+
+ var/round_end_sound = pick(round_end_sounds)
+ var/sound_length = round_end_sounds[round_end_sound]
+ if(delay > sound_length) // If there's time, play the round-end sound before rebooting
+ spawn(delay - sound_length)
+ if(!ticker.delay_end)
+ world << round_end_sound
sleep(delay)
if(blackbox)
blackbox.save_all_data_to_sql()
@@ -288,10 +296,6 @@ var/world_topic_spam_protect_time = world.timeofday
log_game("Rebooting world. [reason]")
//kick_clients_in_lobby("The round came to an end with you in the lobby.", 1)
- spawn(0)
- world << sound(pick('sound/AI/newroundsexy.ogg','sound/misc/apcdestroyed.ogg','sound/misc/bangindonk.ogg', 'sound/goonstation/misc/newround1.ogg', 'sound/goonstation/misc/newround2.ogg'))// random end sounds!! - LastyBatsy
-
-
processScheduler.stop()
if(config && config.shutdown_on_reboot)