[MIRROR] Proper custom job name support [MDB IGNORE] (#9547)

* Proper custom job name support

* merge (#9552)

Co-authored-by: Tastyfish <crazychris32@gmail.com>
This commit is contained in:
SkyratBot
2021-11-20 21:52:42 +00:00
committed by GitHub
parent 3c58964eb3
commit 532ce4e9ef
8 changed files with 33 additions and 24 deletions
+9 -3
View File
@@ -137,10 +137,11 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new)
manifest_inject(N.new_character, N.client)
CHECK_TICK
/datum/datacore/proc/manifest_modify(name, assignment)
/datum/datacore/proc/manifest_modify(name, assignment, trim)
var/datum/data/record/foundrecord = find_record("name", name, GLOB.data_core.general)
if(foundrecord)
foundrecord.fields["rank"] = assignment
foundrecord.fields["trim"] = trim
/datum/datacore/proc/get_manifest()
@@ -153,8 +154,9 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new)
var/list/departments_by_type = SSjob.joinable_departments_by_type
for(var/datum/data/record/record as anything in GLOB.data_core.general)
var/name = record.fields["name"]
var/rank = record.fields["rank"]
var/datum/job/job = SSjob.GetJob(rank)
var/rank = record.fields["rank"] // user-visible job
var/trim = record.fields["trim"] // internal jobs by trim type
var/datum/job/job = SSjob.GetJob(trim)
if(!job || !(job.job_flags & JOB_CREW_MANIFEST) || !LAZYLEN(job.departments_list)) // In case an unlawful custom rank is added.
var/list/misc_list = manifest_out[DEPARTMENT_UNASSIGNED]
misc_list[++misc_list.len] = list(
@@ -243,6 +245,8 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new)
G.fields["id"] = id
G.fields["name"] = H.real_name
G.fields["rank"] = assignment
G.fields["trim"] = assignment
G.fields["initial_rank"] = assignment
G.fields["age"] = H.age
G.fields["species"] = H.dna.species.name
G.fields["fingerprint"] = md5(H.dna.unique_identity)
@@ -312,6 +316,8 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new)
L.fields["id"] = md5("[H.real_name][assignment]") //surely this should just be id, like the others?
L.fields["name"] = H.real_name
L.fields["rank"] = assignment
L.fields["trim"] = assignment
G.fields["initial_rank"] = assignment
L.fields["age"] = H.age
L.fields["gender"] = H.gender
if(H.gender == "male")
+3 -1
View File
@@ -235,7 +235,9 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new)
if (id_card)
entry["name"] = id_card.registered_name
entry["assignment"] = id_card.assignment
entry["ijob"] = jobs[id_card.assignment] //SKYRAT EDIT - ALTERNATE JOB TITLES
var/trim_assignment = id_card.get_trim_assignment()
if (jobs[trim_assignment])
entry["ijob"] = jobs[trim_assignment]
// Binary living/dead status
if (sensor_mode >= SENSOR_LIVING)
+4 -2
View File
@@ -341,6 +341,7 @@
<tr><td>Age:</td><td><A href='?src=[REF(src)];choice=Edit Field;field=age'>&nbsp;[active1.fields["age"]]&nbsp;</A></td></tr>"}
dat += "<tr><td>Species:</td><td><A href ='?src=[REF(src)];choice=Edit Field;field=species'>&nbsp;[active1.fields["species"]]&nbsp;</A></td></tr>"
dat += {"<tr><td>Rank:</td><td><A href='?src=[REF(src)];choice=Edit Field;field=rank'>&nbsp;[active1.fields["rank"]]&nbsp;</A></td></tr>
<tr><td>Initial Rank:</td><td>[active1.fields["initial_rank"]]</td>
<tr><td>Fingerprint:</td><td><A href='?src=[REF(src)];choice=Edit Field;field=fingerprint'>&nbsp;[active1.fields["fingerprint"]]&nbsp;</A></td></tr>
<tr><td>Physical Status:</td><td>&nbsp;[active1.fields["p_stat"]]&nbsp;</td></tr>
<tr><td>Mental Status:</td><td>&nbsp;[active1.fields["m_stat"]]&nbsp;</td></tr>
@@ -711,6 +712,8 @@ What a mess.*/
G.fields["name"] = "New Record"
G.fields["id"] = "[num2hex(rand(1, 1.6777215E7), 6)]"
G.fields["rank"] = "Unassigned"
G.fields["trim"] = "Unassigned"
G.fields["initial_rank"] = "Unassigned"
G.fields["gender"] = "Male"
G.fields["age"] = "Unknown"
G.fields["species"] = "Human"
@@ -947,8 +950,7 @@ What a mess.*/
if("Change Rank")
if(active1)
active1.fields["rank"] = strip_html(href_list["rank"])
if(href_list["rank"] in SSjob.station_jobs)
active1.fields["real_rank"] = href_list["real_rank"]
active1.fields["trim"] = active1.fields["rank"]
if("Change Criminal Status")
if(active2)
+13
View File
@@ -613,6 +613,10 @@
name = "[name_string][assignment_string]"
/// Returns the trim assignment name.
/obj/item/card/id/proc/get_trim_assignment()
return trim?.assignment || assignment
/obj/item/card/id/away
name = "\proper a perfectly generic identification card"
desc = "A perfectly generic identification card. Looks like it could use some flavor."
@@ -805,6 +809,15 @@
. += mutable_appearance(trim_icon_file, trim_icon_state)
/obj/item/card/id/advanced/get_trim_assignment()
if(trim_assignment_override)
return trim_assignment_override
else if(ispath(trim))
var/datum/id_trim/trim_singleton = SSid_access.trim_singletons_by_path[trim]
return trim_singleton.assignment
return ..()
/obj/item/card/id/advanced/silver
name = "silver identification card"
desc = "A silver card which shows honour and dedication."
+1 -1
View File
@@ -120,7 +120,7 @@ GLOBAL_DATUM(everyone_a_traitor, /datum/everyone_is_a_traitor_controller)
var/dat = "<B>Showing Crew Manifest.</B><HR>"
dat += "<table cellspacing=5><tr><th>Name</th><th>Position</th></tr>"
for(var/datum/data/record/t in GLOB.data_core.general)
dat += "<tr><td>[t.fields["name"]]</td><td>[t.fields["rank"]]</td></tr>"
dat += "<tr><td>[t.fields["name"]]</td><td>[t.fields["rank"]][t.fields["rank"] != t.fields["trim"] ? " ([t.fields["trim"]])" : ""]</td></tr>"
dat += "</table>"
holder << browse(dat, "window=manifest;size=440x410")
if("dna")
+1 -15
View File
@@ -110,21 +110,7 @@
if(!id_card)
return "hudno_id"
var/card_assignment
if(istype(id_card, /obj/item/card/id/advanced))
var/obj/item/card/id/advanced/advanced_id_card = id_card
if(advanced_id_card.trim_assignment_override)
card_assignment = advanced_id_card.trim_assignment_override
else if(ispath(advanced_id_card.trim))
var/datum/id_trim/trim = SSid_access.trim_singletons_by_path[advanced_id_card.trim]
card_assignment = trim.assignment
else
card_assignment = advanced_id_card.trim?.assignment
else
card_assignment = id_card.trim?.assignment
if(!card_assignment)
card_assignment = id_card.assignment
var/card_assignment = id_card.get_trim_assignment()
// Is this one of the jobs with dedicated HUD icons?
if(card_assignment in SSjob.station_jobs)
@@ -144,7 +144,7 @@
if(!computer || !card_slot2)
return TRUE
if(target_id_card)
GLOB.data_core.manifest_modify(target_id_card.registered_name, target_id_card.assignment)
GLOB.data_core.manifest_modify(target_id_card.registered_name, target_id_card.assignment, target_id_card.get_trim_assignment())
return card_slot2.try_eject(user)
else
var/obj/item/I = user.get_active_held_item()
@@ -85,7 +85,7 @@
if(!computer || !card_slot)
return
if(id_card)
GLOB.data_core.manifest_modify(id_card.registered_name, id_card.assignment)
GLOB.data_core.manifest_modify(id_card.registered_name, id_card.assignment, id_card.get_trim_assignment())
card_slot.try_eject(current_user)
else
playsound(get_turf(ui_host()) , 'sound/machines/buzz-sigh.ogg', 25, FALSE)