/datum/datacore var/list/medical = list() var/medicalPrintCount = 0 var/list/general = list() var/list/security = list() var/securityPrintCount = 0 var/securityCrimeCounter = 0 var/securityCommentCounter = 0 //This list tracks characters spawned in the world and cannot be modified in-game. Currently referenced by respawn_character(). var/list/locked = list() /datum/data var/name = "data" /datum/data/record name = "record" var/list/fields = list() /datum/data/record/Destroy() if(src in GLOB.data_core.medical) GLOB.data_core.medical -= src if(src in GLOB.data_core.security) GLOB.data_core.security -= src if(src in GLOB.data_core.general) GLOB.data_core.general -= src if(src in GLOB.data_core.locked) GLOB.data_core.locked -= src . = ..() /datum/data/crime name = "crime" var/crimeName = "" var/crimeDetails = "" var/author = "" var/time = "" var/fine = 0 var/paid = 0 var/dataId = 0 /datum/data/comment name = "comment" var/commentText = "" var/author = "" var/time = "" var/dataId = 0 /datum/datacore/proc/createCrimeEntry(cname = "", cdetails = "", author = "", time = "", fine = 0) var/datum/data/crime/c = new /datum/data/crime c.crimeName = cname c.crimeDetails = cdetails c.author = author c.time = time c.fine = fine c.paid = 0 c.dataId = ++securityCrimeCounter return c /datum/datacore/proc/createCommentEntry(commentText = "", author = "", time = "") var/datum/data/comment/C = new /datum/data/comment C.commentText = commentText C.author = author C.time = time || station_time_timestamp() C.dataId = ++securityCommentCounter return C /datum/datacore/proc/addCitation(id = "", datum/data/crime/crime) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["citation"] crimes |= crime return /datum/datacore/proc/removeCitation(id, cDataId) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["citation"] for(var/datum/data/crime/crime in crimes) if(crime.dataId == text2num(cDataId)) crimes -= crime return /datum/datacore/proc/payCitation(id, cDataId, amount) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["citation"] for(var/datum/data/crime/crime in crimes) if(crime.dataId == text2num(cDataId)) crime.paid = crime.paid + amount var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_SEC) D.adjust_money(amount) return /datum/datacore/proc/addCrime(id = "", datum/data/crime/crime) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["crimes"] crimes |= crime return /datum/datacore/proc/removeCrime(id, cDataId) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["crimes"] for(var/datum/data/crime/crime in crimes) if(crime.dataId == text2num(cDataId)) crimes -= crime return /datum/datacore/proc/addComment(id = "", datum/data/comment/comment) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/comments = R.fields["comments"] comments |= comment return /datum/datacore/proc/removeComment(id, cDataId) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/comments = R.fields["comments"] for(var/datum/data/comment/comment in comments) if(comment.dataId == text2num(cDataId)) comments -= comment return /datum/datacore/proc/manifest() for(var/mob/dead/new_player/N in GLOB.player_list) if(N.new_character) log_manifest(N.ckey,N.new_character.mind,N.new_character) if(ishuman(N.new_character)) manifest_inject(N.new_character, N.client) CHECK_TICK /datum/datacore/proc/manifest_modify(name, assignment) var/datum/data/record/foundrecord = find_record("name", name, GLOB.data_core.general) var/real_title = assignment for(var/datum/job/J in SSjob.occupations) var/list/alttitles = get_alternate_titles(J.title) if(!J) continue if(assignment in alttitles) real_title = J.title break if(foundrecord) foundrecord.fields["rank"] = assignment foundrecord.fields["real_rank"] = real_title /datum/datacore/proc/get_manifest() var/list/manifest_out = list() var/list/departments = list( "Command" = GLOB.command_positions, "Security" = GLOB.security_positions, "Engineering" = GLOB.engineering_positions, "Medical" = GLOB.medical_positions, "Science" = GLOB.science_positions, "Supply" = GLOB.supply_positions, "Civilian" = GLOB.civilian_positions, "Silicon" = GLOB.nonhuman_positions ) for(var/datum/data/record/t in GLOB.data_core.general) var/name = t.fields["name"] var/rank = t.fields["rank"] var/has_department = FALSE for(var/department in departments) var/list/jobs = departments[department] if(rank in jobs) if(!manifest_out[department]) manifest_out[department] = list() manifest_out[department] += list(list( "name" = name, "rank" = rank )) has_department = TRUE break if(!has_department) if(!manifest_out["Misc"]) manifest_out["Misc"] = list() manifest_out["Misc"] += list(list( "name" = name, "rank" = rank )) return manifest_out /datum/datacore/proc/get_manifest_html(monochrome = FALSE) var/list/heads = list() var/list/sec = list() var/list/eng = list() var/list/med = list() var/list/sci = list() var/list/sup = list() var/list/civ = list() var/list/bot = list() var/list/misc = list() var/dat = {"
| Name | Rank | |
|---|---|---|
| Heads | ||
| [name] | [heads[name]] | |
| Security | ||
| [name] | [sec[name]] | |
| Engineering | ||
| [name] | [eng[name]] | |
| Medical | ||
| [name] | [med[name]] | |
| Science | ||
| [name] | [sci[name]] | |
| Supply | ||
| [name] | [sup[name]] | |
| Civilian | ||
| [name] | [civ[name]] | |
| Silicon | ||
| [name] | [bot[name]] | |
| Miscellaneous | ||
| [name] | [misc[name]] | |