Merge pull request #14139 from Citadel-Station-13/silicons-patch-2

small refactor to pinpointers, allow pinpointers with custom targets
This commit is contained in:
Lin
2021-01-27 17:16:09 -06:00
committed by GitHub
+28 -8
View File
@@ -19,6 +19,8 @@
var/minimum_range = 0 //at what range the pinpointer declares you to be at your destination
var/ignore_suit_sensor_level = FALSE // Do we find people even if their suit sensors are turned off
var/alert = FALSE // TRUE to display things more seriously
/// resets target on toggle
var/resets_target = TRUE
/obj/item/pinpointer/Initialize()
. = ..()
@@ -27,7 +29,7 @@
/obj/item/pinpointer/Destroy()
STOP_PROCESSING(SSfastprocess, src)
GLOB.pinpointer_list -= src
target = null
unset_target()
return ..()
/obj/item/pinpointer/DoRevenantThrowEffects(atom/target)
@@ -41,7 +43,8 @@
if(active)
START_PROCESSING(SSfastprocess, src)
else
target = null
if(resets_target)
unset_target()
STOP_PROCESSING(SSfastprocess, src)
update_icon()
@@ -54,6 +57,18 @@
/obj/item/pinpointer/proc/scan_for_target()
return
/obj/item/pinpointer/proc/set_target(atom/movable/newtarget)
if(target)
unset_target()
target = newtarget
RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/unset_target)
/obj/item/pinpointer/proc/unset_target()
if(!target)
return
UnregisterSignal(target, COMSIG_PARENT_QDELETING)
target = null
/obj/item/pinpointer/update_overlays()
. = ..()
if(!active)
@@ -105,7 +120,8 @@
active = FALSE
user.visible_message("<span class='notice'>[user] deactivates [user.p_their()] pinpointer.</span>", "<span class='notice'>You deactivate your pinpointer.</span>")
playsound(src, 'sound/items/screwdriver2.ogg', 50, 1)
target = null //Restarting the pinpointer forces a target reset
if(resets_target)
unset_target() //Restarting the pinpointer forces a target reset
STOP_PROCESSING(SSfastprocess, src)
update_icon()
return
@@ -141,7 +157,7 @@
if(!A || QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated())
return
target = names[A]
set_target(names[A])
active = TRUE
user.visible_message("<span class='notice'>[user] activates [user.p_their()] pinpointer.</span>", "<span class='notice'>You activate your pinpointer.</span>")
playsound(src, 'sound/items/screwdriver2.ogg', 50, 1)
@@ -153,7 +169,7 @@
if(ishuman(target))
var/mob/living/carbon/human/H = target
if(!trackable(H))
target = null
unset_target()
if(!target) //target can be set to null from above code, or elsewhere
active = FALSE
@@ -167,7 +183,7 @@
. = ..()
/obj/item/pinpointer/pair/scan_for_target()
target = other_pair
set_target(other_pair)
/obj/item/pinpointer/pair/examine(mob/user)
. = ..()
@@ -199,7 +215,7 @@
shuttleport = SSshuttle.getShuttle("huntership")
/obj/item/pinpointer/shuttle/scan_for_target()
target = shuttleport
set_target(shuttleport)
/obj/item/pinpointer/shuttle/Destroy()
shuttleport = null
@@ -211,4 +227,8 @@
icon_state = "pinpointer_ian"
/obj/item/pinpointer/ian/scan_for_target()
target = locate(/mob/living/simple_animal/pet/dog/corgi/Ian) in GLOB.mob_living_list
set_target(locate(/mob/living/simple_animal/pet/dog/corgi/Ian) in GLOB.mob_living_list)
/obj/item/pinpointer/custom
resets_target = FALSE