From a7f5dcc4f6b85bf160060a7aa8061107c4ad9cc4 Mon Sep 17 00:00:00 2001 From: PhantornRU Date: Sun, 8 Oct 2023 00:34:42 +1000 Subject: [PATCH] =?UTF-8?q?HUD,=20=D0=9A=D0=B0=D1=80=D1=82=D1=8B,=20=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D1=82-=D1=80=D0=BE=D0=BB=D0=B8,=20=D0=BE=D0=B4?= =?UTF-8?q?=D0=B5=D0=B6=D0=B4=D0=B0,=20=D0=B4=D0=BE=D0=BB=D0=B6=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B8,=20=D0=B2=D0=BD=D0=B5=D1=81=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B2=20=D0=B3=D0=BB=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=BB=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modular_ss220/jobs/_jobs.dme | 7 ++ modular_ss220/jobs/code/cards_ids.dm | 92 +++--------------- .../code/clothing/engineering_clothing.dm | 26 +++++ .../jobs/code/clothing/medical_clothing.dm | 7 +- .../jobs/code/clothing/science_clothing.dm | 26 +++++ .../jobs/code/clothing/security_clothing.dm | 26 +++++ .../jobs/code/job/engineering_jobs.dm | 32 ++++++ modular_ss220/jobs/code/job/medical_jobs.dm | 31 +----- modular_ss220/jobs/code/job/science_jobs.dm | 22 +++++ modular_ss220/jobs/code/job/security_jobs.dm | 26 +++++ modular_ss220/jobs/code/jobs.dm | 14 +++ modular_ss220/jobs/icons/card.dmi | Bin 5448 -> 3846 bytes 12 files changed, 196 insertions(+), 113 deletions(-) create mode 100644 modular_ss220/jobs/code/clothing/engineering_clothing.dm create mode 100644 modular_ss220/jobs/code/clothing/science_clothing.dm create mode 100644 modular_ss220/jobs/code/clothing/security_clothing.dm create mode 100644 modular_ss220/jobs/code/job/engineering_jobs.dm create mode 100644 modular_ss220/jobs/code/job/science_jobs.dm create mode 100644 modular_ss220/jobs/code/job/security_jobs.dm create mode 100644 modular_ss220/jobs/code/jobs.dm diff --git a/modular_ss220/jobs/_jobs.dme b/modular_ss220/jobs/_jobs.dme index d67e17013d32..079b4f390d42 100644 --- a/modular_ss220/jobs/_jobs.dme +++ b/modular_ss220/jobs/_jobs.dme @@ -2,5 +2,12 @@ #include "code/access.dm" #include "code/cards_ids.dm" +#include "code/jobs.dm" +#include "code/clothing/engineering_clothing.dm" #include "code/clothing/medical_clothing.dm" +#include "code/clothing/science_clothing.dm" +#include "code/clothing/security_clothing.dm" +#include "code/job/engineering_jobs.dm" #include "code/job/medical_jobs.dm" +#include "code/job/science_jobs.dm" +#include "code/job/security_jobs.dm" diff --git a/modular_ss220/jobs/code/cards_ids.dm b/modular_ss220/jobs/code/cards_ids.dm index 491b7205fdc6..85e0fb68fc7b 100644 --- a/modular_ss220/jobs/code/cards_ids.dm +++ b/modular_ss220/jobs/code/cards_ids.dm @@ -1,91 +1,27 @@ -// !!!!!!!! сделать автоустановку роли новичкам при загрузке - -// /proc/get_novice_card_skins() -// return list("cadet", "intern", "student", "trainee") - -// get_station_card_skins() -// var/test = "Test1: \n" -// for(var/i in ..()) -// test += ", [i]" -// message_admins(test) - -// test = "Test2: \n" -// for(var/i in get_novice_card_skins()) -// test += ", [i]" -// message_admins(test) - -// test = "Test3: \n" -// for(var/i in ..() + get_novice_card_skins()) -// test += ", [i]" -// message_admins(test) - -// return ..() + get_novice_card_skins() +// Для отрисовки ХУД'ов. +GLOBAL_LIST_INIT(Jobs_SS220, list("intern", "cadet", "trainee", "student")) /proc/get_all_medical_novice_tittles() return list("Intern", "Medical Assistant", "Student Medical Doctor") /proc/get_all_security_novice_tittles() - return list("Cadet") + return list("Security Cadet", "Security Assistant", "Security Graduate") /proc/get_all_engineering_novice_tittles() - return list("Trainee") + return list("Trainee Engineer", "Engineer Assistant", "Technical Assistant", "Engineer Student", "Technical Student", "Technical Trainee") /proc/get_all_science_novice_tittles() - return list("Student") + return list("Student Scientist", "Scientist Assistant", "Scientist Pregraduate", "Scientist Graduate", "Scientist Postgraduate") /proc/get_all_novice_tittles() return get_all_medical_novice_tittles() + get_all_security_novice_tittles() + get_all_engineering_novice_tittles() + get_all_science_novice_tittles() -// /proc/get_modular_ss220_hud_image(mob/living/carbon/human/H) -// var/image/I -// if(!H.wear_id) -// return -// if(H.wear_id.assignment == "Intern" || H.wear_id.get_ID_assignment() in get_all_novice_tittles()) -// I = image('modular_ss220/jobs/icons/hud.dmi', src, "") -// I.appearance_flags = RESET_COLOR | RESET_TRANSFORM - -// return I - - - - //var/image/holder = I - - -// /atom/prepare_huds() -// . = ..() -// var/hud = ID_HUD -// if(hud in hud_possible) // копипаст наследуемого метода -// var/hint = hud_possible[hud] -// switch(hint) -// if(HUD_LIST_LIST) -// hud_list[hud] = list() -// else -// var/image/I = image('modular_ss220/jobs/icons/hud.dmi', src, "") -// I.appearance_flags = RESET_COLOR | RESET_TRANSFORM -// hud_list[ID_HUD] = I //непральна - - -// /mob/living/carbon/human/sec_hud_set_ID() -// if(!wear_id) -// return ..() - -// if() - -// //.dmi с худама -// var/image/I = image('modular_ss220/jobs/icons/hud.dmi', src, "") -// I.appearance_flags = RESET_COLOR | RESET_TRANSFORM - -// //Устанавливаем ХУДы с .dmi -// var/image/holder = I -// holder.icon_state = "hudunknown" -// holder.icon_state = "hud[ckey(wear_id.get_job_name())]" -// sec_hud_set_security_status() - - - - -/proc/get_all_novice_huds() - return list("intern", "cadet", "trainee", "student") +/mob/living/carbon/human/sec_hud_set_ID() + var/image/holder = hud_list[ID_HUD] + holder.icon = 'icons/mob/hud.dmi' + if(wear_id && wear_id.get_job_name() in GLOB.Jobs_SS220) + holder.icon = 'modular_ss220/jobs/icons/hud.dmi' + . = ..() /obj/item/get_job_name() //Used in secHUD icon generation var/assignmentName = get_ID_assignment(if_no_id = "Unknown") @@ -107,12 +43,6 @@ . = ..() -// /atom/prepare_huds() -// . = ..() -// var/image/img = image('modular_ss220/jobs/icons/hud.dmi', src, "") -// img.appearance_flags = RESET_COLOR | RESET_TRANSFORM -// hud_list[ID_HUD] += img - /obj/item/card/id/medical/intern name = "Intern ID" registered_name = "Intern" diff --git a/modular_ss220/jobs/code/clothing/engineering_clothing.dm b/modular_ss220/jobs/code/clothing/engineering_clothing.dm new file mode 100644 index 000000000000..7e7078bec5c8 --- /dev/null +++ b/modular_ss220/jobs/code/clothing/engineering_clothing.dm @@ -0,0 +1,26 @@ +/obj/item/clothing/under/rank/engineer/trainee + name = "engineer trainee jumpsuit" + icon = 'modular_ss220/jobs/icons/clothing/uniforms.dmi' + icon_override = 'modular_ss220/jobs/icons/clothing/mob/uniform.dmi' + //lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi' + //righthand_file = 'icons/mob/inhands/clothing_righthand.dmi' + icon_state = "trainee_s" + item_color = "trainee" + sprite_sheets = null + +/obj/item/clothing/under/rank/engineer/trainee/skirt + name = "engineer trainee jumpskirt" + icon_state = "traineef_s" + item_color = "traineef" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS + +/obj/item/clothing/under/rank/engineer/trainee/assistant + name = "engineer assistant jumpsuit" + icon_state = "eng_ass_s" + item_color = "eng_ass" + +/obj/item/clothing/under/rank/engineer/trainee/assistant/skirt + name = "engineer assistant jumpskirt" + icon_state = "eng_ass_f_s" + item_color = "eng_ass_f" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS diff --git a/modular_ss220/jobs/code/clothing/medical_clothing.dm b/modular_ss220/jobs/code/clothing/medical_clothing.dm index e66454790af2..43e99519aacf 100644 --- a/modular_ss220/jobs/code/clothing/medical_clothing.dm +++ b/modular_ss220/jobs/code/clothing/medical_clothing.dm @@ -3,10 +3,7 @@ icon_override = 'modular_ss220/jobs/icons/clothing/mob/uniform.dmi' //lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi' //righthand_file = 'icons/mob/inhands/clothing_righthand.dmi' - sprite_sheets = null //если не сработает icon_override, то использовать: (и снизу тоже у зеленки) - // sprite_sheets = list( - // "Human" = 'modular_ss220/jobs/icons/clothing/mob/uniform.dmi', - // ) + sprite_sheets = null name = "intern jumpsuit" icon_state = "intern_s" @@ -36,6 +33,7 @@ icon_override = 'modular_ss220/jobs/icons/clothing/mob/uniform.dmi' icon_state = "scrubsgreen" item_color = "scrubsgreen" + sprite_sheets = null /obj/item/clothing/head/surgery/green/light name = "light green surgical cap" @@ -44,3 +42,4 @@ icon_override = 'modular_ss220/jobs/icons/clothing/mob/head.dmi' icon_state = "surgcap_green" item_color = "surgcap_green" + sprite_sheets = null diff --git a/modular_ss220/jobs/code/clothing/science_clothing.dm b/modular_ss220/jobs/code/clothing/science_clothing.dm new file mode 100644 index 000000000000..d885bff41bbf --- /dev/null +++ b/modular_ss220/jobs/code/clothing/science_clothing.dm @@ -0,0 +1,26 @@ +/obj/item/clothing/under/rank/scientist/student + name = "scientist student jumpsuit" + icon = 'modular_ss220/jobs/icons/clothing/uniforms.dmi' + icon_override = 'modular_ss220/jobs/icons/clothing/mob/uniform.dmi' + //lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi' + //righthand_file = 'icons/mob/inhands/clothing_righthand.dmi' + icon_state = "student_s" + item_color = "student" + sprite_sheets = null + +/obj/item/clothing/under/rank/scientist/student/skirt + name = "scientist student jumpskirt" + icon_state = "studentf_s" + item_color = "studentf" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS + +/obj/item/clothing/under/rank/scientist/student/assistant + name = "scientist assistant jumpsuit" + icon_state = "sci_ass_s" + item_color = "sci_ass" + +/obj/item/clothing/under/rank/scientist/student/assistant/skirt + name = "scientist assistant jumpskirt" + icon_state = "sci_ass_f_s" + item_color = "sci_ass_f" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS diff --git a/modular_ss220/jobs/code/clothing/security_clothing.dm b/modular_ss220/jobs/code/clothing/security_clothing.dm new file mode 100644 index 000000000000..681b4581b9ef --- /dev/null +++ b/modular_ss220/jobs/code/clothing/security_clothing.dm @@ -0,0 +1,26 @@ +/obj/item/clothing/under/rank/security/cadet + name = "security cadet jumpsuit" + icon = 'modular_ss220/jobs/icons/clothing/uniforms.dmi' + icon_override = 'modular_ss220/jobs/icons/clothing/mob/uniform.dmi' + //lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi' + //righthand_file = 'icons/mob/inhands/clothing_righthand.dmi' + icon_state = "cadet_s" + item_color = "cadet" + sprite_sheets = null + +/obj/item/clothing/under/rank/security/cadet/skirt + name = "security cadet jumpskirt" + icon_state = "cadetf_s" + item_color = "cadetf" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS + +/obj/item/clothing/under/rank/security/cadet/assistant + name = "security assistant jumpsuit" + icon_state = "sec_ass_s" + item_color = "sec_ass" + +/obj/item/clothing/under/rank/security/cadet/assistant/skirt + name = "security assistant jumpskirt" + icon_state = "sec_ass_f_s" + item_color = "sec_ass_f" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS diff --git a/modular_ss220/jobs/code/job/engineering_jobs.dm b/modular_ss220/jobs/code/job/engineering_jobs.dm new file mode 100644 index 000000000000..b50807bc4cb8 --- /dev/null +++ b/modular_ss220/jobs/code/job/engineering_jobs.dm @@ -0,0 +1,32 @@ +/datum/job/engineer/New() + . = ..() + alt_titles |= get_all_engineering_novice_tittles() + +/datum/station_department/engineering/New() + . = ..() + department_roles |= get_all_engineering_novice_tittles() + +/datum/outfit/job/engineer/pre_equip(mob/living/carbon/human/H, visualsOnly) + . = ..() + if(H.mind && H.mind.role_alt_title) + if(H.mind.role_alt_title in get_all_engineering_novice_tittles()) + uniform = /obj/item/clothing/under/rank/engineer/trainee + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/rank/engineer/trainee/skirt + id = /obj/item/card/id/engineering/trainee + gloves = /obj/item/clothing/gloves/color/orange + + switch(H.mind.role_alt_title) + if("Engineer Assistant") + uniform = /obj/item/clothing/under/rank/engineer/trainee/assistant + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/rank/engineer/trainee/assistant/skirt + if("Technical Assistant") + uniform = /obj/item/clothing/under/rank/engineer/trainee/assistant + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/rank/engineer/trainee/assistant/skirt + head = /obj/item/clothing/head/soft/orange + if("Technical Student", "Technical Trainee") + head = /obj/item/clothing/head/soft/orange + if("Engineer Student") + head = /obj/item/clothing/head/beret/eng diff --git a/modular_ss220/jobs/code/job/medical_jobs.dm b/modular_ss220/jobs/code/job/medical_jobs.dm index c5321f411ca5..8d098a8b4cbc 100644 --- a/modular_ss220/jobs/code/job/medical_jobs.dm +++ b/modular_ss220/jobs/code/job/medical_jobs.dm @@ -6,21 +6,6 @@ . = ..() department_roles |= get_all_medical_novice_tittles() -/datum/nttc_configuration/New() - . = ..() - var/list/job_radio_dict = list() - - for(var/i in get_all_medical_novice_tittles()) - job_radio_dict.Add(list("[i]" = "medradio")) - for(var/i in get_all_security_novice_tittles()) - job_radio_dict.Add(list("[i]" = "secradio")) - for(var/i in get_all_engineering_novice_tittles()) - job_radio_dict.Add(list("[i]" = "engradio")) - for(var/i in get_all_science_novice_tittles()) - job_radio_dict.Add(list("[i]" = "scirradio")) - - all_jobs |= job_radio_dict - /datum/outfit/job/doctor/pre_equip(mob/living/carbon/human/H, visualsOnly) . = ..() if(H.mind && H.mind.role_alt_title) @@ -29,29 +14,19 @@ if(H.gender == FEMALE) uniform = /obj/item/clothing/under/rank/medical/intern/skirt id = /obj/item/card/id/medical/intern - //l_pocket = /obj/item/paper/deltainfo l_hand = /obj/item/storage/firstaid/o2 mask = /obj/item/clothing/mask/surgical gloves = /obj/item/clothing/gloves/color/latex - glasses = /obj/item/clothing/glasses/hud/security/sunglasses // !!!! ДЛЯ ТЕСТА switch(H.mind.role_alt_title) if("Intern") uniform = /obj/item/clothing/under/rank/medical/intern if(H.gender == FEMALE) uniform = /obj/item/clothing/under/rank/medical/intern/skirt - if("Student Medical Doctor") - head = /obj/item/clothing/head/surgery/green/light - uniform = /obj/item/clothing/under/rank/medical/scrubs/green/light if("Medical Assistant") uniform = /obj/item/clothing/under/rank/medical/intern/assistant if(H.gender == FEMALE) uniform = /obj/item/clothing/under/rank/medical/intern/assistant/skirt - - - - // "student scientist" = "Учёный-практикант", - // "Scientist Assistant" = "Научный Ассистент", - // "Scientist Pregraduate" = "Учёный-бакалавр", - // "Scientist Graduate" = "Научный выпускник", - // "Scientist Postgraduate" = "Учёный-аспирант", + if("Student Medical Doctor") + head = /obj/item/clothing/head/surgery/green/light + uniform = /obj/item/clothing/under/rank/medical/scrubs/green/light diff --git a/modular_ss220/jobs/code/job/science_jobs.dm b/modular_ss220/jobs/code/job/science_jobs.dm new file mode 100644 index 000000000000..2b51cb306222 --- /dev/null +++ b/modular_ss220/jobs/code/job/science_jobs.dm @@ -0,0 +1,22 @@ +/datum/job/scientist/New() + . = ..() + alt_titles |= get_all_science_novice_tittles() + +/datum/station_department/science/New() + . = ..() + department_roles |= get_all_science_novice_tittles() + +/datum/outfit/job/scientist/pre_equip(mob/living/carbon/human/H, visualsOnly) + . = ..() + if(H.mind && H.mind.role_alt_title) + if(H.mind.role_alt_title in get_all_science_novice_tittles()) + uniform = /obj/item/clothing/under/rank/scientist/student + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/rank/scientist/student/skirt + id = /obj/item/card/id/research/student + + switch(H.mind.role_alt_title) + if("Scientist Assistant") + uniform = /obj/item/clothing/under/rank/scientist/student/assistant + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/rank/scientist/student/assistant/skirt diff --git a/modular_ss220/jobs/code/job/security_jobs.dm b/modular_ss220/jobs/code/job/security_jobs.dm new file mode 100644 index 000000000000..ca6d70161673 --- /dev/null +++ b/modular_ss220/jobs/code/job/security_jobs.dm @@ -0,0 +1,26 @@ +/datum/job/officer/New() + . = ..() + alt_titles = get_all_security_novice_tittles() // =, а не |=, т.к. отсутствуют альт. названия + +/datum/station_department/security/New() + . = ..() + department_roles |= get_all_security_novice_tittles() + +/datum/outfit/job/officer/pre_equip(mob/living/carbon/human/H, visualsOnly) + . = ..() + if(H.mind && H.mind.role_alt_title) + if(H.mind.role_alt_title in get_all_security_novice_tittles()) + uniform = /obj/item/clothing/under/rank/security/cadet + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/rank/security/cadet/skirt + head = /obj/item/clothing/head/soft/sec + id = /obj/item/card/id/security/cadet + l_pocket = /obj/item/reagent_containers/spray/pepper + //box = /obj/item/storage/box/survival_security/cadet + switch(H.mind.role_alt_title) + if("Security Assistant") + uniform = /obj/item/clothing/under/rank/security/cadet/assistant + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/rank/security/cadet/assistant/skirt + if("Security Graduate") + head = /obj/item/clothing/head/beret/sec diff --git a/modular_ss220/jobs/code/jobs.dm b/modular_ss220/jobs/code/jobs.dm new file mode 100644 index 000000000000..7c0ef38ead8f --- /dev/null +++ b/modular_ss220/jobs/code/jobs.dm @@ -0,0 +1,14 @@ +/datum/nttc_configuration/New() + . = ..() + var/list/job_radio_dict = list() + + for(var/i in get_all_medical_novice_tittles()) + job_radio_dict.Add(list("[i]" = "medradio")) + for(var/i in get_all_security_novice_tittles()) + job_radio_dict.Add(list("[i]" = "secradio")) + for(var/i in get_all_engineering_novice_tittles()) + job_radio_dict.Add(list("[i]" = "engradio")) + for(var/i in get_all_science_novice_tittles()) + job_radio_dict.Add(list("[i]" = "scirradio")) + + all_jobs |= job_radio_dict diff --git a/modular_ss220/jobs/icons/card.dmi b/modular_ss220/jobs/icons/card.dmi index ac6614d2ce033da29f82e0a64bb7e96a23e46db4..590f670636481d30f429873fc370398891b9fba8 100644 GIT binary patch literal 3846 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