mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
* why do i keep doing this * unused defines * uh oh fix * missed a spot * why won't you die
179 lines
5.2 KiB
Plaintext
179 lines
5.2 KiB
Plaintext
/*
|
|
//////////////////////////////////////
|
|
|
|
Spontaneous Combustion
|
|
|
|
Slightly hidden.
|
|
Lowers resistance tremendously.
|
|
Decreases stage tremendously.
|
|
Decreases transmittablity tremendously.
|
|
Fatal Level.
|
|
|
|
Bonus
|
|
Ignites infected mob.
|
|
|
|
//////////////////////////////////////
|
|
*/
|
|
|
|
/datum/symptom/fire
|
|
|
|
name = "Spontaneous Combustion"
|
|
desc = "The virus turns fat into an extremely flammable compound, and raises the body's temperature, making the host burst into flames spontaneously."
|
|
stealth = 1
|
|
resistance = -4
|
|
stage_speed = -4
|
|
transmittable = -4
|
|
level = 6
|
|
severity = 5
|
|
base_message_chance = 20
|
|
symptom_delay_min = 20
|
|
symptom_delay_max = 75
|
|
var/infective = FALSE
|
|
threshold_descs = list(
|
|
"Stage Speed 4" = "Increases the intensity of the flames.",
|
|
"Stage Speed 8" = "Further increases flame intensity.",
|
|
"Transmission 8" = "Host will spread the virus through skin flakes when bursting into flame.",
|
|
"Stealth 4" = "The symptom remains hidden until active.",
|
|
)
|
|
|
|
/datum/symptom/fire/Start(datum/disease/advance/A)
|
|
. = ..()
|
|
if(!.)
|
|
return
|
|
if(A.totalStageSpeed() >= 4)
|
|
power = 1.5
|
|
if(A.totalStageSpeed() >= 8)
|
|
power = 2
|
|
if(A.totalStealth() >= 4)
|
|
suppress_warning = TRUE
|
|
if(A.totalTransmittable() >= 8) //burning skin spreads the virus through smoke
|
|
infective = TRUE
|
|
|
|
/datum/symptom/fire/Activate(datum/disease/advance/A)
|
|
. = ..()
|
|
if(!.)
|
|
return
|
|
var/mob/living/M = A.affected_mob
|
|
switch(A.stage)
|
|
if(3)
|
|
if(prob(base_message_chance) && !suppress_warning)
|
|
to_chat(M, span_warning("[pick("You feel hot.", "You hear a crackling noise.", "You smell smoke.")]"))
|
|
if(4)
|
|
Firestacks_stage_4(M, A)
|
|
M.ignite_mob()
|
|
to_chat(M, span_userdanger("Your skin bursts into flames!"))
|
|
M.emote("scream")
|
|
if(5)
|
|
Firestacks_stage_5(M, A)
|
|
M.ignite_mob()
|
|
to_chat(M, span_userdanger("Your skin erupts into an inferno!"))
|
|
M.emote("scream")
|
|
|
|
/datum/symptom/fire/proc/Firestacks_stage_4(mob/living/M, datum/disease/advance/A)
|
|
M.adjust_fire_stacks(1 * power)
|
|
M.take_overall_damage(burn = 3 * power, required_status = BODYPART_ORGANIC)
|
|
if(infective)
|
|
A.spread(2)
|
|
return 1
|
|
|
|
/datum/symptom/fire/proc/Firestacks_stage_5(mob/living/M, datum/disease/advance/A)
|
|
M.adjust_fire_stacks(3 * power)
|
|
M.take_overall_damage(burn = 5 * power, required_status = BODYPART_ORGANIC)
|
|
if(infective)
|
|
A.spread(4)
|
|
return 1
|
|
|
|
/*
|
|
//////////////////////////////////////
|
|
|
|
Alkali perspiration
|
|
|
|
Hidden.
|
|
Lowers resistance.
|
|
Decreases stage speed.
|
|
Decreases transmittablity.
|
|
Fatal Level.
|
|
|
|
Bonus
|
|
Ignites infected mob.
|
|
Explodes mob on contact with water.
|
|
|
|
//////////////////////////////////////
|
|
*/
|
|
|
|
/datum/symptom/alkali
|
|
|
|
name = "Alkali perspiration"
|
|
desc = "The virus attaches to sudoriferous glands, synthesizing a chemical that bursts into flames when reacting with water, leading to self-immolation."
|
|
stealth = 2
|
|
resistance = -2
|
|
stage_speed = -2
|
|
transmittable = -2
|
|
level = 7
|
|
severity = 6
|
|
base_message_chance = 100
|
|
symptom_delay_min = 30
|
|
symptom_delay_max = 90
|
|
var/chems = FALSE
|
|
var/explosion_power = 1
|
|
threshold_descs = list(
|
|
"Resistance 9" = "Doubles the intensity of the immolation effect, but reduces the frequency of all of this symptom's effects.",
|
|
"Stage Speed 8" = "Increases explosion radius and explosion damage to the host when the host is wet.",
|
|
"Transmission 8" = "Additionally synthesizes chlorine trifluoride and napalm inside the host. More chemicals are synthesized if the resistance 9 threshold has been met."
|
|
)
|
|
compatible_biotypes = ALL_BIOTYPES //is funny
|
|
|
|
/datum/symptom/alkali/Start(datum/disease/advance/A)
|
|
. = ..()
|
|
if(!.)
|
|
return
|
|
if(A.totalResistance() >= 9) //intense but sporadic effect
|
|
power = 2
|
|
symptom_delay_min = 50
|
|
symptom_delay_max = 140
|
|
if(A.totalStageSpeed() >= 8) //serious boom when wet
|
|
explosion_power = 2
|
|
if(A.totalTransmittable() >= 8) //extra chemicals
|
|
chems = TRUE
|
|
|
|
/datum/symptom/alkali/Activate(datum/disease/advance/A)
|
|
. = ..()
|
|
if(!.)
|
|
return
|
|
var/mob/living/M = A.affected_mob
|
|
switch(A.stage)
|
|
if(3)
|
|
if(prob(base_message_chance))
|
|
to_chat(M, span_warning("[pick("Your veins boil.", "You feel hot.", "You smell meat cooking.")]"))
|
|
if(4)
|
|
Alkali_fire_stage_4(M, A)
|
|
M.ignite_mob()
|
|
to_chat(M, span_userdanger("Your sweat bursts into flames!"))
|
|
M.emote("scream")
|
|
if(5)
|
|
if(M.fire_stacks < 0)
|
|
M.visible_message(span_warning("[M]'s sweat sizzles and pops on contact with water!"))
|
|
explosion(get_turf(M),0,0,2 * explosion_power)
|
|
Alkali_fire_stage_5(M, A)
|
|
Alkali_fire_stage_5(M, A)
|
|
M.ignite_mob()
|
|
to_chat(M, span_userdanger("Your skin erupts into an inferno!"))
|
|
M.emote("scream")
|
|
|
|
|
|
/datum/symptom/alkali/proc/Alkali_fire_stage_4(mob/living/M, datum/disease/advance/A)
|
|
var/get_stacks = 6 * power
|
|
M.adjust_fire_stacks(get_stacks)
|
|
M.take_overall_damage(burn = get_stacks / 2, required_status = BODYPART_ORGANIC)
|
|
if(chems)
|
|
M.reagents.add_reagent(/datum/reagent/clf3, 2 * power)
|
|
return 1
|
|
|
|
/datum/symptom/alkali/proc/Alkali_fire_stage_5(mob/living/M, datum/disease/advance/A)
|
|
var/get_stacks = 8 * power
|
|
M.adjust_fire_stacks(get_stacks)
|
|
M.take_overall_damage(burn = get_stacks, required_status = BODYPART_ORGANIC)
|
|
if(chems)
|
|
M.reagents.add_reagent_list(list(/datum/reagent/napalm = 4 * power, /datum/reagent/clf3 = 4 * power))
|
|
return 1
|