diff --git a/code/datums/mutations.dm b/code/datums/mutations.dm
index 0b17f8d3e21..07999b41ed1 100644
--- a/code/datums/mutations.dm
+++ b/code/datums/mutations.dm
@@ -179,7 +179,7 @@
/datum/mutation/human/x_ray/on_losing(mob/living/carbon/human/owner)
if(..()) return
- if(locate(SEE_MOBS|SEE_OBJS|SEE_TURFS,owner.permanent_sight_flags))
+ if(locate(SEE_MOBS,owner.permanent_sight_flags) && locate(SEE_OBJS,owner.permanent_sight_flags) && locate(SEE_TURFS,owner.permanent_sight_flags)) //Xray flag combo
return
owner.see_in_dark = initial(owner.see_in_dark)
owner.sight = initial(owner.sight)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index a9b1f519542..8371b8386aa 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -156,7 +156,7 @@
/mob/living/carbon/proc/eyecheck()
- return 0
+ return locate(/obj/item/organ/cybernetic_implant/eyes/thermals,internal_organs) ? -1 : 0
/mob/living/carbon/proc/tintcheck()
return 0
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 71327284c39..2b626f600f8 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -284,7 +284,7 @@
if(R)
msg += "\[Medical evaluation\]
"
- if(istype(H.glasses, /obj/item/clothing/glasses/hud/security))
+ if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || locate(H.internal_organs,/obj/item/organ/cybernetic_implant/eyes/security_hud))
if(!user.stat && user != src) //|| !user.canmove || user.restrained()) Fluff: Sechuds have eye-tracking technology and sets 'arrest' to people that the wearer looks and blinks at.
var/criminal = "None"
diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm
index ccdc5aa956c..b4b04f5a5bf 100644
--- a/code/modules/mob/living/carbon/human/human_helpers.dm
+++ b/code/modules/mob/living/carbon/human/human_helpers.dm
@@ -78,7 +78,7 @@
///eyecheck()
///Returns a number between -1 to 2
/mob/living/carbon/human/eyecheck()
- var/number = 0
+ var/number = locate(/obj/item/organ/cybernetic_implant/eyes/thermals,internal_organs) ? -1 : 0
if(istype(src.head, /obj/item/clothing/head)) //are they wearing something on their head
var/obj/item/clothing/head/HFP = src.head //if yes gets the flash protection value from that item
number += HFP.flash_protect
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index edfe06f353c..897583a2104 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -510,9 +510,14 @@
H.see_in_dark = 8
if(!H.druggy) H.see_invisible = SEE_INVISIBLE_LEVEL_TWO
else
- if(!locate(SEE_TURFS|SEE_MOBS|SEE_OBJS,H.permanent_sight_flags))
- H.sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS)
- H.see_in_dark = darksight
+ if(!locate(SEE_TURFS,H.permanent_sight_flags))
+ H.sight &= ~SEE_TURFS
+ if(!locate(SEE_MOBS,H.permanent_sight_flags))
+ H.sight &= ~SEE_MOBS
+ if(!locate(SEE_OBJS,H.permanent_sight_flags))
+ H.sight &= ~SEE_OBJS
+
+ H.see_in_dark = (H.sight == SEE_TURFS|SEE_MOBS|SEE_OBJS) ? 8 : darksight
var/see_temp = H.see_invisible
H.see_invisible = invis_sight
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 852eee42628..8120504ca89 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -561,11 +561,14 @@
see_in_dark = 8
see_invisible = SEE_INVISIBLE_LEVEL_TWO
else
- if(!locate(SEE_TURFS|SEE_MOBS|SEE_OBJS,permanent_sight_flags))
+ if(!locate(SEE_TURFS,permanent_sight_flags))
sight &= ~SEE_TURFS
+ if(!locate(SEE_MOBS,permanent_sight_flags))
sight &= ~SEE_MOBS
+ if(!locate(SEE_OBJS,permanent_sight_flags))
sight &= ~SEE_OBJS
- see_in_dark = 2
+
+ see_in_dark = (sight == SEE_TURFS|SEE_MOBS|SEE_OBJS) ? 8 : 2 //Xray flag combo
see_invisible = SEE_INVISIBLE_LIVING
if(see_override)
see_invisible = see_override
diff --git a/code/modules/surgery/organs/cybernetic_implants.dm b/code/modules/surgery/organs/cybernetic_implants.dm
index 79d07c5350b..218542fa203 100644
--- a/code/modules/surgery/organs/cybernetic_implants.dm
+++ b/code/modules/surgery/organs/cybernetic_implants.dm
@@ -33,7 +33,6 @@
/obj/item/organ/cybernetic_implant/eyes/medical_hud
name = "medical hud implant"
desc = "These cybernetic eyes will display a permanent medical HUD over everything you see. Wiggle eyes to control."
- icon_state = "eye_implant"
eye_color = "0ff"
implant_color = "#00FFFF"
@@ -44,13 +43,11 @@
var/datum/atom_hud/H = huds[DATA_HUD_MEDICAL_ADVANCED]
H.add_hud_to(owner)
owner.permanent_huds |= H
-
update_eye_color()
/obj/item/organ/cybernetic_implant/eyes/security_hud
name = "security hud implant"
desc = "These cybernetic eyes will display a permanent security HUD over everything you see. Wiggle eyes to control."
- icon_state = "eye_implant"
eye_color = "d00"
implant_color = "#CC0000"
@@ -61,13 +58,11 @@
var/datum/atom_hud/H = huds[DATA_HUD_SECURITY_ADVANCED]
H.add_hud_to(owner)
owner.permanent_huds |= H
-
update_eye_color()
/obj/item/organ/cybernetic_implant/eyes/xray
name = "xray implant"
- desc = "These cybernetic eyes will enhance your vision with X-Ray. Blinking is futile."
- icon_state = "eye_implant"
+ desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile."
eye_color = "000"
implant_color = "#000000"
@@ -75,8 +70,35 @@
if(!owner)
return
- owner.sight |= SEE_MOBS|SEE_OBJS|SEE_TURFS
- owner.see_in_dark = 8
- owner.permanent_sight_flags |= SEE_MOBS|SEE_OBJS|SEE_TURFS
+ owner.sight |= SEE_MOBS
+ owner.sight |= SEE_OBJS
+ owner.sight |= SEE_TURFS
+ owner.permanent_sight_flags |= SEE_MOBS
+ owner.permanent_sight_flags |= SEE_OBJS
+ owner.permanent_sight_flags |= SEE_TURFS
+ update_eye_color()
- update_eye_color()
\ No newline at end of file
+/obj/item/organ/cybernetic_implant/eyes/thermals
+ name = "thermals implant"
+ desc = "These cybernetic eyes will give you Thermal vision. Vertical slit pupil included."
+ eye_color = "FC0"
+ implant_color = "#FFCC00"
+
+/obj/item/organ/cybernetic_implant/eyes/thermals/function()
+ if(!owner)
+ return
+
+ owner.sight |= SEE_MOBS
+ owner.permanent_sight_flags |= SEE_MOBS
+ update_eye_color()
+
+/obj/item/organ/cybernetic_implant/eyes/emp_act(severity)
+ if(severity > 1)
+ if(prob(5))
+ return
+ var/save_sight = owner.sight
+ owner.sight &= 0
+ owner.disabilities |= BLIND
+ spawn(50)
+ owner.sight |= save_sight
+ owner.disabilities &= ~BLIND
\ No newline at end of file
diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi
index 40cbe114df7..da2b249866d 100644
Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ