mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-09 16:07:40 +00:00
70 lines
1.8 KiB
Plaintext
70 lines
1.8 KiB
Plaintext
/*
|
|
//////////////////////////////////////
|
|
|
|
Self-Respiration
|
|
|
|
Slightly hidden.
|
|
Lowers resistance significantly.
|
|
Decreases stage speed significantly.
|
|
Decreases transmittablity tremendously.
|
|
Fatal Level.
|
|
|
|
Bonus
|
|
The body generates salbutamol.
|
|
|
|
//////////////////////////////////////
|
|
*/
|
|
|
|
/datum/symptom/oxygen
|
|
|
|
name = "Self-Respiration"
|
|
desc = "The virus rapidly synthesizes oxygen, effectively removing the need for breathing."
|
|
stealth = 1
|
|
resistance = -3
|
|
stage_speed = -3
|
|
transmittable = -4
|
|
level = 6
|
|
base_message_chance = 5
|
|
symptom_delay_min = 1
|
|
symptom_delay_max = 1
|
|
var/regenerate_blood = FALSE
|
|
threshold_desc = list(
|
|
"Resistance 8" = "Additionally regenerates lost blood."
|
|
)
|
|
|
|
/datum/symptom/oxygen/Start(datum/disease/advance/A)
|
|
if(!..())
|
|
return
|
|
if(A.properties["resistance"] >= 8) //blood regeneration
|
|
regenerate_blood = TRUE
|
|
|
|
/datum/symptom/oxygen/Activate(datum/disease/advance/A)
|
|
if(!..())
|
|
return
|
|
var/mob/living/carbon/M = A.affected_mob
|
|
switch(A.stage)
|
|
if(4, 5)
|
|
M.adjustOxyLoss(-7, 0)
|
|
M.losebreath = max(0, M.losebreath - 4)
|
|
if(regenerate_blood && M.blood_volume < (BLOOD_VOLUME_NORMAL * M.blood_ratio))
|
|
M.blood_volume += 1
|
|
else
|
|
if(prob(base_message_chance))
|
|
to_chat(M, "<span class='notice'>[pick("Your lungs feel great.", "You realize you haven't been breathing.", "You don't feel the need to breathe.")]</span>")
|
|
return
|
|
|
|
/datum/symptom/oxygen/on_stage_change(datum/disease/advance/A)
|
|
if(!..())
|
|
return FALSE
|
|
var/mob/living/carbon/M = A.affected_mob
|
|
if(A.stage >= 4)
|
|
ADD_TRAIT(M, TRAIT_NOBREATH, DISEASE_TRAIT)
|
|
else
|
|
REMOVE_TRAIT(M, TRAIT_NOBREATH, DISEASE_TRAIT)
|
|
return TRUE
|
|
|
|
/datum/symptom/oxygen/End(datum/disease/advance/A)
|
|
if(!..())
|
|
return
|
|
if(A.stage >= 4)
|
|
REMOVE_TRAIT(A.affected_mob, TRAIT_NOBREATH, DISEASE_TRAIT) |