Files
Bubberstation/code/modules/surgery/organs/ears.dm
ShizCalev 485efbd338 Fixes mutant bodypart assignments (#36816)
* Fixes mutant bodypart assignments

* comment
2018-03-30 21:42:00 +03:00

102 lines
2.7 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(C.ears && (C.ears.flags_2 & HEALS_EARS_2))
deaf = max(deaf - 1, 1)
ear_damage = max(ear_damage - 0.1, 0)
// if higher than UNHEALING_EAR_DAMAGE, no natural healing occurs.
if(ear_damage < UNHEALING_EAR_DAMAGE)
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()