Adds an option to have four eyes + Multitool changing Robotic Eye Color (#4005)

## About The Pull Request

Adds a new customization option via preferences, quad eyes!
> Gives the character four eyes with the option of setting the offset up
/ down.

Also gives the multitool the ability to change the eye color(s) (yes
both of them, separately)
## Why It's Good For The Game

Customization is good. Looks neat.
## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>

+0 offset


![image](https://github.com/user-attachments/assets/03125f56-db87-4d3c-9c9f-632b69d905a5)


![image](https://github.com/user-attachments/assets/fe4b2f6f-669e-4885-94c5-1767c207091b)


![image](https://github.com/user-attachments/assets/e626c52c-d804-4f63-9b88-90cdc0f78fa9)


![image](https://github.com/user-attachments/assets/b38026a0-dc7b-48c8-a508-2755048c7d12)


![image](https://github.com/user-attachments/assets/430f97b3-22f6-43f5-a0f1-5c228dbbdad2)


![image](https://github.com/user-attachments/assets/a87ff58c-f3b6-4ffd-959f-76fa04ffc17d)


![image](https://github.com/user-attachments/assets/5a834225-cef6-4a0b-ab59-f1984c6fb0f4)

</details>

## Changelog
🆑
add: Added new customization option to give a character four eyes.
add: Added the option to change robotic eye colors using a multitool.
/🆑

---------

Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Co-authored-by: xPokee <catmc8565@gmail.com>
This commit is contained in:
Spaghetti-bit
2025-10-23 02:24:20 +03:00
committed by GitHub
co-authored by The Sharkening Roxy xPokee
parent b169a362c7
commit b6f901d7f8
8 changed files with 76 additions and 0 deletions
@@ -15,6 +15,9 @@
//For the hemophage quirk that allows hemophages to eat/drink normal food/drink.
#define TRAIT_MASQUERADE_FOOD "masquerade_food"
/// Preference toggleable trait that gives a mob four eyes
#define TRAIT_QUAD_EYES "quad_eyes"
//basic security hud
#define TRAIT_BASIC_SECURITY_HUD "basic_security_hud"
+1
View File
@@ -388,6 +388,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_MARTIAL_ARTS_IMMUNE" = TRAIT_MARTIAL_ARTS_IMMUNE,
"TRAIT_MANSUS_TOUCHED" = TRAIT_MANSUS_TOUCHED,
"TRAIT_MASQUERADE_FOOD" = TRAIT_MASQUERADE_FOOD, // BUBBER EDIT
"TRAIT_QUAD_EYES" = TRAIT_QUAD_EYES, // BUBBER EDIT
"TRAIT_MEDICAL_HUD" = TRAIT_MEDICAL_HUD,
"TRAIT_MEDICAL_HUD_SENSOR_ONLY" = TRAIT_MEDICAL_HUD_SENSOR_ONLY,
"TRAIT_MESON_VISION" = TRAIT_MESON_VISION,
@@ -273,6 +273,21 @@
var/mutable_appearance/eye_left = mutable_appearance(eye_icon, "[eye_icon_state]_l", -eyes_layer, parent) // SKYRAT EDIT CHANGE - Customization - ORIGINAL: var/mutable_appearance/eye_left = mutable_appearance('icons/mob/human/human_face.dmi', "[eye_icon_state]_l", -EYES_LAYER, parent)
var/mutable_appearance/eye_right = mutable_appearance(eye_icon, "[eye_icon_state]_r", -eyes_layer, parent) // SKYRAT EDIT CHANGE - Customization - ORIGINAL: var/mutable_appearance/eye_right = mutable_appearance('icons/mob/human/human_face.dmi', "[eye_icon_state]_r", -EYES_LAYER, parent)
// BEGIN BUBBER ADDITION:
if(HAS_TRAIT(owner, TRAIT_QUAD_EYES)) // (*) (*) v (*) (*)
var/mutable_appearance/eye_left_2 = new /mutable_appearance(eye_left)
eye_left_2.pixel_x -= 1
eye_left_2.pixel_y += parent.quad_eyes_offset
var/mutable_appearance/eye_right_2 = new /mutable_appearance(eye_right)
eye_right_2.pixel_x += 1
eye_right_2.pixel_y += parent.quad_eyes_offset
eye_left.underlays.Add(eye_left_2)
eye_right.underlays.Add(eye_right_2)
// END BUBBER ADDITION
var/list/overlays = list(eye_left, eye_right)
if(overlay_ignore_lighting && !(parent.obscured_slots & HIDEEYES))
@@ -0,0 +1,33 @@
/datum/preference/toggle/quad_eyes
category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
savefile_key = "quad_eyes"
savefile_identifier = PREFERENCE_CHARACTER
priority = PREFERENCE_PRIORITY_BODYPARTS + 0.1
default_value = FALSE
/datum/preference/toggle/quad_eyes/is_accessible(datum/preferences/preferences)
if(!..(preferences))
return FALSE
return TRUE
/datum/preference/toggle/quad_eyes/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences)
if(!value)
return
ADD_TRAIT(target, TRAIT_QUAD_EYES, TRAIT_GENERIC)
/datum/preference/numeric/quad_eyes_offset
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.
minimum = -2
/datum/preference/numeric/quad_eyes_offset/is_accessible(datum/preferences/preferences)
if(!..(preferences))
return FALSE
return (preferences.read_preference(/datum/preference/toggle/quad_eyes))
/datum/preference/numeric/quad_eyes_offset/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences)
if(!value)
return
target.quad_eyes_offset = value
@@ -1,3 +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
/mob/living/carbon/human/species/shadekin
race = /datum/species/shadekin
@@ -16,3 +16,10 @@
blink_animation = FALSE
iris_overlay = null
lighting_cutoff = LIGHTING_CUTOFF_LOW
/obj/item/organ/eyes/robotic/multitool_act(mob/living/user, obj/item/tool)
. = ..()
// Choose left and right eye color
to_chat(user, span_notice("Changing Eye Color: Pressing 'Cancel' or closing out the window will return the eye's current color."))
eye_color_left = tgui_color_picker(user, "Pick a new color", "Left Eye Color", eye_color_left)
eye_color_right = tgui_color_picker(user, "Pick a new color", "Right Eye Color", eye_color_right)
+1
View File
@@ -9312,6 +9312,7 @@
#include "modular_zubbers\code\modules\customization\height_scaling\icons.dm"
#include "modular_zubbers\code\modules\customization\height_scaling\preferences.dm"
#include "modular_zubbers\code\modules\customization\modules\reagents\drink_reagents.dm"
#include "modular_zubbers\code\modules\customization\quad_eyes\preferences.dm"
#include "modular_zubbers\code\modules\customization\species\lycans\__DEFINES.dm"
#include "modular_zubbers\code\modules\customization\species\lycans\_cursekin_species.dm"
#include "modular_zubbers\code\modules\customization\species\lycans\_lycan_species.dm"
@@ -271,6 +271,18 @@ export const ears_emissive: Feature<boolean[]> = {
component: FeatureTriBoolInput,
};
export const quad_eyes: FeatureToggle = {
name: 'Quad Eyes',
description:
'Gives the character four eyes, may have some oddities with custom eyes (Snail, moth, shadekin, akula, etc...) - ( ** v ** )',
component: CheckboxInput,
};
export const quad_eyes_offset: Feature<number> = {
name: 'Quad Eyes Offset',
component: FeatureNumberInput,
};
export const wings_toggle: FeatureToggle = {
name: 'Wings',
component: CheckboxInput,