diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index 98691e99546..a1221c897d0 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -21,16 +21,20 @@ #define COLOR_SILVER "#C0C0C0" #define COLOR_GRAY "#808080" #define COLOR_FLOORTILE_GRAY "#8D8B8B" +#define COLOR_ASSISTANT_GRAY "#6E6E6E" #define COLOR_DARK "#454545" #define COLOR_ALMOST_BLACK "#333333" +#define COLOR_PRISONER_BLACK "#292929" #define COLOR_BLACK "#000000" #define COLOR_HALF_TRANSPARENT_BLACK "#0000007A" #define COLOR_RED "#FF0000" +#define COLOR_SYNDIE_RED "#F10303" #define COLOR_MOSTLY_PURE_RED "#FF3300" #define COLOR_DARK_RED "#A50824" #define COLOR_RED_LIGHT "#FF3333" #define COLOR_MAROON "#800000" +#define COLOR_SECURITY_RED "#CB0000" #define COLOR_VIVID_RED "#FF3232" #define COLOR_LIGHT_GRAYISH_RED "#E4C7C5" #define COLOR_SOFT_RED "#FA8282" @@ -42,7 +46,9 @@ #define COLOR_VERY_SOFT_YELLOW "#FAE48E" #define COLOR_OLIVE "#808000" +#define COLOR_ASSISTANT_OLIVE "#828163" #define COLOR_VIBRANT_LIME "#00FF00" +#define COLOR_SERVICE_LIME "#58C800" #define COLOR_LIME "#32CD32" #define COLOR_DARK_LIME "#00aa00" #define COLOR_VERY_PALE_LIME_GREEN "#DDFFD3" @@ -55,7 +61,10 @@ #define COLOR_TEAL "#008080" #define COLOR_BLUE "#0000FF" #define COLOR_STRONG_BLUE "#1919c8" +#define COLOR_CENTCOM_BLUE "#134975" #define COLOR_BRIGHT_BLUE "#2CB2E8" +#define COLOR_COMMAND_BLUE "#1B67A5" +#define COLOR_MEDICAL_BLUE "#5B97BC" #define COLOR_MODERATE_BLUE "#555CC2" #define COLOR_AMETHYST "#822BFF" #define COLOR_BLUE_LIGHT "#33CCFF" @@ -64,6 +73,7 @@ #define COLOR_PINK "#FFC0CB" #define COLOR_LIGHT_PINK "#ff3cc8" +#define COLOR_SCIENCE_PINK "#C96DBF" #define COLOR_MOSTLY_PURE_PINK "#E4005B" #define COLOR_BLUSH_PINK "#DE5D83" #define COLOR_MAGENTA "#FF00FF" @@ -73,6 +83,7 @@ #define COLOR_STRONG_VIOLET "#6927c5" #define COLOR_ORANGE "#FF9900" +#define COLOR_ENGINEERING_ORANGE "#FFA62B" #define COLOR_MOSTLY_PURE_ORANGE "#ff8000" #define COLOR_TAN_ORANGE "#FF7B00" #define COLOR_BRIGHT_ORANGE "#E2853D" @@ -80,11 +91,13 @@ #define COLOR_PALE_ORANGE "#FFBE9D" #define COLOR_BEIGE "#CEB689" #define COLOR_DARK_ORANGE "#C3630C" +#define COLOR_PRISONER_ORANGE "#A54900" #define COLOR_DARK_MODERATE_ORANGE "#8B633B" #define COLOR_BROWN "#BA9F6D" #define COLOR_DARK_BROWN "#997C4F" #define COLOR_ORANGE_BROWN "#a9734f" +#define COLOR_CARGO_BROWN "#B18644" //Color defines used by the soapstone (based on readability against grey tiles) #define COLOR_SOAPSTONE_PLASTIC "#a19d94" diff --git a/code/controllers/subsystem/id_access.dm b/code/controllers/subsystem/id_access.dm index 82801e7265b..e26d8cf394f 100644 --- a/code/controllers/subsystem/id_access.dm +++ b/code/controllers/subsystem/id_access.dm @@ -436,6 +436,9 @@ SUBSYSTEM_DEF(id_access) id_card.trim_state_override = trim.trim_state id_card.trim_assignment_override = trim.assignment id_card.sechud_icon_state_override = trim.sechud_icon_state + id_card.department_color_override = trim.department_color + id_card.department_state_override = trim.department_state + id_card.subdepartment_color_override = trim.subdepartment_color if(!check_forged || !id_card.forged) id_card.assignment = trim.assignment diff --git a/code/datums/id_trim/_id_trim.dm b/code/datums/id_trim/_id_trim.dm index bce3f2b906b..7000e2d6b1d 100644 --- a/code/datums/id_trim/_id_trim.dm +++ b/code/datums/id_trim/_id_trim.dm @@ -4,6 +4,12 @@ var/trim_icon = 'icons/obj/card.dmi' /// Icon state for this trim. Overlayed on advanced ID cards. var/trim_state + /// Department color for this trim. Displayed in the box under the trim_state. + var/department_color = COLOR_ASSISTANT_GRAY + /// Department icon state, for differentiating between heads and normal crew and other use cases. + var/department_state = "department" + /// Subdepartment color for this trim. Displayed as a bar under the trim_state and department_color. + var/subdepartment_color = COLOR_ASSISTANT_OLIVE /// Job/assignment associated with this trim. Can be transferred to ID cards holding this trim. var/assignment /// The name of the job for interns. If unset it will default to "[assignment] (Intern)". diff --git a/code/datums/id_trim/admin.dm b/code/datums/id_trim/admin.dm index 0bc937aecc1..1cfd26979b5 100644 --- a/code/datums/id_trim/admin.dm +++ b/code/datums/id_trim/admin.dm @@ -1,8 +1,9 @@ /// Trim for admins and debug cards. Has every single access in the game. /datum/id_trim/admin assignment = "Jannie" - trim_state = "trim_ert_janitor" - + trim_state = "trim_janitor" + department_color = COLOR_CENTCOM_BLUE + subdepartment_color = COLOR_SERVICE_LIME /datum/id_trim/admin/New() . = ..() // Every single access in the game, all on one handy trim. @@ -12,6 +13,8 @@ /datum/id_trim/highlander assignment = "Highlander" trim_state = "trim_ert_deathcommando" + department_color = COLOR_CENTCOM_BLUE + subdepartment_color = COLOR_SERVICE_LIME /datum/id_trim/highlander/New() . = ..() diff --git a/code/datums/id_trim/centcom.dm b/code/datums/id_trim/centcom.dm index de807c9513c..22dba3a0760 100644 --- a/code/datums/id_trim/centcom.dm +++ b/code/datums/id_trim/centcom.dm @@ -4,6 +4,8 @@ assignment = JOB_CENTCOM trim_state = "trim_centcom" sechud_icon_state = SECHUD_CENTCOM + department_color = COLOR_CENTCOM_BLUE + subdepartment_color = COLOR_CENTCOM_BLUE /// Trim for Centcom VIPs /datum/id_trim/centcom/vip @@ -14,6 +16,9 @@ /datum/id_trim/centcom/custodian access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE) assignment = JOB_CENTCOM_CUSTODIAN + trim_state = "trim_janitor" + department_color = COLOR_CENTCOM_BLUE + subdepartment_color = COLOR_SERVICE_LIME /// Trim for Centcom Thunderdome Overseers. /datum/id_trim/centcom/thunderdome_overseer @@ -89,7 +94,7 @@ /// Trim for Deathsquad officers. All Centcom and Station Access. /datum/id_trim/centcom/deathsquad assignment = JOB_ERT_DEATHSQUAD - trim_state = "trim_ert_commander" + trim_state = "trim_deathcommando" sechud_icon_state = SECHUD_DEATH_COMMANDO /datum/id_trim/centcom/deathsquad/New() @@ -120,7 +125,8 @@ /// Trim for generic ERT seccies. No universal ID card changing access. /datum/id_trim/centcom/ert/security assignment = JOB_ERT_OFFICER - trim_state = "trim_ert_security" + trim_state = "trim_securityofficer" + subdepartment_color = COLOR_SECURITY_RED sechud_icon_state = SECHUD_SECURITY_RESPONSE_OFFICER /datum/id_trim/centcom/ert/security/New() @@ -131,7 +137,8 @@ /// Trim for generic ERT engineers. No universal ID card changing access. /datum/id_trim/centcom/ert/engineer assignment = JOB_ERT_ENGINEER - trim_state = "trim_ert_engineering" + trim_state = "trim_stationengineer" + subdepartment_color = COLOR_ENGINEERING_ORANGE sechud_icon_state = SECHUD_ENGINEERING_RESPONSE_OFFICER /datum/id_trim/centcom/ert/engineer/New() @@ -142,7 +149,8 @@ /// Trim for generic ERT medics. No universal ID card changing access. /datum/id_trim/centcom/ert/medical assignment = JOB_ERT_MEDICAL_DOCTOR - trim_state = "trim_ert_medical" + trim_state = "trim_medicaldoctor" + subdepartment_color = COLOR_MEDICAL_BLUE sechud_icon_state = SECHUD_MEDICAL_RESPONSE_OFFICER /datum/id_trim/centcom/ert/medical/New() @@ -153,7 +161,8 @@ /// Trim for generic ERT chaplains. No universal ID card changing access. /datum/id_trim/centcom/ert/chaplain assignment = JOB_ERT_CHAPLAIN - trim_state = "trim_ert_religious" + trim_state = "trim_chaplain" + subdepartment_color = "#58C800" sechud_icon_state = SECHUD_RELIGIOUS_RESPONSE_OFFICER /datum/id_trim/centcom/ert/chaplain/New() @@ -165,6 +174,7 @@ /datum/id_trim/centcom/ert/janitor assignment = JOB_ERT_JANITOR trim_state = "trim_ert_janitor" + subdepartment_color = COLOR_SERVICE_LIME sechud_icon_state = SECHUD_JANITORIAL_RESPONSE_OFFICER /datum/id_trim/centcom/ert/janitor/New() @@ -175,7 +185,8 @@ /// Trim for generic ERT clowns. No universal ID card changing access. /datum/id_trim/centcom/ert/clown assignment = JOB_ERT_CLOWN - trim_state = "trim_ert_entertainment" + trim_state = "trim_clown" + subdepartment_color = COLOR_MAGENTA sechud_icon_state = SECHUD_ENTERTAINMENT_RESPONSE_OFFICER /datum/id_trim/centcom/ert/clown/New() diff --git a/code/datums/id_trim/families.dm b/code/datums/id_trim/families.dm index 2a5ab685cbf..f15a85f9d2b 100644 --- a/code/datums/id_trim/families.dm +++ b/code/datums/id_trim/families.dm @@ -1,7 +1,9 @@ /// Trim for the families space police. Has all access. /datum/id_trim/space_police - trim_state = "trim_ert_security" assignment = "Space Police" + trim_state = "trim_securityofficer" + department_color = COLOR_CENTCOM_BLUE + subdepartment_color = COLOR_SECURITY_RED /datum/id_trim/space_police/New() . = ..() diff --git a/code/datums/id_trim/jobs.dm b/code/datums/id_trim/jobs.dm index 21c4916c3c2..6affac6bc64 100644 --- a/code/datums/id_trim/jobs.dm +++ b/code/datums/id_trim/jobs.dm @@ -105,6 +105,8 @@ /datum/id_trim/job/atmospheric_technician assignment = "Atmospheric Technician" trim_state = "trim_atmospherictechnician" + department_color = COLOR_ENGINEERING_ORANGE + subdepartment_color = COLOR_ENGINEERING_ORANGE sechud_icon_state = SECHUD_ATMOSPHERIC_TECHNICIAN minimal_access = list( ACCESS_ATMOSPHERICS, @@ -132,6 +134,8 @@ /datum/id_trim/job/bartender assignment = "Bartender" trim_state = "trim_bartender" + department_color = COLOR_SERVICE_LIME + subdepartment_color = COLOR_SERVICE_LIME sechud_icon_state = SECHUD_BARTENDER minimal_access = list( ACCESS_BAR, @@ -154,6 +158,8 @@ /datum/id_trim/job/botanist assignment = "Botanist" trim_state = "trim_botanist" + department_color = COLOR_SERVICE_LIME + subdepartment_color = COLOR_SERVICE_LIME sechud_icon_state = SECHUD_BOTANIST minimal_access = list( ACCESS_HYDROPONICS, @@ -176,6 +182,9 @@ assignment = "Captain" intern_alt_name = "Captain-in-Training" trim_state = "trim_captain" + department_color = COLOR_COMMAND_BLUE + subdepartment_color = COLOR_COMMAND_BLUE + department_state = "departmenthead" sechud_icon_state = SECHUD_CAPTAIN template_access = list( ACCESS_CAPTAIN, @@ -195,6 +204,8 @@ /datum/id_trim/job/cargo_technician assignment = "Cargo Technician" trim_state = "trim_cargotechnician" + department_color = COLOR_CARGO_BROWN + subdepartment_color = COLOR_CARGO_BROWN sechud_icon_state = SECHUD_CARGO_TECHNICIAN minimal_access = list( ACCESS_CARGO, @@ -217,6 +228,8 @@ /datum/id_trim/job/chaplain assignment = "Chaplain" trim_state = "trim_chaplain" + department_color = COLOR_SERVICE_LIME + subdepartment_color = COLOR_SERVICE_LIME sechud_icon_state = SECHUD_CHAPLAIN minimal_access = list( ACCESS_CHAPEL_OFFICE, @@ -236,6 +249,8 @@ /datum/id_trim/job/chemist assignment = "Chemist" trim_state = "trim_chemist" + department_color = COLOR_MEDICAL_BLUE + subdepartment_color = COLOR_MEDICAL_BLUE sechud_icon_state = SECHUD_CHEMIST minimal_access = list( ACCESS_MECH_MEDICAL, @@ -259,7 +274,10 @@ /datum/id_trim/job/chief_engineer assignment = "Chief Engineer" intern_alt_name = "Chief Engineer-in-Training" - trim_state = "trim_chiefengineer" + trim_state = "trim_stationengineer" + department_color = COLOR_COMMAND_BLUE + subdepartment_color = COLOR_ENGINEERING_ORANGE + department_state = "departmenthead" sechud_icon_state = SECHUD_CHIEF_ENGINEER extra_wildcard_access = list() minimal_access = list( @@ -297,7 +315,10 @@ /datum/id_trim/job/chief_medical_officer assignment = "Chief Medical Officer" intern_alt_name = "Chief Medical Officer-in-Training" - trim_state = "trim_chiefmedicalofficer" + trim_state = "trim_medicaldoctor" + department_color = COLOR_COMMAND_BLUE + subdepartment_color = COLOR_MEDICAL_BLUE + department_state = "departmenthead" sechud_icon_state = SECHUD_CHIEF_MEDICAL_OFFICER extra_wildcard_access = list() minimal_access = list( @@ -332,6 +353,8 @@ /datum/id_trim/job/clown assignment = "Clown" trim_state = "trim_clown" + department_color = COLOR_MAGENTA + subdepartment_color = COLOR_MAGENTA sechud_icon_state = SECHUD_CLOWN minimal_access = list( ACCESS_SERVICE, @@ -348,6 +371,8 @@ /datum/id_trim/job/cook assignment = "Cook" trim_state = "trim_cook" + department_color = COLOR_SERVICE_LIME + subdepartment_color = COLOR_SERVICE_LIME sechud_icon_state = SECHUD_COOK minimal_access = list( ACCESS_KITCHEN, @@ -373,6 +398,8 @@ /datum/id_trim/job/curator assignment = "Curator" trim_state = "trim_curator" + department_color = COLOR_SERVICE_LIME + subdepartment_color = COLOR_SERVICE_LIME sechud_icon_state = SECHUD_CURATOR minimal_access = list( ACCESS_AUX_BASE, @@ -391,6 +418,8 @@ /datum/id_trim/job/detective assignment = "Detective" trim_state = "trim_detective" + department_color = COLOR_SECURITY_RED + subdepartment_color = COLOR_SECURITY_RED sechud_icon_state = SECHUD_DETECTIVE minimal_access = list( ACCESS_BRIG_ENTRANCE, @@ -426,6 +455,8 @@ /datum/id_trim/job/geneticist assignment = "Geneticist" trim_state = "trim_geneticist" + department_color = COLOR_SCIENCE_PINK + subdepartment_color = COLOR_SCIENCE_PINK sechud_icon_state = SECHUD_GENETICIST minimal_access = list( ACCESS_GENETICS, @@ -451,6 +482,9 @@ assignment = "Head of Personnel" intern_alt_name = "Head of Personnel-in-Training" trim_state = "trim_headofpersonnel" + department_color = COLOR_COMMAND_BLUE + subdepartment_color = COLOR_SERVICE_LIME + department_state = "departmenthead" sechud_icon_state = SECHUD_HEAD_OF_PERSONNEL minimal_access = list( ACCESS_AI_UPLOAD, @@ -497,7 +531,10 @@ /datum/id_trim/job/head_of_security assignment = "Head of Security" intern_alt_name = "Head of Security-in-Training" - trim_state = "trim_headofsecurity" + trim_state = "trim_securityofficer" + department_color = COLOR_COMMAND_BLUE + subdepartment_color = COLOR_SECURITY_RED + department_state = "departmenthead" sechud_icon_state = SECHUD_HEAD_OF_SECURITY extra_access = list(ACCESS_TELEPORTER) extra_wildcard_access = list() @@ -551,6 +588,8 @@ /datum/id_trim/job/janitor assignment = "Janitor" trim_state = "trim_janitor" + department_color = COLOR_SERVICE_LIME + subdepartment_color = COLOR_SERVICE_LIME sechud_icon_state = SECHUD_JANITOR minimal_access = list( ACCESS_JANITOR, @@ -569,6 +608,8 @@ /datum/id_trim/job/lawyer assignment = "Lawyer" trim_state = "trim_lawyer" + department_color = COLOR_SERVICE_LIME + subdepartment_color = COLOR_SECURITY_RED sechud_icon_state = SECHUD_LAWYER minimal_access = list( ACCESS_BRIG_ENTRANCE, @@ -588,6 +629,8 @@ /datum/id_trim/job/medical_doctor assignment = "Medical Doctor" trim_state = "trim_medicaldoctor" + department_color = COLOR_MEDICAL_BLUE + subdepartment_color = COLOR_MEDICAL_BLUE sechud_icon_state = SECHUD_MEDICAL_DOCTOR extra_access = list( ACCESS_PLUMBING, @@ -611,6 +654,8 @@ /datum/id_trim/job/mime assignment = "Mime" trim_state = "trim_mime" + department_color = COLOR_SILVER + subdepartment_color = COLOR_WHITE sechud_icon_state = SECHUD_MIME minimal_access = list( ACCESS_SERVICE, @@ -627,6 +672,8 @@ /datum/id_trim/job/paramedic assignment = "Paramedic" trim_state = "trim_paramedic" + department_color = COLOR_MEDICAL_BLUE + subdepartment_color = COLOR_MEDICAL_BLUE sechud_icon_state = SECHUD_PARAMEDIC minimal_access = list( ACCESS_CARGO, @@ -653,7 +700,9 @@ /datum/id_trim/job/prisoner assignment = "Prisoner" - trim_state = "trim_prisoner" + trim_state = "trim_warden" + department_color = COLOR_PRISONER_BLACK + subdepartment_color = COLOR_PRISONER_ORANGE sechud_icon_state = SECHUD_PRISONER template_access = list( ACCESS_CAPTAIN, @@ -694,6 +743,8 @@ /datum/id_trim/job/psychologist assignment = "Psychologist" trim_state = "trim_psychologist" + department_color = COLOR_SERVICE_LIME + subdepartment_color = COLOR_MEDICAL_BLUE sechud_icon_state = SECHUD_PSYCHOLOGIST minimal_access = list( ACCESS_MEDICAL, @@ -712,6 +763,9 @@ /datum/id_trim/job/quartermaster assignment = "Quartermaster" trim_state = "trim_quartermaster" + department_color = COLOR_COMMAND_BLUE + subdepartment_color = COLOR_CARGO_BROWN + department_state = "departmenthead" sechud_icon_state = SECHUD_QUARTERMASTER minimal_access = list( ACCESS_AUX_BASE, @@ -743,7 +797,10 @@ /datum/id_trim/job/research_director assignment = "Research Director" intern_alt_name = "Research Director-in-Training" - trim_state = "trim_researchdirector" + trim_state = "trim_scientist" + department_color = COLOR_COMMAND_BLUE + subdepartment_color = COLOR_SCIENCE_PINK + department_state = "departmenthead" sechud_icon_state = SECHUD_RESEARCH_DIRECTOR minimal_access = list( ACCESS_AI_UPLOAD, @@ -788,6 +845,8 @@ /datum/id_trim/job/roboticist assignment = "Roboticist" trim_state = "trim_roboticist" + department_color = COLOR_SCIENCE_PINK + subdepartment_color = COLOR_SCIENCE_PINK sechud_icon_state = SECHUD_ROBOTICIST minimal_access = list( ACCESS_AUX_BASE, @@ -813,6 +872,8 @@ /datum/id_trim/job/scientist assignment = "Scientist" trim_state = "trim_scientist" + department_color = COLOR_SCIENCE_PINK + subdepartment_color = COLOR_SCIENCE_PINK sechud_icon_state = SECHUD_SCIENTIST minimal_access = list( ACCESS_AUX_BASE, @@ -839,6 +900,8 @@ /datum/id_trim/job/security_officer assignment = "Security Officer" trim_state = "trim_securityofficer" + department_color = COLOR_SECURITY_RED + subdepartment_color = COLOR_SECURITY_RED sechud_icon_state = SECHUD_SECURITY_OFFICER minimal_access = list( ACCESS_BRIG, @@ -877,7 +940,7 @@ /datum/id_trim/job/security_officer/supply assignment = "Security Officer (Cargo)" - trim_state = "trim_securityofficer_car" + subdepartment_color = COLOR_CARGO_BROWN department_access = list( ACCESS_AUX_BASE, ACCESS_CARGO, @@ -888,7 +951,7 @@ /datum/id_trim/job/security_officer/engineering assignment = "Security Officer (Engineering)" - trim_state = "trim_securityofficer_engi" + subdepartment_color = COLOR_ENGINEERING_ORANGE department_access = list( ACCESS_ATMOSPHERICS, ACCESS_AUX_BASE, @@ -900,7 +963,7 @@ /datum/id_trim/job/security_officer/medical assignment = "Security Officer (Medical)" - trim_state = "trim_securityofficer_med" + subdepartment_color = COLOR_MEDICAL_BLUE department_access = list( ACCESS_MEDICAL, ACCESS_MORGUE, @@ -912,7 +975,7 @@ /datum/id_trim/job/security_officer/science assignment = "Security Officer (Science)" - trim_state = "trim_securityofficer_sci" + subdepartment_color = COLOR_SCIENCE_PINK department_access = list( ACCESS_AUX_BASE, ACCESS_GENETICS, @@ -927,6 +990,8 @@ /datum/id_trim/job/shaft_miner assignment = "Shaft Miner" trim_state = "trim_shaftminer" + department_color = COLOR_CARGO_BROWN + subdepartment_color = COLOR_SCIENCE_PINK sechud_icon_state = SECHUD_SHAFT_MINER minimal_access = list( ACCESS_AUX_BASE, @@ -961,6 +1026,8 @@ /datum/id_trim/job/station_engineer assignment = "Station Engineer" trim_state = "trim_stationengineer" + department_color = COLOR_ENGINEERING_ORANGE + subdepartment_color = COLOR_ENGINEERING_ORANGE sechud_icon_state = SECHUD_STATION_ENGINEER minimal_access = list( ACCESS_AUX_BASE, @@ -988,6 +1055,8 @@ /datum/id_trim/job/virologist assignment = "Virologist" trim_state = "trim_virologist" + department_color = COLOR_MEDICAL_BLUE + subdepartment_color = COLOR_MEDICAL_BLUE sechud_icon_state = SECHUD_VIROLOGIST minimal_access = list( ACCESS_MECH_MEDICAL, @@ -1010,6 +1079,8 @@ /datum/id_trim/job/warden assignment = "Warden" trim_state = "trim_warden" + department_color = COLOR_SECURITY_RED + subdepartment_color = COLOR_SECURITY_RED sechud_icon_state = SECHUD_WARDEN minimal_access = list( ACCESS_ARMORY, diff --git a/code/datums/id_trim/outfits.dm b/code/datums/id_trim/outfits.dm index dee096c5555..4bb9365ebc4 100644 --- a/code/datums/id_trim/outfits.dm +++ b/code/datums/id_trim/outfits.dm @@ -6,6 +6,8 @@ /datum/id_trim/reaper_assassin assignment = "Reaper" trim_state = "trim_ert_deathcommando" + department_color = COLOR_DARK + subdepartment_color = COLOR_RED // I AM THE VIOLENCE /datum/id_trim/highlander/New() . = ..() @@ -27,6 +29,8 @@ /// Trim for VR outfits. /datum/id_trim/vr/operative assignment = "Syndicate VR Operative" + department_color = COLOR_RED + subdepartment_color = COLOR_RED /datum/id_trim/vr/operative/New() . = ..() @@ -36,6 +40,8 @@ /datum/id_trim/tunnel_clown assignment = "Tunnel Clown!" trim_state = "trim_clown" + department_color = COLOR_MAGENTA + subdepartment_color = COLOR_MAGENTA /datum/id_trim/tunnel_clown/New() . = ..() @@ -44,3 +50,5 @@ /// Trim for Bounty Hunters NOT hired by centcom. (?) /datum/id_trim/bounty_hunter assignment = "Bounty Hunter" + department_color = COLOR_PRISONER_ORANGE + subdepartment_color = COLOR_PRISONER_BLACK diff --git a/code/datums/id_trim/ruins.dm b/code/datums/id_trim/ruins.dm index b6b199bd7e8..dc48307d79f 100644 --- a/code/datums/id_trim/ruins.dm +++ b/code/datums/id_trim/ruins.dm @@ -38,12 +38,17 @@ /datum/id_trim/away/cat_surgeon assignment = "Cat Surgeon" trim_state = "trim_medicaldoctor" + department_color = COLOR_MEDICAL_BLUE + subdepartment_color = COLOR_SERVICE_LIME access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_MAINTENANCE) -/// Trim for Hilber in Hilbert's Hotel. +/// Trim for Hilbert in Hilbert's Hotel. /datum/id_trim/away/hilbert assignment = "Head Researcher" - trim_state = "trim_researchdirector" + department_color = COLOR_COMMAND_BLUE + subdepartment_color = COLOR_SCIENCE_PINK + trim_state = "trim_scientist" + department_state = "departmenthead" access = list(ACCESS_AWAY_GENERIC3, ACCESS_RESEARCH) /// Trim for beach bum lifeguards. @@ -54,6 +59,8 @@ /datum/id_trim/space_bartender assignment = "Space Bartender" trim_state = "trim_bartender" + department_color = COLOR_SERVICE_LIME + subdepartment_color = COLOR_SERVICE_LIME access = list(ACCESS_BAR) /// Trim for various Centcom corpses. @@ -69,11 +76,14 @@ /// Trim for various Centcom corpses. /datum/id_trim/centcom/corpse/private_security assignment = JOB_CENTCOM_PRIVATE_SECURITY + department_color = COLOR_CENTCOM_BLUE + subdepartment_color = COLOR_CENTCOM_BLUE access = list(ACCESS_CENT_CAPTAIN, ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_STORAGE, ACCESS_SECURITY, ACCESS_MECH_SECURITY) /// Trim for various Centcom corpses. /datum/id_trim/centcom/corpse/private_security/tradepost_officer assignment = "Tradepost Officer" + subdepartment_color = COLOR_CARGO_BROWN /// Trim for various Centcom corpses. /datum/id_trim/centcom/corpse/assault @@ -84,6 +94,8 @@ /datum/id_trim/engioutpost assignment = "Senior Station Engineer" trim_state = "trim_stationengineer" + department_color = COLOR_ENGINEERING_ORANGE + subdepartment_color = COLOR_ENGINEERING_ORANGE access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_ENGINEERING, ACCESS_ENGINEERING, ACCESS_ENGINE_EQUIP, ACCESS_MAINT_TUNNELS) /// Trim for various various ruins. @@ -95,6 +107,8 @@ /datum/id_trim/pirate assignment = "Pirate" trim_state = "trim_unknown" + department_color = COLOR_MOSTLY_PURE_RED + subdepartment_color = COLOR_MOSTLY_PURE_RED access = list(ACCESS_SYNDICATE) /// Trim for pirates. diff --git a/code/datums/id_trim/syndicate.dm b/code/datums/id_trim/syndicate.dm index 917b331a94a..d4c35252fce 100644 --- a/code/datums/id_trim/syndicate.dm +++ b/code/datums/id_trim/syndicate.dm @@ -2,6 +2,8 @@ /datum/id_trim/syndicom assignment = "Syndicate Overlord" trim_state = "trim_syndicate" + department_color = COLOR_SYNDIE_RED + subdepartment_color = COLOR_SYNDIE_RED sechud_icon_state = SECHUD_SYNDICATE access = list(ACCESS_SYNDICATE) @@ -13,6 +15,7 @@ /// Trim for Syndicate mobs, outfits and corpses. /datum/id_trim/syndicom/captain assignment = "Syndicate Ship Captain" + trim_state = "trim_captain" access = list(ACCESS_SYNDICATE, ACCESS_SYNDICATE_LEADER, ACCESS_ROBOTICS) /// Trim for Syndicate mobs, outfits and corpses. @@ -35,10 +38,13 @@ /datum/id_trim/chameleon/operative assignment = "Syndicate Operative" trim_state = "trim_syndicate" + department_color = COLOR_SYNDIE_RED + subdepartment_color = COLOR_SYNDIE_RED /// Trim for Chameleon ID cards. Many outfits, nuke ops and some corpses hold Chameleon ID cards. /datum/id_trim/chameleon/operative/clown assignment = "Syndicate Entertainment Operative" + trim_state = "trim_clown" /// Trim for Chameleon ID cards. Many outfits, nuke ops and some corpses hold Chameleon ID cards. /datum/id_trim/chameleon/operative/clown_leader diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 1711609af10..9daddd235f0 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -883,6 +883,7 @@ worn_icon_state = "card_grey" wildcard_slots = WILDCARD_LIMIT_GREY + flags_1 = UNPAINTABLE_1 /// An overlay icon state for when the card is assigned to a name. Usually manifests itself as a little scribble to the right of the job icon. var/assigned_icon_state = "assigned" @@ -891,6 +892,12 @@ var/trim_icon_override /// If this is set, will manually override the icon state for the trim. Intended for admins to VV edit and chameleon ID cards. var/trim_state_override + /// If this is set, will manually override the department color for this trim. Intended for admins to VV edit and chameleon ID cards. + var/department_color_override + /// If this is set, will manually override the department icon state for the trim. Intended for admins to VV edit and chameleon ID cards. + var/department_state_override + /// If this is set, will manually override the subdepartment color for this trim. Intended for admins to VV edit and chameleon ID cards. + var/subdepartment_color_override /// If this is set, will manually override the trim's assignmment as it appears in the crew monitor and elsewhere. Intended for admins to VV edit and chameleon ID cards. var/trim_assignment_override /// If this is set, will manually override the trim shown for SecHUDs. Intended for admins to VV edit and chameleon ID cards. @@ -906,6 +913,21 @@ return ..() + +/obj/item/card/id/advanced/attackby(obj/item/W, mob/user, params) + . = ..() + if(istype(W, /obj/item/toy/crayon)) + var/obj/item/toy/crayon/our_crayon = W + if(tgui_alert(usr, "Recolor Department or Subdepartment?", "Recoloring ID...", list("Department", "Subdepartment")) == "Department") + if(!do_after(user, 2 SECONDS)) // Doesn't technically require a spraycan's cap to be off but shhh + return + department_color_override = our_crayon.paint_color + balloon_alert(user, "recolored") + else if(do_after(user, 1 SECONDS)) + subdepartment_color_override = our_crayon.paint_color + balloon_alert(user, "recolored") + update_icon() + /obj/item/card/id/advanced/proc/update_intern_status(datum/source, mob/user) SIGNAL_HANDLER @@ -987,10 +1009,23 @@ var/trim_icon_file = trim_icon_override ? trim_icon_override : trim?.trim_icon var/trim_icon_state = trim_state_override ? trim_state_override : trim?.trim_state + var/trim_department_color = department_color_override ? department_color_override : trim?.department_color + var/trim_department_state = department_state_override ? department_state_override : trim?.department_state + var/trim_subdepartment_color = subdepartment_color_override ? subdepartment_color_override : trim?.subdepartment_color - if(!trim_icon_file || !trim_icon_state) + if(!trim_icon_file || !trim_icon_state || !trim_department_color || !trim_subdepartment_color || !trim_department_state) return + /// We handle department and subdepartment overlays first, so the job icon is always on top. + var/mutable_appearance/department_overlay = mutable_appearance(trim_icon_file, trim_department_state) + department_overlay.color = trim_department_color + . += department_overlay + + var/mutable_appearance/subdepartment_overlay = mutable_appearance(trim_icon_file, "subdepartment") + subdepartment_overlay.color = trim_subdepartment_color + . += subdepartment_overlay + + /// Then we handle the job's icon here. . += mutable_appearance(trim_icon_file, trim_icon_state) /obj/item/card/id/advanced/get_trim_assignment() @@ -1007,12 +1042,19 @@ /obj/item/card/id/advanced/get_trim_sechud_icon_state() return sechud_icon_state_override || ..() +/obj/item/card/id/advanced/rainbow + name = "rainbow identification card" + desc = "A rainbow card, promoting fun in a 'business proper' sense!" + icon_state = "card_rainbow" + worn_icon_state = "card_rainbow" + /obj/item/card/id/advanced/silver name = "silver identification card" desc = "A silver card which shows honour and dedication." icon_state = "card_silver" worn_icon_state = "card_silver" inhand_icon_state = "silver_id" + assigned_icon_state = "assigned_silver" wildcard_slots = WILDCARD_LIMIT_SILVER /datum/id_trim/maint_reaper @@ -1031,6 +1073,7 @@ icon_state = "card_gold" worn_icon_state = "card_gold" inhand_icon_state = "gold_id" + assigned_icon_state = "assigned_gold" wildcard_slots = WILDCARD_LIMIT_GOLD /obj/item/card/id/advanced/gold/Initialize(mapload) diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index 34a0a9dc1cf..8c9d0b17721 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -48,6 +48,7 @@ name = "Clown" jobtype = /datum/job/clown + id = /obj/item/card/id/advanced/rainbow id_trim = /datum/id_trim/job/clown uniform = /obj/item/clothing/under/rank/civilian/clown backpack_contents = list( @@ -100,48 +101,3 @@ var/datum/atom_hud/fan = GLOB.huds[DATA_HUD_FAN] fan.show_to(H) H.faction |= FACTION_CLOWN - -//Skyrat Edit Start: Floor Demon -/datum/outfit/job/clown_free - name = "Clown" - - belt = /obj/item/modular_computer/tablet/pda/clown - ears = /obj/item/radio/headset/headset_srv - uniform = /obj/item/clothing/under/rank/civilian/clown - shoes = /obj/item/clothing/shoes/clown_shoes - mask = /obj/item/clothing/mask/gas/clown_hat - l_pocket = /obj/item/bikehorn - backpack_contents = list( - /obj/item/stamp/clown = 1, - /obj/item/reagent_containers/spray/waterflower = 1, - /obj/item/food/grown/banana = 1, - /obj/item/instrument/bikehorn = 1, - ) - - implants = list(/obj/item/implant/sad_trombone) - - backpack = /obj/item/storage/backpack/clown - satchel = /obj/item/storage/backpack/clown - duffelbag = /obj/item/storage/backpack/duffelbag/clown //strangely has a duffel - - box = /obj/item/storage/box/hug/survival - - chameleon_extras = /obj/item/stamp/clown - - id_trim = /datum/id_trim/job/clown - -/datum/outfit/job/clown/pre_equip(mob/living/carbon/human/H, visualsOnly) - . = ..() - if(HAS_TRAIT(SSstation, STATION_TRAIT_BANANIUM_SHIPMENTS)) - backpack_contents[/obj/item/stack/sheet/mineral/bananium/five] = 1 - -/datum/outfit/job/clown/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - if(visualsOnly) - return - H.dna.add_mutation(/datum/mutation/human/clumsy) - for(var/datum/mutation/human/clumsy/M in H.dna.mutations) - M.mutadone_proof = FALSE - var/datum/atom_hud/fan = GLOB.huds[DATA_HUD_FAN] - fan.show_to(H) -//Skyrat Edit Stop: Floor Demon diff --git a/icons/hud/radial.dmi b/icons/hud/radial.dmi index 54b28e2f36f..c19d67756d2 100644 Binary files a/icons/hud/radial.dmi and b/icons/hud/radial.dmi differ diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi index 124b7a22129..ad51ded3b7b 100644 Binary files a/icons/obj/card.dmi and b/icons/obj/card.dmi differ