From 10240480958fc98cc794e5a556aa45d681a2943c Mon Sep 17 00:00:00 2001 From: explosivekitty Date: Sat, 25 Apr 2026 02:27:58 +0200 Subject: [PATCH] Quad eyes and triple eyes for your characters (#5461) ## About The Pull Request Adds triple eyeballs to markings/organs under the eyes tab. (They don't show in the editor BUT they work in game) Makes quad eyes work again! also fixes them because they had issue where you could see your eyes under any headgear so they are layered correctly now. Additionally you further customize how far away they are from your real eyes ## Why It's Good For The Game They aren't working, and before that they were working but the layering was bugged. now you can have multiple eyeballs ## Proof Of Testing
Screenshots/Videos image image2 trieyes
## Changelog :cl: add: Slime triple eyes are now selectable in markings/organs under eyes tab add: Width customization for quad eyes fix: fixes quad eyes to work fix: quad eyes are now layered correctly /:cl: --- .../surgery/organs/internal/eyes/_eyes.dm | 19 ++++++++++++++++--- .../modules/client/augment/organs.dm | 4 ++++ .../customization/quad_eyes/preferences.dm | 19 ++++++++++++++++++- .../modules/mob/living/carbon/human/human.dm | 1 + .../skyrat/species_features.tsx | 5 +++++ 5 files changed, 44 insertions(+), 4 deletions(-) diff --git a/code/modules/surgery/organs/internal/eyes/_eyes.dm b/code/modules/surgery/organs/internal/eyes/_eyes.dm index 3dab5ef3190..17a34ea269e 100644 --- a/code/modules/surgery/organs/internal/eyes/_eyes.dm +++ b/code/modules/surgery/organs/internal/eyes/_eyes.dm @@ -334,15 +334,28 @@ var/mutable_appearance/left_scar = mutable_appearance('icons/mob/human/human_eyes.dmi', "eye_scar_left", -EYES_LAYER, parent, alpha = eyes_opacity) left_scar.color = my_head.draw_color overlays += left_scar - //BUBBER EDIT END - EYES OPACITY - // BUBBER EDIT START - Customization Emissives and eyes opacity + + // BUBBER EDIT START - Customization Emissives & Quad Eyes if(is_emissive) var/mutable_appearance/emissive_left = emissive_appearance_copy(eye_left, owner) var/mutable_appearance/emissive_right = emissive_appearance_copy(eye_right, owner) overlays += emissive_left overlays += emissive_right - // BUBBER EDIT END - Customization Emissives and eyes opacity + + if(HAS_TRAIT(owner, TRAIT_QUAD_EYES)) // (*) (*) v (*) (*) + var/mutable_appearance/eye_left_2 = mutable_appearance('icons/mob/human/human_eyes.dmi', "eyes_l", -EYES_LAYER, parent) + eye_left_2.color = parent.get_left_eye_color() + eye_left_2.pixel_w -= parent.quad_eyes_offset_width + eye_left_2.pixel_z += parent.quad_eyes_offset + var/mutable_appearance/eye_right_2 = mutable_appearance('icons/mob/human/human_eyes.dmi', "eyes_r", -EYES_LAYER, parent) + eye_right_2.color = parent.get_right_eye_color() + eye_right_2.pixel_w += parent.quad_eyes_offset_width + eye_right_2.pixel_z += parent.quad_eyes_offset + + overlays += eye_left_2 + overlays += eye_right_2 + // BUBBER EDIT END - Customization Emissives & Quad Eyes if(my_head.worn_face_offset) for (var/mutable_appearance/overlay as anything in overlays) diff --git a/modular_zubbers/code/modules/customization/modules/client/augment/organs.dm b/modular_zubbers/code/modules/customization/modules/client/augment/organs.dm index 950cc7321c8..29f54d32a46 100644 --- a/modular_zubbers/code/modules/customization/modules/client/augment/organs.dm +++ b/modular_zubbers/code/modules/customization/modules/client/augment/organs.dm @@ -1,3 +1,7 @@ +/datum/augment_item/organ/eyes/jelly + name = "Slime Tri-eyes" + path = /obj/item/organ/eyes/jelly + /datum/augment_item/organ/tongue/xenobubble_tongue name = "Alien tongue" path = /obj/item/organ/tongue/xenobubble_tongue diff --git a/modular_zubbers/code/modules/customization/quad_eyes/preferences.dm b/modular_zubbers/code/modules/customization/quad_eyes/preferences.dm index c3739f46037..358a0e46a6f 100644 --- a/modular_zubbers/code/modules/customization/quad_eyes/preferences.dm +++ b/modular_zubbers/code/modules/customization/quad_eyes/preferences.dm @@ -19,7 +19,7 @@ category = PREFERENCE_CATEGORY_SECONDARY_FEATURES savefile_key = "quad_eyes_offset" savefile_identifier = PREFERENCE_CHARACTER - maximum = 0 // Any value higher than this and the eyes don't appear after the character is spawned in. + maximum = 2 // Any value higher than this and the eyes don't appear after the character is spawned in. minimum = -2 /datum/preference/numeric/quad_eyes_offset/is_accessible(datum/preferences/preferences) @@ -31,3 +31,20 @@ if(!value) return target.quad_eyes_offset = value + +/datum/preference/numeric/quad_eyes_offset_width + category = PREFERENCE_CATEGORY_SECONDARY_FEATURES + savefile_key = "quad_eyes_offset_width" + savefile_identifier = PREFERENCE_CHARACTER + maximum = 2 + minimum = -2 + +/datum/preference/numeric/quad_eyes_offset_width/is_accessible(datum/preferences/preferences) + if(!..(preferences)) + return FALSE + return (preferences.read_preference(/datum/preference/toggle/quad_eyes)) + +/datum/preference/numeric/quad_eyes_offset_width/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) + if(!value) + return + target.quad_eyes_offset_width = value diff --git a/modular_zubbers/code/modules/mob/living/carbon/human/human.dm b/modular_zubbers/code/modules/mob/living/carbon/human/human.dm index d275f5f59ce..0546c0a3b0f 100644 --- a/modular_zubbers/code/modules/mob/living/carbon/human/human.dm +++ b/modular_zubbers/code/modules/mob/living/carbon/human/human.dm @@ -1,6 +1,7 @@ /mob/living/carbon/human /// Quad eyes offset in pixels. Positive is up, negative is down. (Suggested to not go above 2 or below -2) var/quad_eyes_offset = 0 + var/quad_eyes_offset_width = 1 /// Used for footstep type pref, to apply to any new legs that get added to this mob. Uses a var instead of checking prefs because there are a lot of clientless mob situations. var/footstep_type diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx index 5d1b123687f..3d14ba49a9d 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx @@ -289,6 +289,11 @@ export const quad_eyes_offset: Feature = { component: FeatureNumberInput, }; +export const quad_eyes_offset_width: Feature = { + name: 'Quad Eyes Offset Width', + component: FeatureNumberInput, +}; + export const wings_toggle: FeatureToggle = { name: 'Wings', component: CheckboxInput,