diff --git a/code/modules/media/jukebox.dm b/code/modules/media/jukebox.dm
index 20c94b93298..e1a800d5427 100644
--- a/code/modules/media/jukebox.dm
+++ b/code/modules/media/jukebox.dm
@@ -20,6 +20,8 @@
var/url = ""
var/length = 0 // decaseconds
+ var/emagged = 0
+
New(var/list/json)
title = json["title"]
artist = json["artist"]
@@ -97,13 +99,16 @@ var/global/loopModeNames=list(
return
icon_state = "jukebox2"
if(playing)
- overlays += "jukebox2-running"
+ if(emagged)
+ overlays += "jukebox2-emagged"
+ else
+ overlays += "jukebox2-running"
/obj/machinery/media/jukebox/proc/check_reload()
return world.time > last_reload + JUKEBOX_RELOAD_COOLDOWN
/obj/machinery/media/jukebox/attack_hand(var/mob/user)
- if(stat & (NOPOWER|BROKEN))
+ if(stat & (NOPOWER|BROKEN) || emagged)
return
var/t = "
Jukebox Interface
"
t += "Power: [playing?"On":"Off"]
"
@@ -132,8 +137,23 @@ var/global/loopModeNames=list(
popup.open()
+/obj/machinery/media/jukebox/attackby(obj/item/W, mob/user)
+ if(istype(W, /obj/item/weapon/card/emag) && !emagged)
+ playlist_id = "emagged"
+ last_reload=world.time
+ playlist=null
+ current_song=0
+ loop_mode = JUKEMODE_SHUFFLE
+ emagged = 1
+ user.visible_message("[user.name] emags the [src.name].","\red You short out the [src.name].")
+ update_icon()
+ update_music()
+ return
+
/obj/machinery/media/jukebox/Topic(href, href_list)
..()
+ if(emagged) return
+
if (href_list["power"])
playing=!playing
update_music()
diff --git a/icons/obj/jukebox.dmi b/icons/obj/jukebox.dmi
index 5889237f24d..a903b1ea4ee 100644
Binary files a/icons/obj/jukebox.dmi and b/icons/obj/jukebox.dmi differ