diff --git a/code/modules/organs/subtypes/standard_vr.dm b/code/modules/organs/subtypes/standard_vr.dm new file mode 100644 index 00000000000..6ba220c6eb8 --- /dev/null +++ b/code/modules/organs/subtypes/standard_vr.dm @@ -0,0 +1,58 @@ +//For custom heads with custom parts since the base code is restricted to a single icon file. + +/obj/item/organ/external/head/vr/get_icon() + + ..() + overlays.Cut() + if(!owner || !owner.species) + return + + for(var/M in markings) + var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"] + var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]") + mark_s.Blend(markings[M]["color"], ICON_ADD) + overlays |= mark_s //So when it's not on your body, it has icons + mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons + icon_cache_key += "[M][markings[M]["color"]]" + + if(owner.should_have_organ(O_EYES))//Moved on top of markings. + var/obj/item/organ/internal/eyes/eyes = owner.internal_organs_by_name[O_EYES] + if(eye_icon) + var/icon/eyes_icon = new/icon(eye_icons_vr, eye_icon_vr) + if(eyes) + eyes_icon.Blend(rgb(eyes.eye_colour[1], eyes.eye_colour[2], eyes.eye_colour[3]), ICON_ADD) + else + eyes_icon.Blend(rgb(128,0,0), ICON_ADD) + mob_icon.Blend(eyes_icon, ICON_OVERLAY) + overlays |= eyes_icon + + if(owner.lip_style && (species && (species.appearance_flags & HAS_LIPS))) + var/icon/lip_icon = new/icon('icons/mob/human_face.dmi', "lips_[owner.lip_style]_s") + overlays |= lip_icon + mob_icon.Blend(lip_icon, ICON_OVERLAY) + + if(owner.f_style) + var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[owner.f_style] + if(facial_hair_style && facial_hair_style.species_allowed && (species.get_bodytype(owner) in facial_hair_style.species_allowed)) + var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") + if(facial_hair_style.do_colouration) + facial_s.Blend(rgb(owner.r_facial, owner.g_facial, owner.b_facial), ICON_ADD) + overlays |= facial_s + + if(owner.h_style && !(owner.head && (owner.head.flags_inv & BLOCKHEADHAIR))) + var/datum/sprite_accessory/hair_style = hair_styles_list[owner.h_style] + if(hair_style && (species.get_bodytype(owner) in hair_style.species_allowed)) + var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") + if(hair_style.do_colouration && islist(h_col) && h_col.len >= 3) + hair_s.Blend(rgb(h_col[1], h_col[2], h_col[3]), ICON_ADD) + overlays |= hair_s + + return mob_icon + +/obj/item/organ/external/head/vr + var/eye_icons_vr = 'icons/mob/human_face_vr.dmi' + var/eye_icon_vr = "blank_eyes" + eye_icon = "blank_eyes" + +/obj/item/organ/external/head/vr/sergal + eye_icon_vr = "eyes_sergal" diff --git a/icons/mob/human_races/markings_vr.dmi b/icons/mob/human_races/markings_vr.dmi index 4a22216f14c..9692fc623eb 100644 Binary files a/icons/mob/human_races/markings_vr.dmi and b/icons/mob/human_races/markings_vr.dmi differ diff --git a/vorestation.dme b/vorestation.dme index 41cb5cfc711..f2eb525b26e 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2025,6 +2025,7 @@ #include "code\modules\organs\subtypes\machine.dm" #include "code\modules\organs\subtypes\seromi.dm" #include "code\modules\organs\subtypes\standard.dm" +#include "code\modules\organs\subtypes\standard_vr.dm" #include "code\modules\organs\subtypes\unathi.dm" #include "code\modules\organs\subtypes\unbreakable.dm" #include "code\modules\organs\subtypes\vox.dm"