From d14c65d12bf4114ad8698e7f3902aa6d53e90e55 Mon Sep 17 00:00:00 2001 From: blah Date: Wed, 16 Sep 2015 10:22:52 +0100 Subject: [PATCH 1/5] Improves implant tracking by having it search through a list instead of the world --- code/game/machinery/teleporter.dm | 2 +- code/game/objects/items/weapons/implants/implant.dm | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 1cbf53376ea..c53ee120311 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -180,7 +180,7 @@ areaindex[tmpname] = 1 L[tmpname] = R - for (var/obj/item/weapon/implant/tracking/I in world) + for (var/obj/item/weapon/implant/tracking/I in tracking_implants) if (!I.implanted || !ismob(I.loc)) continue else diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 1522d73b8f5..e66a237807a 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -87,6 +87,18 @@ origin_tech = "materials=2;magnets=2;programming=2;biotech=2" var/id = 1 + +/obj/item/weapon/implant/tracking/New() + ..() + tracking_implants += src + +/obj/item/weapon/implant/tracking/Destroy() + ..() + tracking_implants -= src + + +var/global/tracking_implants = list() + /obj/item/weapon/implant/tracking/get_data() var/dat = {"Implant Specifications:
Name: Tracking Beacon
From ccbbf623bb77796dc1d1774bedf6220abb6595bc Mon Sep 17 00:00:00 2001 From: blah Date: Wed, 16 Sep 2015 12:42:27 +0100 Subject: [PATCH 2/5] Makes it better --- code/game/objects/items/weapons/implants/implant.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index e66a237807a..4e0387846a0 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -97,7 +97,7 @@ tracking_implants -= src -var/global/tracking_implants = list() +var/list/tracking_implants = list() /obj/item/weapon/implant/tracking/get_data() var/dat = {"Implant Specifications:
From 1fc4f2c5b23140d9d68fd45b44dcc499f64a23e4 Mon Sep 17 00:00:00 2001 From: blah Date: Wed, 16 Sep 2015 12:51:55 +0100 Subject: [PATCH 3/5] Welp --- code/game/objects/items/weapons/implants/implant.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 4e0387846a0..37560182238 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -97,7 +97,7 @@ tracking_implants -= src -var/list/tracking_implants = list() +var/global/list/tracking_implants = list() /obj/item/weapon/implant/tracking/get_data() var/dat = {"Implant Specifications:
From e976aa20b45bb951bb15850a0d218da5891088cf Mon Sep 17 00:00:00 2001 From: blah Date: Wed, 16 Sep 2015 12:55:36 +0100 Subject: [PATCH 4/5] God dammit timing is perfect for no one --- code/_globalvars/lists/objects.dm | 3 ++- code/game/objects/items/weapons/implants/implant.dm | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index aa1082cdf82..25454eefcff 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -14,4 +14,5 @@ var/global/list/chemical_reagents_list //list of all /datum/reagent datums in var/global/list/surgeries_list = list() //list of all surgeries by name, associated with their path. var/global/list/table_recipes = list() //list of all table craft recipes var/global/list/rcd_list = list() //list of Rapid Construction Devices. -var/global/list/apcs_list = list() //list of all Area Power Controller machines, seperate from machines for powernet speeeeeeed. \ No newline at end of file +var/global/list/apcs_list = list() //list of all Area Power Controller machines, seperate from machines for powernet speeeeeeed. +var/global/list/tracking_implants = list() //list of all tracking implants to work out what treks everyone are on. Sadly not on lavaworld not implemented... \ No newline at end of file diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 37560182238..a01bfb82ca1 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -96,9 +96,6 @@ ..() tracking_implants -= src - -var/global/list/tracking_implants = list() - /obj/item/weapon/implant/tracking/get_data() var/dat = {"Implant Specifications:
Name: Tracking Beacon
From f26f6145ac84213b83a7ad7422faf4fc37f29bb7 Mon Sep 17 00:00:00 2001 From: blah Date: Mon, 21 Sep 2015 17:06:11 +0100 Subject: [PATCH 5/5] Add even more tracking fixes to improve performance --- code/game/machinery/computer/prisoner.dm | 4 ++-- code/game/objects/items/weapons/implants/implant_chem.dm | 8 ++++++++ code/game/objects/items/weapons/teleportation.dm | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index ed568709958..679d9282e31 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -33,7 +33,7 @@ dat += "

Prisoner Implant Management

" dat += "
Chemical Implants
" var/turf/Tr = null - for(var/obj/item/weapon/implant/chem/C in world) + for(var/obj/item/weapon/implant/chem/C in tracking_implants) Tr = get_turf(C) if((Tr) && (Tr.z != src.z)) continue//Out of range if(!C.implanted) continue @@ -43,7 +43,7 @@ dat += "((10))
" dat += "********************************
" dat += "
Tracking Implants
" - for(var/obj/item/weapon/implant/tracking/T in world) + for(var/obj/item/weapon/implant/tracking/T in tracking_implants) if(!iscarbon(T.imp_in)) continue if(!T.implanted) diff --git a/code/game/objects/items/weapons/implants/implant_chem.dm b/code/game/objects/items/weapons/implants/implant_chem.dm index 6f85742039b..312363d6713 100644 --- a/code/game/objects/items/weapons/implants/implant_chem.dm +++ b/code/game/objects/items/weapons/implants/implant_chem.dm @@ -24,6 +24,14 @@ /obj/item/weapon/implant/chem/New() ..() create_reagents(50) + tracking_implants += src + +/obj/item/weapon/implant/chem/Destroy() + ..() + tracking_implants -= src + + + /obj/item/weapon/implant/chem/trigger(emote, mob/source) if(emote == "deathgasp") diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm index 0bf17d4be30..da8ffa7cef0 100644 --- a/code/game/objects/items/weapons/teleportation.dm +++ b/code/game/objects/items/weapons/teleportation.dm @@ -78,7 +78,7 @@ Frequency: src.temp += "[W.code]-[dir2text(get_dir(sr, tr))]-[direct]
" src.temp += "Extranneous Signals:
" - for (var/obj/item/weapon/implant/tracking/W in world) + for (var/obj/item/weapon/implant/tracking/W in tracking_implants) if (!W.implanted || !ismob(W.loc)) continue else