[MIRROR] Converts blindness and nearsightedness to status effects, scratches some VERY dumb blindness handling that resulted in mobs becoming "incurably" blind [MDB IGNORE] (#18760)

* Converts blindness and nearsightedness to status effects, scratches some VERY dumb blindness handling that resulted in mobs becoming "incurably" blind

* Fixes the conflicts and makes shit compile!

* Fixes other things that didn't show up because I hadn't updated

* Fixes the lints.

* Okay NOW it's ready (please don't add anything else that touches blindness I beg you)

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
This commit is contained in:
SkyratBot
2023-02-03 16:08:32 -05:00
committed by GitHub
co-authored by MrMelbert GoldenAlpharex
parent bc6b643082
commit 1fe0d145a3
88 changed files with 850 additions and 654 deletions
@@ -88,17 +88,16 @@
/datum/reagent/consumable/carrotjuice/on_mob_life(mob/living/carbon/affected_mob, delta_time, times_fired)
affected_mob.adjust_eye_blur(-2 SECONDS * REM * delta_time)
affected_mob.adjust_blindness(-1 * REM * delta_time)
affected_mob.adjust_temp_blindness(-2 SECONDS * REM * delta_time)
switch(current_cycle)
if(1 to 20)
//nothing
if(21 to 110)
if(DT_PROB(100 * (1 - (sqrt(110 - current_cycle) / 10)), delta_time))
affected_mob.cure_nearsighted(list(EYE_DAMAGE))
affected_mob.adjustOrganLoss(ORGAN_SLOT_EYES, -2)
if(110 to INFINITY)
affected_mob.cure_nearsighted(list(EYE_DAMAGE))
..()
return
affected_mob.adjustOrganLoss(ORGAN_SLOT_EYES, -2)
return ..()
/datum/reagent/consumable/berryjuice
name = "Berry Juice"
@@ -383,16 +383,14 @@
var/mob/living/carbon/victim = exposed_mob
if(methods & (TOUCH|VAPOR))
var/pepper_proof = victim.is_pepper_proof()
//check for protection
//actually handle the pepperspray effects
if (!(pepper_proof)) // you need both eye and mouth protection
if (!victim.is_pepper_proof()) // you need both eye and mouth protection
if(prob(5))
victim.emote("scream")
victim.emote("cry")
victim.set_eye_blur_if_lower(10 SECONDS)
victim.adjust_blindness(3) // 6 seconds
victim.adjust_temp_blindness(6 SECONDS)
victim.set_confusion_if_lower(5 SECONDS)
victim.Knockdown(3 SECONDS)
victim.add_movespeed_modifier(/datum/movespeed_modifier/reagent/pepperspray)
@@ -498,7 +496,7 @@
if (!tear_proof)
to_chat(exposed_mob, span_warning("Your eyes sting!"))
victim.emote("cry")
victim.set_eye_blur_if_lower(6 SECONDS)
victim.adjust_eye_blur(6 SECONDS)
/datum/reagent/consumable/sprinkles
name = "Sprinkles"
@@ -28,13 +28,10 @@
ph = 7
liver_damage = 0
/datum/reagent/impurity/methanol/on_mob_life(mob/living/carbon/owner, delta_time)
var/obj/item/organ/internal/eyes/eyes = owner.getorganslot(ORGAN_SLOT_EYES)
if(!eyes)
return ..()
eyes.applyOrganDamage(0.5 * REM * delta_time, required_organtype = affected_organtype)
..()
/datum/reagent/impurity/methanol/on_mob_life(mob/living/carbon/affected_mob, delta_time, times_fired)
var/obj/item/organ/internal/eyes/eyes = affected_mob.getorganslot(ORGAN_SLOT_EYES)
eyes?.applyOrganDamage(0.5 * REM * delta_time, required_organtype = affected_organtype)
return ..()
//Chloral Hydrate - Impure Version
/datum/reagent/impurity/chloralax
@@ -667,26 +667,24 @@
restore_eyesight(prev_affected_mob, eyes)
/datum/reagent/medicine/oculine/on_mob_life(mob/living/carbon/affected_mob, delta_time, times_fired)
affected_mob.adjust_blindness(-2 * REM * delta_time * normalise_creation_purity())
affected_mob.adjust_eye_blur(-4 SECONDS * REM * delta_time * normalise_creation_purity())
var/normalized_purity = normalise_creation_purity()
affected_mob.adjust_temp_blindness(-4 SECONDS * REM * delta_time * normalized_purity)
affected_mob.adjust_eye_blur(-4 SECONDS * REM * delta_time * normalized_purity)
var/obj/item/organ/internal/eyes/eyes = affected_mob.getorganslot(ORGAN_SLOT_EYES)
if (!eyes)
return ..()
var/fix_prob = 10
if(creation_purity >= 1)
fix_prob = 100
eyes.applyOrganDamage(-2 * REM * delta_time * normalise_creation_purity(), required_organtype = affected_organtype)
if(HAS_TRAIT_FROM(affected_mob, TRAIT_BLIND, EYE_DAMAGE))
if(DT_PROB(fix_prob, delta_time))
to_chat(affected_mob, span_warning("Your vision slowly returns..."))
affected_mob.cure_blind(EYE_DAMAGE)
affected_mob.cure_nearsighted(EYE_DAMAGE)
affected_mob.set_eye_blur_if_lower(70 SECONDS)
else if(HAS_TRAIT_FROM(affected_mob, TRAIT_NEARSIGHT, EYE_DAMAGE))
to_chat(affected_mob, span_warning("The blackness in your peripheral vision fades."))
affected_mob.cure_nearsighted(EYE_DAMAGE)
affected_mob.set_eye_blur_if_lower(20 SECONDS)
..()
if(eyes)
// Healing eye damage will cure nearsightedness and blindness from ... eye damage
eyes.applyOrganDamage(-2 * REM * delta_time * normalise_creation_purity(), required_organtype = affected_organtype)
// If our eyes are seriously damaged, we have a probability of causing eye blur while healing depending on purity
if(eyes.damaged && DT_PROB(16 - min(normalized_purity * 6, 12), delta_time))
// While healing, gives some eye blur
if(affected_mob.is_blind_from(EYE_DAMAGE))
to_chat(affected_mob, span_warning("Your vision slowly returns..."))
affected_mob.adjust_eye_blur(20 SECONDS)
else if(affected_mob.is_nearsighted_from(EYE_DAMAGE))
to_chat(affected_mob, span_warning("The blackness in your peripheral vision begins to fade."))
affected_mob.adjust_eye_blur(5 SECONDS)
return ..()
/datum/reagent/medicine/oculine/on_mob_delete(mob/living/affected_mob)
var/obj/item/organ/internal/eyes/eyes = affected_mob.getorganslot(ORGAN_SLOT_EYES)
+2 -2
View File
@@ -165,9 +165,9 @@
return FALSE
var/mob/living/carbon/C = eater
var/covered = ""
if(C.is_mouth_covered(head_only = 1))
if(C.is_mouth_covered(ITEM_SLOT_HEAD))
covered = "headgear"
else if(C.is_mouth_covered(mask_only = 1))
else if(C.is_mouth_covered(ITEM_SLOT_MASK))
covered = "mask"
if(covered)
var/who = (isnull(user) || eater == user) ? "your" : "[eater.p_their()]"