diff --git a/code/datums/uplinks_items.dm b/code/datums/uplinks_items.dm index a1fe5f67feb1..74a1bca5f830 100644 --- a/code/datums/uplinks_items.dm +++ b/code/datums/uplinks_items.dm @@ -751,6 +751,13 @@ /datum/uplink_item/device_tools category = "Devices and Tools" +/datum/uplink_item/device_tools/pinpointer + name = "Advanced Pinpointer" + desc = "A modified pinpointer for searching for items that your employers are interested in." + item = /obj/item/weapon/pinpointer/highriskitems + cost = 10 + uplink_types = list("traitor") + /datum/uplink_item/device_tools/disk name = "Diskette With Virus" desc = "A floppy disk containing a virus to sabotage R&D systems. Insert this diskette into the R&D Server Controller to destroy scientific data." diff --git a/code/game/gamemodes/modes_gameplays/nuclear/pinpointer.dm b/code/game/gamemodes/modes_gameplays/nuclear/pinpointer.dm index 05f3b54353bb..dc681521c25b 100644 --- a/code/game/gamemodes/modes_gameplays/nuclear/pinpointer.dm +++ b/code/game/gamemodes/modes_gameplays/nuclear/pinpointer.dm @@ -160,7 +160,7 @@ mode = SEARCH_FOR_OBJECT for (var/obj/machinery/nuclearbomb/N in poi_list) if(N.nuketype == "Syndi") - target = locate(N) + target = N to_chat(usr, "Nuclear Warhead Locator active.") playsound(src, 'sound/machines/twobeep.ogg', VOL_EFFECTS_MASTER) @@ -245,5 +245,39 @@ return attack_self(usr) +/obj/item/weapon/pinpointer/highriskitems + desc = "A pinpointer designed and configured to search for specific items using a network of quantum signals." + origin_tech = "programming=5;bluespace=5" + +/obj/item/weapon/pinpointer/highriskitems/verb/toggle_mode() + set category = "Object" + set name = "Toggle Pinpointer Target" + set src in view(1) + reset_target() + + var/datum/objective/steal/itemlist + itemlist = itemlist // To supress a 'variable defined but not used' error. + var/targetitem = input("Select item to search for.", "Item Mode Select","") as null|anything in itemlist.possible_items + if(!targetitem) + return + var/obj/item/item_path = itemlist.possible_items[targetitem] + for(var/obj/item/I in global.possible_items_for_steal) + if(!istype(I, item_path)) + continue + var/turf/T = get_turf(I) + if(is_centcom_level(T.z)) + continue + target = I + break + if(!target) + to_chat(usr, "Failed to locate [targetitem]!") + return + to_chat(usr, "You set the pinpointer to locate [targetitem]") + + if(mode && target) + RegisterSignal(target, list(COMSIG_PARENT_QDELETING), PROC_REF(reset_target)) + + return attack_self(usr) + #undef SEARCH_FOR_DISK #undef SEARCH_FOR_OBJECT diff --git a/code/game/gamemodes/objectives/steal.dm b/code/game/gamemodes/objectives/steal.dm index 987e9e749ea8..a8d1e9c44a4d 100644 --- a/code/game/gamemodes/objectives/steal.dm +++ b/code/game/gamemodes/objectives/steal.dm @@ -4,27 +4,14 @@ var/global/list/possible_items_for_steal = list() ADD_TO_POIFS_LIST(/obj/item/weapon/gun/energy/laser/selfcharging/captain) ADD_TO_POIFS_LIST(/obj/item/weapon/hand_tele) ADD_TO_POIFS_LIST(/obj/item/weapon/tank/jetpack/oxygen) -ADD_TO_POIFS_LIST(/obj/item/clothing/under/rank/captain) ADD_TO_POIFS_LIST(/obj/item/device/aicard) ADD_TO_POIFS_LIST(/obj/item/blueprints) -ADD_TO_POIFS_LIST(/obj/item/weapon/tank) -ADD_TO_POIFS_LIST(/obj/item/slime_extract) +ADD_TO_POIFS_LIST(/obj/item/clothing/glasses/hud/hos_aug) ADD_TO_POIFS_LIST(/obj/item/weapon/reagent_containers/food/snacks/meat/corgi/ian) -ADD_TO_POIFS_LIST(/obj/item/clothing/under/rank/research_director) -ADD_TO_POIFS_LIST(/obj/item/clothing/under/rank/chief_engineer) -ADD_TO_POIFS_LIST(/obj/item/clothing/under/rank/chief_medical_officer) -ADD_TO_POIFS_LIST(/obj/item/clothing/under/rank/head_of_security) -ADD_TO_POIFS_LIST(/obj/item/clothing/under/rank/head_of_personnel) ADD_TO_POIFS_LIST(/obj/item/weapon/reagent_containers/hypospray/cmo) -ADD_TO_POIFS_LIST(/obj/item/weapon/pinpointer) +ADD_TO_POIFS_LIST(/obj/item/weapon/pinpointer/advpinpointer) +ADD_TO_POIFS_LIST(/obj/item/clothing/suit/armor/vest/reactive) ADD_TO_POIFS_LIST(/obj/item/weapon/reagent_containers/spray/extinguisher/golden) -ADD_TO_POIFS_LIST(/obj/item/weapon/gun/energy/gun/nuclear) -ADD_TO_POIFS_LIST(/obj/item/weapon/pickaxe/drill/diamond_drill) -ADD_TO_POIFS_LIST(/obj/item/weapon/storage/backpack/holding) -ADD_TO_POIFS_LIST(/obj/item/weapon/stock_parts/cell/hyper) -ADD_TO_POIFS_LIST(/obj/item/stack/sheet/mineral/diamond) -ADD_TO_POIFS_LIST(/obj/item/stack/sheet/mineral/gold) -ADD_TO_POIFS_LIST(/obj/item/stack/sheet/mineral/uranium) #undef ADD_TO_POIFS_LIST /datum/objective/steal @@ -41,7 +28,7 @@ ADD_TO_POIFS_LIST(/obj/item/stack/sheet/mineral/uranium) "a piece of Ian's meat" = /obj/item/weapon/reagent_containers/food/snacks/meat/corgi/ian, "the hypospray" = /obj/item/weapon/reagent_containers/hypospray/cmo, "a Research Director's teleport armor" = /obj/item/clothing/suit/armor/vest/reactive, - "the captain's pinpointer" = /obj/item/weapon/pinpointer, + "the captain's pinpointer" = /obj/item/weapon/pinpointer/advpinpointer, "the golden fire extinguisher" = /obj/item/weapon/reagent_containers/spray/extinguisher/golden, )