3eb30b16f3
code: HEALS_EARS_2 is removed in favor of the earhealing component code: wearertargeting component is available to subtype for components that want to target the wearer of an item rather than the item itself
97 lines
2.6 KiB
Plaintext
97 lines
2.6 KiB
Plaintext
/obj/item/organ/ears
|
|
name = "ears"
|
|
icon_state = "ears"
|
|
desc = "There are three parts to the ear. Inner, middle and outer. Only one of these parts should be normally visible."
|
|
zone = BODY_ZONE_HEAD
|
|
slot = ORGAN_SLOT_EARS
|
|
gender = PLURAL
|
|
|
|
// `deaf` measures "ticks" of deafness. While > 0, the person is unable
|
|
// to hear anything.
|
|
var/deaf = 0
|
|
|
|
// `ear_damage` measures long term damage to the ears, if too high,
|
|
// the person will not have either `deaf` or `ear_damage` decrease
|
|
// without external aid (earmuffs, drugs)
|
|
var/ear_damage = 0
|
|
|
|
//Resistance against loud noises
|
|
var/bang_protect = 0
|
|
// Multiplier for both long term and short term ear damage
|
|
var/damage_multiplier = 1
|
|
|
|
/obj/item/organ/ears/on_life()
|
|
if(!iscarbon(owner))
|
|
return
|
|
var/mob/living/carbon/C = owner
|
|
// genetic deafness prevents the body from using the ears, even if healthy
|
|
if(C.has_trait(TRAIT_DEAF))
|
|
deaf = max(deaf, 1)
|
|
else if(ear_damage < UNHEALING_EAR_DAMAGE) // if higher than UNHEALING_EAR_DAMAGE, no natural healing occurs.
|
|
ear_damage = max(ear_damage - 0.05, 0)
|
|
deaf = max(deaf - 1, 0)
|
|
|
|
/obj/item/organ/ears/proc/restoreEars()
|
|
deaf = 0
|
|
ear_damage = 0
|
|
|
|
var/mob/living/carbon/C = owner
|
|
|
|
if(iscarbon(owner) && C.has_trait(TRAIT_DEAF))
|
|
deaf = 1
|
|
|
|
/obj/item/organ/ears/proc/adjustEarDamage(ddmg, ddeaf)
|
|
ear_damage = max(ear_damage + (ddmg*damage_multiplier), 0)
|
|
deaf = max(deaf + (ddeaf*damage_multiplier), 0)
|
|
|
|
/obj/item/organ/ears/proc/minimumDeafTicks(value)
|
|
deaf = max(deaf, value)
|
|
|
|
/obj/item/organ/ears/invincible
|
|
damage_multiplier = 0
|
|
|
|
|
|
/mob/proc/restoreEars()
|
|
|
|
/mob/living/carbon/restoreEars()
|
|
var/obj/item/organ/ears/ears = getorgan(/obj/item/organ/ears)
|
|
if(ears)
|
|
ears.restoreEars()
|
|
|
|
/mob/proc/adjustEarDamage()
|
|
|
|
/mob/living/carbon/adjustEarDamage(ddmg, ddeaf)
|
|
var/obj/item/organ/ears/ears = getorgan(/obj/item/organ/ears)
|
|
if(ears)
|
|
ears.adjustEarDamage(ddmg, ddeaf)
|
|
|
|
/mob/proc/minimumDeafTicks()
|
|
|
|
/mob/living/carbon/minimumDeafTicks(value)
|
|
var/obj/item/organ/ears/ears = getorgan(/obj/item/organ/ears)
|
|
if(ears)
|
|
ears.minimumDeafTicks(value)
|
|
|
|
|
|
/obj/item/organ/ears/cat
|
|
name = "cat ears"
|
|
icon = 'icons/obj/clothing/hats.dmi'
|
|
icon_state = "kitty"
|
|
damage_multiplier = 2
|
|
|
|
/obj/item/organ/ears/cat/Insert(mob/living/carbon/human/H, special = 0, drop_if_replaced = TRUE)
|
|
..()
|
|
if(istype(H))
|
|
color = H.hair_color
|
|
H.dna.species.mutant_bodyparts |= "ears"
|
|
H.dna.features["ears"] = "Cat"
|
|
H.update_body()
|
|
|
|
/obj/item/organ/ears/cat/Remove(mob/living/carbon/human/H, special = 0)
|
|
..()
|
|
if(istype(H))
|
|
color = H.hair_color
|
|
H.dna.features["ears"] = "None"
|
|
H.dna.species.mutant_bodyparts -= "ears"
|
|
H.update_body()
|