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.