diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index 13d4d9c4465..5054122fe14 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -361,6 +361,13 @@ if(istype(I, /obj/item/gun/energy/detective)) link_gun(I.UID()) +/obj/item/pinpointer/crew/emp_act(severity) + var/obj/item/gun/energy/detective/D = locateUID(linked_gun_UID) + if(!D) + return + D.unlink() + atom_say("EMP detected. Connection to revolver tracking system lost.") + /obj/item/pinpointer/crew/proc/link_gun(gun_UID) var/obj/item/gun/energy/detective/D = locateUID(gun_UID) if(!D) diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index d7d9309fc90..13a1040fd26 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -792,6 +792,12 @@ . = ..() . += "Ctrl-click to clear active tracked target or clear linked pinpointer." +/obj/item/gun/energy/detective/emp_act(severity) + . = ..() + unlink() + atom_say("EMP detected. Pinpointer and tracker system reset.") + + /obj/item/gun/energy/detective/CtrlClick(mob/user) . = ..() if(!isliving(loc)) //don't do this next bit if this gun is on the floor @@ -804,15 +810,21 @@ if(linked_pinpointer_UID) if(alert("Do you want to clear the linked pinpointer?", "Pinpointer reset", "Yes", "No") == "Yes") to_chat(user, "[src] is ready to be linked to a new pinpointer.") - var/obj/item/pinpointer/crew/C = locateUID(linked_pinpointer_UID) - C.linked_gun_UID = null - if(C.mode == MODE_DET) - C.stop_tracking() - linked_pinpointer_UID = null + unlink() /obj/item/gun/energy/detective/proc/link_pinpointer(pinpointer_UID) linked_pinpointer_UID = pinpointer_UID +/obj/item/gun/energy/detective/proc/unlink() + var/obj/item/pinpointer/crew/C = locateUID(linked_pinpointer_UID) + if(!C) + return + C.linked_gun_UID = null + if(C.mode == MODE_DET) + C.stop_tracking() + linked_pinpointer_UID = null + tracking_target_UID = null + /obj/item/gun/energy/detective/multitool_act(mob/living/user, obj/item/I) . = TRUE user.visible_message("[user] starts [overcharged ? "restoring" : "removing"] the safety limits on [src].", "You start [overcharged ? "restoring" : "removing"] the safety limits on [src]")