From 134d2116c6f4567cab706fa7b3e2fe3f7182714c Mon Sep 17 00:00:00 2001 From: Markolie Date: Sat, 29 Aug 2015 18:38:26 +0200 Subject: [PATCH] Makes mechanical eyes protect you --- .../components/unary/vent_scrubber.dm | 1 + code/ZAS/Plasma.dm | 20 +++++++++++-------- .../items/weapons/grenades/flashbang.dm | 7 +++++-- code/game/objects/items/weapons/tools.dm | 16 +++++++-------- code/modules/power/supermatter/supermatter.dm | 13 +++++++++--- code/modules/virus2/effect.dm | 5 ++++- 6 files changed, 40 insertions(+), 22 deletions(-) diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index 9b37207774e..d3b642f649a 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -379,6 +379,7 @@ update_icon() else user << "The welding tool needs to be on to start this task." + return 1 else user << "You need more welding fuel to complete this task." return 1 diff --git a/code/ZAS/Plasma.dm b/code/ZAS/Plasma.dm index c67c5b47bcd..6ff169ae97d 100644 --- a/code/ZAS/Plasma.dm +++ b/code/ZAS/Plasma.dm @@ -89,7 +89,7 @@ obj/var/contaminated = 0 if(vsc.plc.SKIN_BURNS) if(!pl_head_protected() || !pl_suit_protected()) burn_skin(0.75) - if(prob(20)) src << "\red Your skin burns!" + if(prob(20)) src << "Your skin burns!" updatehealth() //Burn eyes if exposed. @@ -119,19 +119,23 @@ obj/var/contaminated = 0 if(vsc.plc.GENETIC_CORRUPTION) if(rand(1,10000) < vsc.plc.GENETIC_CORRUPTION) randmutb(src) - src << "\red High levels of toxins cause you to spontaneously mutate." + src << "High levels of toxins cause you to spontaneously mutate." domutcheck(src,null) /mob/living/carbon/human/proc/burn_eyes() //The proc that handles eye burning. - if(prob(20)) src << "\red Your eyes burn!" + if(!species.has_organ["eyes"]) + return + var/obj/item/organ/eyes/E = internal_organs_by_name["eyes"] - E.damage += 2.5 - eye_blurry = min(eye_blurry+1.5,50) - if (prob(max(0,E.damage - 15) + 1) && !eye_blind) - src << "\red You are blinded!" - eye_blind += 20 + if(E && !(E.status & ORGAN_ROBOT)) + if(prob(20)) src << "Your eyes burn!" + E.damage += 2.5 + eye_blurry = min(eye_blurry+1.5,50) + if (prob(max(0,E.damage - 15) + 1) && !eye_blind) + src << "You are blinded!" + eye_blind += 20 /mob/living/carbon/human/proc/pl_head_protected() //Checks if the head is adequately sealed. diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index fbe12bd5342..c8dc3883819 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -44,8 +44,11 @@ if (E) E.damage += rand(1, 3) M.Stun(max(10/distance, 3)) M.Weaken(max(10/distance, 3)) - if (E && E.damage >= E.min_bruised_damage) - M << "Your eyes start to burn badly!" + if (istype(E) && E.damage >= E.min_bruised_damage) + if(!(E.status & ORGAN_ROBOT)) + M << "Your eyes start to burn badly!" + else + M << "The flash blinds you!" if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang))) if (E.damage >= E.min_broken_damage) M << "You can't see anything!" diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index b94337a118c..79f94596a76 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -368,36 +368,36 @@ /obj/item/weapon/weldingtool/proc/eyecheck(mob/user as mob) if(!iscarbon(user)) return 1 var/safety = user:eyecheck() - if(istype(user, /mob/living/carbon/human)) + if(ishuman(user)) var/mob/living/carbon/human/H = user var/obj/item/organ/eyes/E = H.internal_organs_by_name["eyes"] - if(!E) // No eyes? No problem! + if(!istype(E) || (E.status & ORGAN_ROBOT)) // No eyes or robotic eyes? No problem! return switch(safety) if(1) - usr << "\red Your eyes sting a little." + usr << "Your eyes sting a little." E.damage += rand(1, 2) if(E.damage > 12) user.eye_blurry += rand(3,6) if(0) - usr << "\red Your eyes burn." + usr << "Your eyes burn." E.damage += rand(2, 4) if(E.damage > 10) E.damage += rand(4,10) if(-1) - usr << "\red Your thermals intensify the welder's glow. Your eyes itch and burn severely." + usr << "Your thermals intensify the welder's glow. Your eyes itch and burn severely." user.eye_blurry += rand(12,20) E.damage += rand(12, 16) if(safety<2) if(E.damage > 10) - user << "\red Your eyes are really starting to hurt. This can't be good for you!" + user << "Your eyes are really starting to hurt. This can't be good for you!" if (E.damage >= E.min_broken_damage) - user << "\red You go blind!" + user << "You go blind!" user.sdisabilities |= BLIND else if (E.damage >= E.min_bruised_damage) - user << "\red You go blind!" + user << "You go blind!" user.eye_blind = 5 user.eye_blurry = 5 user.disabilities |= NEARSIGHTED diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 12dd496303d..2eb9e562a61 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -175,9 +175,16 @@ env.merge(removed) - for(var/mob/living/carbon/human/l in view(src, min(7, round(power ** 0.25)))) // If they can see it without mesons on. Bad on them. - if(!istype(l.glasses, /obj/item/clothing/glasses/meson)) - l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1, get_dist(l, src)) ) ) ) + for(var/mob/living/carbon/human/l in view(src, min(7, round(sqrt(power/6))))) + // If they can see it without mesons on. Bad on them. + if(l.glasses && istype(l.glasses, /obj/item/clothing/glasses/meson)) + continue + // Where we're going, we don't need eyes. + // Prosthetic eyes will also protect against this business. + var/obj/item/organ/eyes = l.internal_organs_by_name["eyes"] + if(!istype(eyes) || (eyes.status & ORGAN_ROBOT)) + continue + l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1,get_dist(l, src)) ) ) ) for(var/mob/living/l in range(src, round((power / 100) ** 0.25))) var/rads = (power / 10) * sqrt( 1 / max(get_dist(l, src),1) ) diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm index cf728cd50ed..58f1dd6ddbc 100644 --- a/code/modules/virus2/effect.dm +++ b/code/modules/virus2/effect.dm @@ -916,7 +916,10 @@ var/list/compatible_mobs = list(/mob/living/carbon/human) /datum/disease2/effect/eyewater name = "Watery Eyes" stage = 1 - activate(var/mob/living/carbon/mob,var/multiplier) + activate(var/mob/living/carbon/human/mob,var/multiplier) + var/obj/item/organ/eyes/E = mob.internal_organs_by_name["eyes"] + if(!istype(E) || (E.status & ORGAN_ROBOT)) // No eyes or robotic eyes? No problem! + return mob << "Your eyes sting and water!" /datum/disease2/effect/wheeze