mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-11 10:02:24 +00:00
* Refactors Mutations * traits * more work * styling fix * yet even more work * oh hush * almost there * it continues yet further * and that's genetics done * and that's it folks * last bit and golem fixup * oof * oops * tweaks and fixes * styling
79 lines
2.3 KiB
Plaintext
79 lines
2.3 KiB
Plaintext
/obj/item/organ/internal/ears
|
|
name = "ears"
|
|
icon_state = "ears"
|
|
gender = PLURAL
|
|
organ_tag = "ears"
|
|
parent_organ = "head"
|
|
slot = "ears"
|
|
|
|
// `deaf` measures "ticks" of deafness. While > 0, the person is deaf.
|
|
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
|
|
// Multiplier for both long term and short term ear damage
|
|
var/damage_multiplier = 1
|
|
|
|
/obj/item/organ/internal/ears/on_life()
|
|
if(!iscarbon(owner))
|
|
return
|
|
var/mob/living/carbon/C = owner
|
|
if(ear_damage < 100)
|
|
AdjustEarDamage(-0.1)
|
|
|
|
// if we have non-damage related deafness like mutations, quirks or clothing (earmuffs), don't bother processing here. Ear healing from earmuffs or chems happen elsewhere
|
|
if(HAS_TRAIT_NOT_FROM(C, TRAIT_DEAF, EAR_DAMAGE))
|
|
return
|
|
|
|
if(ear_damage >= 100)
|
|
deaf = max(deaf, 1) // if we're failing we always have at least 1 deaf stack (and thus deafness)
|
|
else
|
|
deaf = max(deaf - 1, 0)
|
|
if((ear_damage > 10) && prob(ear_damage / 30))
|
|
AdjustEarDamage(0, 4)
|
|
SEND_SOUND(owner, sound('sound/weapons/flash_ring.ogg'))
|
|
|
|
if(deaf)
|
|
ADD_TRAIT(owner, TRAIT_DEAF, EAR_DAMAGE)
|
|
else
|
|
REMOVE_TRAIT(owner, TRAIT_DEAF, EAR_DAMAGE)
|
|
|
|
|
|
/obj/item/organ/internal/ears/proc/RestoreEars()
|
|
deaf = 0
|
|
ear_damage = 0
|
|
|
|
/obj/item/organ/internal/ears/proc/AdjustEarDamage(ddmg, ddeaf)
|
|
ear_damage = clamp(ear_damage + (ddmg * damage_multiplier), 0, 100)
|
|
deaf = max(deaf + (ddeaf * damage_multiplier), 0)
|
|
|
|
/obj/item/organ/internal/ears/surgeryize()
|
|
RestoreEars()
|
|
|
|
// Mob procs
|
|
/mob/living/carbon/RestoreEars()
|
|
var/obj/item/organ/internal/ears/ears = get_int_organ(/obj/item/organ/internal/ears)
|
|
if(ears)
|
|
ears.RestoreEars()
|
|
|
|
/mob/living/carbon/AdjustEarDamage(ddmg, ddeaf)
|
|
var/obj/item/organ/internal/ears/ears = get_int_organ(/obj/item/organ/internal/ears)
|
|
if(ears)
|
|
ears.AdjustEarDamage(ddmg, ddeaf)
|
|
|
|
/obj/item/organ/internal/ears/cybernetic
|
|
name = "cybernetic ears"
|
|
icon_state = "ears-c"
|
|
desc = "a basic cybernetic designed to mimic the operation of ears."
|
|
origin_tech = "biotech=4"
|
|
status = ORGAN_ROBOT
|
|
damage_multiplier = 0.9
|
|
|
|
/obj/item/organ/internal/ears/cybernetic/emp_act(severity)
|
|
if(emp_proof)
|
|
return
|
|
..()
|
|
ear_damage += 40 / severity
|