Removing disease1/virus1 from repo

This commit is contained in:
ZomgPonies
2014-07-16 02:00:32 -04:00
parent aafa11712a
commit 2d31bfa01d
50 changed files with 0 additions and 3113 deletions
-137
View File
@@ -1,137 +0,0 @@
/datum/disease/addiction
name = "Chemical Addiction"
max_stages = 5
spread = "None"
spread_type = SPECIAL
cure = "Unknown"
cure_id = list("fixer", "water")
cure_chance = 3
affected_species = list("Human", "Monkey", "Skrell", "Unathi", "Tajaran", "Kidan", "Grey")
var/datum/reagent/addicted_to
var/addiction
var/addiction_countdown = 1800 // Three minutes
/datum/disease/addiction/New()
if(addicted_to)
src.name = "[addicted_to.name] Addiction"
src.addiction ="[addicted_to.name]"
src.cure = addicted_to.id
//affected_mob.addictions += addicted_to
..()
/datum/disease/addiction/proc/has_addict_reagent()
var/result = 0
if(affected_mob.reagents.has_reagent(addicted_to))
result = 1
return result
/datum/disease/addiction/process()
if(!holder) return
var/addict_reagent_present = has_addict_reagent()
var/tickcount = 0
if(affected_mob)
for(var/datum/disease/D in affected_mob.viruses)
if(D != src)
if(istype(src, D.type))
if(istype(src.addicted_to, D:addicted_to)) // Allow for multiple addictions as long as each addiction is for a different reagent
del(src) // if there are somehow two viruses of the same kind in the system, delete the other one
if(holder == affected_mob)
if(affected_mob.stat < 2) //he's alive
if(addict_reagent_present) //he's taken the reagent to which he's addicted
stage = 1
tickcount++
if(prob(20))
affected_mob << "\blue You feel a wave of euphoria as [addiction] surges through your bloodstream..."
if(tickcount >= 900)
stage_act()
tickcount = 0
else //he's ignored his addiction or hasn't taken the reagent
stage_act()
else //he's dead.
if(spread_type!=SPECIAL)
spread_type = CONTACT_GENERAL
affected_mob = null
if(!affected_mob) //the virus is in inanimate obj
if(prob(70))
if(--longevity<=0)
cure(0)
return
/datum/disease/addiction/stage_act()
var/cure_present = has_cure()
var/addict_reagent_present = has_addict_reagent()
if(carrier&&!cure_present)
return
spread = (cure_present?"Remissive":initial(spread))
if(stage > max_stages)
stage = max_stages
if(stage_prob != 0 && prob(stage_prob) && stage != max_stages && !cure_present && !addict_reagent_present) //now the disease shouldn't get back up to stage 4 in no time
stage++
if(stage != 1 && (prob(1) || (cure_present && prob(cure_chance))))
stage--
else if(stage <= 1 && ((prob(1) && curable) || (cure_present && prob(cure_chance))))
cure()
return
switch(stage)
if(2)
if(prob(5))
affected_mob << "\red You can't stop thinking about [addiction]!"
if(affected_mob.sleeping && prob(1))
affected_mob << "\blue You feel better."
stage--
if(prob(1))
if(prob(1))
stage--
if(3)
if(prob(5))
affected_mob << "\red You gotta have some [addiction]!"
if(affected_mob.sleeping && prob(1))
affected_mob << "\blue You feel better."
stage--
if(prob(1))
if(prob(1))
stage--
if(4)
if(prob(7))
affected_mob << "\red Gotta have some [addiction]!"
if(prob(10))
affected_mob.take_organ_damage(1)
if(prob(2))
affected_mob << "\red Your stomach hurts."
if(prob(5))
affected_mob.emote("blink")
if(prob(10))
affected_mob.toxloss += 1
affected_mob.updatehealth()
if(affected_mob.sleeping && prob(1))
affected_mob << "\blue You feel better."
stage--
if(prob(1))
if(prob(1))
stage--
if(5)
if(prob(5))
affected_mob << "\red \bold You can't stand not having [addiction]!"
if(prob(20))
affected_mob.toxloss += 2
affected_mob.updatehealth()
if(prob(2))
affected_mob << "\red \bold [addiction] calls out to your mind!"
for(var/mob/O in viewers(affected_mob, null))
O.show_message(text("\red [] rakes at their eyes!", affected_mob), 1)
affected_mob.eye_blind = 2
affected_mob.eye_blurry = 3
if(prob(1))
affected_mob.emote("twitch")
if(affected_mob.sleeping && prob(1))
affected_mob << "\blue You feel better."
stage--
if(prob(1))
if(prob(1))
stage--
-423
View File
@@ -1,423 +0,0 @@
/*
Advance Disease is a system for Virologist to Engineer their own disease with symptoms that have effects and properties
which add onto the overall disease.
If you need help with creating new symptoms or expanding the advance disease, ask for Giacom on #coderbus.
*/
#define RANDOM_STARTING_LEVEL 2
var/list/archive_diseases = list()
// The order goes from easy to cure to hard to cure.
var/list/advance_cures = list(
"nutriment", "sugar", "orangejuice",
"spaceacillin", "kelotane", "ethanol",
"leporazine", "synaptizine", "lipozine",
"silver", "gold", "plasma"
)
/*
PROPERTIES
*/
/datum/disease/advance
name = "Unknown" // We will always let our Virologist name our disease.
desc = "An engineered disease which can contain a multitude of symptoms."
form = "Advance Disease" // Will let med-scanners know that this disease was engineered.
agent = "advance microbes"
max_stages = 5
spread = "Unknown"
affected_species = list("Human","Monkey")
// NEW VARS
var/list/symptoms = list() // The symptoms of the disease.
var/id = ""
var/processing = 0
/*
OLD PROCS
*/
/datum/disease/advance/New(var/process = 1, var/datum/disease/advance/D)
// Setup our dictionary if it hasn't already.
if(!dictionary_symptoms.len)
for(var/symp in list_symptoms)
var/datum/symptom/S = new symp
dictionary_symptoms[S.id] = symp
if(!istype(D))
D = null
// Generate symptoms if we weren't given any.
if(!symptoms || !symptoms.len)
if(!D || !D.symptoms || !D.symptoms.len)
symptoms = GenerateSymptoms()
else
for(var/datum/symptom/S in D.symptoms)
symptoms += new S.type
Refresh()
..(process, D)
return
/datum/disease/advance/Del()
if(processing)
for(var/datum/symptom/S in symptoms)
S.End(src)
..()
// Randomly pick a symptom to activate.
/datum/disease/advance/stage_act()
..()
if(symptoms && symptoms.len)
if(!processing)
processing = 1
for(var/datum/symptom/S in symptoms)
S.Start(src)
for(var/datum/symptom/S in symptoms)
S.Activate(src)
else
CRASH("We do not have any symptoms during stage_act()!")
// Compares type then ID.
/datum/disease/advance/IsSame(var/datum/disease/advance/D)
if(!(istype(D, /datum/disease/advance)))
return 0
if(src.GetDiseaseID() != D.GetDiseaseID())
return 0
return 1
// To add special resistances.
/datum/disease/advance/cure(var/resistance=1)
if(affected_mob)
var/id = "[GetDiseaseID()]"
if(resistance && !(id in affected_mob.resistances))
affected_mob.resistances[id] = id
affected_mob.viruses -= src //remove the datum from the list
del(src) //delete the datum to stop it processing
return
// Returns the advance disease with a different reference memory.
/datum/disease/advance/Copy(var/process = 0)
return new /datum/disease/advance(process, src, 1)
/*
NEW PROCS
*/
// Mix the symptoms of two diseases (the src and the argument)
/datum/disease/advance/proc/Mix(var/datum/disease/advance/D)
if(!(src.IsSame(D)))
var/list/possible_symptoms = shuffle(D.symptoms)
for(var/datum/symptom/S in possible_symptoms)
AddSymptom(new S.type)
/datum/disease/advance/proc/HasSymptom(var/datum/symptom/S)
for(var/datum/symptom/symp in symptoms)
if(symp.id == S.id)
return 1
return 0
// Will generate new unique symptoms, use this if there are none. Returns a list of symptoms that were generated.
/datum/disease/advance/proc/GenerateSymptoms(var/type_level_limit = RANDOM_STARTING_LEVEL, var/amount_get = 0)
var/list/generated = list() // Symptoms we generated.
// Generate symptoms. By default, we only choose non-deadly symptoms.
var/list/possible_symptoms = list()
for(var/symp in list_symptoms)
var/datum/symptom/S = new symp
if(S.level <= type_level_limit)
if(!HasSymptom(S))
possible_symptoms += S
if(!possible_symptoms.len)
return
//error("Advance Disease - We weren't able to get any possible symptoms in GenerateSymptoms([type_level_limit], [amount_get])")
// Random chance to get more than one symptom
var/number_of = amount_get
if(!amount_get)
number_of = 1
while(prob(20))
number_of += 1
for(var/i = 1; number_of >= i; i++)
var/datum/symptom/S = pick(possible_symptoms)
generated += S
possible_symptoms -= S
return generated
/datum/disease/advance/proc/Refresh(var/new_name = 0)
//world << "[src.name] \ref[src] - REFRESH!"
var/list/properties = GenerateProperties()
AssignProperties(properties)
if(!archive_diseases[GetDiseaseID()])
if(new_name)
AssignName()
archive_diseases[GetDiseaseID()] = src // So we don't infinite loop
archive_diseases[GetDiseaseID()] = new /datum/disease/advance(0, src, 1)
var/datum/disease/advance/A = archive_diseases[GetDiseaseID()]
AssignName(A.name)
//Generate disease properties based on the effects. Returns an associated list.
/datum/disease/advance/proc/GenerateProperties()
if(!symptoms || !symptoms.len)
CRASH("We did not have any symptoms before generating properties.")
return
var/list/properties = list("resistance" = 1, "stealth" = 1, "stage_rate" = 1, "transmittable" = 1, "severity" = 1)
for(var/datum/symptom/S in symptoms)
properties["resistance"] += S.resistance
properties["stealth"] += S.stealth
properties["stage_rate"] += S.stage_speed
properties["transmittable"] += S.transmittable
properties["severity"] = max(properties["severity"], S.level) // severity is based on the highest level symptom
return properties
// Assign the properties that are in the list.
/datum/disease/advance/proc/AssignProperties(var/list/properties = list())
if(properties && properties.len)
hidden = list( (properties["stealth"] > 2), (properties["stealth"] > 3) )
// The more symptoms we have, the less transmittable it is but some symptoms can make up for it.
SetSpread(Clamp(properties["transmittable"] - symptoms.len, BLOOD, AIRBORNE))
permeability_mod = max(Ceiling(0.4 * properties["transmittable"]), 1)
cure_chance = 15 - Clamp(properties["resistance"], -5, 5) // can be between 10 and 20
stage_prob = max(properties["stage_rate"], 2)
SetSeverity(properties["severity"])
GenerateCure(properties)
else
CRASH("Our properties were empty or null!")
// Assign the spread type and give it the correct description.
/datum/disease/advance/proc/SetSpread(var/spread_id)
switch(spread_id)
if(NON_CONTAGIOUS)
spread = "None"
if(SPECIAL)
spread = "None"
if(CONTACT_GENERAL, CONTACT_HANDS, CONTACT_FEET)
spread = "On contact"
if(AIRBORNE)
spread = "Airborne"
if(BLOOD)
spread = "Blood"
spread_type = spread_id
//world << "Setting spread type to [spread_id]/[spread]"
/datum/disease/advance/proc/SetSeverity(var/level_sev)
switch(level_sev)
if(-INFINITY to 0)
severity = "Non-Threat"
if(1)
severity = "Minor"
if(2)
severity = "Medium"
if(3)
severity = "Harmful"
if(4)
severity = "Dangerous!"
if(5 to INFINITY)
severity = "BIOHAZARD THREAT!"
else
severity = "Unknown"
// Will generate a random cure, the less resistance the symptoms have, the harder the cure.
/datum/disease/advance/proc/GenerateCure(var/list/properties = list())
if(properties && properties.len)
var/res = Clamp(properties["resistance"] - (symptoms.len / 2), 1, advance_cures.len)
//world << "Res = [res]"
cure_id = advance_cures[res]
// Get the cure name from the cure_id
var/datum/reagent/D = chemical_reagents_list[cure_id]
cure = D.name
return
// Randomly generate a symptom, has a chance to lose or gain a symptom.
/datum/disease/advance/proc/Evolve(var/level = 2)
var/s = safepick(GenerateSymptoms(level, 1))
if(s)
AddSymptom(s)
Refresh(1)
return
// Randomly remove a symptom.
/datum/disease/advance/proc/Devolve()
if(symptoms.len > 1)
var/s = safepick(symptoms)
if(s)
RemoveSymptom(s)
Refresh(1)
return
// Name the disease.
/datum/disease/advance/proc/AssignName(var/name = "Unknown")
src.name = name
return
// Return a unique ID of the disease.
/datum/disease/advance/proc/GetDiseaseID()
var/list/L = list()
for(var/datum/symptom/S in symptoms)
L += S.id
L = sortList(L) // Sort the list so it doesn't matter which order the symptoms are in.
var/result = list2text(L, ":")
id = result
return result
// Add a symptom, if it is over the limit (with a small chance to be able to go over)
// we take a random symptom away and add the new one.
/datum/disease/advance/proc/AddSymptom(var/datum/symptom/S)
if(HasSymptom(S))
return
if(symptoms.len < 5 + rand(-1, 1))
symptoms += S
else
RemoveSymptom(pick(symptoms))
symptoms += S
return
// Simply removes the symptom.
/datum/disease/advance/proc/RemoveSymptom(var/datum/symptom/S)
symptoms -= S
return
/*
Static Procs
*/
// Mix a list of advance diseases and return the mixed result.
/proc/Advance_Mix(var/list/D_list)
//world << "Mixing!!!!"
var/list/diseases = list()
for(var/datum/disease/advance/A in D_list)
diseases += A.Copy()
if(!diseases.len)
return null
if(diseases.len <= 1)
return pick(diseases) // Just return the only entry.
var/i = 0
// Mix our diseases until we are left with only one result.
while(i < 20 && diseases.len > 1)
i++
var/datum/disease/advance/D1 = pick(diseases)
diseases -= D1
var/datum/disease/advance/D2 = pick(diseases)
D2.Mix(D1)
// Should be only 1 entry left, but if not let's only return a single entry
//world << "END MIXING!!!!!"
var/datum/disease/advance/to_return = pick(diseases)
to_return.Refresh(1)
return to_return
/proc/SetViruses(var/datum/reagent/R, var/list/data)
if(data)
var/list/preserve = list()
if(istype(data) && data["viruses"])
for(var/datum/disease/A in data["viruses"])
preserve += A.Copy()
R.data = data.Copy()
else
R.data = data
if(preserve.len)
R.data["viruses"] = preserve
/proc/AdminCreateVirus(var/mob/user)
var/i = 5
var/datum/disease/advance/D = new(0, null)
D.symptoms = list()
var/list/symptoms = list()
symptoms += "Done"
symptoms += list_symptoms.Copy()
do
var/symptom = input(user, "Choose a symptom to add ([i] remaining)", "Choose a Symptom") in symptoms
if(istext(symptom))
i = 0
else if(ispath(symptom))
var/datum/symptom/S = new symptom
if(!D.HasSymptom(S))
D.symptoms += S
i -= 1
while(i > 0)
if(D.symptoms.len > 0)
var/new_name = input(user, "Name your new disease.", "New Name")
D.AssignName(new_name)
D.Refresh()
for(var/datum/disease/advance/AD in active_diseases)
AD.Refresh()
for(var/mob/living/carbon/human/H in shuffle(living_mob_list))
if(H.z != 1)
continue
if(!H.has_disease(D))
H.contract_disease(D, 1)
break
var/list/name_symptoms = list()
for(var/datum/symptom/S in D.symptoms)
name_symptoms += S.name
message_admins("[key_name_admin(user)] has triggered a custom virus outbreak of [D.name]! It has these symptoms: [english_list(name_symptoms)]")
/*
/mob/verb/test()
for(var/datum/disease/D in active_diseases)
src << "<a href='?_src_=vars;Vars=\ref[D]'>[D.name] - [D.holder]</a>"
*/
#undef RANDOM_STARTING_LEVEL
-43
View File
@@ -1,43 +0,0 @@
// Cold
/datum/disease/advance/cold/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
if(!D)
name = "Cold"
symptoms = list(new/datum/symptom/sneeze)
..(process, D, copy)
// Flu
/datum/disease/advance/flu/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
if(!D)
name = "Flu"
symptoms = list(new/datum/symptom/cough)
..(process, D, copy)
// Voice Changing
/datum/disease/advance/voice_change/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
if(!D)
name = "Epiglottis Mutation"
symptoms = list(new/datum/symptom/voice_change)
..(process, D, copy)
// Toxin Filter
/datum/disease/advance/heal/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
if(!D)
name = "Liver Enhancer"
symptoms = list(new/datum/symptom/heal)
..(process, D, copy)
// Hullucigen
/datum/disease/advance/hullucigen/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
if(!D)
name = "Reality Impairment"
symptoms = list(new/datum/symptom/hallucigen)
..(process, D, copy)
@@ -1,45 +0,0 @@
/*
//////////////////////////////////////
Facial Hypertrichosis
Very very Noticable.
Decreases resistance slightly.
Decreases stage speed.
Reduced transmittability
Intense Level.
BONUS
Makes the mob grow a massive beard, regardless of gender.
//////////////////////////////////////
*/
/datum/symptom/beard
name = "Facial Hypertrichosis"
stealth = -3
resistance = -1
stage_speed = -3
transmittable = -1
level = 4
/datum/symptom/beard/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
switch(A.stage)
if(1, 2)
if(H.f_style == "Shaved")
H.f_style = "Adam Jensen Beard"
H.update_hair()
if(3, 4)
if(!(H.f_style == "Dwarf Beard") && !(H.f_style == "Very Long Beard") && !(H.f_style == "Full Beard"))
H.f_style = "Full Beard"
H.update_hair()
else
if(!(H.f_style == "Dwarf Beard") && !(H.f_style == "Very Long Beard"))
H.f_style = pick("Dwarf Beard", "Very Long Beard")
H.update_hair()
return
@@ -1,44 +0,0 @@
/*
//////////////////////////////////////
Choking
Very very noticable.
Lowers resistance.
Decreases stage speed.
Decreases transmittablity tremendously.
Moderate Level.
Bonus
Inflicts spikes of oxyloss
//////////////////////////////////////
*/
/datum/symptom/choking
name = "Choking"
stealth = -3
resistance = -2
stage_speed = -2
transmittable = -4
level = 3
/datum/symptom/choking/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2)
M << "<span class='notice'>[pick("You're having difficulty breathing.", "Your breathing becomes heavy.")]</span>"
if(3, 4)
M.adjustOxyLoss(5)
M.emote("gasp")
else
M << "<span class='danger'>[pick("You're choking!", "You can't breathe!")]</span>"
M.adjustOxyLoss(20)
M.emote("gasp")
// if(istype(M, /mob/living/carbon/human))
// var/mob/living/carbon/human/H = M
// H.silent += 15
return
@@ -1,39 +0,0 @@
/*
//////////////////////////////////////
Confusion
Little bit hidden.
Lowers resistance.
Decreases stage speed.
Not very transmittable.
Intense Level.
Bonus
Makes the affected mob be confused for short periods of time.
//////////////////////////////////////
*/
/datum/symptom/confusion
name = "Confusion"
stealth = 1
resistance = -1
stage_speed = -3
transmittable = 0
level = 4
/datum/symptom/confusion/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/carbon/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='notice'>[pick("You feel confused.", "You forgot what you were thinking about.")]</span>"
else
M << "<span class='notice'>You are unable to think straight!</span>"
M.confused = min(100, M.confused + 2)
return
@@ -1,39 +0,0 @@
/*
//////////////////////////////////////
Coughing
Noticable.
Little Resistance.
Doesn't increase stage speed much.
Transmittable.
Low Level.
BONUS
Will force the affected mob to drop small items!
//////////////////////////////////////
*/
/datum/symptom/cough
name = "Cough"
stealth = -1
resistance = 3
stage_speed = 1
transmittable = 2
level = 1
/datum/symptom/cough/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2, 3)
M << "<span notice='notice'>[pick("You swallow excess mucus.", "You lightly cough.")]</span>"
else
M.emote("cough")
var/obj/item/I = M.get_active_hand()
if(I && I.w_class < 3)
M.drop_item()
return
@@ -1,43 +0,0 @@
/*
//////////////////////////////////////
Damage Converter
Little bit hidden.
Lowers resistance tremendously.
Decreases stage speed tremendously.
Reduced transmittablity
Intense Level.
Bonus
Slowly converts brute/fire damage to toxin.
//////////////////////////////////////
*/
/datum/symptom/damage_converter
name = "Toxic Compensation"
stealth = 1
resistance = -4
stage_speed = -4
transmittable = -2
level = 4
/datum/symptom/damage_converter/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(4, 5)
Convert(M)
return
/datum/symptom/damage_converter/proc/Convert(var/mob/living/M)
if(M.getFireLoss() < M.getMaxHealth() || M.getBruteLoss() < M.getMaxHealth())
var/get_damage = rand(1, 2)
M.adjustFireLoss(-get_damage)
M.adjustBruteLoss(-get_damage)
M.adjustToxLoss(get_damage)
return 1
@@ -1,39 +0,0 @@
/*
//////////////////////////////////////
Deafness
Slightly noticable.
Lowers resistance.
Decreases stage speed slightly.
Decreases transmittablity.
Intense Level.
Bonus
Causes intermittent loss of hearing.
//////////////////////////////////////
*/
/datum/symptom/deafness
name = "Deafness"
stealth = -1
resistance = -2
stage_speed = -1
transmittable = -3
level = 4
/datum/symptom/deafness/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(3, 4)
M << "<span class='notice'>[pick("You hear a ringing in your ear.", "Your ears pop.")]</span>"
if(5)
if(!(M.sdisabilities & DEAF))
M << "<span class='danger'>Your ears pop and begin ringing loudly!</span>"
M.sdisabilities |= DEAF
spawn(200) M.sdisabilities &= ~DEAF
return
@@ -1,37 +0,0 @@
/*
//////////////////////////////////////
Dizziness
Hidden.
Lowers resistance considerably.
Decreases stage speed.
Reduced transmittability
Intense Level.
Bonus
Shakes the affected mob's screen for short periods.
//////////////////////////////////////
*/
/datum/symptom/dizzy // Not the egg
name = "Dizziness"
stealth = 2
resistance = -2
stage_speed = -3
transmittable = -1
level = 4
/datum/symptom/dizzy/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='notice'>[pick("You feel dizzy.", "Your head starts spinning.")]</span>"
else
M << "<span class='notice'>You are unable to look straight!</span>"
M.Dizzy(5)
return
@@ -1,35 +0,0 @@
/*
//////////////////////////////////////
Fever
No change to hidden.
Increases resistance.
Increases stage speed.
Little transmittable.
Low level.
Bonus
Heats up your body.
//////////////////////////////////////
*/
/datum/symptom/fever
name = "Fever"
stealth = 0
resistance = 3
stage_speed = 3
transmittable = 2
level = 2
/datum/symptom/fever/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/carbon/M = A.affected_mob
M << "<span class='notice'>[pick("You feel hot.", "You feel like you're burning.")]</span>"
if(M.bodytemperature < BODYTEMP_HEAT_DAMAGE_LIMIT)
M.bodytemperature = min(M.bodytemperature + (20 * A.stage), BODYTEMP_HEAT_DAMAGE_LIMIT - 1)
return
@@ -1,35 +0,0 @@
/*
//////////////////////////////////////
Necrotizing Fasciitis (AKA Flesh-Eating Disease)
Very very noticable.
Lowers resistance tremendously.
No changes to stage speed.
Decreases transmittablity temrendously.
Fatal Level.
Bonus
Deals brute damage over time.
//////////////////////////////////////
*/
/datum/symptom/flesh_eating
name = "Necrotizing Fasciitis"
stealth = -3
resistance = -4
stage_speed = 0
transmittable = -4
level = 6
/datum/symptom/flesh_eating/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(4, 5)
M << "<span class='notice'>[pick("You cringe as a violent pain takes over your body.", "It feels like your body is eating itself inside out.", "IT HURTS.")]</span>"
M.adjustBruteLoss(5)
return
@@ -1,37 +0,0 @@
/*
//////////////////////////////////////
Hallucigen
Very noticable.
Lowers resistance considerably.
Decreases stage speed.
Reduced transmittable.
Critical Level.
Bonus
Makes the affected mob be hallucinated for short periods of time.
//////////////////////////////////////
*/
/datum/symptom/hallucigen
name = "Hallucigen"
stealth = -2
resistance = -3
stage_speed = -3
transmittable = -1
level = 5
/datum/symptom/hallucigen/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/carbon/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='notice'>[pick("You notice someone in the corner of your eye.", "Is that footsteps?.")]</span>"
else
M.hallucination += 5
return
@@ -1,33 +0,0 @@
/*
//////////////////////////////////////
Headache
Noticable.
Highly resistant.
Increases stage speed.
Not transmittable.
Low Level.
BONUS
Displays an annoying message!
Should be used for buffing your disease.
//////////////////////////////////////
*/
/datum/symptom/headache
name = "Headache"
stealth = -1
resistance = 4
stage_speed = 2
transmittable = 0
level = 1
/datum/symptom/headache/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
M << "<span class='notice'>[pick("Your head hurts.", "Your head starts pounding.")]</span>"
return
@@ -1,40 +0,0 @@
/*
//////////////////////////////////////
Healing
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
name = "Toxic Filter"
stealth = 1
resistance = -4
stage_speed = -4
transmittable = -4
level = 6
/datum/symptom/heal/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(4, 5)
Heal(M)
return
/datum/symptom/heal/proc/Heal(var/mob/living/M)
var/get_damage = rand(1, 2)
M.adjustToxLoss(-get_damage)
return 1
@@ -1,33 +0,0 @@
/*
//////////////////////////////////////
Itching
Not noticable or unnoticable.
Resistant.
Increases stage speed.
Little transmittable.
Low Level.
BONUS
Displays an annoying message!
Should be used for buffing your disease.
//////////////////////////////////////
*/
/datum/symptom/itching
name = "Itching"
stealth = 0
resistance = 3
stage_speed = 3
transmittable = 1
level = 1
/datum/symptom/itching/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
M << "<span class='notice'>Your [pick("back", "arm", "leg", "elbow", "head")] itches.</span>"
return
@@ -1,37 +0,0 @@
/*
//////////////////////////////////////
Self-Respiration
Slightly hidden.
Lowers resistance significantly.
Decreases stage speed significantly.
Decreases transmittablity tremendously.
Fatal Level.
Bonus
The body generates Inaprovaline.
//////////////////////////////////////
*/
/datum/symptom/oxygen
name = "Self-Respiration"
stealth = 1
resistance = -3
stage_speed = -3
transmittable = -4
level = 6
/datum/symptom/oxygen/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='notice'>[pick("Your lungs feel sore.", "You are now breathing manually.")]</span>"
else
if (M.reagents.get_reagent_amount("inaprovaline") < 30)
M.reagents.add_reagent("inaprovaline", 10)
return
@@ -1,52 +0,0 @@
/*
//////////////////////////////////////
Diarrhea
Very Very Noticable.
Decreases resistance.
Doesn't increase stage speed.
Little transmittable.
Intense Level.
Bonus
Forces the affected mob to shit their pants!
Meaning your disease can spread via
people walking on the poop.
Makes the affected mob lose nutrition and
heal toxin damage.
//////////////////////////////////////
*/
/datum/symptom/poop
name = "Diarrhea"
stealth = -2
resistance = -1
stage_speed = 0
transmittable = 1
level = 3
/datum/symptom/poop/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB / 2))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='notice'>[pick("Your stomach rumbles strangely.", "You feel like you're going shit your pants any second now!")]</span>"
else
Poop(M)
return
/datum/symptom/poop/proc/Poop(var/mob/living/M)
M.visible_message("<B>[M]</B> has explosive diarrhea all over the floor!")
M.nutrition -= 20
M.adjustToxLoss(-3)
var/turf/pos = get_turf(M)
pos.add_poop_floor(M)
playsound(pos, 'sound/effects/splat.ogg', 50, 1)
@@ -1,47 +0,0 @@
/*
//////////////////////////////////////
Alopecia
Noticable.
Decreases resistance slightly.
Reduces stage speed slightly.
Transmittable.
Intense Level.
BONUS
Makes the mob lose hair.
//////////////////////////////////////
*/
/datum/symptom/shedding
name = "Alopecia"
stealth = -1
resistance = -1
stage_speed = -1
transmittable = 2
level = 4
/datum/symptom/shedding/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
M << "<span class='notice'>[pick("Your scalp itches.", "Your skin feels flakey.")]</span>"
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
switch(A.stage)
if(3, 4)
if(!(H.h_style == "Bald") && !(H.h_style == "Balding Hair"))
H << "<span class='danger'>Your hair starts to fall out in clumps...</span>"
spawn(50)
H.h_style = "Balding Hair"
H.update_hair()
if(5)
if(!(H.f_style == "Shaved") || !(H.h_style == "Bald"))
H << "<span class='danger'>Your hair starts to fall out in clumps...</span>"
spawn(50)
H.f_style = "Shaved"
H.h_style = "Bald"
H.update_hair()
return
@@ -1,35 +0,0 @@
/*
//////////////////////////////////////
Shivering
No change to hidden.
Increases resistance.
Increases stage speed.
Little transmittable.
Low level.
Bonus
Cools down your body.
//////////////////////////////////////
*/
/datum/symptom/shivering
name = "Shivering"
stealth = 0
resistance = 2
stage_speed = 2
transmittable = 2
level = 2
/datum/symptom/shivering/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/carbon/M = A.affected_mob
M << "<span class='notice'>[pick("You feel cold.", "You start shaking from the cold.")]</span>"
if(M.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT)
M.bodytemperature = min(M.bodytemperature - (20 * A.stage), BODYTEMP_COLD_DAMAGE_LIMIT + 1)
return
@@ -1,38 +0,0 @@
/*
//////////////////////////////////////
Sneezing
Very Noticable.
Increases resistance.
Doesn't increase stage speed.
Very transmittable.
Low Level.
Bonus
Forces a spread type of AIRBORNE
with extra range!
//////////////////////////////////////
*/
/datum/symptom/sneeze
name = "Sneezing"
stealth = -2
resistance = 3
stage_speed = 0
transmittable = 4
level = 1
/datum/symptom/sneeze/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2, 3)
M.emote("sniff")
else
M.emote("sneeze")
A.spread(A.holder, 5, AIRBORNE)
return
@@ -1,37 +0,0 @@
/*
//////////////////////////////////////
Stimulant
Noticable.
Lowers resistance significantly.
Decreases stage speed moderately..
Decreases transmittablity tremendously.
Moderate Level.
Bonus
The body generates Hyperzine.
//////////////////////////////////////
*/
/datum/symptom/stimulant
name = "Stimulant"
stealth = -1
resistance = -3
stage_speed = -2
transmittable = -4
level = 3
/datum/symptom/stimulant/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='notice'>[pick("You feel restless.", "You feel like running laps around the station.")]</span>"
else
if (M.reagents.get_reagent_amount("hyperzine") < 30)
M.reagents.add_reagent("hyperzine", 10)
return
@@ -1,38 +0,0 @@
// Symptoms are the effects that engineered advanced diseases do.
var/list/list_symptoms = typesof(/datum/symptom) - /datum/symptom
var/list/dictionary_symptoms = list()
var/global/const/SYMPTOM_ACTIVATION_PROB = 3
/datum/symptom
// Buffs/Debuffs the symptom has to the overall engineered disease.
var/name = ""
var/stealth = 0
var/resistance = 0
var/stage_speed = 0
var/transmittable = 0
// The type level of the symptom. Higher is more lethal and harder to generate.
var/level = 0
// The hash tag for our diseases, we will add it up with our other symptoms to get a unique id! ID MUST BE UNIQUE!!!
var/id = ""
/datum/symptom/New()
var/list/S = list_symptoms
for(var/i = 1; i <= S.len; i++)
if(src.type == S[i])
id = "[i]"
return
CRASH("We couldn't assign an ID!")
// Called when processing of the advance disease, which holds this symptom, starts.
/datum/symptom/proc/Start(var/datum/disease/advance/A)
return
// Called when the advance disease is going to be deleted or when the advance disease stops processing.
/datum/symptom/proc/End(var/datum/disease/advance/A)
return
/datum/symptom/proc/Activate(var/datum/disease/advance/A)
return
@@ -1,47 +0,0 @@
/*
//////////////////////////////////////
Hyphema (Eye bleeding)
Slightly noticable.
Lowers resistance tremendously.
Decreases stage speed tremendously.
Decreases transmittablity.
Critical Level.
Bonus
Causes blindness.
//////////////////////////////////////
*/
/datum/symptom/visionloss
name = "Hyphema"
stealth = -1
resistance = -4
stage_speed = -4
transmittable = -3
level = 5
/datum/symptom/visionloss/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2)
M << "<span class='notice'>Your eyes itch.</span>"
if(3, 4)
M << "<span class='notice'>Your eyes ache.</span>"
M.eye_blurry = 10
M.eye_stat += 1
else
M << "<span class='danger'>Your eyes burn horrificly!</span>"
M.eye_blurry = 20
M.eye_stat += 5
if (M.eye_stat >= 10)
M.disabilities |= NEARSIGHTED
if (prob(M.eye_stat - 10 + 1) && !(M.sdisabilities & BLIND))
M << "<span class='danger'>You go blind!</span>"
M.sdisabilities |= BLIND
return
@@ -1,41 +0,0 @@
/*
//////////////////////////////////////
Vitiligo
Extremely Noticable.
Decreases resistance slightly.
Reduces stage speed slightly.
Reduces transmission.
Critical Level.
BONUS
Makes the mob lose skin pigmentation.
//////////////////////////////////////
*/
/datum/symptom/vitiligo
name = "Vitiligo"
stealth = -3
resistance = -1
stage_speed = -1
transmittable = -2
level = 5
/datum/symptom/vitiligo/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(H.s_tone == "albino")
return
switch(A.stage)
if(5)
H.s_tone = "albino"
H.update_body(0)
else
H.visible_message("<span class='warning'>[H] looks a bit pale...</span>", "<span class='notice'>You look a bit pale...</span>")
return
@@ -1,54 +0,0 @@
/*
//////////////////////////////////////
Voice Change
Very Very noticable.
Lowers resistance considerably.
Decreases stage speed.
Reduced transmittable.
Fatal Level.
Bonus
Changes the voice of the affected mob. Causing confusion in communication.
//////////////////////////////////////
*/
/datum/symptom/voice_change
name = "Voice Change"
stealth = -2
resistance = -3
stage_speed = -3
transmittable = -1
level = 6
/datum/symptom/voice_change/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/carbon/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='notice'>[pick("Your throat hurts.", "You clear your throat.")]</span>"
else
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/random_name = ""
switch(H.gender)
if(MALE)
random_name = pick(first_names_male)
else
random_name = pick(first_names_female)
random_name += " [pick(last_names)]"
H.SetSpecialVoice(random_name)
return
/datum/symptom/voice_change/End(var/datum/disease/advance/A)
..()
if(ishuman(A.affected_mob))
var/mob/living/carbon/human/H = A.affected_mob
H.UnsetSpecialVoice()
return
@@ -1,94 +0,0 @@
/*
//////////////////////////////////////
Vomiting
Very Very Noticable.
Decreases resistance.
Doesn't increase stage speed.
Little transmittable.
Medium Level.
Bonus
Forces the affected mob to vomit!
Meaning your disease can spread via
people walking on vomit.
Makes the affected mob lose nutrition and
heal toxin damage.
//////////////////////////////////////
*/
/datum/symptom/vomit
name = "Vomiting"
stealth = -2
resistance = -1
stage_speed = 0
transmittable = 1
level = 3
/datum/symptom/vomit/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB / 2))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='notice'>[pick("You feel nauseous.", "You feel like you're going to throw up!")]</span>"
else
Vomit(M)
return
/datum/symptom/vomit/proc/Vomit(var/mob/living/M)
M.visible_message("<B>[M]</B> vomits on the floor!")
M.nutrition -= 20
M.adjustToxLoss(-3)
var/turf/pos = get_turf(M)
pos.add_vomit_floor(M)
playsound(pos, 'sound/effects/splat.ogg', 50, 1)
/*
//////////////////////////////////////
Vomiting Blood
Very Very Noticable.
Decreases resistance.
Decreases stage speed.
Little transmittable.
Intense level.
Bonus
Forces the affected mob to vomit blood!
Meaning your disease can spread via
people walking on the blood.
Makes the affected mob lose health.
//////////////////////////////////////
*/
/datum/symptom/vomit/blood
name = "Blood Vomiting"
stealth = -2
resistance = -1
stage_speed = -1
transmittable = 1
level = 4
/datum/symptom/vomit/blood/Vomit(var/mob/living/M)
M.Stun(1)
M.visible_message("<B>[M]</B> vomits on the floor!")
// They lose blood and health.
var/brute_dam = M.getBruteLoss()
if(brute_dam < 50)
M.adjustBruteLoss(3)
var/turf/simulated/pos = get_turf(M)
pos.add_blood_floor(M)
playsound(pos, 'sound/effects/splat.ogg', 50, 1)
@@ -1,119 +0,0 @@
/*
//////////////////////////////////////
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"
stealth = -3
resistance = -3
stage_speed = -2
transmittable = -2
level = 4
/datum/symptom/weight_gain/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='notice'>[pick("You feel blubbery.", "You feel full.")]</span>"
else
M.overeatduration = min(M.overeatduration + 100, 600)
M.nutrition = min(M.nutrition + 100, 500)
return
/*
//////////////////////////////////////
Weight Loss
Very Very Noticable.
Decreases resistance.
Decreases stage speed.
Reduced Transmittable.
High level.
Bonus
Decreases the weight of the mob,
forcing it to be skinny.
//////////////////////////////////////
*/
/datum/symptom/weight_loss
name = "Weight Loss"
stealth = -3
resistance = -2
stage_speed = -2
transmittable = -2
level = 3
/datum/symptom/weight_loss/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='notice'>[pick("You feel hungry.", "You crave for food.")]</span>"
else
M << "<span class='notice'>Your stomach rumbles.</span>"
M.overeatduration = max(M.overeatduration - 100, 0)
M.nutrition = max(M.nutrition - 100, 0)
return
/*
//////////////////////////////////////
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"
stealth = -3
resistance = -2
stage_speed = -2
transmittable = -2
level = 4
/datum/symptom/weight_loss/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(4, 5)
M.overeatduration = 0
M.nutrition = 400
return
@@ -1,55 +0,0 @@
/*
//////////////////////////////////////
Eternal Youth
Moderate stealth boost.
Increases resistance tremendously.
Increases stage speed tremendously.
Reduces transmission tremendously.
Critical Level.
BONUS
Gives you immortality and eternal youth!!!
Can be used to buff your virus
//////////////////////////////////////
*/
/datum/symptom/youth
name = "Eternal Youth"
stealth = 3
resistance = 4
stage_speed = 4
transmittable = -4
level = 5
/datum/symptom/youth/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB * 2))
var/mob/living/M = A.affected_mob
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
switch(A.stage)
if(1)
if(H.age > 41)
H.age = 41
H << "<span class='notice'>You haven't had this much energy in years!</span>"
if(2)
if(H.age > 36)
H.age = 36
H << "<span class='notice'>You're suddenly in a good mood.</span>"
if(3)
if(H.age > 31)
H.age = 31
H << "<span class='notice'>You begin to feel more lithe.</span>"
if(4)
if(H.age > 26)
H.age = 26
H << "<span class='notice'>You feel reinvigorated.</span>"
if(5)
if(H.age > 21)
H.age = 21
H << "<span class='notice'>You feel like you can take on the world!</span>"
return
-153
View File
@@ -1,153 +0,0 @@
//affected_mob.contract_disease(new /datum/disease/alien_embryo)
//cael - retained this file for legacy reference, see code\modules\mob\living\carbon\alien\special\alien_embryo.dm for replacement
//Our own special process so that dead hosts still chestburst
/datum/disease/alien_embryo/process()
if(!holder) return
if(holder == affected_mob)
stage_act()
if(affected_mob)
if(affected_mob.stat == DEAD)
if(prob(50))
if(--longevity<=0)
cure(0)
else //the virus is in inanimate obj
cure(0)
return
/datum/disease/alien_embryo/New()
..()
/* Special Hud for xenos */
spawn(0)
if (affected_mob)
AddInfectionImages(affected_mob)
/datum/disease/alien_embryo/cure(var/resistance=1)
..()
spawn(0)
if (affected_mob)
RemoveInfectionImages(affected_mob)
/datum/disease/alien_embryo
name = "Unidentified Foreign Body"
max_stages = 5
spread = "None"
spread_type = SPECIAL
cure = "Unknown"
cure_id = list("lexorin","toxin","gargleblaster")
cure_chance = 50
affected_species = list("Human", "Monkey")
permeability_mod = 15//likely to infect
can_carry = 0
stage_prob = 3
var/gibbed = 0
stage_minimum_age = 300
/datum/disease/alien_embryo/stage_act()
..()
switch(stage)
if(2, 3)
if(prob(1))
affected_mob.emote("sneeze")
if(prob(1))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "\red Your throat feels sore."
if(prob(1))
affected_mob << "\red Mucous runs down the back of your throat."
if(4)
if(prob(1))
affected_mob.emote("sneeze")
if(prob(1))
affected_mob.emote("cough")
if(prob(2))
affected_mob << "\red Your muscles ache."
if(prob(20))
affected_mob.take_organ_damage(1)
if(prob(2))
affected_mob << "\red Your stomach hurts."
if(prob(20))
affected_mob.adjustToxLoss(1)
affected_mob.updatehealth()
if(5)
affected_mob << "\red You feel something tearing its way out of your stomach..."
affected_mob.adjustToxLoss(10)
affected_mob.updatehealth()
if(prob(50))
if(gibbed != 0) return 0
var/list/candidates = get_alien_candidates()
var/picked = null
// To stop clientless larva, we will check that our host has a client
// if we find no ghosts to become the alien. If the host has a client
// he will become the alien but if he doesn't then we will set the stage
// to 2, so we don't do a process heavy check everytime.
if(candidates.len)
picked = pick(candidates)
else if(affected_mob.client)
picked = affected_mob.key
else
stage = 2 // Let's try again later.
return
var/mob/living/carbon/alien/larva/new_xeno = new(affected_mob.loc)
new_xeno.key = picked
new_xeno << sound('sound/voice/hiss5.ogg',0,0,0,100) //To get the player's attention
affected_mob.gib()
src.cure(0)
gibbed = 1
return
/datum/disease/alien_embryo/stage_change(var/old_stage)
RefreshInfectionImage()
/*----------------------------------------
Proc: RefreshInfectionImage()
Des: Removes all infection images from aliens and places an infection image on all infected mobs for aliens.
----------------------------------------*/
/datum/disease/alien_embryo/proc/RefreshInfectionImage()
spawn(0)
for (var/mob/living/carbon/alien/alien in player_list)
if (alien.client)
for(var/image/I in alien.client.images)
if(dd_hasprefix_case(I.icon_state, "infected"))
del(I)
for (var/mob/living/carbon/alien/alien in player_list)
if (alien.client)
for (var/mob/living/carbon/C in mob_list)
if(C)
if (C.status_flags & XENO_HOST)
var/I = image('icons/mob/alien.dmi', loc = C, icon_state = "infected[stage]")
alien.client.images += I
return
/*----------------------------------------
Proc: AddInfectionImages(C)
Des: Checks if the passed mob (C) is infected with the alien egg, then gives each alien client an infected image at C.
----------------------------------------*/
/datum/disease/alien_embryo/proc/AddInfectionImages(var/mob/living/carbon/C)
if (C)
for (var/mob/living/carbon/alien/alien in player_list)
if (alien.client)
if (C.status_flags & XENO_HOST)
var/I = image('icons/mob/alien.dmi', loc = C, icon_state = "infected[stage]")
alien.client.images += I
return
/*----------------------------------------
Proc: RemoveInfectionImage(C)
Des: Removes the alien infection image from all aliens in the world located in passed mob (C).
----------------------------------------*/
/datum/disease/alien_embryo/proc/RemoveInfectionImages(var/mob/living/carbon/C)
if (C)
for (var/mob/living/carbon/alien/alien in player_list)
if (alien.client)
for(var/image/I in alien.client.images)
if(I.loc == C)
if(dd_hasprefix_case(I.icon_state, "infected"))
del(I)
return
-56
View File
@@ -1,56 +0,0 @@
/datum/disease/appendicitis
form = "Condition"
name = "Appendicitis"
max_stages = 4
spread = "Acute"
cure = "Surgery"
agent = "Appendix"
affected_species = list("Human")
permeability_mod = 1
contagious_period = 9001 //slightly hacky, but hey! whatever works, right?
desc = "If left untreated the subject will become very weak, and may vomit often."
severity = "Medium"
longevity = 1000
hidden = list(0, 1)
stage_minimum_age = 160 // at least 200 life ticks per stage
/datum/disease/appendicitis/stage_act()
..()
if(istype(affected_mob,/mob/living/carbon/human))
var/mob/living/carbon/human/H = affected_mob
if(H.species.name == "Diona" || H.species.name == "Machine" || H.species.name == "Vox") src.cure()
if(stage == 1)
if(affected_mob.op_stage.appendix == 2.0)
// appendix is removed, can't get infected again
src.cure()
if(prob(5))
affected_mob << "\red You feel a stinging pain in your abdomen!"
affected_mob.emote("me",1,"winces slightly.")
if(stage > 1)
if(prob(3))
affected_mob << "\red You feel a stabbing pain in your abdomen!"
affected_mob.emote("me",1,"winces painfully.")
affected_mob.adjustToxLoss(1)
if(stage > 2)
if(prob(1))
if (affected_mob.nutrition > 100)
var/mob/living/carbon/human/H = affected_mob
H.vomit()
else
affected_mob << "\red You gag as you want to throw up, but there's nothing in your stomach!"
affected_mob.Weaken(10)
affected_mob.adjustToxLoss(3)
if(stage > 3)
if(prob(1) && ishuman(affected_mob))
var/mob/living/carbon/human/H = affected_mob
H << "\red Your abdomen is a world of pain!"
H.Weaken(10)
H.op_stage.appendix = 2.0
var/datum/organ/external/groin = H.get_organ("groin")
var/datum/wound/W = new /datum/wound/internal_bleeding(25)
H.adjustToxLoss(25)
groin.wounds += W
src.cure()
-31
View File
@@ -1,31 +0,0 @@
/*
/datum/disease/beesease
name = "Beesease"
max_stages = 5
spread = "Contact" //ie shot bees
cure = "???"
cure_id = "???"
agent = "Bees"
affected_species = list("Human","Monkey")
curable = 0
/datum/disease/beesease/stage_act()
..()
switch(stage)
if(1)
if(prob(2))
affected_mob << "\red You feel like something is moving inside of you"
if(2) //also changes say, see say.dm
if(prob(2))
affected_mob << "\red You feel like something is moving inside of you"
if(prob(2))
affected_mob << "\red BZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"
if(3)
//Should give the bee spit verb
if(4)
//Plus bees now spit randomly
if(5)
//Plus if you die, you explode into bees
return
*/
//Started working on it, but am too lazy to finish it today -- Urist
-67
View File
@@ -1,67 +0,0 @@
/datum/disease/brainrot
name = "Brainrot"
max_stages = 4
spread = "On contact"
spread_type = CONTACT_GENERAL
cure = "Alkysine"
cure_id = list("alkysine")
agent = "Cryptococcus Cosmosis"
affected_species = list("Human")
curable = 0
cure_chance = 15//higher chance to cure, since two reagents are required
desc = "This disease destroys the braincells, causing brain fever, brain necrosis and general intoxication."
severity = "Major"
/datum/disease/brainrot/stage_act() //Removed toxloss because damaging diseases are pretty horrible. Last round it killed the entire station because the cure didn't work -- Urist
..()
switch(stage)
if(2)
if(prob(2))
affected_mob.emote("blink")
if(prob(2))
affected_mob.emote("yawn")
if(prob(2))
affected_mob << "\red Your don't feel like yourself."
if(prob(5))
affected_mob.adjustBrainLoss(1)
affected_mob.updatehealth()
if(3)
if(prob(2))
affected_mob.emote("stare")
if(prob(2))
affected_mob.emote("drool")
if(prob(10) && affected_mob.getBrainLoss()<=98)//shouldn't retard you to death now
affected_mob.adjustBrainLoss(2)
affected_mob.updatehealth()
if(prob(2))
affected_mob << "\red Your try to remember something important...but can't."
/* if(prob(10))
affected_mob.adjustToxLoss(3)
affected_mob.updatehealth()
if(prob(2))
affected_mob << "\red Your head hurts." */
if(4)
if(prob(2))
affected_mob.emote("stare")
if(prob(2))
affected_mob.emote("drool")
/* if(prob(15))
affected_mob.adjustToxLoss(4)
affected_mob.updatehealth()
if(prob(2))
affected_mob << "\red Your head hurts." */
if(prob(15) && affected_mob.getBrainLoss()<=98) //shouldn't retard you to death now
affected_mob.adjustBrainLoss(3)
affected_mob.updatehealth()
if(prob(2))
affected_mob << "\red Strange buzzing fills your head, removing all thoughts."
if(prob(3))
affected_mob << "\red You lose consciousness..."
for(var/mob/O in viewers(affected_mob, null))
O.show_message("[affected_mob] suddenly collapses", 1)
affected_mob.Paralyse(rand(5,10))
if(prob(1))
affected_mob.emote("snore")
if(prob(15))
affected_mob.stuttering += 3
return
-66
View File
@@ -1,66 +0,0 @@
/datum/disease/cold
name = "The Cold"
max_stages = 3
spread = "Airborne"
cure = "Rest & Spaceacillin"
cure_id = "spaceacillin"
agent = "XY-rhinovirus"
affected_species = list("Human", "Monkey")
permeability_mod = 0.5
desc = "If left untreated the subject will contract the flu."
severity = "Minor"
/datum/disease/cold/stage_act()
..()
switch(stage)
if(2)
/*
if(affected_mob.sleeping && prob(40)) //removed until sleeping is fixed
affected_mob << "\blue You feel better."
cure()
return
*/
if(affected_mob.lying && prob(40)) //changed FROM prob(10) until sleeping is fixed
affected_mob << "\blue You feel better."
cure()
return
if(prob(1) && prob(5))
affected_mob << "\blue You feel better."
cure()
return
if(prob(1))
affected_mob.emote("sneeze")
if(prob(1))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "\red Your throat feels sore."
if(prob(1))
affected_mob << "\red Mucous runs down the back of your throat."
if(3)
/*
if(affected_mob.sleeping && prob(25)) //removed until sleeping is fixed
affected_mob << "\blue You feel better."
cure()
return
*/
if(affected_mob.lying && prob(25)) //changed FROM prob(5) until sleeping is fixed
affected_mob << "\blue You feel better."
cure()
return
if(prob(1) && prob(1))
affected_mob << "\blue You feel better."
cure()
return
if(prob(1))
affected_mob.emote("sneeze")
if(prob(1))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "\red Your throat feels sore."
if(prob(1))
affected_mob << "\red Mucous runs down the back of your throat."
if(prob(1) && prob(50))
if(!affected_mob.resistances.Find(/datum/disease/flu))
var/datum/disease/Flu = new /datum/disease/flu(0)
affected_mob.contract_disease(Flu,1)
cure()
-39
View File
@@ -1,39 +0,0 @@
/datum/disease/cold9
name = "The Cold"
max_stages = 3
spread = "On contact"
spread_type = CONTACT_GENERAL
cure = "Common Cold Anti-bodies & Spaceacillin"
cure_id = "spaceacillin"
agent = "ICE9-rhinovirus"
affected_species = list("Human")
desc = "If left untreated the subject will slow, as if partly frozen."
severity = "Moderate"
/datum/disease/cold9/stage_act()
..()
switch(stage)
if(2)
affected_mob.bodytemperature -= 10
if(prob(1) && prob(10))
affected_mob << "\blue You feel better."
cure()
return
if(prob(1))
affected_mob.emote("sneeze")
if(prob(1))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "\red Your throat feels sore."
if(prob(5))
affected_mob << "\red You feel stiff."
if(3)
affected_mob.bodytemperature -= 20
if(prob(1))
affected_mob.emote("sneeze")
if(prob(1))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "\red Your throat feels sore."
if(prob(10))
affected_mob << "\red You feel stiff."
-69
View File
@@ -1,69 +0,0 @@
/datum/disease/dnaspread
name = "Space Retrovirus"
max_stages = 4
spread = "On contact"
spread_type = CONTACT_GENERAL
cure = "Ryetalyn"
cure_id = "ryetalyn"
curable = 1
agent = "S4E1 retrovirus"
affected_species = list("Human")
var/list/original_dna = list()
var/transformed = 0
desc = "This disease transplants the genetic code of the intial vector into new hosts."
severity = "Medium"
/datum/disease/dnaspread/stage_act()
..()
switch(stage)
if(2 || 3) //Pretend to be a cold and give time to spread.
if(prob(8))
affected_mob.emote("sneeze")
if(prob(8))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "\red Your muscles ache."
if(prob(20))
affected_mob.take_organ_damage(1)
if(prob(1))
affected_mob << "\red Your stomach hurts."
if(prob(20))
affected_mob.adjustToxLoss(2)
affected_mob.updatehealth()
if(4)
if(!src.transformed)
if ((!strain_data["name"]) || (!strain_data["UI"]) || (!strain_data["SE"]))
del(affected_mob.virus)
return
//Save original dna for when the disease is cured.
src.original_dna["name"] = affected_mob.real_name
src.original_dna["UI"] = affected_mob.dna.UI.Copy()
src.original_dna["SE"] = affected_mob.dna.SE.Copy()
affected_mob << "\red You don't feel like yourself.."
var/list/newUI=strain_data["UI"]
var/list/newSE=strain_data["SE"]
affected_mob.UpdateAppearance(newUI.Copy())
affected_mob.dna.SE = newSE.Copy()
affected_mob.dna.UpdateSE()
affected_mob.real_name = strain_data["name"]
domutcheck(affected_mob)
src.transformed = 1
src.carrier = 1 //Just chill out at stage 4
return
/datum/disease/dnaspread/Del()
if ((original_dna["name"]) && (original_dna["UI"]) && (original_dna["SE"]))
var/list/newUI=original_dna["UI"]
var/list/newSE=original_dna["SE"]
affected_mob.UpdateAppearance(newUI.Copy())
affected_mob.dna.SE = newSE.Copy()
affected_mob.dna.UpdateSE()
affected_mob.real_name = original_dna["name"]
affected_mob << "\blue You feel more like yourself."
..()
-32
View File
@@ -1,32 +0,0 @@
/datum/disease/fake_gbs
name = "GBS"
max_stages = 5
spread = "On contact"
spread_type = CONTACT_GENERAL
cure = "Synaptizine & Sulfur"
cure_id = list("synaptizine","sulfur")
agent = "Gravitokinetic Bipotential SADS-"
affected_species = list("Human", "Monkey")
desc = "If left untreated death will occur."
severity = "Major"
/datum/disease/fake_gbs/stage_act()
..()
switch(stage)
if(2)
if(prob(1))
affected_mob.emote("sneeze")
if(3)
if(prob(5))
affected_mob.emote("cough")
else if(prob(5))
affected_mob.emote("gasp")
if(prob(10))
affected_mob << "\red You're starting to feel very weak..."
if(4)
if(prob(10))
affected_mob.emote("cough")
if(5)
if(prob(10))
affected_mob.emote("cough")
-66
View File
@@ -1,66 +0,0 @@
/datum/disease/flu
name = "The Flu"
max_stages = 3
spread = "Airborne"
cure = "Spaceacillin"
cure_id = "spaceacillin"
cure_chance = 10
agent = "H13N1 flu virion"
affected_species = list("Human", "Monkey")
permeability_mod = 0.75
desc = "If left untreated the subject will feel quite unwell."
severity = "Medium"
/datum/disease/flu/stage_act()
..()
switch(stage)
if(2)
/*
if(affected_mob.sleeping && prob(20)) //removed until sleeping is fixed --Blaank
affected_mob << "\blue You feel better."
stage--
return
*/
if(affected_mob.lying && prob(20)) //added until sleeping is fixed --Blaank
affected_mob << "\blue You feel better."
stage--
return
if(prob(1))
affected_mob.emote("sneeze")
if(prob(1))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "\red Your muscles ache."
if(prob(20))
affected_mob.take_organ_damage(1)
if(prob(1))
affected_mob << "\red Your stomach hurts."
if(prob(20))
affected_mob.adjustToxLoss(1)
affected_mob.updatehealth()
if(3)
/*
if(affected_mob.sleeping && prob(15)) //removed until sleeping is fixed
affected_mob << "\blue You feel better."
stage--
return
*/
if(affected_mob.lying && prob(15)) //added until sleeping is fixed
affected_mob << "\blue You feel better."
stage--
return
if(prob(1))
affected_mob.emote("sneeze")
if(prob(1))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "\red Your muscles ache."
if(prob(20))
affected_mob.take_organ_damage(1)
if(prob(1))
affected_mob << "\red Your stomach hurts."
if(prob(20))
affected_mob.adjustToxLoss(1)
affected_mob.updatehealth()
return
-36
View File
@@ -1,36 +0,0 @@
/datum/disease/fluspanish
name = "Spanish inquisition Flu"
max_stages = 3
spread = "Airborne"
cure = "Spaceacillin & Anti-bodies to the common flu"
cure_id = "spaceacillin"
cure_chance = 10
agent = "1nqu1s1t10n flu virion"
affected_species = list("Human")
permeability_mod = 0.75
desc = "If left untreated the subject will burn to death for being a heretic."
severity = "Serious"
/datum/disease/inquisition/stage_act()
..()
switch(stage)
if(2)
affected_mob.bodytemperature += 10
if(prob(5))
affected_mob.emote("sneeze")
if(prob(5))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "\red You're burning in your own skin!"
affected_mob.take_organ_damage(0,5)
if(3)
affected_mob.bodytemperature += 20
if(prob(5))
affected_mob.emote("sneeze")
if(prob(5))
affected_mob.emote("cough")
if(prob(5))
affected_mob << "\red You're burning in your own skin!"
affected_mob.take_organ_damage(0,5)
return
-40
View File
@@ -1,40 +0,0 @@
/datum/disease/gbs
name = "GBS"
max_stages = 5
spread = "On contact"
spread_type = CONTACT_GENERAL
cure = "Synaptizine & Sulfur"
cure_id = list("synaptizine","sulfur")
cure_chance = 15//higher chance to cure, since two reagents are required
agent = "Gravitokinetic Bipotential SADS+"
affected_species = list("Human")
curable = 0
permeability_mod = 1
/datum/disease/gbs/stage_act()
..()
switch(stage)
if(2)
if(prob(45))
affected_mob.adjustToxLoss(5)
affected_mob.updatehealth()
if(prob(1))
affected_mob.emote("sneeze")
if(3)
if(prob(5))
affected_mob.emote("cough")
else if(prob(5))
affected_mob.emote("gasp")
if(prob(10))
affected_mob << "\red You're starting to feel very weak..."
if(4)
if(prob(10))
affected_mob.emote("cough")
affected_mob.adjustToxLoss(5)
affected_mob.updatehealth()
if(5)
affected_mob << "\red Your body feels as if it's trying to rip itself open..."
if(prob(50))
affected_mob.gib()
else
return
-12
View File
@@ -1,12 +0,0 @@
/datum/disease/jungle_fever
name = "Jungle Fever"
max_stages = 1
cure = "None"
spread = "Bites"
spread_type = SPECIAL
affected_species = list("Monkey", "Human")
curable = 0
desc = "monkeys with this disease will bite humans, causing humans to spontaneously mutate into a monkey."
severity = "Medium"
//stage_prob = 100
agent = "Kongey Vibrion M-909"
-93
View File
@@ -1,93 +0,0 @@
/datum/disease/magnitis
name = "Magnitis"
max_stages = 4
spread = "Airborne"
cure = "Iron"
cure_id = "iron"
agent = "Fukkos Miracos"
affected_species = list("Human")
curable = 0
permeability_mod = 0.75
desc = "This disease disrupts the magnetic field of your body, making it act as if a powerful magnet. Injections of iron help stabilize the field."
severity = "Medium"
/datum/disease/magnitis/stage_act()
..()
switch(stage)
if(2)
if(prob(2))
affected_mob << "\red You feel a slight shock course through your body."
if(prob(2))
for(var/obj/M in orange(2,affected_mob))
if(!M.anchored && (M.flags & CONDUCT))
step_towards(M,affected_mob)
for(var/mob/living/silicon/S in orange(2,affected_mob))
if(istype(S, /mob/living/silicon/ai)) continue
step_towards(S,affected_mob)
/*
if(M.x > affected_mob.x)
M.x--
else if(M.x < affected_mob.x)
M.x++
if(M.y > affected_mob.y)
M.y--
else if(M.y < affected_mob.y)
M.y++
*/
if(3)
if(prob(2))
affected_mob << "\red You feel a strong shock course through your body."
if(prob(2))
affected_mob << "\red You feel like clowning around."
if(prob(4))
for(var/obj/M in orange(4,affected_mob))
if(!M.anchored && (M.flags & CONDUCT))
var/i
var/iter = rand(1,2)
for(i=0,i<iter,i++)
step_towards(M,affected_mob)
for(var/mob/living/silicon/S in orange(4,affected_mob))
if(istype(S, /mob/living/silicon/ai)) continue
var/i
var/iter = rand(1,2)
for(i=0,i<iter,i++)
step_towards(S,affected_mob)
/*
if(M.x > affected_mob.x)
M.x-=rand(1,min(3,M.x-affected_mob.x))
else if(M.x < affected_mob.x)
M.x+=rand(1,min(3,affected_mob.x-M.x))
if(M.y > affected_mob.y)
M.y-=rand(1,min(3,M.y-affected_mob.y))
else if(M.y < affected_mob.y)
M.y+=rand(1,min(3,affected_mob.y-M.y))
*/
if(4)
if(prob(2))
affected_mob << "\red You feel a powerful shock course through your body."
if(prob(2))
affected_mob << "\red You query upon the nature of miracles."
if(prob(8))
for(var/obj/M in orange(6,affected_mob))
if(!M.anchored && (M.flags & CONDUCT))
var/i
var/iter = rand(1,3)
for(i=0,i<iter,i++)
step_towards(M,affected_mob)
for(var/mob/living/silicon/S in orange(6,affected_mob))
if(istype(S, /mob/living/silicon/ai)) continue
var/i
var/iter = rand(1,3)
for(i=0,i<iter,i++)
step_towards(S,affected_mob)
/*
if(M.x > affected_mob.x)
M.x-=rand(1,min(5,M.x-affected_mob.x))
else if(M.x < affected_mob.x)
M.x+=rand(1,min(5,affected_mob.x-M.x))
if(M.y > affected_mob.y)
M.y-=rand(1,min(5,M.y-affected_mob.y))
else if(M.y < affected_mob.y)
M.y+=rand(1,min(5,affected_mob.y-M.y))
*/
return
-26
View File
@@ -1,26 +0,0 @@
/datum/disease/pierrot_throat
name = "Pierrot's Throat"
max_stages = 4
spread = "Airborne"
cure = "A whole banana."
cure_id = "banana"
curable=1
cure_chance = 75
agent = "H0NI<42 Virus"
affected_species = list("Human")
permeability_mod = 0.75
desc = "If left untreated the subject will probably drive others to insanity."
severity = "Medium"
longevity = 400
/datum/disease/pierrot_throat/stage_act()
..()
switch(stage)
if(1)
if(prob(10)) affected_mob << "\red You feel a little silly."
if(2)
if(prob(10)) affected_mob << "\red You start seeing rainbows."
if(3)
if(prob(10)) affected_mob << "\red Your thoughts are interrupted by a loud <b>HONK!</b>"
if(4)
if(prob(5)) affected_mob.say( pick( list("HONK!", "Honk!", "Honk.", "Honk?", "Honk!!", "Honk?!", "Honk...") ) )
-5
View File
@@ -1,5 +0,0 @@
/datum/disease/plasmatoid
name = "Plasmatoid"
max_stages = 4
cure = "None"
affected_species = list("Monkey", "Human")
-108
View File
@@ -1,108 +0,0 @@
/datum/disease/dna_retrovirus
name = "Retrovirus"
max_stages = 4
spread = "Contact"
spread_type = CONTACT_GENERAL
cure = "Rest or an injection of ryetalyn"
cure_chance = 6
agent = ""
affected_species = list("Human")
desc = "A DNA-altering retrovirus that scrambles the structural and unique enzymes of a host constantly."
severity = "Severe"
permeability_mod = 0.4
stage_prob = 2
var/SE
var/UI
var/restcure = 0
New()
..()
agent = "Virus class [pick("A","B","C","D","E","F")][pick("A","B","C","D","E","F")]-[rand(50,300)]"
if(prob(40))
cure_id = list("ryetalyn")
cure_list = list("ryetalyn")
else
restcure = 1
/datum/disease/dna_retrovirus/stage_act()
..()
switch(stage)
if(1)
if(restcure)
/*
if(affected_mob.sleeping && prob(30)) //removed until sleeping is fixed
affected_mob << "\blue You feel better."
cure()
return
*/
if(affected_mob.lying && prob(30)) //changed FROM prob(20) until sleeping is fixed
affected_mob << "\blue You feel better."
cure()
return
if (prob(8))
affected_mob << "\red Your head hurts."
if (prob(9))
affected_mob << "You feel a tingling sensation in your chest."
if (prob(9))
affected_mob << "\red You feel angry."
if(2)
if(restcure)
/*
if(affected_mob.sleeping && prob(20)) //removed until sleeping is fixed
affected_mob << "\blue You feel better."
cure()
return
*/
if(affected_mob.lying && prob(20)) //changed FROM prob(10) until sleeping is fixed
affected_mob << "\blue You feel better."
cure()
return
if (prob(8))
affected_mob << "\red Your skin feels loose."
if (prob(10))
affected_mob << "You feel very strange."
if (prob(4))
affected_mob << "\red You feel a stabbing pain in your head!"
affected_mob.Paralyse(2)
if (prob(4))
affected_mob << "\red Your stomach churns."
if(3)
if(restcure)
/*
if(affected_mob.sleeping && prob(20)) //removed until sleeping is fixed
affected_mob << "\blue You feel better."
cure()
return
*/
if(affected_mob.lying && prob(20)) //changed FROM prob(10) until sleeping is fixed
affected_mob << "\blue You feel better."
cure()
return
if (prob(10))
affected_mob << "\red Your entire body vibrates."
if (prob(35))
if(prob(50))
scramble(1, affected_mob, rand(15,45))
else
scramble(0, affected_mob, rand(15,45))
if(4)
if(restcure)
/*
if(affected_mob.sleeping && prob(10)) //removed until sleeping is fixed
affected_mob << "\blue You feel better."
cure()
return
*/
if(affected_mob.lying && prob(5)) //changed FROM prob(5) until sleeping is fixed
affected_mob << "\blue You feel better."
cure()
return
if (prob(60))
if(prob(50))
scramble(1, affected_mob, rand(50,75))
else
scramble(0, affected_mob, rand(50,75))
-51
View File
@@ -1,51 +0,0 @@
/datum/disease/rhumba_beat
name = "The Rhumba Beat"
max_stages = 5
spread = "On contact"
spread_type = CONTACT_GENERAL
cure = "Chick Chicky Boom!"
cure_id = list("plasma")
agent = "Unknown"
affected_species = list("Human")
permeability_mod = 1
/datum/disease/rhumba_beat/stage_act()
..()
switch(stage)
if(1)
if(affected_mob.ckey == "rosham")
src.cure()
if(2)
if(affected_mob.ckey == "rosham")
src.cure()
if(prob(45))
affected_mob.adjustToxLoss(5)
affected_mob.updatehealth()
if(prob(1))
affected_mob << "\red You feel strange..."
if(3)
if(affected_mob.ckey == "rosham")
src.cure()
if(prob(5))
affected_mob << "\red You feel the urge to dance..."
else if(prob(5))
affected_mob.emote("gasp")
else if(prob(10))
affected_mob << "\red You feel the need to chick chicky boom..."
if(4)
if(affected_mob.ckey == "rosham")
src.cure()
if(prob(10))
affected_mob.emote("gasp")
affected_mob << "\red You feel a burning beat inside..."
if(prob(20))
affected_mob.adjustToxLoss(5)
affected_mob.updatehealth()
if(5)
if(affected_mob.ckey == "rosham")
src.cure()
affected_mob << "\red Your body is unable to contain the Rhumba Beat..."
if(prob(50))
affected_mob.gib()
else
return
@@ -1,65 +0,0 @@
//Nanomachines!
/datum/disease/robotic_transformation
name = "Robotic Transformation"
max_stages = 5
spread = "Syringe"
spread_type = SPECIAL
cure = "An injection of copper."
cure_id = list("copper")
cure_chance = 5
agent = "R2D2 Nanomachines"
affected_species = list("Human")
desc = "This disease, actually acute nanomachine infection, converts the victim into a cyborg."
severity = "Major"
var/gibbed = 0
/datum/disease/robotic_transformation/stage_act()
..()
switch(stage)
if(2)
if (prob(8))
affected_mob << "Your joints feel stiff."
affected_mob.take_organ_damage(1)
if (prob(9))
affected_mob << "\red Beep...boop.."
if (prob(9))
affected_mob << "\red Bop...beeep..."
if(3)
if (prob(8))
affected_mob << "\red Your joints feel very stiff."
affected_mob.take_organ_damage(1)
if (prob(8))
affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop"))
if (prob(10))
affected_mob << "Your skin feels loose."
affected_mob.take_organ_damage(5)
if (prob(4))
affected_mob << "\red You feel a stabbing pain in your head."
affected_mob.Paralyse(2)
if (prob(4))
affected_mob << "\red You can feel something move...inside."
if(4)
if (prob(10))
affected_mob << "\red Your skin feels very loose."
affected_mob.take_organ_damage(8)
if (prob(20))
affected_mob.say(pick("beep, beep!", "Boop bop boop beep.", "kkkiiiill mmme", "I wwwaaannntt tttoo dddiiieeee..."))
if (prob(8))
affected_mob << "\red You can feel... something...inside you."
if(5)
affected_mob <<"\red Your skin feels as if it's about to burst off..."
affected_mob.adjustToxLoss(10)
affected_mob.updatehealth()
if(prob(40)) //So everyone can feel like robot Seth Brundle
if(src.gibbed != 0) return 0
var/turf/T = find_loc(affected_mob)
gibs(T)
gibbed = 1
var/mob/living/carbon/human/H = affected_mob
if(istype(H) && !jobban_isbanned(affected_mob, "Cyborg"))
H.Robotize()
else
src.cure(0)
affected_mob.death(1)
-122
View File
@@ -1,122 +0,0 @@
/datum/disease/wizarditis
name = "Wizarditis"
max_stages = 4
spread = "Airborne"
cure = "The Manly Dorf"
cure_id = "manlydorf"
cure_chance = 100
agent = "Rincewindus Vulgaris"
affected_species = list("Human")
curable = 1
permeability_mod = 0.75
desc = "Some speculate, that this virus is the cause of Wizard Federation existance. Subjects affected show the signs of mental retardation, yelling obscure sentences or total gibberish. On late stages subjects sometime express the feelings of inner power, and, cite, 'the ability to control the forces of cosmos themselves!' A gulp of strong, manly spirits usually reverts them to normal, humanlike, condition."
severity = "Major"
/*
BIRUZ BENNAR
SCYAR NILA - teleport
NEC CANTIO - dis techno
EI NATH - shocking grasp
AULIE OXIN FIERA - knock
TARCOL MINTI ZHERI - forcewall
STI KALY - blind
*/
/datum/disease/wizarditis/stage_act()
..()
switch(stage)
if(2)
if(prob(1)&&prob(50))
affected_mob.say(pick("You shall not pass!", "Expeliarmus!", "By Merlins beard!", "Feel the power of the Dark Side!"))
if(prob(1)&&prob(50))
affected_mob << "\red You feel [pick("that you don't have enough mana.", "that the winds of magic are gone.", "an urge to summon familiar.")]"
if(3)
if(prob(1)&&prob(50))
affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!", "STI KALY!", "TARCOL MINTI ZHERI!"))
if(prob(1)&&prob(50))
affected_mob << "\red You feel [pick("the magic bubbling in your veins","that this location gives you a +1 to INT","an urge to summon familiar.")]."
if(4)
if(prob(1))
affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!","STI KALY!","EI NATH!"))
return
if(prob(1)&&prob(50))
affected_mob << "\red You feel [pick("the tidal wave of raw power building inside","that this location gives you a +2 to INT and +1 to WIS","an urge to teleport")]."
spawn_wizard_clothes(50)
if(prob(1)&&prob(1))
teleport()
return
/datum/disease/wizarditis/proc/spawn_wizard_clothes(var/chance = 0)
if(istype(affected_mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = affected_mob
if(prob(chance))
if(!istype(H.head, /obj/item/clothing/head/wizard))
if(H.head)
H.drop_from_inventory(H.head)
H.head = new /obj/item/clothing/head/wizard(H)
H.head.layer = 20
return
if(prob(chance))
if(!istype(H.wear_suit, /obj/item/clothing/suit/wizrobe))
if(H.wear_suit)
H.drop_from_inventory(H.wear_suit)
H.wear_suit = new /obj/item/clothing/suit/wizrobe(H)
H.wear_suit.layer = 20
return
if(prob(chance))
if(!istype(H.shoes, /obj/item/clothing/shoes/sandal))
if(H.shoes)
H.drop_from_inventory(H.shoes)
H.shoes = new /obj/item/clothing/shoes/sandal(H)
H.shoes.layer = 20
return
else
var/mob/living/carbon/H = affected_mob
if(prob(chance))
if(!istype(H.r_hand, /obj/item/weapon/staff))
H.drop_r_hand()
H.put_in_r_hand( new /obj/item/weapon/staff(H) )
return
return
/datum/disease/wizarditis/proc/teleport()
var/list/theareas = new/list()
for(var/area/AR in orange(80, affected_mob))
if(theareas.Find(AR) || AR.name == "Space") continue
theareas += AR
if(!theareas)
return
var/area/thearea = pick(theareas)
var/list/L = list()
for(var/turf/T in get_area_turfs(thearea.type))
if(T.z != affected_mob.z) continue
if(T.name == "space") continue
if(!T.density)
var/clear = 1
for(var/obj/O in T)
if(O.density)
clear = 0
break
if(clear)
L+=T
if(!L)
return
affected_mob.say("SCYAR NILA [uppertext(thearea.name)]!")
affected_mob.loc = pick(L)
return
@@ -1,61 +0,0 @@
//Xenomicrobes
/datum/disease/xeno_transformation
name = "Xenomorph Transformation"
max_stages = 5
spread = "Syringe"
spread_type = SPECIAL
cure = "Spaceacillin & Glycerol"
cure_id = list("spaceacillin", "glycerol")
cure_chance = 5
agent = "Rip-LEY Alien Microbes"
affected_species = list("Human")
var/gibbed = 0
/datum/disease/xeno_transformation/stage_act()
..()
switch(stage)
if(2)
if (prob(8))
affected_mob << "Your throat feels scratchy."
affected_mob.take_organ_damage(1)
if (prob(9))
affected_mob << "\red Kill..."
if (prob(9))
affected_mob << "\red Kill..."
if(3)
if (prob(8))
affected_mob << "\red Your throat feels very scratchy."
affected_mob.take_organ_damage(1)
/*
if (prob(8))
affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop"))
*/
if (prob(10))
affected_mob << "Your skin feels tight."
affected_mob.take_organ_damage(5)
if (prob(4))
affected_mob << "\red You feel a stabbing pain in your head."
affected_mob.Paralyse(2)
if (prob(4))
affected_mob << "\red You can feel something move...inside."
if(4)
if (prob(10))
affected_mob << pick("\red Your skin feels very tight.", "\red Your blood boils!")
affected_mob.take_organ_damage(8)
if (prob(20))
affected_mob.say(pick("You look delicious.", "Going to... devour you...", "Hsssshhhhh!"))
if (prob(8))
affected_mob << "\red You can feel... something...inside you."
if(5)
affected_mob <<"\red Your skin feels impossibly calloused..."
affected_mob.adjustToxLoss(10)
affected_mob.updatehealth()
if(prob(40))
if(gibbed != 0) return 0
var/turf/T = find_loc(affected_mob)
gibs(T)
gibbed = 1
affected_mob:Alienize()
src.cure(0)
@@ -1,119 +0,0 @@
/datum/disease/zombie_transformation //Labeling the class as an effect type
name = "zombie virus"
max_stages = 5
spread_type = CONTACT_GENERAL //Maybe switch back to hands?
hidden = list(1, 0)
cure = "Spaceacillin"
cure_id ="necrocure"
cure_list = list("necrocure", "zmeat")
cure_chance = 5
holder = /mob/living/simple_animal/hostile/zombie
agent = "Necrophobes T"
affected_species = list("Human", "Monkey") //Monkeys can carry the virus but are not directly affected by it
desc = null
severity = "DANGEROUS"
permeability_mod = 0.8
contagious_period = 0
var/gibbed = 0
var/faction = "undead"
stage_minimum_age = 110
stage_prob = 10
longevity = 600
/datum/disease/zombie_transformation/stage_act()
if(istype(affected_mob, /mob/living/simple_animal/hostile/zombie)) //Double check first, suppose to stop zombie from curing itself...
return //Do nothing
..() //There is still a chance that the dead body will "cure" itself, anybody killed by zeds will probably either cure or turn
if(affected_mob.stat == 2 && !istype(affected_mob, /mob/living/carbon/monkey))
sleep(rand(10,3000))
affected_mob:Turnundead() //Doesn't support turning monkies undead
return //add turn zombie
if(istype(affected_mob, /mob/living/carbon/human)) //Percents might be a little high
switch(stage)
if(2)
if(prob(4))
affected_mob << "\blue You feel hot."
affected_mob.bodytemperature += 10
if(prob(4))
affected_mob.say("*cough")
return
if(prob(1))
affected_mob << "\red You smell meat."
if(3)
if(prob(8))
affected_mob << "\red Your skin itches."
var/vatk_target = pick("head", "chest", "l_hand", "r_hand", "l_leg", "r_leg")
affected_mob.apply_damage(2, BRUTE, vatk_target)
if(prob(5))
affected_mob << "\red Your stomache hurts."
affected_mob.nutrition -= 20
return
if(prob(5))
affected_mob << "\red You are feeling tired."
affected_mob.drowsyness += 5
if(4)
if(prob(3))
affected_mob.say("*choke")
var/vatk_target = pick("head", "chest")
affected_mob.apply_damage(5, BRUTE, vatk_target)
var/turf/simulated/pos = get_turf(affected_mob)
pos.add_blood_floor(affected_mob)
playsound(pos, 'sound/effects/splat.ogg', 50, 1)
//add blood effect
if(prob(15))
affected_mob.hallucination += 5
if(prob(8))
affected_mob << pick("\red Kill them.", "\red You are not going to escape", "\red They won't miss their legs.")
affected_mob.hallucination += 25
return
if(prob(2))
affected_mob << "\blue Through sheer will you're holding your sanity together."
affected_mob.hallucination = 0
return
if(prob(7))
affected_mob.custom_emote(1, "is having trouble keeping their eyes open.")
affected_mob.drowsyness += 2
return
if(prob(1))
affected_mob << pick("\red You come to the realization that you're infected and possibly about to turn.")
affected_mob.nutrition -= 50
affected_mob.drowsyness += 30
affected_mob.hallucination = 0
var/vatk_target = pick("head", "chest", "l_hand", "r_hand", "l_leg", "r_leg")
affected_mob.apply_damage(20, BRUTE, vatk_target)
if(5)
if(!istype(affected_mob, /mob/living/carbon/monkey))
affected_mob:Turnundead()
/datum/disease/zombie_transformation/process() //Almost the same thing, a few tweaks needed for dead people.
if(!affected_mob) return
if(!holder)
active_diseases -= src
return
if(prob(65))
spread(holder)
if(affected_mob.faction == null)
cure(0)
return
if(affected_mob)
for(var/datum/disease/D in affected_mob.viruses)
if(D != src)
if(IsSame(D))
//error("Deleting [D.name] because it's the same as [src.name].")
del(D) // if there are somehow two viruses of the same kind in the system, delete the other one
if(holder == affected_mob)
if(affected_mob.stat != DEAD) //he's alive
stage_act()
else //he's dead.
if(spread_type!=SPECIAL)
spread_type = CONTACT_GENERAL
stage_act() //Dead and not a zombie, should act
if(affected_mob.faction == "undead" || istype(affected_mob, /mob/living/carbon/monkey) && affected_mob.stat == 2) //the virus is in inanimate obj, dead zed, or monkey
if(prob(70))
if(--longevity<=0)
cure(0)
return