From 238655d5993588179453bbbbb83829701191ea51 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 6 Dec 2019 00:10:50 +0100 Subject: [PATCH] Fixes eyes blindness a little. --- .../antagonists/changeling/powers/headcrab.dm | 3 +- .../clock_items/wraith_spectacles.dm | 15 +++++--- code/modules/clothing/glasses/_glasses.dm | 19 +++++----- .../mob/living/carbon/carbon_defense.dm | 16 ++++---- .../mob/living/carbon/human/inventory.dm | 1 - .../modules/mob/living/carbon/status_procs.dm | 38 ------------------- code/modules/mob/living/living.dm | 4 +- code/modules/mob/status_procs.dm | 11 ------ code/modules/paperwork/paperplane.dm | 8 +++- .../chemistry/reagents/alcohol_reagents.dm | 10 ++--- .../chemistry/reagents/medicine_reagents.dm | 5 +-- code/modules/surgery/eye_surgery.dm | 3 +- code/modules/surgery/organs/eyes.dm | 1 - .../code/game/machinery/wishgranter.dm | 4 +- .../code/modules/arousal/toys/dildos.dm | 4 +- 15 files changed, 51 insertions(+), 91 deletions(-) diff --git a/code/modules/antagonists/changeling/powers/headcrab.dm b/code/modules/antagonists/changeling/powers/headcrab.dm index 72d8a127ab..1e06fb39de 100644 --- a/code/modules/antagonists/changeling/powers/headcrab.dm +++ b/code/modules/antagonists/changeling/powers/headcrab.dm @@ -25,7 +25,8 @@ to_chat(H, "You are blinded by a shower of blood!") H.Stun(20) H.blur_eyes(20) - H.adjust_eye_damage(5) + var/obj/item/organ/eyes/eyes = H.getorganslot(ORGAN_SLOT_EYES) + eyes?.applyOrganDamage(5) H.confused += 3 for(var/mob/living/silicon/S in range(2,user)) to_chat(S, "Your sensors are disabled by a shower of blood!") diff --git a/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm b/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm index 9d241148b4..2a916c7a2f 100644 --- a/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm +++ b/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm @@ -48,10 +48,11 @@ /obj/item/clothing/glasses/wraith_spectacles/proc/blind_cultist(mob/living/victim) if(iscultist(victim)) + var/obj/item/organ/eyes/eyes = victim.getorganslot(ORGAN_SLOT_EYES) to_chat(victim, "\"It looks like Nar'Sie's dogs really don't value their eyes.\"") to_chat(victim, "Your eyes explode with horrific pain!") victim.emote("scream") - victim.become_blind(EYE_DAMAGE) + eyes?.applyOrganDamage(eyes.maxHealth) victim.adjust_blurriness(30) victim.adjust_blindness(30) return TRUE @@ -141,21 +142,23 @@ if(glasses_right && !WS.up && !GLOB.ratvar_awakens && !GLOB.ratvar_approaches) apply_eye_damage(H) else + var/obj/item/organ/eyes/eyes = H.getorganslot(ORGAN_SLOT_EYES) if(GLOB.ratvar_awakens) H.cure_nearsighted(list(EYE_DAMAGE)) H.cure_blind(list(EYE_DAMAGE)) - H.adjust_eye_damage(-eye_damage_done) + eyes?.applyOrganDamage(-eye_damage_done) eye_damage_done = 0 else if(prob(50) && eye_damage_done) - H.adjust_eye_damage(-1) + eyes?.applyOrganDamage(-1) eye_damage_done = max(0, eye_damage_done - 1) if(!eye_damage_done) qdel(src) /datum/status_effect/wraith_spectacles/proc/apply_eye_damage(mob/living/carbon/human/H) - if(HAS_TRAIT(H, TRAIT_BLIND)) + var/obj/item/organ/eyes/eyes = H.getorganslot(ORGAN_SLOT_EYES) + if(HAS_TRAIT(H, TRAIT_BLIND) || !eyes) return - H.adjust_eye_damage(0.5) + eyes.applyOrganDamage(0.5) eye_damage_done += 0.5 if(eye_damage_done >= 20) H.adjust_blurriness(2) @@ -166,7 +169,7 @@ if(eye_damage_done >= blind_breakpoint) if(!HAS_TRAIT(H, TRAIT_BLIND)) to_chat(H, "A piercing white light floods your vision. Suddenly, all goes dark!") - H.become_blind(EYE_DAMAGE) + eyes.applyOrganDamage(eyes.maxHealth) if(prob(min(20, 5 + eye_damage_done))) to_chat(H, "Your eyes continue to burn.") diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 608f71cf11..889bac5faf 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -43,15 +43,16 @@ //called when thermal glasses are emped. /obj/item/clothing/glasses/proc/thermal_overload() - if(ishuman(src.loc)) - var/mob/living/carbon/human/H = src.loc - if(!(HAS_TRAIT(H, TRAIT_BLIND))) - if(H.glasses == src) - to_chat(H, "[src] overloads and blinds you!") - H.flash_act(visual = 1) - H.blind_eyes(3) - H.blur_eyes(5) - H.adjust_eye_damage(5) + if(!ishuman(loc)) + return + var/mob/living/carbon/human/H = loc + var/obj/item/organ/eyes/eyes = H.getorganslot(ORGAN_SLOT_EYES) + if((!HAS_TRAIT(H, TRAIT_BLIND) || !eyes) && H.glasses == src) + to_chat(H, "[src] overloads and blinds you!") + H.flash_act(visual = 1) + H.blind_eyes(3) + H.blur_eyes(5) + eyes.applyOrganDamage(5) /obj/item/clothing/glasses/meson name = "optical meson scanner" diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index b0e9b808df..c5aeb2c1c7 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -355,30 +355,30 @@ if (damage == 1) to_chat(src, "Your eyes sting a little.") if(prob(40)) - adjust_eye_damage(1) + eyes.applyOrganDamage(1) else if (damage == 2) to_chat(src, "Your eyes burn.") - adjust_eye_damage(rand(2, 4)) + eyes.applyOrganDamage(rand(2, 4)) else if( damage >= 3) to_chat(src, "Your eyes itch and burn severely!") - adjust_eye_damage(rand(12, 16)) + eyes.applyOrganDamage(rand(12, 16)) - if(eyes.eye_damage > 10) + if(eyes.damage > 10) blind_eyes(damage) blur_eyes(damage * rand(3, 6)) - if(eyes.eye_damage > 20) - if(prob(eyes.eye_damage - 20)) + if(eyes.damage > 20) + if(prob(eyes.damage - 20)) if(!HAS_TRAIT(src, TRAIT_NEARSIGHT)) to_chat(src, "Your eyes start to burn badly!") become_nearsighted(EYE_DAMAGE) - else if(prob(eyes.eye_damage - 25)) + else if(prob(eyes.damage - 25)) if(!HAS_TRAIT(src, TRAIT_BLIND)) to_chat(src, "You can't see anything!") - become_blind(EYE_DAMAGE) + eyes.applyOrganDamage(eyes.maxHealth) else to_chat(src, "Your eyes are really starting to hurt. This can't be good for you!") diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 26703977d2..69ec619e5d 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -191,7 +191,6 @@ if(G.vision_correction) if(HAS_TRAIT(src, TRAIT_NEARSIGHT)) overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) - adjust_eye_damage(0) if(G.vision_flags || G.darkness_view || G.invis_override || G.invis_view || !isnull(G.lighting_alpha)) update_sight() if(!QDELETED(src)) diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm index 766bd376b1..6c497bb8d4 100644 --- a/code/modules/mob/living/carbon/status_procs.dm +++ b/code/modules/mob/living/carbon/status_procs.dm @@ -2,44 +2,6 @@ //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, ear damage, // eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, TRAIT_NEARSIGHT trait, and TRAIT_HUSK trait. -/mob/living/carbon/damage_eyes(amount) - var/obj/item/organ/eyes/eyes = getorganslot(ORGAN_SLOT_EYES) - if (!eyes) - return - if(amount>0) - eyes.eye_damage = amount - if(eyes.eye_damage > 20) - if(eyes.eye_damage > 30) - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2) - else - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1) - -/mob/living/carbon/set_eye_damage(amount) - var/obj/item/organ/eyes/eyes = getorganslot(ORGAN_SLOT_EYES) - if (!eyes) - return - eyes.eye_damage = max(amount,0) - if(eyes.eye_damage > 20) - if(eyes.eye_damage > 30) - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2) - else - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1) - else - clear_fullscreen("eye_damage") - -/mob/living/carbon/adjust_eye_damage(amount) - var/obj/item/organ/eyes/eyes = getorganslot(ORGAN_SLOT_EYES) - if (!eyes) - return - eyes.eye_damage = max(eyes.eye_damage+amount, 0) - if(eyes.eye_damage > 20) - if(eyes.eye_damage > 30) - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2) - else - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1) - else - clear_fullscreen("eye_damage") - /mob/living/carbon/adjust_drugginess(amount) druggy = max(druggy+amount, 0) if(druggy) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 6ced2a05a1..5299618177 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -502,7 +502,6 @@ bodytemperature = BODYTEMP_NORMAL set_blindness(0) set_blurriness(0) - set_eye_damage(0) cure_nearsighted() cure_blind() cure_husk() @@ -1221,7 +1220,8 @@ if("eye_blind") set_blindness(var_value) if("eye_damage") - set_eye_damage(var_value) + var/obj/item/organ/eyes/E = getorganslot(ORGAN_SLOT_EYES) + E?.setOrganDamage(var_value) if("eye_blurry") set_blurriness(var_value) if("maxHealth") diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index 606d6d4f66..17311daec2 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -134,17 +134,6 @@ /mob/proc/Dizzy(amount) dizziness = max(dizziness,amount,0) -/////////////////////////////////// EYE DAMAGE //////////////////////////////////// - -/mob/proc/damage_eyes(amount) - return - -/mob/proc/adjust_eye_damage(amount) - return - -/mob/proc/set_eye_damage(amount) - return - /////////////////////////////////// EYE_BLIND //////////////////////////////////// /mob/proc/blind_eyes(amount) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index ecef5a703a..f8d07862bf 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -44,10 +44,12 @@ return ..() /obj/item/paperplane/suicide_act(mob/living/user) + var/obj/item/organ/eyes/eyes = user.getorganslot(ORGAN_SLOT_EYES) user.Stun(200) user.visible_message("[user] jams [src] in [user.p_their()] nose. It looks like [user.p_theyre()] trying to commit suicide!") user.adjust_blurriness(6) - user.adjust_eye_damage(rand(6,8)) + if(eyes) + eyes.applyOrganDamage(rand(6,8)) sleep(10) return (BRUTELOSS) @@ -111,9 +113,11 @@ if(prob(hit_probability)) if(H.is_eyes_covered()) return + var/obj/item/organ/eyes/eyes = H.getorganslot(ORGAN_SLOT_EYES) visible_message("\The [src] hits [H] in the eye!") H.adjust_blurriness(6) - H.adjust_eye_damage(rand(6,8)) + if(eyes) + eyes.applyOrganDamage(rand(6,8)) H.Knockdown(40) H.emote("scream") diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index bd60880324..f96acf2d71 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -199,17 +199,17 @@ All effects don't start immediately, but rather get worse over time; the rate is to_chat(M, "[pick("You have a really bad headache.", "Your eyes hurt.", "You find it hard to stay still.", "You feel your heart practically beating out of your chest.")]") if(prob(5) && iscarbon(M)) + var/obj/item/organ/eyes/eyes = M.getorganslot(ORGAN_SLOT_EYES) if(HAS_TRAIT(M, TRAIT_BLIND)) - var/obj/item/organ/eyes/eye = M.getorganslot(ORGAN_SLOT_EYES) - if(istype(eye)) - eye.Remove(M) - eye.forceMove(get_turf(M)) + if(eyes) + eyes.Remove(M) + eyes.forceMove(get_turf(M)) to_chat(M, "You double over in pain as you feel your eyeballs liquify in your head!") M.emote("scream") M.adjustBruteLoss(15) else to_chat(M, "You scream in terror as you go blind!") - M.become_blind(EYE_DAMAGE) + eyes?.applyOrganDamage(eyes.maxHealth) M.emote("scream") if(prob(3) && iscarbon(M)) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index e3962e89c2..2562f941ac 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -793,6 +793,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) var/obj/item/organ/eyes/eyes = M.getorganslot(ORGAN_SLOT_EYES) if (!eyes) return + eyes.applyOrganDamage(-2) if(HAS_TRAIT_FROM(M, TRAIT_BLIND, EYE_DAMAGE)) if(prob(20)) to_chat(M, "Your vision slowly returns...") @@ -807,8 +808,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) else if(M.eye_blind || M.eye_blurry) M.set_blindness(0) M.set_blurriness(0) - else if(eyes.eye_damage > 0) - M.adjust_eye_damage(-1) ..() /datum/reagent/medicine/atropine @@ -1524,5 +1523,5 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/polypyr/overdose_process(mob/living/M) M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 0.5) ..() - . = 1 + . = 1 diff --git a/code/modules/surgery/eye_surgery.dm b/code/modules/surgery/eye_surgery.dm index f7a06af388..28e813ccac 100644 --- a/code/modules/surgery/eye_surgery.dm +++ b/code/modules/surgery/eye_surgery.dm @@ -22,6 +22,7 @@ "[user] begins to perform surgery on [target]'s eyes.") /datum/surgery_step/fix_eyes/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/obj/item/organ/eyes/E = target.getorganslot(ORGAN_SLOT_EYES) display_results(user, target, "You succeed in fixing [target]'s eyes.", "[user] successfully fixes [target]'s eyes!", "[user] completes the surgery on [target]'s eyes.") @@ -29,7 +30,7 @@ target.set_blindness(0) target.cure_nearsighted(list(EYE_DAMAGE)) target.blur_eyes(35) //this will fix itself slowly. - target.set_eye_damage(0) + E.setOrganDamage(0) return TRUE /datum/surgery_step/fix_eyes/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index d877af7451..a87b46f0c0 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -21,7 +21,6 @@ var/sight_flags = 0 var/see_in_dark = 2 - var/eye_damage = 0 var/tint = 0 var/eye_color = "" //set to a hex code to override a mob's eye color var/old_eye_color = "fff" diff --git a/modular_citadel/code/game/machinery/wishgranter.dm b/modular_citadel/code/game/machinery/wishgranter.dm index f24062a126..48024a2228 100644 --- a/modular_citadel/code/game/machinery/wishgranter.dm +++ b/modular_citadel/code/game/machinery/wishgranter.dm @@ -63,7 +63,9 @@ to_chat(user, "Your wish is 'granted', but at a terrible cost...") to_chat(user, "The Wish Granter punishes you for your selfishness, claiming your soul and warping your eyes to match the darkness in your heart.") user.dna.add_mutation(BLINDMUT) - user.adjust_eye_damage(100) + var/obj/item/organ/eyes/eyes = user.getorganslot(ORGAN_SLOT_EYES) + if(eyes) + eyes.applyOrganDamage(eyes.maxHealth) var/list/destinations = list() for(var/obj/item/beacon/B in GLOB.teleportbeacons) var/turf/T = get_turf(B) diff --git a/modular_citadel/code/modules/arousal/toys/dildos.dm b/modular_citadel/code/modules/arousal/toys/dildos.dm index 24c8de1b60..22ed7cdf2f 100644 --- a/modular_citadel/code/modules/arousal/toys/dildos.dm +++ b/modular_citadel/code/modules/arousal/toys/dildos.dm @@ -150,7 +150,8 @@ obj/item/dildo/custom playsound(loc, 'sound/weapons/gagging.ogg', 50, 1, -1) user.Stun(150) user.adjust_blurriness(8) - user.adjust_eye_damage(10) + var/obj/item/organ/eyes/eyes = user.getorganslot(ORGAN_SLOT_EYES) + eyes?.applyOrganDamage(10) return MANUAL_SUICIDE /obj/item/dildo/flared/huge/suicide_act(mob/living/user) @@ -159,6 +160,5 @@ obj/item/dildo/custom playsound(loc, 'sound/weapons/gagging.ogg', 50, 2, -1) user.Stun(300) user.adjust_blurriness(8) - user.adjust_eye_damage(15) return MANUAL_SUICIDE