diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 1176e870a6d..d122a7f9777 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -455,6 +455,9 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() var/icon/ears_s = get_ears_overlay() if(ears_s) face_standing.Blend(ears_s, ICON_OVERLAY) + var/icon/hair_acc_s = get_hair_accessory_overlay() + if(hair_acc_s) + face_standing.Blend(hair_acc_s, ICON_OVERLAY) if(istype(head_organ,/obj/item/organ/external/head/vr)) var/obj/item/organ/external/head/vr/head_organ_vr = head_organ overlays_standing[HAIR_LAYER] = image(face_standing, layer = BODY_LAYER+HAIR_LAYER, "pixel_y" = head_organ_vr.head_offset) diff --git a/code/modules/vore/appearance/preferences_vr.dm b/code/modules/vore/appearance/preferences_vr.dm index e362f51b3e6..5897cb2a484 100644 --- a/code/modules/vore/appearance/preferences_vr.dm +++ b/code/modules/vore/appearance/preferences_vr.dm @@ -10,6 +10,16 @@ /mob/living/carbon/human // Horray Furries! + var/datum/sprite_accessory/hair_accessory/hair_accessory_style = null + var/r_acc = 30 + var/g_acc = 30 + var/b_acc = 30 + var/r_acc2 = 30 + var/g_acc2 = 30 + var/b_acc2 = 30 + var/r_acc3 = 30 + var/g_acc3 = 30 + var/b_acc3 = 30 var/datum/sprite_accessory/ears/ear_style = null var/r_ears = 30 var/g_ears = 30 diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm index 2a2d7592d9a..03b0b3c7402 100644 --- a/code/modules/vore/appearance/sprite_accessories_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_vr.dm @@ -2022,3 +2022,33 @@ icon_state = "xenotailalt_fullcolour" do_colouration = 1 color_blend_mode = ICON_MULTIPLY + +/* +//////////////////////////// +/ =--------------------= / +/ == Misc Definitions == / +/ =--------------------= / +//////////////////////////// +*/ + +// Yes, I have to add all of this just to make some glowy hair. +// No, this isn't a character creation option, but... I guess in the future it could be, if anyone wants that? + +/datum/sprite_accessory/hair_accessory + name = "You should not see this..." + icon = 'icons/mob/vore/hair_accessories.dmi' + do_colouration = 0 // Set to 1 to blend (ICON_ADD) hair color + + var/ignores_lighting = 0 // Whether or not this hair accessory will ignore lighting and glow in the dark. + var/color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1 + var/extra_overlay // Icon state of an additional overlay to blend in. + var/extra_overlay2 + var/desc = "You should not see this..." + +/datum/sprite_accessory/hair_accessory/verie_hair_glow + + name = "verie's hair glow" + desc = "" + icon_state = "verie_hair_glow" + ignores_lighting = 1 + ckeys_allowed = list("vitoras") // This probably won't come into play EVER but better safe than sorry \ No newline at end of file diff --git a/code/modules/vore/appearance/update_icons_vr.dm b/code/modules/vore/appearance/update_icons_vr.dm index ab470c6af6b..b85b06aa63c 100644 --- a/code/modules/vore/appearance/update_icons_vr.dm +++ b/code/modules/vore/appearance/update_icons_vr.dm @@ -20,6 +20,57 @@ var/global/list/wing_icon_cache = list() return ears_s return null +/mob/living/carbon/human/proc/get_hair_accessory_overlay() + if(hair_accessory_style && !(head && (head.flags_inv & BLOCKHEADHAIR))) + if(hair_accessory_style.ignores_lighting) + var/image/hair_acc_s = get_hair_accessory_glow_image() + hair_acc_s.plane = PLANE_LIGHTING_ABOVE + return hair_acc_s + else + var/icon/hair_acc_s = get_hair_accessory_icon() + return hair_acc_s + + return null + +/mob/living/carbon/human/proc/get_hair_accessory_icon() + var/icon/hair_acc_s = new/icon("icon" = hair_accessory_style.icon, "icon_state" = hair_accessory_style.icon_state) + if(hair_accessory_style.do_colouration) + hair_acc_s.Blend(rgb(src.r_ears, src.g_ears, src.b_ears), hair_accessory_style.color_blend_mode) + + if(hair_accessory_style.extra_overlay) + var/icon/overlay = new/icon("icon" = hair_accessory_style.icon, "icon_state" = hair_accessory_style.extra_overlay) + overlay.Blend(rgb(src.r_ears2, src.g_ears2, src.b_ears2), hair_accessory_style.color_blend_mode) + hair_acc_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + + if(hair_accessory_style.extra_overlay2) //MORE COLOURS IS BETTERER + var/icon/overlay = new/icon("icon" = hair_accessory_style.icon, "icon_state" = hair_accessory_style.extra_overlay2) + overlay.Blend(rgb(src.r_ears3, src.g_ears3, src.b_ears3), hair_accessory_style.color_blend_mode) + hair_acc_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + return hair_acc_s + +/mob/living/carbon/human/proc/get_hair_accessory_glow_image() + var/image/hair_acc_s = new/image("icon" = hair_accessory_style.icon, "icon_state" = hair_accessory_style.icon_state) + if(hair_accessory_style.do_colouration) + hair_acc_s.Blend(rgb(src.r_ears, src.g_ears, src.b_ears), hair_accessory_style.color_blend_mode) + hair_accessory_style.plane = PLANE_LIGHTING_ABOVE + + if(hair_accessory_style.extra_overlay) + var/image/overlay = new/image("icon" = hair_accessory_style.icon, "icon_state" = hair_accessory_style.extra_overlay) + overlay.Blend(rgb(src.r_ears2, src.g_ears2, src.b_ears2), hair_accessory_style.color_blend_mode) + overlay.plane = PLANE_LIGHTING_ABOVE + hair_acc_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + + if(hair_accessory_style.extra_overlay2) //MORE COLOURS IS BETTERER + var/image/overlay = new/image("icon" = hair_accessory_style.icon, "icon_state" = hair_accessory_style.extra_overlay2) + overlay.Blend(rgb(src.r_ears3, src.g_ears3, src.b_ears3), hair_accessory_style.color_blend_mode) + overlay.plane = PLANE_LIGHTING_ABOVE + hair_acc_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + return hair_acc_s + /mob/living/carbon/human/proc/get_tail_image() //If you are FBP with tail style and didn't set a custom one var/datum/robolimb/model = isSynthetic() @@ -103,6 +154,7 @@ var/global/list/wing_icon_cache = list() return image(wing_s) + // TODO - Move this to where it should go ~Leshana /mob/proc/stop_flying() if(QDESTROYING(src)) diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index f76afcb2e0f..da569a1476f 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -1354,4 +1354,37 @@ /obj/item/weapon/reagent_containers/food/drinks/glass2/fluff/claraflask/update_icon() ..() name = initial(name) - desc = initial(desc) \ No newline at end of file + desc = initial(desc) + +//Vitoras: Verie +/obj/item/weapon/fluff/verie + name = "glowy hairbrush" + desc = "A pulse of light periodically zips across the top of this blue brush. This... is not an ordinary hair care tool. \ + A small inscription can be seen in one side of the brush: \"THIS DEVICE IS ONLY COMPATIBLE WITH MODEL RI \ + POSITRONICS IN A MODEL E CHASSIS.\"" + icon = 'icons/vore/custom_items_vr.dmi' + icon_state = "verie_brush" + + var/owner = "vitoras" + +/obj/item/weapon/fluff/verie/attack_self(mob/living/carbon/human/user) + if (istype(user)) + // It's only made for Verie's chassis silly! + if (user.ckey != owner) + to_chat(user, "The brush's teeth are far too rough to even comb your hair. Apparently, \ + this device was not made for people like you.") + return + + user.hair_accessory_style = /datum/sprite_accessory/hair_accessory/verie_hair_glow + user.update_hair() + user.visible_message("[user] combs her hair. \The [src] leaves behind glowing cyan highlights as it passes through \ + her black strands.", \ + "You brush your hair. The teeth react to your nanites and stimulate them into giving off a brillian cyan glow!") + return + else + to_chat(user, "\The [src] isn't compatible with your body as it is now.") + + + + + diff --git a/icons/mob/vore/hair_accessories_vr.dmi b/icons/mob/vore/hair_accessories_vr.dmi new file mode 100644 index 00000000000..e519a6e445a Binary files /dev/null and b/icons/mob/vore/hair_accessories_vr.dmi differ diff --git a/icons/vore/custom_items_vr.dmi b/icons/vore/custom_items_vr.dmi index 4856d6c311f..10580ec71f0 100644 Binary files a/icons/vore/custom_items_vr.dmi and b/icons/vore/custom_items_vr.dmi differ