Assorted X-ray Eyes/Goggles Changes + Penlight Message Fix (#94860)

## About The Pull Request

X-ray eyes now possess the FLASH_PROTECTION_SENSITIVE define, meaning
you need at least an equipped welding mask to protect from flashes.
Syndicate x-ray goggles get a relatively unused sprite (it also belongs
to material goggles, which are only mapped in twice in the entire
codebase), aligning with the color of the x-ray eyes. Moth thermal eyes
are raised a step up to being hyper-sensitive to flashes. Fixed a couple
of penlight messages that I noticed while browsing the _eyes.dm file, as
well, to display properly.

## Why It's Good For The Game

The decision to either choose thermal eyes or x-ray eyes, when
**unlocked by the same techweb node**, is heavily one-sided if you know
anything about either. Thermal eyes allow you to see only mobs through
walls and give you pseudo-night vision, while also making you sensitive
to flashes, in opposition to x-ray eyes that allow you to see everything
without any added flash sensitivity, albeit with no night vision. Even
the changeling ability makes you hyper-sensitive to flashes while X-ray
mode is active, which is something restricted to only them. With this
change, not only does which eye implant type you choose matter, but it
also gives more use to the thermal sight genetics mutation, as that does
not affect flash sensitivity at the cost of only having a temporary
duration per activation. Given flash vulnerability for their regular
eyes, thermal moth eyes are made hyper-sensitive to preserve this
consistency between both moths and the x-ray/thermal pairing. And for
the Syndicate goggles, it also brings consistency with the technology,
as the crew's eyes already establish a color for x-ray technology and
lack of night vision. The bug fixes are just good for the 0.01% of
doctors who would use the penlight.

## Changelog
🆑
balance: X-ray eyes now possess flash sensitivity, requiring additional
flash protection to negate bright lights.
balance: X-ray goggles also no longer have pseudo night vision, putting
them more in line with the eyes.
balance: Moth thermal eyes are hyper-sensitive to flashes, like their
x-ray brothers.
fix: Penlight messages for examining zombie and x-ray eyes work as they
should, with maintenance eyes losing a superfluous period.
image: X-ray goggles now have a relatively unique, blue tint and glasses
color to represent their capabilities.
/🆑
This commit is contained in:
Geoengi
2026-01-28 20:29:06 +00:00
committed by GitHub
parent a1ce713391
commit 437e95142f
2 changed files with 12 additions and 7 deletions
@@ -620,10 +620,10 @@
name = "undead eyes"
desc = "Somewhat counterintuitively, these half-rotten eyes actually have superior vision to those of a living human."
color_cutoffs = list(25, 35, 5)
penlight_message = "are rotten and decayed"
penlight_message = "are rotten and decayed!"
/obj/item/organ/eyes/zombie/penlight_examine(mob/living/viewer, obj/item/examtool)
return span_danger(penlight_message)
return span_danger("[owner.p_Their()] eyes [penlight_message]")
/obj/item/organ/eyes/alien
name = "alien eyes"
@@ -707,8 +707,9 @@
eye_color_left = "#3cb8a5"
eye_color_right = "#3cb8a5"
sight_flags = SEE_MOBS | SEE_OBJS | SEE_TURFS
flash_protect = FLASH_PROTECTION_SENSITIVE
organ_traits = list(TRAIT_XRAY_VISION)
penlight_message = "replaced by small radiation emitters and detectors"
penlight_message = "are replaced by small radiation emitters and detectors"
/obj/item/organ/eyes/robotic/thermals
name = "thermal eyes"
@@ -1090,7 +1091,7 @@
eye_color_left = "#3c4e52"
eye_color_right = "#3c4e52"
blink_animation = FALSE
flash_protect = FLASH_PROTECTION_SENSITIVE
flash_protect = FLASH_PROTECTION_HYPER_SENSITIVE
pupils_name = "aperture clusters"
/obj/item/organ/eyes/robotic/shield/moth
@@ -1115,13 +1116,14 @@
penlight_message = "are bulbous clusters of LEDs and cameras"
pupils_name = "aperture clusters"
/obj/item/organ/eyes/robotic/thermals/moth //we inherit flash weakness from thermals
/obj/item/organ/eyes/robotic/thermals/moth
name = "thermal moth eyes"
icon_state = "eyes_moth_cyber_thermal"
eye_icon_state = "motheyes_white"
eye_color_left = "#901f38"
eye_color_right = "#901f38"
blink_animation = FALSE
flash_protect = FLASH_PROTECTION_HYPER_SENSITIVE
pupils_name = "sensor clusters"
penlight_message = "are two clustered hemispheres of thermal sensors"
@@ -1173,13 +1175,13 @@
low_light_cutoff = list(5, 12, 20)
medium_light_cutoff = list(15, 20, 30)
high_light_cutoff = list(30, 35, 50)
penlight_message = "glow a foggy red, sizzling under the light"
penlight_message = "glow a foggy red, sizzling under the light!"
/obj/item/organ/eyes/night_vision/maintenance_adapted/penlight_examine(mob/living/viewer, obj/item/examtool)
if(!owner.is_blind())
to_chat(owner, span_danger("Your eyes sizzle agonizingly as light is shone on them!"))
apply_organ_damage(20 * examtool.light_power) //that's 0.5 lightpower for a penlight, so one penlight shining is equivalent to two seconds in a lit area
return span_danger("[owner.p_Their()] eyes [penlight_message].")
return span_danger("[owner.p_Their()] eyes [penlight_message]")
/obj/item/organ/eyes/night_vision/maintenance_adapted/on_life(seconds_per_tick)
if(owner.get_eye_protection() <= FLASH_PROTECTION_SENSITIVE && !owner.is_blind() && isturf(owner.loc) && owner.has_light_nearby(light_amount=0.5)) //we allow a little more than usual so we can produce light from the adapted eyes