mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-25 22:12:58 +01:00
Eyestab Stuff (#11812)
This commit is contained in:
+22
-35
@@ -536,35 +536,18 @@ var/list/global/slot_flags_enumeration = list(
|
||||
L = L.loc
|
||||
return loc
|
||||
|
||||
/obj/item/proc/eyestab(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(istype(H))
|
||||
for(var/obj/item/protection in list(H.head, H.wear_mask, H.glasses))
|
||||
if(protection && (protection.body_parts_covered & EYES))
|
||||
// you can't stab someone in the eyes wearing a mask!
|
||||
to_chat(user, "<span class='warning'>You're going to need to remove the eye covering first.</span>")
|
||||
return
|
||||
|
||||
if(!M.has_eyes())
|
||||
to_chat(user, "<span class='warning'>You cannot locate any eyes on [M]!</span>")
|
||||
/obj/item/proc/eyestab(mob/living/carbon/M, mob/living/carbon/user)
|
||||
if(M.eyes_protected(src, TRUE))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
admin_attack_log(user, M, "attacked [key_name(M)] with [src]", "was attacked by [key_name(user)] using \a [src]", "used \a [src] to eyestab")
|
||||
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
playsound(loc, hitsound, 70, TRUE)
|
||||
user.do_attack_animation(M)
|
||||
|
||||
src.add_fingerprint(user)
|
||||
//if((CLUMSY in user.mutations) && prob(50))
|
||||
// M = user
|
||||
/*
|
||||
to_chat(M, "<span class='warning'>You stab yourself in the eye.</span>")
|
||||
M.sdisabilities |= BLIND
|
||||
M.weakened += 4
|
||||
M.adjustBruteLoss(10)
|
||||
*/
|
||||
|
||||
add_fingerprint(user)
|
||||
if(istype(H))
|
||||
var/obj/item/organ/internal/eyes/eyes = H.get_eyes()
|
||||
|
||||
@@ -581,26 +564,30 @@ var/list/global/slot_flags_enumeration = list(
|
||||
|
||||
eyes.take_damage(rand(3,4))
|
||||
if(eyes.damage >= eyes.min_bruised_damage)
|
||||
if(M.stat != 2)
|
||||
if(H.stat != DEAD)
|
||||
if(eyes.robotic <= 1) //robot eyes bleeding might be a bit silly
|
||||
to_chat(M, "<span class='danger'>Your eyes start to bleed profusely!</span>")
|
||||
to_chat(H, "<span class='danger'>Your eyes start to bleed profusely!</span>")
|
||||
if(prob(50))
|
||||
if(M.stat != 2)
|
||||
to_chat(M, "<span class='warning'>You drop what you're holding and clutch at your eyes!</span>")
|
||||
M.drop_item()
|
||||
M.eye_blurry += 10
|
||||
M.Paralyse(1)
|
||||
M.Weaken(4)
|
||||
if(H.stat != DEAD)
|
||||
to_chat(H, "<span class='warning'>You drop what you're holding and clutch at your eyes!</span>")
|
||||
H.drop_item()
|
||||
H.eye_blurry += 10
|
||||
H.Paralyse(1)
|
||||
H.Weaken(4)
|
||||
if (eyes.damage >= eyes.min_broken_damage)
|
||||
if(M.stat != 2)
|
||||
to_chat(M, "<span class='warning'>You go blind!</span>")
|
||||
if(H.stat != DEAD)
|
||||
to_chat(H, "<span class='warning'>You go blind!</span>")
|
||||
var/obj/item/organ/external/affecting = H.get_organ(BP_HEAD)
|
||||
if(affecting.take_damage(7))
|
||||
M:UpdateDamageIcon()
|
||||
if(affecting.take_damage(7, 0, damage_flags(), src))
|
||||
H.UpdateDamageIcon()
|
||||
else
|
||||
M.take_organ_damage(7)
|
||||
M.eye_blurry += rand(3,4)
|
||||
return
|
||||
|
||||
/obj/item/proc/protects_eyestab(var/obj/stab_item, var/stabbed = FALSE) // if stabbed is set to true if we're being stabbed and not just checking
|
||||
if((item_flags & THICKMATERIAL) && (body_parts_covered & EYES))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/clean_blood()
|
||||
. = ..()
|
||||
|
||||
@@ -544,7 +544,8 @@ BREATH ANALYZER
|
||||
|
||||
if ( ((user.is_clumsy()) || (DUMB in user.mutations)) && prob(20))
|
||||
to_chat(user,"<span class='danger'>Your hand slips from clumsiness!</span>")
|
||||
eyestab(H,user)
|
||||
if(!H.eyes_protected(src, FALSE))
|
||||
eyestab(H,user)
|
||||
to_chat(user,"<span class='danger'>Alert: No breathing detected.</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
return ..()
|
||||
|
||||
if(user.a_intent != I_HELP)
|
||||
if(target_zone == BP_HEAD || target_zone == BP_EYES)
|
||||
if((target_zone == BP_HEAD || target_zone == BP_EYES) && !M.eyes_protected(src, FALSE))
|
||||
if((user.is_clumsy()) && prob(50))
|
||||
M = user
|
||||
return eyestab(M,user)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
/obj/item/material/knife/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob, var/target_zone)
|
||||
if(active == 1)
|
||||
if(target_zone != BP_EYES && target_zone != BP_HEAD)
|
||||
if((target_zone != BP_EYES && target_zone != BP_HEAD) || M.eyes_protected(src, FALSE))
|
||||
return ..()
|
||||
if((user.is_clumsy()) && prob(50))
|
||||
M = user
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
/obj/item/screwdriver/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob, var/target_zone)
|
||||
if(!istype(M) || user.a_intent == "help")
|
||||
return ..()
|
||||
if(target_zone != BP_EYES && target_zone != BP_HEAD)
|
||||
if((target_zone != BP_EYES && target_zone != BP_HEAD) || M.eyes_protected(src, FALSE))
|
||||
return ..()
|
||||
if((user.is_clumsy()) && prob(50))
|
||||
M = user
|
||||
|
||||
Reference in New Issue
Block a user