/obj/effect/datacore name = "datacore" var/medical[] = list() var/medicalPrintCount = 0 var/general[] = list() var/security[] = list() var/securityPrintCount = 0 var/securityCrimeCounter = 0 //This list tracks characters spawned in the world and cannot be modified in-game. Currently referenced by respawn_character(). var/locked[] = list() /datum/data var/name = "data" /datum/data/record name = "record" var/list/fields = list() /datum/data/crime name = "crime" var/crimeName = "" var/crimeDetails = "" var/author = "" var/time = "" var/dataId = 0 /obj/effect/datacore/proc/createCrimeEntry(cname = "", cdetails = "", author = "", time = "") var/datum/data/crime/c = new /datum/data/crime c.crimeName = cname c.crimeDetails = cdetails c.author = author c.time = time c.dataId = ++securityCrimeCounter return c /obj/effect/datacore/proc/addMinorCrime(id = "", var/datum/data/crime/crime) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["mi_crim"] crimes |= crime return /obj/effect/datacore/proc/removeMinorCrime(id, cDataId) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["mi_crim"] for(var/datum/data/crime/crime in crimes) if(crime.dataId == text2num(cDataId)) crimes -= crime return /obj/effect/datacore/proc/removeMajorCrime(id, cDataId) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["ma_crim"] for(var/datum/data/crime/crime in crimes) if(crime.dataId == text2num(cDataId)) crimes -= crime return /obj/effect/datacore/proc/addMajorCrime(id = "", var/datum/data/crime/crime) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["ma_crim"] crimes |= crime return /obj/effect/datacore/proc/manifest(var/nosleep = 0) spawn() if(!nosleep) sleep(40) for(var/mob/living/carbon/human/H in player_list) manifest_inject(H) return /obj/effect/datacore/proc/manifest_modify(var/name, var/assignment) var/datum/data/record/foundrecord = find_record("name", name, data_core.general) if(foundrecord) foundrecord.fields["rank"] = assignment var/record_id_num = 1001 /obj/effect/datacore/proc/manifest_inject(var/mob/living/carbon/human/H) if(H.mind && (H.mind.need_job_assign)) var/assignment if(H.mind.assigned_role) assignment = H.mind.assigned_role else if(H.job) assignment = H.job else assignment = "Unassigned" var/id = num2hex(record_id_num++,6) //These records should ~really~ be merged or something //General Record var/datum/data/record/G = new() G.fields["id"] = id G.fields["name"] = H.real_name G.fields["rank"] = assignment G.fields["age"] = H.age G.fields["fingerprint"] = md5(H.dna.uni_identity) G.fields["p_stat"] = "Active" G.fields["m_stat"] = "Stable" G.fields["sex"] = H.gender general += G //Medical Record var/datum/data/record/M = new() M.fields["id"] = id M.fields["name"] = H.real_name M.fields["blood_type"] = H.blood_type M.fields["b_dna"] = H.dna.unique_enzymes M.fields["mi_dis"] = "None" M.fields["mi_dis_d"] = "No minor disabilities have been declared." M.fields["ma_dis"] = "None" M.fields["ma_dis_d"] = "No major disabilities have been diagnosed." M.fields["alg"] = "None" M.fields["alg_d"] = "No allergies have been detected in this patient." M.fields["cdi"] = "None" M.fields["cdi_d"] = "No diseases have been diagnosed at the moment." M.fields["notes"] = "No notes." medical += M //Security Record var/datum/data/record/S = new() S.fields["id"] = id S.fields["name"] = H.real_name S.fields["criminal"] = "None" S.fields["mi_crim"] = list() S.fields["ma_crim"] = list() S.fields["notes"] = "No notes." security += S //Locked Record var/datum/data/record/L = new() L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]") //surely this should just be id, like the others? L.fields["name"] = H.real_name L.fields["rank"] = H.mind.assigned_role L.fields["age"] = H.age L.fields["sex"] = H.gender L.fields["blood_type"] = H.blood_type L.fields["b_dna"] = H.dna.unique_enzymes L.fields["enzymes"] = H.dna.struc_enzymes L.fields["identity"] = H.dna.uni_identity L.fields["image"] = getFlatIcon(H) //This is god-awful locked += L return