Merge pull request #4133 from Citadel-Station-13/upstream-merge-32432

[MIRROR] [Super-Ready for review]Reworks healing symptoms into conditional healing symptoms
This commit is contained in:
deathride58
2017-11-30 04:43:51 +00:00
committed by GitHub
2 changed files with 334 additions and 289 deletions
+332 -197
View File
@@ -9,20 +9,15 @@
base_message_chance = 20 //here used for the overlays base_message_chance = 20 //here used for the overlays
symptom_delay_min = 1 symptom_delay_min = 1
symptom_delay_max = 1 symptom_delay_max = 1
var/hide_healing = FALSE var/passive_message = "" //random message to infected but not actively healing people
threshold_desc = "<b>Stage Speed 6:</b> Doubles healing speed.<br>\ threshold_desc = "<b>Stage Speed 6:</b> Doubles healing speed.<br>\
<b>Stage Speed 11:</b> Triples healing speed.<br>\
<b>Stealth 4:</b> Healing will no longer be visible to onlookers." <b>Stealth 4:</b> Healing will no longer be visible to onlookers."
/datum/symptom/heal/Start(datum/disease/advance/A) /datum/symptom/heal/Start(datum/disease/advance/A)
if(!..()) if(!..())
return return
if(A.properties["stealth"] >= 4) //invisible healing
hide_healing = TRUE
if(A.properties["stage_rate"] >= 6) //stronger healing if(A.properties["stage_rate"] >= 6) //stronger healing
power = 2 power = 2
if(A.properties["stage_rate"] >= 11) //even stronger healing
power = 3
/datum/symptom/heal/Activate(datum/disease/advance/A) /datum/symptom/heal/Activate(datum/disease/advance/A)
if(!..()) if(!..())
@@ -31,299 +26,439 @@
var/mob/living/M = A.affected_mob var/mob/living/M = A.affected_mob
switch(A.stage) switch(A.stage)
if(4, 5) if(4, 5)
Heal(M, A) var/effectiveness = CanHeal(A)
if(!effectiveness)
if(passive_message && prob(2) && passive_message_condition(M))
to_chat(M, passive_message)
return
else
Heal(M, A, effectiveness)
return return
/datum/symptom/heal/proc/Heal(mob/living/M, datum/disease/advance/A) /datum/symptom/heal/proc/CanHeal(datum/disease/advance/A)
return 1 return power
/* /datum/symptom/heal/proc/Heal(mob/living/M, datum/disease/advance/A, actual_power)
////////////////////////////////////// return TRUE
Toxin Filter /datum/symptom/heal/proc/passive_message_condition(mob/living/M)
return TRUE
Little bit hidden.
Lowers resistance tremendously.
Decreases stage speed tremendously.
Decreases transmittablity temrendously.
Fatal Level.
Bonus
Heals toxins in the affected mob's blood stream.
//////////////////////////////////////
*/
/datum/symptom/heal/toxin /datum/symptom/heal/toxin
name = "Toxic Filter" name = "Starlight Condensation"
desc = "The virus synthesizes regenerative chemicals in the bloodstream, repairing damage caused by toxins." desc = "The virus reacts to direct starlight, producing regenerative chemicals that can cure toxin damage."
stealth = 1 stealth = 1
resistance = -4 resistance = -3
stage_speed = -4 stage_speed = -3
transmittable = -4 transmittable = -3
level = 6 level = 6
passive_message = "<span class='notice'>You miss the feeling of starlight on your skin.</span>"
var/nearspace_penalty = 0.3
threshold_desc = "<b>Stage Speed 6:</b> Increases healing speed.<br>\
<b>Transmission 6:</b> Removes penalty for only being close to space."
/datum/symptom/heal/toxin/Heal(mob/living/M, datum/disease/advance/A) /datum/symptom/heal/toxin/Start(datum/disease/advance/A)
var/heal_amt = 1 * power if(!..())
if(M.toxloss > 0 && prob(base_message_chance) && !hide_healing) return
new /obj/effect/temp_visual/heal(get_turf(M), "#66FF99") if(A.properties["transmission"] >= 6)
nearspace_penalty = 1
if(A.properties["stage_rate"] >= 6)
power = 2
/datum/symptom/heal/toxin/CanHeal(datum/disease/advance/A)
var/mob/living/M = A.affected_mob
if(istype(get_turf(M), /turf/open/space))
return power
else
for(var/turf/T in view(M, 2))
if(istype(T, /turf/open/space))
return power * nearspace_penalty
/datum/symptom/heal/toxin/Heal(mob/living/M, datum/disease/advance/A, actual_power)
var/heal_amt = actual_power
if(M.getToxLoss() && prob(5))
to_chat(M, "<span class='notice'>Your skin tingles as the starlight purges toxins from your bloodstream.</span>")
M.adjustToxLoss(-heal_amt) M.adjustToxLoss(-heal_amt)
return 1 return 1
/* /datum/symptom/heal/toxin/passive_message_condition(mob/living/M)
////////////////////////////////////// if(M.getToxLoss())
return TRUE
return FALSE
Apoptosis /datum/symptom/heal/chem
name = "Toxolysis"
Lowers resistance.
Decreases stage speed.
Decreases transmittablity.
Bonus
Heals toxins in the affected mob's blood stream faster.
//////////////////////////////////////
*/
/datum/symptom/heal/toxin/plus
name = "Apoptoxin filter"
stealth = 0 stealth = 0
resistance = -2 resistance = -2
stage_speed = -2 stage_speed = -2
transmittable = -2 transmittable = -2
level = 8 level = 7
desc = "The virus stimulates production of special stem cells in the bloodstream, causing rapid reparation of any damage caused by toxins." var/food_conversion = FALSE
desc = "The virus rapidly breaks down any foreign chemicals in the bloodstream."
threshold_desc = "<b>Resistance 7:</b> Increases chem removal speed.<br>\
<b>Stage Speed 6:</b> Consumed chemicals nourish the host."
/datum/symptom/heal/toxin/plus/Heal(mob/living/M, datum/disease/advance/A) /datum/symptom/heal/chem/Start(datum/disease/advance/A)
var/heal_amt = 2 * power if(!..())
if(M.toxloss > 0 && prob(base_message_chance) && !hide_healing) return
new /obj/effect/temp_visual/heal(get_turf(M), "#00FF00") if(A.properties["stage_rate"] >= 6)
M.adjustToxLoss(-heal_amt) food_conversion = TRUE
if(A.properties["resistance"] >= 7)
power = 2
/datum/symptom/heal/chem/Heal(mob/living/M, datum/disease/advance/A, actual_power)
for(var/datum/reagent/R in M.reagents.reagent_list) //Not just toxins!
M.reagents.remove_reagent(R.id, actual_power)
if(food_conversion)
M.nutrition += 0.3
if(prob(2))
to_chat(M, "<span class='notice'>You feel a mild warmth as your blood purifies itself.</span>")
return 1 return 1
/*
//////////////////////////////////////
Regeneration
Little bit hidden. /datum/symptom/heal/metabolism
Lowers resistance tremendously. name = "Metabolic Boost"
Decreases stage speed tremendously. stealth = -1
Decreases transmittablity temrendously. resistance = -2
Fatal Level. stage_speed = 2
transmittable = 1
level = 7
var/triple_metabolism = FALSE
var/reduced_hunger = FALSE
desc = "The virus causes the host's metabolism to accelerate rapidly, making them process chemicals twice as fast,\
but also causing increased hunger."
threshold_desc = "<b>Stealth 3:</b> Reduces hunger rate.<br>\
<b>Stage Speed 10:</b> Chemical metabolization is tripled instead of doubled."
Bonus /datum/symptom/heal/metabolism/Start(datum/disease/advance/A)
Heals brute damage slowly over time. if(!..())
return
if(A.properties["stage_rate"] >= 10)
triple_metabolism = TRUE
if(A.properties["stealth"] >= 3)
reduced_hunger = TRUE
////////////////////////////////////// /datum/symptom/heal/metabolism/Heal(mob/living/carbon/C, datum/disease/advance/A, actual_power)
*/ if(!istype(C))
return
C.reagents.metabolize(C, can_overdose=TRUE) //this works even without a liver; it's intentional since the virus is metabolizing by itself
if(triple_metabolism)
C.reagents.metabolize(C, can_overdose=TRUE)
C.overeatduration = max(C.overeatduration - 2, 0)
var/lost_nutrition = 9 - (reduced_hunger * 5)
C.nutrition = max(C.nutrition - (lost_nutrition * HUNGER_FACTOR), 0) //Hunger depletes at 10x the normal speed
if(prob(2))
to_chat(C, "<span class='notice'>You feel an odd gurgle in your stomach, as if it was working much faster than normal.</span>")
return 1
/datum/symptom/heal/brute /datum/symptom/heal/brute
name = "Cellular Molding"
name = "Regeneration" desc = "The virus is able to shift cells around when in conditions of high heat, repairing existing physical damage."
desc = "The virus stimulates the regenerative process in the host, causing faster wound healing."
stealth = 1 stealth = 1
resistance = -4 resistance = -3
stage_speed = -4 stage_speed = -3
transmittable = -4 transmittable = -3
level = 6 level = 6
passive_message = "<span class='notice'>You feel the flesh pulsing under your skin for a moment, but it's too cold to move.</span>"
threshold_desc = "<b>Stage Speed 8:</b> Doubles healing speed."
/datum/symptom/heal/brute/Heal(mob/living/carbon/M, datum/disease/advance/A) /datum/symptom/heal/brute/Start(datum/disease/advance/A)
var/heal_amt = 2 * power if(!..())
return
if(A.properties["stage_rate"] >= 8)
power = 2
/datum/symptom/heal/brute/CanHeal(datum/disease/advance/A)
var/mob/living/M = A.affected_mob
switch(M.bodytemperature)
if(0 to 340)
return FALSE
if(340 to BODYTEMP_HEAT_DAMAGE_LIMIT)
. = 0.3 * power
if(BODYTEMP_HEAT_DAMAGE_LIMIT to 400)
. = 0.75 * power
if(400 to 460)
. = power
else
. = 1.5 * power
if(M.on_fire)
. *= 2
/datum/symptom/heal/brute/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power)
var/heal_amt = 2 * actual_power
var/list/parts = M.get_damaged_bodyparts(1,0) //brute only var/list/parts = M.get_damaged_bodyparts(1,0) //brute only
if(!parts.len) if(!parts.len)
return return
if(prob(5))
to_chat(M, "<span class='notice'>You feel your flesh moving beneath your heated skin, mending your wounds.</span>")
for(var/obj/item/bodypart/L in parts) for(var/obj/item/bodypart/L in parts)
if(L.heal_damage(heal_amt/parts.len, 0)) if(L.heal_damage(heal_amt/parts.len, 0))
M.update_damage_overlays() M.update_damage_overlays()
if(prob(base_message_chance) && !hide_healing)
new /obj/effect/temp_visual/heal(get_turf(M), "#FF3333")
return 1 return 1
/datum/symptom/heal/brute/passive_message_condition(mob/living/M)
if(M.getBruteLoss())
return TRUE
return FALSE
/* /datum/symptom/heal/coma
////////////////////////////////////// name = "Regenerative Coma"
desc = "The virus causes the host to fall into a death-like coma when severely damaged, then rapidly fixes the damage."
Flesh Mending
No resistance change.
Decreases stage speed.
Decreases transmittablity.
Fatal Level.
Bonus
Heals brute damage over time. Turns cloneloss into burn damage.
//////////////////////////////////////
*/
/datum/symptom/heal/brute/plus
name = "Flesh Mending"
desc = "The virus rapidly mutates into body cells, effectively allowing it to quickly fix the host's wounds."
stealth = 0 stealth = 0
resistance = 0 resistance = 0
stage_speed = -2 stage_speed = -2
transmittable = -2 transmittable = -2
level = 8 level = 8
passive_message = "<span class='notice'>The pain from your wounds makes you feel oddly sleepy...</span>"
var/deathgasp = FALSE
var/active_coma = FALSE //to prevent multiple coma procs
threshold_desc = "<b>Stealth 2:</b> Host appears to die when falling into a coma.<br>\
<b>Stage Speed 7:</b> Increases healing speed."
/datum/symptom/heal/brute/plus/Heal(mob/living/carbon/M, datum/disease/advance/A) /datum/symptom/heal/coma/Start(datum/disease/advance/A)
var/heal_amt = 4 * power if(!..())
return
if(A.properties["stage_rate"] >= 7)
power = 1.5
if(A.properties["stealth"] >= 2)
deathgasp = TRUE
var/list/parts = M.get_damaged_bodyparts(1,0) //brute only /datum/symptom/heal/coma/CanHeal(datum/disease/advance/A)
var/mob/living/M = A.affected_mob
if(M.status_flags & FAKEDEATH)
return power
else if(M.IsUnconscious() || M.stat == UNCONSCIOUS)
return power * 0.9
else if(M.stat == SOFT_CRIT)
return power * 0.5
else if(M.IsSleeping())
return power * 0.25
else if(M.getBruteLoss() + M.getFireLoss() >= 70 && !active_coma)
to_chat(M, "<span class='warning'>You feel yourself slip into a regenerative coma...</span>")
active_coma = TRUE
addtimer(CALLBACK(src, .proc/coma, M), 60)
if(M.getCloneLoss() > 0) /datum/symptom/heal/coma/proc/coma(mob/living/M)
M.adjustCloneLoss(-1) if(deathgasp)
M.take_bodypart_damage(0, 1) //Deals BURN damage, which is not cured by this symptom M.emote("deathgasp")
if(!hide_healing) M.status_flags |= FAKEDEATH
new /obj/effect/temp_visual/heal(get_turf(M), "#33FFCC") M.update_stat()
M.update_canmove()
addtimer(CALLBACK(src, .proc/uncoma, M), 300)
/datum/symptom/heal/coma/proc/uncoma(mob/living/M)
if(!active_coma)
return
active_coma = FALSE
M.status_flags &= ~FAKEDEATH
M.update_stat()
M.update_canmove()
/datum/symptom/heal/coma/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power)
var/heal_amt = 4 * actual_power
var/list/parts = M.get_damaged_bodyparts(1,1)
if(!parts.len) if(!parts.len)
return return
for(var/obj/item/bodypart/L in parts) for(var/obj/item/bodypart/L in parts)
if(L.heal_damage(heal_amt/parts.len, 0)) if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len))
M.update_damage_overlays() M.update_damage_overlays()
if(prob(base_message_chance) && !hide_healing) if(active_coma && M.getBruteLoss() + M.getFireLoss() == 0)
new /obj/effect/temp_visual/heal(get_turf(M), "#CC1100") uncoma(M)
return 1 return 1
/* /datum/symptom/heal/coma/passive_message_condition(mob/living/M)
////////////////////////////////////// if((M.getBruteLoss() + M.getFireLoss()) > 30)
return TRUE
Tissue Regrowth return FALSE
Little bit hidden.
Lowers resistance tremendously.
Decreases stage speed tremendously.
Decreases transmittablity temrendously.
Fatal Level.
Bonus
Heals burn damage slowly over time.
//////////////////////////////////////
*/
/datum/symptom/heal/burn /datum/symptom/heal/burn
name = "Tissue Hydration"
name = "Tissue Regrowth" desc = "The virus uses excess water inside and outside the body to repair burned tisue cells."
desc = "The virus recycles dead and burnt tissues, speeding up the healing of damage caused by burns."
stealth = 1 stealth = 1
resistance = -4 resistance = -3
stage_speed = -4 stage_speed = -3
transmittable = -4 transmittable = -3
level = 6 level = 6
passive_message = "<span class='notice'>Your burned skin feels oddly dry...</span>"
var/absorption_coeff = 1
threshold_desc = "<b>Resistance 5:</b> Water is consumed at a much slower rate.<br>\
<b>Stage Speed 7:</b> Increases healing speed."
/datum/symptom/heal/burn/Heal(mob/living/carbon/M, datum/disease/advance/A) /datum/symptom/heal/burn/Start(datum/disease/advance/A)
var/heal_amt = 2 * power if(!..())
return
if(A.properties["stage_rate"] >= 7)
power = 2
if(A.properties["stealth"] >= 2)
absorption_coeff = 0.25
/datum/symptom/heal/burn/CanHeal(datum/disease/advance/A)
. = 0
var/mob/living/M = A.affected_mob
if(M.fire_stacks < 0)
M.fire_stacks = min(M.fire_stacks + 1 * absorption_coeff, 0)
. += power
if(M.reagents.has_reagent("holywater"))
M.reagents.remove_reagent("holywater", 0.5 * absorption_coeff)
. += power * 0.75
else if(M.reagents.has_reagent("water"))
M.reagents.remove_reagent("water", 0.5 * absorption_coeff)
. += power * 0.5
/datum/symptom/heal/burn/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power)
var/heal_amt = 2 * actual_power
var/list/parts = M.get_damaged_bodyparts(0,1) //burn only var/list/parts = M.get_damaged_bodyparts(0,1) //burn only
if(!parts.len) if(!parts.len)
return return
if(prob(5))
to_chat(M, "<span class='notice'>You feel yourself absorbing the water around you to soothe your burned skin.</span>")
for(var/obj/item/bodypart/L in parts) for(var/obj/item/bodypart/L in parts)
if(L.heal_damage(0, heal_amt/parts.len)) if(L.heal_damage(0, heal_amt/parts.len))
M.update_damage_overlays() M.update_damage_overlays()
if(prob(base_message_chance) && !hide_healing)
new /obj/effect/temp_visual/heal(get_turf(M), "#FF9933")
return 1 return 1
/datum/symptom/heal/burn/passive_message_condition(mob/living/M)
if(M.getFireLoss())
return TRUE
return FALSE
/* /datum/symptom/heal/plasma
////////////////////////////////////// name = "Plasma Fixation"
desc = "The virus draws plasma from the atmosphere and from inside the body to stabilize body temperature and heal burns."
Heat Resistance //Needs a better name
No resistance change.
Decreases stage speed.
Decreases transmittablity.
Fatal Level.
Bonus
Heals burn damage over time, and helps stabilize body temperature.
//////////////////////////////////////
*/
/datum/symptom/heal/burn/plus
name = "Temperature Adaptation"
desc = "The virus quickly balances body heat, while also replacing tissues damaged by external sources."
stealth = 0 stealth = 0
resistance = 0 resistance = 0
stage_speed = -2 stage_speed = -2
transmittable = -2 transmittable = -2
level = 8 level = 8
passive_message = "<span class='notice'>You feel an odd attraction to plasma.</span>"
var/temp_rate = 1
threshold_desc = "<b>Transmission 6:</b> Increases temperature adjustment rate.<br>\
<b>Stage Speed 7:</b> Increases healing speed."
/datum/symptom/heal/burn/plus/Heal(mob/living/carbon/M, datum/disease/advance/A) /datum/symptom/heal/plasma/Start(datum/disease/advance/A)
var/heal_amt = 4 * power if(!..())
return
if(A.properties["stage_rate"] >= 7)
power = 2
if(A.properties["trasmission"] >= 6)
temp_rate = 4
/datum/symptom/heal/plasma/CanHeal(datum/disease/advance/A)
var/mob/living/M = A.affected_mob
var/datum/gas_mixture/environment
var/list/gases
. = 0
if(M.loc)
environment = M.loc.return_air()
if(environment)
gases = environment.gases
if(gases["plasma"] && gases["plasma"][MOLES] > gases["plasma"][GAS_META][META_GAS_MOLES_VISIBLE]) //if there's enough plasma in the air to see
. += power * 0.5
if(M.reagents.has_reagent("plasma"))
. += power * 0.75
/datum/symptom/heal/plasma/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power)
var/heal_amt = 4 * actual_power
var/list/parts = M.get_damaged_bodyparts(0,1) //burn only var/list/parts = M.get_damaged_bodyparts(0,1) //burn only
if(prob(5))
to_chat(M, "<span class='notice'>You feel yourself absorbing plasma inside and around you...</span>")
if(M.bodytemperature > 310) if(M.bodytemperature > 310)
M.bodytemperature = max(310, M.bodytemperature - (10 * heal_amt * TEMPERATURE_DAMAGE_COEFFICIENT)) M.bodytemperature = max(310, M.bodytemperature - (20 * temp_rate * TEMPERATURE_DAMAGE_COEFFICIENT))
if(prob(5))
to_chat(M, "<span class='notice'>You feel less hot.</span>")
else if(M.bodytemperature < 311) else if(M.bodytemperature < 311)
M.bodytemperature = min(310, M.bodytemperature + (10 * heal_amt * TEMPERATURE_DAMAGE_COEFFICIENT)) M.bodytemperature = min(310, M.bodytemperature + (20 * temp_rate * TEMPERATURE_DAMAGE_COEFFICIENT))
if(prob(5))
to_chat(M, "<span class='notice'>You feel warmer.</span>")
if(!parts.len) if(!parts.len)
return return
if(prob(5))
to_chat(M, "<span class='notice'>The pain from your burns fades rapidly.</span>")
for(var/obj/item/bodypart/L in parts) for(var/obj/item/bodypart/L in parts)
if(L.heal_damage(0, heal_amt/parts.len)) if(L.heal_damage(0, heal_amt/parts.len))
M.update_damage_overlays() M.update_damage_overlays()
if(prob(base_message_chance) && !hide_healing)
new /obj/effect/temp_visual/heal(get_turf(M), "#CC6600")
return 1 return 1
/*
//////////////////////////////////////
DNA Restoration /datum/symptom/heal/radiation
name = "Radioactive Resonance"
Not well hidden. desc = "The virus uses radiation to fix damage through dna mutations."
Lowers resistance minorly.
Does not affect stage speed.
Decreases transmittablity greatly.
Very high level.
Bonus
Heals brain damage, treats radiation, cleans SE of non-power mutations.
//////////////////////////////////////
*/
/datum/symptom/heal/dna
name = "Deoxyribonucleic Acid Restoration"
desc = "The virus repairs the host's genome, purging negative mutations."
stealth = -1 stealth = -1
resistance = -1 resistance = -2
stage_speed = 0 stage_speed = 0
transmittable = -3 transmittable = -3
level = 5 level = 6
symptom_delay_min = 3 symptom_delay_min = 1
symptom_delay_max = 8 symptom_delay_max = 1
threshold_desc = "<b>Stage Speed 6:</b> Additionally heals brain damage.<br>\ passive_message = "<span class='notice'>Your skin glows faintly for a moment.</span>"
<b>Stage Speed 11:</b> Increases brain damage healing." var/cellular_damage = FALSE
threshold_desc = "<b>Transmission 6:</b> Additionally heals cellular damage.<br>\
<b>Resistance 7:</b> Increases healing speed."
/datum/symptom/heal/dna/Heal(mob/living/carbon/M, datum/disease/advance/A) /datum/symptom/heal/radiation/Start(datum/disease/advance/A)
var/amt_healed = 2 * (power - 1) if(!..())
M.adjustBrainLoss(-amt_healed) return
//Non-power mutations, excluding race, so the virus does not force monkey -> human transformations. if(A.properties["resistance"] >= 7)
var/list/unclean_mutations = (GLOB.not_good_mutations|GLOB.bad_mutations) - GLOB.mutations_list[RACEMUT] power = 2
M.dna.remove_mutation_group(unclean_mutations) if(A.properties["trasmission"] >= 6)
M.radiation = max(M.radiation - (2 * amt_healed), 0) cellular_damage = TRUE
/datum/symptom/heal/radiation/CanHeal(datum/disease/advance/A)
var/mob/living/M = A.affected_mob
switch(M.radiation)
if(0)
return FALSE
if(1 to RAD_MOB_SAFE)
return 0.25
if(RAD_MOB_SAFE to RAD_BURN_THRESHOLD)
return 0.5
if(RAD_BURN_THRESHOLD to RAD_MOB_MUTATE)
return 0.75
if(RAD_MOB_MUTATE to RAD_MOB_KNOCKDOWN)
return 1
else
return 1.5
/datum/symptom/heal/radiation/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power)
var/heal_amt = actual_power
if(cellular_damage)
M.adjustCloneLoss(-heal_amt * 0.5)
var/list/parts = M.get_damaged_bodyparts(1,1)
if(!parts.len)
return
if(prob(4))
to_chat(M, "<span class='notice'>Your skin glows faintly, and you feel your wounds mending themselves.</span>")
for(var/obj/item/bodypart/L in parts)
if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len))
M.update_damage_overlays()
return 1 return 1
@@ -1,56 +1,6 @@
/* /*
////////////////////////////////////// //////////////////////////////////////
Weight Gain
Very Very Noticable.
Decreases resistance.
Decreases stage speed.
Reduced transmittable.
Intense Level.
Bonus
Increases the weight gain of the mob,
forcing it to eventually turn fat.
//////////////////////////////////////
*/
/datum/symptom/weight_gain
name = "Weight Gain"
desc = "The virus mutates the host's metabolism, making it gain weight much faster than normal."
stealth = -3
resistance = -3
stage_speed = -2
transmittable = -2
level = 4
severity = 3
base_message_chance = 100
symptom_delay_min = 15
symptom_delay_max = 45
threshold_desc = "<b>Stealth 4:</b> The symptom is less noticeable."
/datum/symptom/weight_gain/Start(datum/disease/advance/A)
if(!..())
return
if(A.properties["stealth"] >= 4) //warn less often
base_message_chance = 25
/datum/symptom/weight_gain/Activate(datum/disease/advance/A)
if(!..())
return
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
if(prob(base_message_chance))
to_chat(M, "<span class='warning'>[pick("You feel blubbery.", "Your stomach hurts.")]</span>")
else
M.overeatduration = min(M.overeatduration + 100, 600)
M.nutrition = min(M.nutrition + 100, NUTRITION_LEVEL_FULL)
/*
//////////////////////////////////////
Weight Loss Weight Loss
Very Very Noticable. Very Very Noticable.
@@ -70,8 +20,8 @@ Bonus
name = "Weight Loss" name = "Weight Loss"
desc = "The virus mutates the host's metabolism, making it almost unable to gain nutrition from food." desc = "The virus mutates the host's metabolism, making it almost unable to gain nutrition from food."
stealth = -3 stealth = -2
resistance = -2 resistance = 2
stage_speed = -2 stage_speed = -2
transmittable = -2 transmittable = -2
level = 3 level = 3
@@ -99,43 +49,3 @@ Bonus
to_chat(M, "<span class='warning'><i>[pick("So hungry...", "You'd kill someone for a bite of food...", "Hunger cramps seize you...")]</i></span>") to_chat(M, "<span class='warning'><i>[pick("So hungry...", "You'd kill someone for a bite of food...", "Hunger cramps seize you...")]</i></span>")
M.overeatduration = max(M.overeatduration - 100, 0) M.overeatduration = max(M.overeatduration - 100, 0)
M.nutrition = max(M.nutrition - 100, 0) M.nutrition = max(M.nutrition - 100, 0)
/*
//////////////////////////////////////
Weight Even
Very Noticable.
Decreases resistance.
Decreases stage speed.
Reduced transmittable.
High level.
Bonus
Causes the weight of the mob to
be even, meaning eating isn't
required anymore.
//////////////////////////////////////
*/
/datum/symptom/weight_even
name = "Weight Even"
desc = "The virus alters the host's metabolism, making it far more efficient then normal, and synthesizing nutrients from normally unedible sources."
stealth = -3
resistance = -2
stage_speed = -2
transmittable = -2
level = 4
symptom_delay_min = 5
symptom_delay_max = 5
/datum/symptom/weight_even/Activate(datum/disease/advance/A)
if(!..())
return
var/mob/living/M = A.affected_mob
switch(A.stage)
if(4, 5)
M.overeatduration = 0
M.nutrition = NUTRITION_LEVEL_WELL_FED + 50