mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-16 18:45:22 +01:00
[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:
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -341,6 +341,7 @@
|
||||
<tr><td>Age:</td><td><A href='?src=[REF(src)];choice=Edit Field;field=age'> [active1.fields["age"]] </A></td></tr>"}
|
||||
dat += "<tr><td>Species:</td><td><A href ='?src=[REF(src)];choice=Edit Field;field=species'> [active1.fields["species"]] </A></td></tr>"
|
||||
dat += {"<tr><td>Rank:</td><td><A href='?src=[REF(src)];choice=Edit Field;field=rank'> [active1.fields["rank"]] </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'> [active1.fields["fingerprint"]] </A></td></tr>
|
||||
<tr><td>Physical Status:</td><td> [active1.fields["p_stat"]] </td></tr>
|
||||
<tr><td>Mental Status:</td><td> [active1.fields["m_stat"]] </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)
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user