From 72efdec3fb12c68abaef079fc3abf724b731c0d0 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 15 Feb 2020 19:12:07 +0100 Subject: [PATCH] Porting pair pinpointers and fixing an edge case runtime. --- code/game/objects/items/pinpointer.dm | 34 ++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index c4ad324a2c..151df7694a 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -26,6 +26,7 @@ /obj/item/pinpointer/Destroy() STOP_PROCESSING(SSfastprocess, src) GLOB.pinpointer_list -= src + target = null return ..() /obj/item/pinpointer/attack_self(mob/living/user) @@ -57,7 +58,7 @@ return var/turf/here = get_turf(src) var/turf/there = get_turf(target) - if(here.z != there.z) + if(!here || !there || here.z != there.z) add_overlay("pinon[alert ? "alert" : ""]null") return if(get_dist_euclidian(here,there) <= minimum_range) @@ -143,3 +144,34 @@ target = null if(!target) //target can be set to null from above code, or elsewhere active = FALSE + +/obj/item/pinpointer/pair + name = "pair pinpointer" + desc = "A handheld tracking device that locks onto its other half of the matching pair." + var/other_pair + +/obj/item/pinpointer/pair/Destroy() + other_pair = null + . = ..() + +/obj/item/pinpointer/pair/scan_for_target() + target = other_pair + +/obj/item/pinpointer/pair/examine(mob/user) + . = ..() + if(!active || !target) + return + var/mob/mob_holder = get(target, /mob) + if(istype(mob_holder)) + to_chat(user, "Its pair is being held by [mob_holder].") + return + +/obj/item/storage/box/pinpointer_pairs + name = "pinpointer pair box" + +/obj/item/storage/box/pinpointer_pairs/PopulateContents() + var/obj/item/pinpointer/pair/A = new(src) + var/obj/item/pinpointer/pair/B = new(src) + + A.other_pair = B + B.other_pair = A