diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm
index 175bb504bf4f..2f3b455d5fee 100644
--- a/code/game/objects/items/devices/laserpointer.dm
+++ b/code/game/objects/items/devices/laserpointer.dm
@@ -116,16 +116,20 @@
//robots
else if(iscyborg(target))
- var/mob/living/silicon/S = target
- log_combat(user, S, "shone in the sensors", src)
+ var/mob/living/silicon/robot/R = target
+ log_combat(user, R, "shone in the sensors", src)
//chance to actually hit the eyes depends on internal component
if(prob(effectchance * diode.rating))
- S.flash_act(affect_silicon = 1)
- S.Paralyze(rand(100,200))
- to_chat(S, "Your sensors were overloaded by a laser!")
- outmsg = "You overload [S] by shining [src] at [S.p_their()] sensors."
+ R.overlay_fullscreen("laserpointer", /obj/screen/fullscreen/flash/static)
+ R.uneq_all()
+ R.stop_pulling()
+ R.break_all_cyborg_slots(TRUE)
+ addtimer(CALLBACK(R, /mob/living/silicon/robot/.proc/clear_fullscreen, "laserpointer"), 7 SECONDS)
+ addtimer(CALLBACK(R, /mob/living/silicon/robot/.proc/repair_all_cyborg_slots), 7 SECONDS)
+ to_chat(R, "Your sensors were overloaded by a laser!")
+ outmsg = "You overload [R] by shining [src] at [R.p_their()] sensors."
else
- outmsg = "You fail to overload [S] by shining [src] at [S.p_their()] sensors!"
+ outmsg = "You fail to overload [R] by shining [src] at [R.p_their()] sensors!"
//cameras
else if(istype(target, /obj/machinery/camera))
@@ -198,4 +202,4 @@
energy = max_energy
recharging = 0
recharge_locked = FALSE
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm
index cb6214a209d1..94bc5f615d80 100644
--- a/code/modules/mob/living/silicon/robot/inventory.dm
+++ b/code/modules/mob/living/silicon/robot/inventory.dm
@@ -131,7 +131,7 @@
* Arguments
* * module_num - the slot number being repaired.
*/
-/mob/living/silicon/robot/proc/break_cyborg_slot(module_num)
+/mob/living/silicon/robot/proc/break_cyborg_slot(module_num, quiet)
if(is_invalid_module_number(module_num, TRUE))
return FALSE
@@ -147,9 +147,10 @@
inv1.icon_state = "[initial(inv1.icon_state)] +b"
disabled_modules |= BORG_MODULE_ALL_DISABLED
- playsound(src, 'sound/machines/warning-buzzer.ogg', 75, TRUE, TRUE)
- audible_message("[src] sounds an alarm! \"CRITICAL ERROR: ALL modules OFFLINE.\"")
- to_chat(src, "CRITICAL ERROR: ALL modules OFFLINE.")
+ if(!quiet)
+ playsound(src, 'sound/machines/warning-buzzer.ogg', 75, TRUE, TRUE)
+ audible_message("[src] sounds an alarm! \"CRITICAL ERROR: ALL modules OFFLINE.\"")
+ to_chat(src, "CRITICAL ERROR: ALL modules OFFLINE.")
if(2)
if(disabled_modules & BORG_MODULE_TWO_DISABLED)
@@ -158,9 +159,10 @@
inv2.icon_state = "[initial(inv2.icon_state)] +b"
disabled_modules |= BORG_MODULE_TWO_DISABLED
- playsound(src, 'sound/machines/warning-buzzer.ogg', 60, TRUE, TRUE)
- audible_message("[src] sounds an alarm! \"SYSTEM ERROR: Module [module_num] OFFLINE.\"")
- to_chat(src, "SYSTEM ERROR: Module [module_num] OFFLINE.")
+ if(!quiet)
+ playsound(src, 'sound/machines/warning-buzzer.ogg', 60, TRUE, TRUE)
+ audible_message("[src] sounds an alarm! \"SYSTEM ERROR: Module [module_num] OFFLINE.\"")
+ to_chat(src, "SYSTEM ERROR: Module [module_num] OFFLINE.")
if(3)
if(disabled_modules & BORG_MODULE_THREE_DISABLED)
@@ -169,9 +171,10 @@
inv3.icon_state = "[initial(inv3.icon_state)] +b"
disabled_modules |= BORG_MODULE_THREE_DISABLED
- playsound(src, 'sound/machines/warning-buzzer.ogg', 50, TRUE, TRUE)
- audible_message("[src] sounds an alarm! \"SYSTEM ERROR: Module [module_num] OFFLINE.\"")
- to_chat(src, "SYSTEM ERROR: Module [module_num] OFFLINE.")
+ if(!quiet)
+ playsound(src, 'sound/machines/warning-buzzer.ogg', 50, TRUE, TRUE)
+ audible_message("[src] sounds an alarm! \"SYSTEM ERROR: Module [module_num] OFFLINE.\"")
+ to_chat(src, "SYSTEM ERROR: Module [module_num] OFFLINE.")
return TRUE
@@ -179,9 +182,9 @@
/**
* Breaks all of a cyborg's slots.
*/
-/mob/living/silicon/robot/proc/break_all_cyborg_slots()
+/mob/living/silicon/robot/proc/break_all_cyborg_slots(quiet)
for(var/cyborg_slot in 1 to 3)
- break_cyborg_slot(cyborg_slot)
+ break_cyborg_slot(cyborg_slot, quiet)
/**
* Repairs the slot number, updating the icon.