mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 16:14:13 +00:00
295 lines
12 KiB
Plaintext
295 lines
12 KiB
Plaintext
/hook/startup/proc/createDatacore()
|
|
data_core = new /obj/effect/datacore()
|
|
return 1
|
|
|
|
/obj/effect/datacore/proc/manifest_modify(var/name, var/assignment)
|
|
if(PDA_Manifest.len)
|
|
PDA_Manifest.len = 0
|
|
|
|
var/real_title = assignment
|
|
|
|
var/datum/data/record/foundrecord = find_record("name", name, data_core.general)
|
|
|
|
var/list/all_jobs = get_job_datums()
|
|
|
|
for(var/datum/job/J in all_jobs)
|
|
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
|
|
|
|
/obj/effect/datacore/proc/manifest_inject(var/mob/living/carbon/human/H)
|
|
if(PDA_Manifest.len)
|
|
PDA_Manifest.len = 0
|
|
|
|
if(H.mind && (H.mind.assigned_role != "MODE"))
|
|
var/assignment
|
|
if(H.mind.role_alt_title)
|
|
assignment = H.mind.role_alt_title
|
|
else if(H.mind.assigned_role)
|
|
assignment = H.mind.assigned_role
|
|
else if(H.job)
|
|
assignment = H.job
|
|
else
|
|
assignment = "Unassigned"
|
|
|
|
var/datum/job/job = job_master.GetJob(H.job)
|
|
if(job && job.no_crew_manifest)
|
|
return
|
|
|
|
var/id = num2hex(rand(1, 1.6777215E7), 6) //this was the best they could come up with? A large random number? *sigh*
|
|
|
|
|
|
//General Record
|
|
var/datum/data/record/G = new()
|
|
G.fields["id"] = id
|
|
G.fields["name"] = H.real_name
|
|
G.fields["real_rank"] = H.mind.assigned_role
|
|
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
|
|
G.fields["species"] = H.get_species()
|
|
|
|
if(H.gen_record && !jobban_isbanned(H, "Records"))
|
|
G.fields["notes"] = H.gen_record
|
|
else
|
|
G.fields["notes"] = "No notes found."
|
|
|
|
//Medical Record
|
|
var/datum/data/record/M = new()
|
|
M.fields["id"] = id
|
|
M.fields["name"] = H.real_name
|
|
M.fields["b_type"] = H.dna.b_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."
|
|
if(H.med_record && !jobban_isbanned(H, "Records"))
|
|
M.fields["notes"] = H.med_record
|
|
else
|
|
M.fields["notes"] = "No notes found."
|
|
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["notes"] = "No notes."
|
|
if(H.sec_record && !jobban_isbanned(H, "Records"))
|
|
S.fields["notes"] = H.sec_record
|
|
else
|
|
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]")
|
|
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["b_type"] = H.dna.b_type
|
|
L.fields["b_dna"] = H.dna.unique_enzymes
|
|
L.fields["enzymes"] = H.dna.SE // Used in respawning
|
|
L.fields["identity"] = H.dna.UI // "
|
|
|
|
H.regenerate_icons() // ensuring that we don't end up with bald default-species humans before taking their picture
|
|
|
|
var/icon/I = icon('icons/effects/32x32.dmi', "blank")
|
|
var/icon/result = icon(I, "")
|
|
result.Insert(getFlatIconDeluxe(sort_image_datas(get_content_image_datas(H)), override_dir = SOUTH, ignore_spawn_items = TRUE), "", dir = SOUTH)
|
|
result.Insert(getFlatIconDeluxe(sort_image_datas(get_content_image_datas(H)), override_dir = NORTH, ignore_spawn_items = TRUE), "", dir = NORTH)
|
|
result.Insert(getFlatIconDeluxe(sort_image_datas(get_content_image_datas(H)), override_dir = EAST, ignore_spawn_items = TRUE), "", dir = EAST)
|
|
result.Insert(getFlatIconDeluxe(sort_image_datas(get_content_image_datas(H)), override_dir = WEST, ignore_spawn_items = TRUE), "", dir = WEST)
|
|
result.Crop(1,1,32,32)
|
|
|
|
G.fields["photo"] = result
|
|
L.fields["image"] = result
|
|
|
|
general += G
|
|
locked += L
|
|
|
|
|
|
proc/get_id_photo(var/mob/living/carbon/human/H)
|
|
var/icon/preview_icon = null
|
|
|
|
var/g = "m"
|
|
if (H.gender == FEMALE)
|
|
g = "f"
|
|
|
|
var/icon/icobase = H.species.icobase
|
|
|
|
preview_icon = new /icon(icobase, "torso_[g]")
|
|
var/icon/temp
|
|
temp = new /icon(icobase, "groin_[g]")
|
|
preview_icon.Blend(temp, ICON_OVERLAY)
|
|
temp = new /icon(icobase, "head_[g]")
|
|
preview_icon.Blend(temp, ICON_OVERLAY)
|
|
|
|
for(var/datum/organ/external/E in H.organs)
|
|
if(E.status & ORGAN_CUT_AWAY || E.status & ORGAN_DESTROYED)
|
|
continue
|
|
var/o_icobase=icobase
|
|
if(E.status & ORGAN_PEG)
|
|
o_icobase='icons/mob/human_races/o_peg.dmi'
|
|
else if(E.status & ORGAN_ROBOT)
|
|
o_icobase='icons/mob/human_races/o_robot.dmi'
|
|
temp = new /icon(o_icobase, "[E.name]")
|
|
//if(E.status & ORGAN_ROBOT)
|
|
// temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
|
|
preview_icon.Blend(temp, ICON_OVERLAY)
|
|
|
|
// Skin tone
|
|
if(H.species.anatomy_flags & HAS_SKIN_TONE)
|
|
if (H.my_appearance.s_tone >= 0)
|
|
preview_icon.Blend(rgb(H.my_appearance.s_tone, H.my_appearance.s_tone, H.my_appearance.s_tone), ICON_ADD)
|
|
else
|
|
preview_icon.Blend(rgb(-H.my_appearance.s_tone, -H.my_appearance.s_tone, -H.my_appearance.s_tone), ICON_SUBTRACT)
|
|
else if(H.species.anatomy_flags & RGBSKINTONE)
|
|
preview_icon.Blend(rgb(H.my_appearance.r_hair, H.my_appearance.g_hair, H.my_appearance.b_hair), ICON_ADD)
|
|
|
|
var/icon/eyes_s = new/icon("icon" = 'icons/mob/hair_styles.dmi', "icon_state" = H.species ? H.species.eyes : "eyes_s")
|
|
|
|
eyes_s.Blend(rgb(H.my_appearance.r_eyes, H.my_appearance.g_eyes, H.my_appearance.b_eyes), ICON_ADD)
|
|
|
|
var/datum/sprite_accessory/hair_style = hair_styles_list[H.my_appearance.h_style]
|
|
if(hair_style)
|
|
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
|
|
hair_s.Blend(rgb(H.my_appearance.r_hair, H.my_appearance.g_hair, H.my_appearance.b_hair), ICON_ADD)
|
|
eyes_s.Blend(hair_s, ICON_OVERLAY)
|
|
|
|
var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[H.my_appearance.f_style]
|
|
if(facial_hair_style)
|
|
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
|
|
facial_s.Blend(rgb(H.my_appearance.r_facial, H.my_appearance.g_facial, H.my_appearance.b_facial), ICON_ADD)
|
|
eyes_s.Blend(facial_s, ICON_OVERLAY)
|
|
|
|
var/icon/clothes_s = null
|
|
switch(H.mind.assigned_role)
|
|
if("Head of Personnel")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "hop_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
|
if("Bartender")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "ba_suit_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
|
if("Botanist")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "hydroponics_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
|
if("Chef")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "chef_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
|
if("Janitor")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "janitor_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
|
if("Librarian")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "red_suit_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
|
if("Quartermaster")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "qm_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
|
if("Cargo Technician")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "cargotech_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
|
if("Shaft Miner")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "miner_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
|
if("Lawyer")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "internalaffairs_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
|
if("Chaplain")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "chapblack_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
|
if("Research Director")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "director_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
|
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
|
|
if("Scientist")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "toxinswhite_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
|
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY)
|
|
if("Xenoarchaeologist")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "xenoarch")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
|
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY)
|
|
if("Xenobiologist")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "xenobio")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
|
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY)
|
|
if("Chemist")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "chemistrywhite_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
|
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_chem_open"), ICON_OVERLAY)
|
|
if("Chief Medical Officer")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "cmo_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
|
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_cmo_open"), ICON_OVERLAY)
|
|
if("Medical Doctor")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
|
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
|
|
if("Geneticist")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "geneticswhite_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
|
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_gen_open"), ICON_OVERLAY)
|
|
if("Virologist")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "virologywhite_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
|
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_vir_open"), ICON_OVERLAY)
|
|
if("Captain")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "captain_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
|
if("Head of Security")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "hosred_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
|
|
if("Warden")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "warden_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
|
|
if("Detective")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "detective_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
|
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "detective"), ICON_OVERLAY)
|
|
if("Security Officer")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "security_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
|
|
if("Chief Engineer")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "chief_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
|
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
|
|
if("Station Engineer")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "engine_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY)
|
|
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
|
|
if("Atmospheric Technician")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "atmos_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
|
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
|
|
if("Roboticist")
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "robotics_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
|
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
|
|
else
|
|
clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s")
|
|
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
|
preview_icon.Blend(eyes_s, ICON_OVERLAY)
|
|
if(clothes_s)
|
|
preview_icon.Blend(clothes_s, ICON_OVERLAY)
|
|
del(eyes_s)
|
|
del(clothes_s)
|
|
|
|
return preview_icon
|