Allow multiple SStranscore databases (#10450)

* Allow multiple SStranscore databases

* Add key to backup implanter too

* Key passing tweak

* Fix issue Leshana spotted

* Add optimization Leshana spotted

* Fixxy more multitranscore bugs
This commit is contained in:
Aronai Sieyes
2021-05-30 18:53:18 -04:00
committed by Chompstation Bot
parent 1c3e965b5c
commit 9134933442
14 changed files with 214 additions and 92 deletions

View File

@@ -25,11 +25,17 @@
var/obj/machinery/transhuman/synthprinter/selected_printer
var/obj/machinery/transhuman/resleever/selected_sleever
// Resleeving database this machine interacts with. Blank for default database
// Needs a matching /datum/transcore_db with key defined in code
var/db_key
var/datum/transcore_db/our_db // These persist all round and are never destroyed, just keep a hard ref
/obj/machinery/computer/transhuman/resleeving/Initialize()
. = ..()
pods = list()
spods = list()
sleevers = list()
our_db = SStranscore.db_by_key(db_key)
updatemodules()
/obj/machinery/computer/transhuman/resleeving/Destroy()
@@ -82,7 +88,7 @@
P.connected = src
P.name = "[initial(P.name)] #[pods.len]"
to_chat(user, "<span class='notice'>You connect [P] to [src].</span>")
else if(istype(W, /obj/item/weapon/disk/transcore) && SStranscore && !SStranscore.core_dumped)
else if(istype(W, /obj/item/weapon/disk/transcore) && !our_db.core_dumped)
user.unEquip(W)
disk = W
disk.forceMove(src)
@@ -172,7 +178,7 @@
data["sleevers"] = temppods.Copy()
temppods.Cut()
data["coredumped"] = SStranscore.core_dumped
data["coredumped"] = our_db.core_dumped
data["emergency"] = disk
data["temp"] = temp
data["selected_pod"] = "\ref[selected_pod]"
@@ -180,14 +186,14 @@
data["selected_sleever"] = "\ref[selected_sleever]"
var/bodyrecords_list_ui[0]
for(var/N in SStranscore.body_scans)
var/datum/transhuman/body_record/BR = SStranscore.body_scans[N]
for(var/N in our_db.body_scans)
var/datum/transhuman/body_record/BR = our_db.body_scans[N]
bodyrecords_list_ui[++bodyrecords_list_ui.len] = list("name" = N, "recref" = "\ref[BR]")
data["bodyrecords"] = bodyrecords_list_ui
var/mindrecords_list_ui[0]
for(var/N in SStranscore.backed_up)
var/datum/transhuman/mind_record/MR = SStranscore.backed_up[N]
for(var/N in our_db.backed_up)
var/datum/transhuman/mind_record/MR = our_db.backed_up[N]
mindrecords_list_ui[++mindrecords_list_ui.len] = list("name" = N, "recref" = "\ref[MR]")
data["mindrecords"] = mindrecords_list_ui
@@ -251,7 +257,7 @@
set_temp("Error: Record missing.", "danger")
if("coredump")
if(disk)
SStranscore.core_dump(disk)
our_db.core_dump(disk)
sleep(5)
visible_message("<span class='warning'>\The [src] spits out \the [disk].</span>")
disk.forceMove(get_turf(src))
@@ -407,7 +413,7 @@
return TRUE
//They were dead, or otherwise available.
sleever.putmind(active_mr,mode,override)
sleever.putmind(active_mr,mode,override,db_key = db_key)
set_temp("Initiating resleeving...")
tgui_modal_clear(src)