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