/obj/item/pinpointer/nuke var/mode = TRACK_NUKE_DISK /obj/item/pinpointer/nuke/examine(mob/user) ..() var/msg = "Its tracking indicator reads " switch(mode) if(TRACK_NUKE_DISK) msg += "\"nuclear_disk\"." if(TRACK_MALF_AI) msg += "\"01000001 01001001\"." if(TRACK_INFILTRATOR) msg += "\"vasvygengbefuvc\"." else msg = "Its tracking indicator is blank." to_chat(user, msg) for(var/obj/machinery/nuclearbomb/bomb in GLOB.machines) if(bomb.timing) to_chat(user, "Extreme danger. Arming signal detected. Time remaining: [bomb.get_time_left()].") /obj/item/pinpointer/nuke/process() ..() if(active) // If shit's going down for(var/obj/machinery/nuclearbomb/bomb in GLOB.nuke_list) if(bomb.timing) if(!alert) alert = TRUE playsound(src, 'sound/items/nuke_toy_lowpower.ogg', 50, 0) if(isliving(loc)) var/mob/living/L = loc to_chat(L, "Your [name] vibrates and lets out a tinny alarm. Uh oh.") /obj/item/pinpointer/nuke/scan_for_target() target = null switch(mode) if(TRACK_NUKE_DISK) var/obj/item/disk/nuclear/N = locate() in GLOB.poi_list target = N if(TRACK_MALF_AI) for(var/V in GLOB.ai_list) var/mob/living/silicon/ai/A = V if(A.nuking) target = A for(var/V in GLOB.apcs_list) var/obj/machinery/power/apc/A = V if(A.malfhack && A.occupier) target = A if(TRACK_INFILTRATOR) target = SSshuttle.getShuttle("syndicate") ..() /obj/item/pinpointer/nuke/proc/switch_mode_to(new_mode) if(isliving(loc)) var/mob/living/L = loc to_chat(L, "Your [name] beeps as it reconfigures its tracking algorithms.") playsound(L, 'sound/machines/triple_beep.ogg', 50, 1) mode = new_mode scan_for_target() /obj/item/pinpointer/nuke/syndicate // Syndicate pinpointers automatically point towards the infiltrator once the nuke is active. name = "syndicate pinpointer" desc = "A handheld tracking device that locks onto certain signals. It's configured to switch tracking modes once it detects the activation signal of a nuclear device." icon_state = "pinpointer_syndicate" /obj/item/pinpointer/syndicate_cyborg // Cyborg pinpointers just look for a random operative. name = "cyborg syndicate pinpointer" desc = "An integrated tracking device, jury-rigged to search for living Syndicate operatives." flags_1 = NODROP_1 /obj/item/pinpointer/syndicate_cyborg/scan_for_target() target = null var/list/possible_targets = list() var/turf/here = get_turf(src) for(var/V in SSticker.mode.syndicates) var/datum/mind/M = V if(M.current && M.current.stat != DEAD) possible_targets |= M.current var/mob/living/closest_operative = get_closest_atom(/mob/living/carbon/human, possible_targets, here) if(closest_operative) target = closest_operative ..()