/
deafness.dm
73 lines (67 loc) · 2.33 KB
/
deafness.dm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/**Deafness
* Slightly decreases stealth
* Lowers Resistance
* Slightly decreases stage speed
* Decreases transmissibility
* Intense level
* Bonus: Causes intermittent loss of hearing.
*/
/datum/symptom/deafness
name = "Deafness"
desc = "The virus causes inflammation of the eardrums, causing intermittent deafness."
illness = "Aural Perforation"
stealth = -1
resistance = -2
stage_speed = -1
transmittable = -3
level = 4
severity = 4
base_message_chance = 100
symptom_delay_min = 25
symptom_delay_max = 80
required_organ = ORGAN_SLOT_EARS
threshold_descs = list(
"Resistance 9" = "Causes permanent deafness, instead of intermittent.",
"Stealth 4" = "The symptom remains hidden until active.",
)
var/causes_permanent_deafness = FALSE
/datum/symptom/deafness/Start(datum/disease/advance/A)
. = ..()
if(!.)
return
if(A.totalStealth() >= 4)
suppress_warning = TRUE
if(A.totalResistance() >= 9) //permanent deafness
causes_permanent_deafness = TRUE
/datum/symptom/deafness/End(datum/disease/advance/advanced_disease)
REMOVE_TRAIT(advanced_disease.affected_mob, TRAIT_DEAF, DISEASE_TRAIT)
return ..()
/datum/symptom/deafness/Activate(datum/disease/advance/advanced_disease)
. = ..()
if(!.)
return
var/mob/living/carbon/infected_mob = advanced_disease.affected_mob
var/obj/item/organ/internal/ears/ears = infected_mob.get_organ_slot(ORGAN_SLOT_EARS)
switch(advanced_disease.stage)
if(3, 4)
if(prob(base_message_chance) && !suppress_warning)
to_chat(infected_mob, span_warning("[pick("You hear a ringing in your ear.", "Your ears pop.")]"))
if(5)
if(causes_permanent_deafness)
if(ears.damage < ears.maxHealth)
to_chat(infected_mob, span_userdanger("Your ears pop painfully and start bleeding!"))
// Just absolutely murder me man
ears.apply_organ_damage(ears.maxHealth)
infected_mob.emote("scream")
ADD_TRAIT(infected_mob, TRAIT_DEAF, DISEASE_TRAIT)
else
to_chat(infected_mob, span_userdanger("Your ears pop and begin ringing loudly!"))
ears.deaf = min(20, ears.deaf + 15)
/datum/symptom/deafness/on_stage_change(datum/disease/advance/advanced_disease)
. = ..()
if(!.)
return FALSE
var/mob/living/carbon/infected_mob = advanced_disease.affected_mob
if(advanced_disease.stage < 5 || !causes_permanent_deafness)
REMOVE_TRAIT(infected_mob, TRAIT_DEAF, DISEASE_TRAIT)
return TRUE