diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index 8472cc81ce7..7cb0048c9ab 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -214,17 +214,26 @@
name = "entertainment monitor"
desc = "Damn, they better have Paradise TV on these things."
icon_state = "entertainment_console"
- icon_screen = "entertainment"
+ icon_screen = "entertainment_off"
light_color = "#FFEEDB"
light_range_on = 0
network = list("news")
luminosity = 0
circuit = null
+ /// Used to detect how many video cameras are active
+ var/feeds_on = 0
/obj/machinery/computer/security/telescreen/entertainment/Initialize()
. = ..()
set_light(1, LIGHTING_MINIMUM_POWER) //so byond doesnt cull, and we get an emissive appearance
+/obj/machinery/computer/security/telescreen/entertainment/update_overlays()
+ if(feeds_on)
+ icon_screen = "entertainment"
+ else
+ icon_screen = "entertainment_off"
+ return ..()
+
/obj/machinery/computer/security/telescreen/entertainment/power_change()
..()
if(stat & NOPOWER)
diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm
index 2cb8c4fc265..6a1b0e22cff 100644
--- a/code/modules/paperwork/photography.dm
+++ b/code/modules/paperwork/photography.dm
@@ -543,6 +543,7 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor
/**************
*video camera *
***************/
+#define CAMERA_STATE_COOLDOWN 2 SECONDS
/obj/item/videocam
name = "video camera"
@@ -553,6 +554,7 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor
w_class = WEIGHT_CLASS_NORMAL
materials = list(MAT_METAL = 1000, MAT_GLASS = 500)
var/on = FALSE
+ var/video_cooldown = 0
var/obj/machinery/camera/camera
var/icon_on = "videocam_on"
var/icon_off = "videocam"
@@ -571,8 +573,18 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor
camera.c_tag = null
QDEL_NULL(camera)
visible_message("The video camera has been turned [on ? "on" : "off"].")
+ for(var/obj/machinery/computer/security/telescreen/entertainment/TV in GLOB.machines)
+ if(on)
+ TV.feeds_on++
+ else
+ TV.feeds_on--
+ TV.update_icon(UPDATE_OVERLAYS)
+ video_cooldown = world.time + CAMERA_STATE_COOLDOWN
/obj/item/videocam/attack_self(mob/user)
+ if(world.time < video_cooldown)
+ to_chat(user, "[src] is overheating, give it some time.")
+ return
camera_state(user)
/obj/item/videocam/dropped()
@@ -606,6 +618,8 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor
desc = "This video camera allows you to send live feeds even when attached to a belt."
slot_flags = SLOT_BELT
+#undef CAMERA_STATE_COOLDOWN
+
///hauntings, like hallucinations but more spooky
/obj/item/camera/proc/handle_haunt(mob/user as mob)
diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi
index 787d8524708..442c1b42693 100644
Binary files a/icons/obj/computer.dmi and b/icons/obj/computer.dmi differ