mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-10 06:34:45 +01:00
Adds Earmuffs providing immunity to Changeling shriek (#14033)
* Adds Earmuff immunity to shriek * Refactors hearing protection and adds deafness * Update human.dm * Removed implicit src
This commit is contained in:
@@ -241,3 +241,9 @@
|
||||
#define is_admin(user) (check_rights(R_ADMIN, 0, (user)) != 0)
|
||||
|
||||
#define SLEEP_CHECK_DEATH(X) sleep(X); if(QDELETED(src) || stat == DEAD) return;
|
||||
|
||||
// Hearing protection
|
||||
#define HEARING_PROTECTION_NONE 0
|
||||
#define HEARING_PROTECTION_MINOR 1
|
||||
#define HEARING_PROTECTION_MAJOR 2
|
||||
#define HEARING_PROTECTION_TOTAL 3
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
/datum/action/changeling/resonant_shriek/sting_action(var/mob/user)
|
||||
for(var/mob/living/M in get_mobs_in_view(4, user))
|
||||
if(iscarbon(M))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.check_ear_prot() >= HEARING_PROTECTION_TOTAL)
|
||||
continue
|
||||
if(!M.mind || !M.mind.changeling)
|
||||
M.MinimumDeafTicks(30)
|
||||
M.AdjustConfused(20)
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
continue
|
||||
if(ishuman(C))
|
||||
var/mob/living/carbon/human/H = C
|
||||
if(istype(H.l_ear, /obj/item/clothing/ears/earmuffs) || istype(H.r_ear, /obj/item/clothing/ears/earmuffs))
|
||||
if(H.check_ear_prot() >= HEARING_PROTECTION_TOTAL)
|
||||
continue
|
||||
if(!affects(C))
|
||||
continue
|
||||
|
||||
@@ -209,7 +209,7 @@
|
||||
for(var/mob/living/carbon/M in ohearers(6, chassis))
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(istype(H.l_ear, /obj/item/clothing/ears/earmuffs) || istype(H.r_ear, /obj/item/clothing/ears/earmuffs))
|
||||
if(H.check_ear_prot() >= HEARING_PROTECTION_TOTAL)
|
||||
continue
|
||||
to_chat(M, "<font color='red' size='7'>HONK</font>")
|
||||
M.SetSleeping(0)
|
||||
|
||||
@@ -254,7 +254,7 @@
|
||||
limbs_affected -= 1
|
||||
else valid_limbs -= processing_dismember
|
||||
|
||||
if(!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs))
|
||||
if(check_ear_prot() < HEARING_PROTECTION_TOTAL)
|
||||
AdjustEarDamage(30, 120)
|
||||
if(prob(70) && !shielded)
|
||||
Paralyse(10)
|
||||
@@ -278,7 +278,7 @@
|
||||
limbs_affected -= 1
|
||||
else valid_limbs -= processing_dismember
|
||||
|
||||
if(!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs))
|
||||
if(check_ear_prot() < HEARING_PROTECTION_TOTAL)
|
||||
AdjustEarDamage(15, 60)
|
||||
if(prob(50) && !shielded)
|
||||
Paralyse(10)
|
||||
@@ -931,12 +931,18 @@
|
||||
return number
|
||||
|
||||
/mob/living/carbon/human/check_ear_prot()
|
||||
if(!can_hear())
|
||||
return HEARING_PROTECTION_TOTAL
|
||||
if(istype(l_ear, /obj/item/clothing/ears/earmuffs))
|
||||
return HEARING_PROTECTION_TOTAL
|
||||
if(istype(r_ear, /obj/item/clothing/ears/earmuffs))
|
||||
return HEARING_PROTECTION_TOTAL
|
||||
if(head && (head.flags & HEADBANGPROTECT))
|
||||
return 1
|
||||
return HEARING_PROTECTION_MINOR
|
||||
if(l_ear && (l_ear.flags & EARBANGPROTECT))
|
||||
return 1
|
||||
return HEARING_PROTECTION_MINOR
|
||||
if(r_ear && (r_ear.flags & EARBANGPROTECT))
|
||||
return 1
|
||||
return HEARING_PROTECTION_MINOR
|
||||
|
||||
///tintcheck()
|
||||
///Checks eye covering items for visually impairing tinting, such as welding masks
|
||||
|
||||
@@ -157,7 +157,7 @@ GLOBAL_DATUM_INIT(multispin_words, /regex, regex("like a record baby"))
|
||||
if(L.can_hear() && !L.null_rod_check() && L != owner && L.stat != DEAD)
|
||||
if(ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
if(istype(H.l_ear, /obj/item/clothing/ears/earmuffs) || istype(H.r_ear, /obj/item/clothing/ears/earmuffs))
|
||||
if(H.check_ear_prot() >= HEARING_PROTECTION_TOTAL)
|
||||
continue
|
||||
listeners += L
|
||||
|
||||
|
||||
Reference in New Issue
Block a user