From 55454c5347d7a4be21f3e9a719ee380d2f8af39d Mon Sep 17 00:00:00 2001 From: MisterMovie <44909173+Accinator50@users.noreply.github.com> Date: Sat, 22 Apr 2023 09:17:07 +0200 Subject: [PATCH] Tracking implants now emit a GPS signal (and other related features) (#20687) * Tracking implants now emit a GPS signal (and more) * lewcc's review * Sirryan2002's review --- .../weapons/implants/implant_tracking.dm | 18 ++++++++++++++++++ .../objects/items/weapons/storage/boxes.dm | 4 ++-- code/modules/telesci/gps.dm | 6 ++++++ icons/obj/telescience.dmi | Bin 3259 -> 6394 bytes 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/implants/implant_tracking.dm b/code/game/objects/items/weapons/implants/implant_tracking.dm index 41c711314dc..560d728abae 100644 --- a/code/game/objects/items/weapons/implants/implant_tracking.dm +++ b/code/game/objects/items/weapons/implants/implant_tracking.dm @@ -6,15 +6,33 @@ implant_data = /datum/implant_fluff/tracking implant_state = "implant-nanotrasen" var/warn_cooldown = 0 + var/obj/item/gps/internal_gps + var/internal_gps_path = /obj/item/gps/internal/tracking_implant /obj/item/implant/tracking/Initialize(mapload) . = ..() GLOB.tracked_implants += src /obj/item/implant/tracking/Destroy() + QDEL_NULL(internal_gps) GLOB.tracked_implants -= src return ..() +/obj/item/implant/tracking/implant(mob/target) + . = ..() + if(!.) + return + internal_gps = new internal_gps_path(src) + +/obj/item/implant/tracking/removed(mob/target) + . = ..() + if(.) + QDEL_NULL(internal_gps) + +/obj/item/gps/internal/tracking_implant + gpstag = "TRACK0" + local = FALSE + /obj/item/implanter/tracking name = "bio-chip implanter (tracking)" implant_type = /obj/item/implant/tracking diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 5df4b7bd7b2..438bb0bf8a5 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -268,7 +268,7 @@ new /obj/item/implantcase/tracking(src) new /obj/item/implanter(src) new /obj/item/implantpad(src) - new /obj/item/locator(src) + new /obj/item/gps/security(src) /obj/item/storage/box/minertracker name = "boxed tracking bio-chip kit" @@ -281,7 +281,7 @@ new /obj/item/implantcase/tracking(src) new /obj/item/implanter(src) new /obj/item/implantpad(src) - new /obj/item/locator(src) + new /obj/item/gps/mining(src) /obj/item/storage/box/chemimp name = "chemical bio-chip kit" diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm index a09d7353329..9616d6bb38c 100644 --- a/code/modules/telesci/gps.dm +++ b/code/modules/telesci/gps.dm @@ -146,6 +146,12 @@ GLOBAL_LIST_EMPTY(GPS_list) emped = FALSE update_icon(UPDATE_OVERLAYS) +/obj/item/gps/security + icon_state = "gps-sec" + gpstag = "SEC0" + desc = "A positioning system helpful for monitoring prisoners that are implanted with a tracking implant." + local = TRUE + /obj/item/gps/science icon_state = "gps-s" gpstag = "SCI0" diff --git a/icons/obj/telescience.dmi b/icons/obj/telescience.dmi index e7ba338a45170fc6596255ce86535d7e246214b3..16848cc9e78cabeff77ddd94d7021d0653e52e4f 100644 GIT binary patch literal 6394 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 R(PsvmKG;MTbvCTY;Oi0K&_99VDM3#|l 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