diff --git a/code/datums/diseases/advance/symptoms/vision.dm b/code/datums/diseases/advance/symptoms/vision.dm
index 63f485ab4c..1932c23996 100644
--- a/code/datums/diseases/advance/symptoms/vision.dm
+++ b/code/datums/diseases/advance/symptoms/vision.dm
@@ -24,30 +24,48 @@ Bonus
transmittable = -3
level = 5
severity = 4
+ base_message_chance = 50
+ symptom_delay_min = 25
+ symptom_delay_max = 80
+ var/remove_eyes = FALSE
+
+/datum/symptom/visionloss/Start(datum/disease/advance/A)
+ ..()
+ if(A.properties["stealth"] >= 4)
+ suppress_warning = TRUE
+ if(A.properties["resistance"] >= 12) //goodbye eyes
+ remove_eyes = TRUE
/datum/symptom/visionloss/Activate(datum/disease/advance/A)
- ..()
- if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
- var/obj/item/organ/eyes/eyes = M.getorganslot("eyes_sight")
- if (!eyes)
- return
+ if(!..())
+ return
+ var/mob/living/carbon/M = A.affected_mob
+ var/obj/item/organ/eyes/eyes = M.getorganslot("eye_sight")
+ if(istype(eyes))
switch(A.stage)
if(1, 2)
- to_chat(M, "Your eyes itch.")
+ if(prob(base_message_chance) && !suppress_warning)
+ to_chat(M, "Your eyes itch.")
if(3, 4)
to_chat(M, "Your eyes burn!")
M.blur_eyes(10)
M.adjust_eye_damage(1)
else
- to_chat(M, "Your eyes burn horrificly!")
M.blur_eyes(20)
M.adjust_eye_damage(5)
if(eyes.eye_damage >= 10)
M.become_nearsighted()
- if(prob(eyes.eye_damage - 10 + 1))
+ if(prob(eyes.eye_damage - 10 + 1))
+ if(!remove_eyes)
if(M.become_blind())
to_chat(M, "You go blind!")
+ else
+ M.visible_message("[M]'s eyes fall off their sockets!", "Your eyes fall off their sockets!")
+ eyes.Remove(M)
+ eyes.forceMove(get_turf(M))
+ else
+ to_chat(M, "Your eyes burn horrifically!")
+
/*
@@ -75,9 +93,13 @@ Bonus
stage_speed = -2
transmittable = -4
level = 4
+ base_message_chance = 7
+ symptom_delay_min = 1
+ symptom_delay_max = 1
/datum/symptom/visionaid/Activate(datum/disease/advance/A)
- ..()
+ if(!..())
+ return
var/mob/living/M = A.affected_mob
var/obj/item/organ/eyes/eyes = M.getorganslot("eyes_sight")
if (!eyes)
@@ -102,6 +124,6 @@ Bonus
else if(eyes.eye_damage > 0)
M.adjust_eye_damage(-1)
else
- if(prob(SYMPTOM_ACTIVATION_PROB * 3))
+ if(prob(base_message_chance))
to_chat(M, "[pick("Your eyes feel great.", "You are now blinking manually.", "You don't feel the need to blink.")]")
return