mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 08:37:43 +01:00
[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:
co-authored by
MrMelbert
GoldenAlpharex
parent
bc6b643082
commit
1fe0d145a3
@@ -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)
|
||||
|
||||
@@ -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()]"
|
||||
|
||||
Reference in New Issue
Block a user