diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm
index e88fa9dc3e7..f940a4580bc 100644
--- a/code/game/gamemodes/shadowling/shadowling_abilities.dm
+++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm
@@ -73,7 +73,8 @@
if(H != usr)
H << "You feel a chill and are plunged into darkness."
H.SetLuminosity(0) //This is required with the object-based lighting
-
+ for(var/mob/living/silicon/robot/R in T.contents)
+ R.update_headlamp(1)
/obj/effect/proc_holder/spell/targeted/shadow_walk
diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm
index 280241e0cc0..07d551ecd9d 100644
--- a/code/modules/mob/living/silicon/robot/death.dm
+++ b/code/modules/mob/living/silicon/robot/death.dm
@@ -27,7 +27,7 @@
update_canmove()
if(camera)
camera.status = 0
- update_headlamp() //So borg lights are disabled when killed.
+ update_headlamp(1) //So borg lights are disabled when killed.
uneq_all() // particularly to ensure sight modes are cleared
diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm
index c0ad6477f9b..bb3a9dce86a 100644
--- a/code/modules/mob/living/silicon/robot/life.dm
+++ b/code/modules/mob/living/silicon/robot/life.dm
@@ -30,7 +30,7 @@
else
uneq_all()
stat = UNCONSCIOUS
- update_headlamp()
+ update_headlamp(1)
/mob/living/silicon/robot/handle_regular_status_updates()
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 3e5ebc62337..a9f9ef73b6e 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -723,7 +723,7 @@
/mob/living/silicon/robot/update_icons()
overlays.Cut()
- if(stat == CONSCIOUS)
+ if(stat != DEAD && !(paralysis || stunned || weakened)) //Not dead, not stunned.
var/state_name = icon_state //For easy conversion and/or different names
switch(icon_state)
if("robot")
@@ -1001,12 +1001,16 @@
update_headlamp()
-/mob/living/silicon/robot/proc/update_headlamp()
+/mob/living/silicon/robot/proc/update_headlamp(var/turn_off = 0)
SetLuminosity(0)
- if(stat && lamp_intensity)
+ if(lamp_intensity && (turn_off || stat))
src << "Your headlamp has been deactivated."
lamp_intensity = 0
+ if(client)
+ var/obj/screen/robot/lamp/button = locate(/obj/screen/robot/lamp) in client.screen
+ if(button)
+ button.icon_state = "lamp0"
else
AddLuminosity(lamp_intensity)
update_icons()