diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 2d48f3281cc..e2b52c69da9 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -1156,11 +1156,11 @@ It'll return null if the organ doesn't correspond, so include null checks when u var/datum/species/selected_species = GLOB.all_species[picked_species] return species_name ? picked_species : selected_species.type -/datum/species/proc/can_hear(mob/living/carbon/human/H) - . = FALSE - var/obj/item/organ/internal/ears/ears = H.get_int_organ(/obj/item/organ/internal/ears) - if(istype(ears) && !HAS_TRAIT(H, TRAIT_DEAF)) - . = TRUE + +/datum/species/proc/can_hear(mob/living/carbon/human/user) + var/obj/item/organ/internal/ears/ears = user.get_organ_slot(INTERNAL_ORGAN_EARS) + return ears && !(DEAF in user.mutations) && !HAS_TRAIT(user, TRAIT_DEAF) + /datum/species/proc/spec_Process_Spacemove(mob/living/carbon/human/H) return FALSE diff --git a/code/modules/mob/living/carbon/human/species/slime.dm b/code/modules/mob/living/carbon/human/species/slime.dm index 5a52bbb7604..39220045d7b 100644 --- a/code/modules/mob/living/carbon/human/species/slime.dm +++ b/code/modules/mob/living/carbon/human/species/slime.dm @@ -142,10 +142,9 @@ ..() -/datum/species/slime/can_hear(mob/living/carbon/human/H) // fucking snowflakes - . = FALSE - if(!HAS_TRAIT(H, TRAIT_DEAF)) - . = TRUE +/datum/species/slime/can_hear(mob/living/carbon/human/user) + return !(DEAF in user.mutations) && !HAS_TRAIT(user, TRAIT_DEAF) + /datum/action/innate/slimecolor name = "Toggle Recolor" diff --git a/code/modules/mob/living/carbon/human/update_stat.dm b/code/modules/mob/living/carbon/human/update_stat.dm index 8d53ca00da0..1a88a0fa867 100644 --- a/code/modules/mob/living/carbon/human/update_stat.dm +++ b/code/modules/mob/living/carbon/human/update_stat.dm @@ -18,9 +18,10 @@ /mob/living/carbon/human/can_hear() - . = TRUE // Fallback if we don't have a species - if(dna.species) - . = dna.species.can_hear(src) + if(dna?.species) + return dna.species.can_hear(src) + return ..() // Fallback if we don't have a species or DNA + /mob/living/carbon/human/check_death_method() return dna.species.dies_at_threshold diff --git a/code/modules/mob/living/carbon/update_status.dm b/code/modules/mob/living/carbon/update_status.dm index 2776c3ae336..b9dbfe0fffe 100644 --- a/code/modules/mob/living/carbon/update_status.dm +++ b/code/modules/mob/living/carbon/update_status.dm @@ -22,7 +22,8 @@ update_canmove() /mob/living/carbon/can_hear() - . = FALSE - var/obj/item/organ/internal/ears/ears = get_int_organ(/obj/item/organ/internal/ears) - if(istype(ears) && !HAS_TRAIT(src, TRAIT_DEAF)) - . = TRUE + . = ..() + var/obj/item/organ/internal/ears/ears = get_organ_slot(INTERNAL_ORGAN_EARS) + if(!ears) + return FALSE + diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index d7adf0d0f09..7cf2583c3e7 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -401,4 +401,4 @@ /////////////////////////////////// EAR DAMAGE //////////////////////////////////// /mob/living/silicon/can_hear() - . = TRUE + return TRUE diff --git a/code/modules/mob/living/update_status.dm b/code/modules/mob/living/update_status.dm index 7f69c6b0889..446b5e91623 100644 --- a/code/modules/mob/living/update_status.dm +++ b/code/modules/mob/living/update_status.dm @@ -43,7 +43,7 @@ // Whether the mob can hear things /mob/living/can_hear() - . = !(DEAF in mutations) && !HAS_TRAIT(src, TRAIT_DEAF) + return !(DEAF in mutations) && !HAS_TRAIT(src, TRAIT_DEAF) // Whether the mob is able to see // `information_only` is for stuff that's purely informational - like blindness overlays diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 42a82612e71..f35dfaba223 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -705,4 +705,4 @@ // No hearing announcements /mob/new_player/can_hear() - return 0 + return FALSE diff --git a/code/modules/mob/update_status.dm b/code/modules/mob/update_status.dm index bd4a6b01d0c..a8510077617 100644 --- a/code/modules/mob/update_status.dm +++ b/code/modules/mob/update_status.dm @@ -35,7 +35,7 @@ // Procs that give information about the status of the mob /mob/proc/can_hear() - . = 1 + return TRUE /mob/proc/has_vision(information_only = FALSE) return 1