diff --git a/code/datums/audio/_audio.dm b/code/datums/audio/_audio.dm
index c513d68679..96a9021eeb 100644
--- a/code/datums/audio/_audio.dm
+++ b/code/datums/audio/_audio.dm
@@ -1,3 +1,5 @@
+/*
+// FLIPPER REMOVAL - see modular_flipper/code/datums/audio/
/decl/music_track
var/artist
var/title
@@ -23,3 +25,4 @@
// No VV editing anything about music tracks
/decl/music_track/VV_static()
return ..() + vars
+*/
diff --git a/code/datums/audio/_tracks.dm b/code/datums/audio/_tracks.dm
index 55fe5d0ba3..d1d1f319cf 100644
--- a/code/datums/audio/_tracks.dm
+++ b/code/datums/audio/_tracks.dm
@@ -1,3 +1,5 @@
+/*
+// FLIPPER REMOVAL - see modular_flipper/code/datums/audio/
/datum/track
var/title
var/track
@@ -293,3 +295,4 @@
title = "Russkiy rep Diskoteka"
song = 'sound/music/russianrapdisco.ogg'
license = /decl/license/grandfathered
+*/
diff --git a/code/datums/audio/jukebox.dm b/code/datums/audio/jukebox.dm
index 336b093a0d..5c47891fb5 100644
--- a/code/datums/audio/jukebox.dm
+++ b/code/datums/audio/jukebox.dm
@@ -1,5 +1,5 @@
-
-
+/*
+// FLIPPER REMOVAL - see modular_flipper/code/datums/audio/
GLOBAL_LIST_INIT(music_tracks, list(
"Beyond" = /decl/music_track/ambispace,
"Clouds of Fire" = /decl/music_track/clouds_of_fire,
@@ -51,4 +51,5 @@ GLOBAL_LIST_INIT(jukebox_secret_tracks, list(
var/track_list = LAZYLEN(tracks) ? tracks : GLOB.jukebox_secret_tracks
for(var/track_name in track_list)
var/track_path = track_list[track_name]
- . += new/datum/track(track_name, track_path)
\ No newline at end of file
+ . += new/datum/track(track_name, track_path)
+*/
diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm
index 2b75d72245..3ac033f207 100644
--- a/code/game/machinery/jukebox.dm
+++ b/code/game/machinery/jukebox.dm
@@ -240,11 +240,13 @@
var/area/main_area = get_area(src)
if(freq)
- var/sound/new_song = sound(current_track.GetTrack(), channel = 1, repeat = 1, volume = 25)
+ //var/sound/new_song = sound(current_track.GetTrack(), channel = 1, repeat = 1, volume = 25) // FLIPPER EDIT - config/jukebox_tracks/
+ var/sound/new_song = sound(current_track.path, channel = 1, repeat = 1, volume = 25)
new_song.frequency = freq
main_area.forced_ambience = list(new_song)
else
- main_area.forced_ambience = list(current_track.GetTrack())
+ //main_area.forced_ambience = list(current_track.GetTrack()) // FLIPPER EDIT - config/jukebox_tracks/
+ main_area.forced_ambience = list(current_track.path)
for(var/mob/living/M in mobs_in_area(main_area))
if(M.mind)
diff --git a/code/modules/clothing/ears/headphones.dm b/code/modules/clothing/ears/headphones.dm
index 92c03d7fe6..d5a6c5b277 100644
--- a/code/modules/clothing/ears/headphones.dm
+++ b/code/modules/clothing/ears/headphones.dm
@@ -10,6 +10,7 @@
var/sound_channel
var/current_track
var/music_volume = 50
+ var/list/datum/track/tracks //FLIPPER ADDITION - config/jukebox_tracks/
/obj/item/clothing/head/headphones/Initialize()
. = ..()
@@ -60,10 +61,19 @@
/obj/item/clothing/head/headphones/proc/play_music(mob/user)
if(!user || !user.client)
return
+ /*
+ // FLIPPER EDIT - config/jukebox_tracks/
if(current_track)
var/decl/music_track/track = GET_DECL(GLOB.music_tracks[current_track])
user << sound(null, channel = sound_channel)
user << sound(track.song, repeat = 1, wait = 0, volume = music_volume, channel = sound_channel)
+ */
+
+ if(current_track)
+ var/datum/track/track = tracks[current_track]
+ user << sound(null, channel = sound_channel)
+ user << sound(track.path, repeat = 1, wait = 0, volume = music_volume, channel = sound_channel)
+ // FLIPPER EDIT END
/obj/item/clothing/head/headphones/proc/stop_music(mob/user)
if(!user || !user.client)
@@ -77,11 +87,21 @@
dat += "Switch [headphones_on ? "off" : "on"]"
dat += "Volume: [music_volume] -+"
dat += "Tracks:"
+ /*
+ // FLIPPER EDIT - config/jukebox_tracks/
for(var/track in GLOB.music_tracks)
if(track == current_track)
dat += "[track]"
else
dat += "[track]"
+ */
+
+ for(var/track in tracks)
+ if(track == current_track)
+ dat += "[track]"
+ else
+ dat += "[track]"
+ // FLIPPER EDIT END
var/datum/browser/popup = new(user, "headphones", name, 290, 410)
popup.set_content(jointext(dat,"
"))
@@ -102,4 +122,4 @@
if(headphones_on)
play_music(usr)
interact(usr)
- updateUsrDialog()
\ No newline at end of file
+ updateUsrDialog()
diff --git a/code/unit_tests/music_test.dm b/code/unit_tests/music_test.dm
index b558cbe9e4..f79d04684f 100644
--- a/code/unit_tests/music_test.dm
+++ b/code/unit_tests/music_test.dm
@@ -1,3 +1,5 @@
+/*
+// FLIPPER EDIT - config/jukebox_tracks/
/datum/unit_test/music_track_validate
name = "MUSIC TRACK: Validate Music Tracks"
@@ -50,4 +52,5 @@
else
pass("All jukeboxes had valid tracks.")
- return 1
\ No newline at end of file
+ return 1
+*/
diff --git a/config/.gitignore b/config/.gitignore
index 02fb86d770..fef3536469 100644
--- a/config/.gitignore
+++ b/config/.gitignore
@@ -2,6 +2,11 @@
/*
!/*/
-#FLIPPER EDIT - title music shit
+#FLIPPER EDIT - music shit
/title_music/sounds/*
!/title_music/sounds/exclude
+
+/jukebox_music/sounds/*
+!/jukebox_music/sounds/exclude
+/jukebox_music/secret_sounds/*
+!/jukebox_music/secret_sounds/exclude
diff --git a/config/jukebox_music/README.txt b/config/jukebox_music/README.txt
new file mode 100644
index 0000000000..ea14eb9345
--- /dev/null
+++ b/config/jukebox_music/README.txt
@@ -0,0 +1,4 @@
+Throw any music you want into either /sounds/ or /secret_sounds/. If it's in /sounds/, it'll be able to be listened to with headphones and an unhacked jukebox.
+Anything in /secret_sounds/ can only be heard of a hacked jukebox.
+
+IMPORTANT: Make sure filenames DO NOT have any '.' outside of a file extension, otherwise the song title will be fucked up.
\ No newline at end of file
diff --git a/modular_flipper/code/datums/audio/_audio.dm b/config/jukebox_music/secret_sounds/exclude
similarity index 100%
rename from modular_flipper/code/datums/audio/_audio.dm
rename to config/jukebox_music/secret_sounds/exclude
diff --git a/config/jukebox_music/sounds/exclude b/config/jukebox_music/sounds/exclude
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/modular_flipper/code/datums/audio/_tracks.dm b/modular_flipper/code/datums/audio/_tracks.dm
new file mode 100644
index 0000000000..2d855e3755
--- /dev/null
+++ b/modular_flipper/code/datums/audio/_tracks.dm
@@ -0,0 +1,7 @@
+/datum/track
+ var/title
+ var/path
+
+/datum/track/New(_title, _path)
+ title = _title
+ path = _path
diff --git a/modular_flipper/code/datums/audio/jukebox.dm b/modular_flipper/code/datums/audio/jukebox.dm
new file mode 100644
index 0000000000..62e0cf9cf9
--- /dev/null
+++ b/modular_flipper/code/datums/audio/jukebox.dm
@@ -0,0 +1,51 @@
+/proc/setup_music_tracks(var/list/tracks)
+ . = list()
+ var/list/possible_tracks = flist("config/jukebox_music/sounds/")
+
+ var/list/byond_sound_formats = list(
+ "mid" = TRUE,
+ "midi" = TRUE,
+ "mod" = TRUE,
+ "it" = TRUE,
+ "s3m" = TRUE,
+ "xm" = TRUE,
+ "oxm" = TRUE,
+ "wav" = TRUE,
+ "ogg" = TRUE,
+ "raw" = TRUE,
+ "wma" = TRUE,
+ "aiff" = TRUE,
+ )
+
+ for(var/songs in possible_tracks)
+ var/list/split_name = splittext(songs,".")
+ if(split_name.len >= 2)
+ var/ext = lowertext(split_name[split_name.len]) //pick the real extension, no 'honk.ogg.exe' nonsense here
+ if(byond_sound_formats[ext])
+ . += new/datum/track(split_name[1], "config/jukebox_music/sounds/[songs]") //if a song is named some shit like "Awesome.FuckingSong.ogg", the title is only gonna be "Awesome"
+
+/proc/setup_secret_music_tracks(var/list/tracks)
+ . = list()
+ var/list/possible_tracks = flist("config/jukebox_music/secret_sounds/")
+
+ var/list/byond_sound_formats = list(
+ "mid" = TRUE,
+ "midi" = TRUE,
+ "mod" = TRUE,
+ "it" = TRUE,
+ "s3m" = TRUE,
+ "xm" = TRUE,
+ "oxm" = TRUE,
+ "wav" = TRUE,
+ "ogg" = TRUE,
+ "raw" = TRUE,
+ "wma" = TRUE,
+ "aiff" = TRUE,
+ )
+
+ for(var/songs in possible_tracks)
+ var/list/split_name = splittext(songs,".")
+ if(split_name.len >= 2)
+ var/ext = lowertext(split_name[split_name.len]) //pick the real extension, no 'honk.ogg.exe' nonsense here
+ if(byond_sound_formats[ext])
+ . += new/datum/track(split_name[1], "config/jukebox_music/secret_sounds/[songs]") //if a song is named some shit like "Awesome.FuckingSong.ogg", the title is only gonna be "Awesome"
diff --git a/polaris.dme b/polaris.dme
index 989f744773..f0e9a85401 100644
--- a/polaris.dme
+++ b/polaris.dme
@@ -3324,7 +3324,8 @@
#include "maps\submaps\surface_submaps\wilderness\wilderness.dm"
#include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm"
#include "maps\~map_system\maps.dm"
-#include "modular_flipper\code\datums\audio\_audio.dm"
+#include "modular_flipper\code\datums\audio\_tracks.dm"
+#include "modular_flipper\code\datums\audio\jukebox.dm"
#include "modular_flipper\code\modules\combat_indicator\combat_indicator.dm"
#include "modular_flipper\code\modules\mob\mob.dm"
#include "modular_flipper\code\modules\mob\living\emote_popup.dm"