/* ////////////////////////////////////// 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 = -3 transmittable = -4 level = 6 severity = 5 base_message_chance = 20 symptom_delay_min = 20 symptom_delay_max = 75 var/infective = FALSE threshold_desc = 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.properties["stage_rate"] >= 4) power = 1.5 if(A.properties["stage_rate"] >= 8) power = 2 if(A.properties["stealth"] >= 4) suppress_warning = TRUE if(A.properties["transmittable"] >= 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, "[pick("You feel hot.", "You hear a crackling noise.", "You smell smoke.")]") if(4) Firestacks_stage_4(M, A) M.IgniteMob() to_chat(M, "Your skin bursts into flames!") M.emote("scream") if(5) Firestacks_stage_5(M, A) M.IgniteMob() to_chat(M, "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.adjustFireLoss(3 * power) if(infective) A.spread(2) return TRUE /datum/symptom/fire/proc/Firestacks_stage_5(mob/living/M, datum/disease/advance/A) M.adjust_fire_stacks(3 * power) M.adjustFireLoss(5 * power) if(infective) A.spread(4) return TRUE /* ////////////////////////////////////// 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 sudoriparous 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_desc = list("Resistance 9" = "Doubles the intensity of the effect, but reduces its frequency.", "Stage Speed 8" = "Increases explosion radius when the host is wet.", "Transmission 8" = "Additionally synthesizes chlorine trifluoride and napalm inside the host.") /datum/symptom/alkali/Start(datum/disease/advance/A) if(!..()) return if(A.properties["resistance"] >= 9) //intense but sporadic effect power = 2 symptom_delay_min = 50 symptom_delay_max = 140 if(A.properties["stage_rate"] >= 8) //serious boom when wet explosion_power = 2 if(A.properties["transmittable"] >= 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, "[pick("Your veins boil.", "You feel hot.", "You smell meat cooking.")]") if(4) Alkali_fire_stage_4(M, A) M.IgniteMob() to_chat(M, "Your sweat bursts into flames!") M.emote("scream") if(5) Alkali_fire_stage_5(M, A) M.IgniteMob() to_chat(M, "Your skin erupts into an inferno!") M.emote("scream") if(M.fire_stacks < 0) M.visible_message("[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) /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.adjustFireLoss(get_stacks/2) if(chems) M.reagents.add_reagent(/datum/reagent/clf3, 2 * power) return TRUE /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.adjustFireLoss(get_stacks) if(chems) M.reagents.add_reagent_list(list(/datum/reagent/napalm = 4 * power, /datum/reagent/clf3 = 4 * power)) return TRUE