mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-16 21:22:40 +00:00
Removes the old virus system
Appendicitis moved to appendix organ
This commit is contained in:
@@ -1,206 +0,0 @@
|
|||||||
#define SPECIAL -1
|
|
||||||
#define NON_CONTAGIOUS 0
|
|
||||||
#define BLOOD 1
|
|
||||||
#define CONTACT_FEET 2
|
|
||||||
#define CONTACT_HANDS 3
|
|
||||||
#define CONTACT_GENERAL 4
|
|
||||||
#define AIRBORNE 5
|
|
||||||
|
|
||||||
#define SCANNER 1
|
|
||||||
#define PANDEMIC 2
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
IMPORTANT NOTE: Please delete the diseases by using cure() proc or qdel() instruction.
|
|
||||||
Diseases are referenced in a global list, so simply setting mob or obj vars
|
|
||||||
to null does not delete the object itself. Thank you.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
var/list/diseases = typesof(/datum/disease) - /datum/disease
|
|
||||||
|
|
||||||
|
|
||||||
/datum/disease
|
|
||||||
var/form = "Virus" //During medscans, what the disease is referred to as
|
|
||||||
var/name = "No disease"
|
|
||||||
var/stage = 1 //all diseases start at stage 1
|
|
||||||
var/max_stages = 0.0
|
|
||||||
var/cure = null
|
|
||||||
var/cure_id = null// reagent.id or list containing them
|
|
||||||
var/cure_list = null // allows for multiple possible cure combinations
|
|
||||||
var/cure_chance = 8//chance for the cure to do its job
|
|
||||||
var/spread = null //spread type description
|
|
||||||
var/initial_spread = null
|
|
||||||
var/spread_type = AIRBORNE
|
|
||||||
var/contagious_period = 0//the disease stage when it can be spread
|
|
||||||
var/list/affected_species = list()
|
|
||||||
var/mob/living/carbon/affected_mob = null //the mob which is affected by disease.
|
|
||||||
var/holder = null //the atom containing the disease (mob or obj)
|
|
||||||
var/carrier = 0.0 //there will be a small chance that the person will be a carrier
|
|
||||||
var/curable = 0 //can this disease be cured? (By itself...)
|
|
||||||
var/list/strain_data = list() //This is passed on to infectees
|
|
||||||
var/stage_prob = 4 // probability of advancing to next stage, default 4% per check
|
|
||||||
var/agent = "some microbes"//name of the disease agent
|
|
||||||
var/permeability_mod = 1//permeability modifier coefficient.
|
|
||||||
var/desc = null//description. Leave it null and this disease won't show in med records.
|
|
||||||
var/severity = null//severity descr
|
|
||||||
var/longevity = 150//time in "ticks" the virus stays in inanimate object (blood stains, corpses, etc). In syringes, bottles and beakers it stays infinitely.
|
|
||||||
var/list/hidden = list(0, 0)
|
|
||||||
var/can_carry = 1 // If the disease allows "carriers".
|
|
||||||
var/age = 0 // age of the disease in the current mob
|
|
||||||
var/stage_minimum_age = 0 // how old the disease must be to advance per stage
|
|
||||||
// if hidden[1] is true, then virus is hidden from medical scanners
|
|
||||||
// if hidden[2] is true, then virus is hidden from PANDEMIC machine
|
|
||||||
|
|
||||||
/datum/disease/proc/stage_act()
|
|
||||||
|
|
||||||
// Some species are immune to viruses entirely.
|
|
||||||
if(affected_mob && istype(affected_mob, /mob/living/carbon/human))
|
|
||||||
var/mob/living/carbon/human/H = affected_mob
|
|
||||||
if(H.species.get_virus_immune(H))
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
age++
|
|
||||||
var/cure_present = has_cure()
|
|
||||||
spread = (cure_present?"Remissive":initial_spread)
|
|
||||||
if(stage > max_stages)
|
|
||||||
stage = max_stages
|
|
||||||
|
|
||||||
if(!cure_present && prob(stage_prob) && age > stage_minimum_age) //now the disease shouldn't get back up to stage 4 in no time
|
|
||||||
stage = min(stage + 1, max_stages)
|
|
||||||
age = 0
|
|
||||||
|
|
||||||
else if(cure_present && prob(cure_chance))
|
|
||||||
stage = max(stage - 1, 1)
|
|
||||||
|
|
||||||
if(stage <= 1 && ((prob(1) && curable) || (cure_present && prob(cure_chance))))
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
return
|
|
||||||
|
|
||||||
/datum/disease/proc/has_cure()//check if affected_mob has required reagents.
|
|
||||||
if(!cure_id) return 0
|
|
||||||
var/result = 1
|
|
||||||
if(cure_list == list(cure_id))
|
|
||||||
if(istype(cure_id, /list))
|
|
||||||
for(var/C_id in cure_id)
|
|
||||||
if(!affected_mob.reagents.has_reagent(C_id))
|
|
||||||
result = 0
|
|
||||||
else if(!affected_mob.reagents.has_reagent(cure_id))
|
|
||||||
result = 0
|
|
||||||
else
|
|
||||||
for(var/C_list in cure_list)
|
|
||||||
if(istype(C_list, /list))
|
|
||||||
for(var/C_id in cure_id)
|
|
||||||
if(affected_mob.reagents != null)
|
|
||||||
result = 0
|
|
||||||
else if(!affected_mob.reagents.has_reagent(C_id))
|
|
||||||
result = 0
|
|
||||||
else if(affected_mob.reagents != null)
|
|
||||||
if(!affected_mob.reagents.has_reagent(C_list))
|
|
||||||
result = 0
|
|
||||||
|
|
||||||
return result
|
|
||||||
|
|
||||||
/datum/disease/proc/spread_by_touch()
|
|
||||||
switch(spread_type)
|
|
||||||
if(CONTACT_FEET, CONTACT_HANDS, CONTACT_GENERAL)
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
/datum/disease/proc/spread(var/atom/source=null, var/airborne_range = 2, var/force_spread)
|
|
||||||
//world << "Disease [src] proc spread was called from holder [source]"
|
|
||||||
|
|
||||||
// If we're overriding how we spread, say so here
|
|
||||||
var/how_spread = spread_type
|
|
||||||
if(force_spread)
|
|
||||||
how_spread = force_spread
|
|
||||||
|
|
||||||
if(how_spread == SPECIAL || how_spread == NON_CONTAGIOUS || how_spread == BLOOD)//does not spread
|
|
||||||
return
|
|
||||||
|
|
||||||
if(stage < contagious_period) //the disease is not contagious at this stage
|
|
||||||
return
|
|
||||||
|
|
||||||
if(!source)//no holder specified
|
|
||||||
if(affected_mob)//no mob affected holder
|
|
||||||
source = affected_mob
|
|
||||||
else //no source and no mob affected. Rogue disease. Break
|
|
||||||
return
|
|
||||||
|
|
||||||
if(affected_mob.reagents != null)
|
|
||||||
if(affected_mob)
|
|
||||||
if(affected_mob.reagents.has_reagent("spaceacillin"))
|
|
||||||
return // Don't spread if we have spaceacillin in our system.
|
|
||||||
|
|
||||||
var/check_range = airborne_range//defaults to airborne - range 2
|
|
||||||
|
|
||||||
if(how_spread != AIRBORNE && how_spread != SPECIAL)
|
|
||||||
check_range = 1 // everything else, like infect-on-contact things, only infect things on top of it
|
|
||||||
|
|
||||||
if(isturf(source.loc))
|
|
||||||
for(var/mob/living/carbon/M in oview(check_range, source))
|
|
||||||
if(isturf(M.loc))
|
|
||||||
if(AStar(source.loc, M.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, check_range))
|
|
||||||
M.contract_disease(src, 0, 1, force_spread)
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
/datum/disease/proc/process()
|
|
||||||
if(!holder)
|
|
||||||
active_diseases -= src
|
|
||||||
return
|
|
||||||
if(prob(65))
|
|
||||||
spread(holder)
|
|
||||||
|
|
||||||
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].")
|
|
||||||
qdel(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
|
|
||||||
affected_mob = null
|
|
||||||
if(!affected_mob) //the virus is in inanimate obj
|
|
||||||
// world << "[src] longevity = [longevity]"
|
|
||||||
|
|
||||||
if(prob(70))
|
|
||||||
if(--longevity<=0)
|
|
||||||
cure(0)
|
|
||||||
return
|
|
||||||
|
|
||||||
/datum/disease/proc/cure(var/resistance=1)//if resistance = 0, the mob won't develop resistance to disease
|
|
||||||
if(affected_mob)
|
|
||||||
if(resistance && !(type in affected_mob.resistances))
|
|
||||||
var/saved_type = "[type]"
|
|
||||||
affected_mob.resistances += text2path(saved_type)
|
|
||||||
/*if(istype(src, /datum/disease/alien_embryo)) //Get rid of the infection flag if it's a xeno embryo.
|
|
||||||
affected_mob.status_flags &= ~(XENO_HOST)*/
|
|
||||||
affected_mob.viruses -= src //remove the datum from the list
|
|
||||||
qdel(src) //delete the datum to stop it processing
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
/datum/disease/New(var/process=1, var/datum/disease/D)//process = 1 - adding the object to global list. List is processed by master controller.
|
|
||||||
cure_list = list(cure_id) // to add more cures, add more vars to this list in the actual disease's New()
|
|
||||||
if(process) // Viruses in list are considered active.
|
|
||||||
active_diseases += src
|
|
||||||
initial_spread = spread
|
|
||||||
|
|
||||||
/datum/disease/Destroy()
|
|
||||||
active_diseases.Remove(src)
|
|
||||||
|
|
||||||
/datum/disease/proc/IsSame(var/datum/disease/D)
|
|
||||||
if(istype(src, D.type))
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
/datum/disease/proc/Copy(var/process = 0)
|
|
||||||
return new type(process, src)
|
|
||||||
@@ -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", "phoron"
|
|
||||||
)
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
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/Destroy()
|
|
||||||
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
|
|
||||||
qdel(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 = sanitizeSafe(input(user, "Name your new disease.", "New Name"), MAX_NAME_LEN)
|
|
||||||
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
|
|
||||||
@@ -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,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,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.make_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,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,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,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,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,67 +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
|
|
||||||
var/bloodvomit
|
|
||||||
|
|
||||||
/datum/symptom/vomit/Activate(var/datum/disease/advance/A)
|
|
||||||
..()
|
|
||||||
if(prob(SYMPTOM_ACTIVATION_PROB / 2))
|
|
||||||
var/mob/living/M = A.affected_mob
|
|
||||||
spawn M.vomit(M, bloodvomit)
|
|
||||||
return
|
|
||||||
|
|
||||||
/*
|
|
||||||
//////////////////////////////////////
|
|
||||||
|
|
||||||
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
|
|
||||||
bloodvomit = 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,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 << "<span class='warning'>Your throat feels sore.</span>"
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob << "<span class='warning'>Mucous runs down the back of your throat.</span>"
|
|
||||||
if(4)
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob.emote("sneeze")
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob.emote("cough")
|
|
||||||
if(prob(2))
|
|
||||||
affected_mob << "<span class='warning'>Your muscles ache.</span>"
|
|
||||||
if(prob(20))
|
|
||||||
affected_mob.take_organ_damage(1)
|
|
||||||
if(prob(2))
|
|
||||||
affected_mob << "<span class='warning'>Your stomach hurts.</span>"
|
|
||||||
if(prob(20))
|
|
||||||
affected_mob.adjustToxLoss(1)
|
|
||||||
affected_mob.updatehealth()
|
|
||||||
if(5)
|
|
||||||
affected_mob << "<span class='danger'>You feel something tearing its way out of your stomach...</span>"
|
|
||||||
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"))
|
|
||||||
qdel(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"))
|
|
||||||
qdel(I)
|
|
||||||
return
|
|
||||||
@@ -1,49 +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.internal_organs_by_name["appendix"])
|
|
||||||
src.cure()
|
|
||||||
|
|
||||||
if(stage == 1)
|
|
||||||
if(prob(5))
|
|
||||||
affected_mob << "<span class='warning'>You feel a stinging pain in your abdomen!</span>"
|
|
||||||
affected_mob.emote("me",1,"winces slightly.")
|
|
||||||
if(stage > 1)
|
|
||||||
if(prob(3))
|
|
||||||
affected_mob << "<span class='warning'>You feel a stabbing pain in your abdomen!</span>"
|
|
||||||
affected_mob.emote("me",1,"winces painfully.")
|
|
||||||
affected_mob.adjustToxLoss(1)
|
|
||||||
if(stage > 2)
|
|
||||||
if(prob(1))
|
|
||||||
var/mob/living/carbon/human/H = affected_mob
|
|
||||||
spawn H.vomit()
|
|
||||||
|
|
||||||
if(stage > 3)
|
|
||||||
if(prob(1) && ishuman(affected_mob))
|
|
||||||
var/mob/living/carbon/human/H = affected_mob
|
|
||||||
H << "<span class='danger'>Your abdomen is a world of pain!</span>"
|
|
||||||
H.Weaken(10)
|
|
||||||
|
|
||||||
var/obj/item/organ/external/groin = H.get_organ(BP_GROIN)
|
|
||||||
var/datum/wound/W = new /datum/wound/internal_bleeding(20)
|
|
||||||
H.adjustToxLoss(25)
|
|
||||||
groin.wounds += W
|
|
||||||
src.cure()
|
|
||||||
@@ -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 << "<span class='warning'>You feel like something is moving inside of you!</span>"
|
|
||||||
if(2) //also changes say, see say.dm
|
|
||||||
if(prob(2))
|
|
||||||
affected_mob << "<span class='warning'>You feel like something is moving inside of you!</span>"
|
|
||||||
if(prob(2))
|
|
||||||
affected_mob << "<span class='danger'>BZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ</span>"
|
|
||||||
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
|
|
||||||
@@ -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 << "<span class='warning'>Your don't feel like yourself.</span>"
|
|
||||||
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 << "<span class='warning'>You try to remember something important...but can't.</span>"
|
|
||||||
/* if(prob(10))
|
|
||||||
affected_mob.adjustToxLoss(3)
|
|
||||||
affected_mob.updatehealth()
|
|
||||||
if(prob(2))
|
|
||||||
affected_mob << "<span class='warning'>Your head hurts.</span>" */
|
|
||||||
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 << "<span class='notice'>Your head hurts.</span>" */
|
|
||||||
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 << "<span class='warning'>A strange buzzing fills your head, removing all thoughts.</span>"
|
|
||||||
if(prob(3))
|
|
||||||
affected_mob << "<span class='warning'>You lose consciousness...</span>"
|
|
||||||
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
|
|
||||||
@@ -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 << "<span class='notice'>You feel better.</span>"
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
*/
|
|
||||||
if(affected_mob.lying && prob(40)) //changed FROM prob(10) until sleeping is fixed
|
|
||||||
affected_mob << "<span class='notice'>You feel better.</span>"
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
if(prob(1) && prob(5))
|
|
||||||
affected_mob << "<span class='notice'>You feel better.</span>"
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob.emote("sneeze")
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob.emote("cough")
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob << "<span class='warning'>Your throat feels sore.</span>"
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob << "<span class='warning'>Mucous runs down the back of your throat.</span>"
|
|
||||||
if(3)
|
|
||||||
/*
|
|
||||||
if(affected_mob.sleeping && prob(25)) //removed until sleeping is fixed
|
|
||||||
affected_mob << "<span class='notice'>You feel better.</span>"
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
*/
|
|
||||||
if(affected_mob.lying && prob(25)) //changed FROM prob(5) until sleeping is fixed
|
|
||||||
affected_mob << "<span class='notice'>You feel better.</span>"
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
if(prob(1) && prob(1))
|
|
||||||
affected_mob << "<span class='notice'>You feel better.</span>"
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob.emote("sneeze")
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob.emote("cough")
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob << "<span class='warning'>Your throat feels sore.</span>"
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob << "<span class='warning'>Mucous runs down the back of your throat.</span>"
|
|
||||||
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()
|
|
||||||
@@ -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 << "<span class='notice'>You feel better.</span>"
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob.emote("sneeze")
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob.emote("cough")
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob << "<span class='warning'>Your throat feels sore.</span>"
|
|
||||||
if(prob(5))
|
|
||||||
affected_mob << "<span class='warning'>You feel stiff.</span>"
|
|
||||||
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 << "<span class='warning'>Your throat feels sore.</span>"
|
|
||||||
if(prob(10))
|
|
||||||
affected_mob << "<span class='warning'>You feel stiff.</span>"
|
|
||||||
@@ -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 << "<span class='warning'>Your muscles ache.</span>"
|
|
||||||
if(prob(20))
|
|
||||||
affected_mob.take_organ_damage(1)
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob << "<span class='warning'>Your stomach hurts.</span>"
|
|
||||||
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"]))
|
|
||||||
qdel(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 << "<span class='warning'>You don't feel like yourself..</span>"
|
|
||||||
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/Destroy()
|
|
||||||
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 << "<span class='notice'>You feel more like yourself.</span>"
|
|
||||||
..()
|
|
||||||
@@ -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 << "<span class='warning'>You're starting to feel very weak...</span>"
|
|
||||||
if(4)
|
|
||||||
if(prob(10))
|
|
||||||
affected_mob.emote("cough")
|
|
||||||
|
|
||||||
if(5)
|
|
||||||
if(prob(10))
|
|
||||||
affected_mob.emote("cough")
|
|
||||||
@@ -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 << "<span class='notice'>You feel better.</span>"
|
|
||||||
stage--
|
|
||||||
return
|
|
||||||
*/
|
|
||||||
if(affected_mob.lying && prob(20)) //added until sleeping is fixed --Blaank
|
|
||||||
affected_mob << "<span class='notice'>You feel better.</span>"
|
|
||||||
stage--
|
|
||||||
return
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob.emote("sneeze")
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob.emote("cough")
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob << "<span class='warning'>Your muscles ache.</span>"
|
|
||||||
if(prob(20))
|
|
||||||
affected_mob.take_organ_damage(1)
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob << "<span class='warning'>Your stomach hurts.</span>"
|
|
||||||
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 << "<span class='notice'>You feel better.</span>"
|
|
||||||
stage--
|
|
||||||
return
|
|
||||||
*/
|
|
||||||
if(affected_mob.lying && prob(15)) //added until sleeping is fixed
|
|
||||||
affected_mob << "<span class='notice'>You feel better.</span>"
|
|
||||||
stage--
|
|
||||||
return
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob.emote("sneeze")
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob.emote("cough")
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob << "<span class='warning'>Your muscles ache.</span>"
|
|
||||||
if(prob(20))
|
|
||||||
affected_mob.take_organ_damage(1)
|
|
||||||
if(prob(1))
|
|
||||||
affected_mob << "<span class='warning'>Your stomach hurts.</span>"
|
|
||||||
if(prob(20))
|
|
||||||
affected_mob.adjustToxLoss(1)
|
|
||||||
affected_mob.updatehealth()
|
|
||||||
return
|
|
||||||
@@ -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 << "<span class='warning'>You're burning in your own skin!</span>"
|
|
||||||
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 << "<span class='warning'>You're burning in your own skin!</span>"
|
|
||||||
affected_mob.take_organ_damage(0,5)
|
|
||||||
return
|
|
||||||
@@ -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 << "<span class='warning'>You're starting to feel very weak...</span>"
|
|
||||||
if(4)
|
|
||||||
if(prob(10))
|
|
||||||
affected_mob.emote("cough")
|
|
||||||
affected_mob.adjustToxLoss(5)
|
|
||||||
affected_mob.updatehealth()
|
|
||||||
if(5)
|
|
||||||
affected_mob << "<span class='warning'>Your body feels as if it's trying to rip itself open...</span>"
|
|
||||||
if(prob(50))
|
|
||||||
affected_mob.gib()
|
|
||||||
else
|
|
||||||
return
|
|
||||||
@@ -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"
|
|
||||||
@@ -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 << "<span class='warning'>You feel a slight shock course through your body.</span>"
|
|
||||||
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 << "<span class='warning'>You feel a strong shock course through your body.</span>"
|
|
||||||
if(prob(2))
|
|
||||||
affected_mob << "<span class='warning'>You feel like clowning around.</span>"
|
|
||||||
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 << "<span class='warning'>You feel a powerful shock course through your body.</span>"
|
|
||||||
if(prob(2))
|
|
||||||
affected_mob << "<span class='warning'>You query upon the nature of miracles.</span>"
|
|
||||||
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
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
/datum/disease/pierrot_throat
|
|
||||||
name = "Pierrot's Throat"
|
|
||||||
max_stages = 4
|
|
||||||
spread = "Airborne"
|
|
||||||
cure = "A whole banana."
|
|
||||||
cure_id = "banana"
|
|
||||||
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 << "<span class='warning'>You feel a little silly.</span>"
|
|
||||||
if(2)
|
|
||||||
if(prob(10)) affected_mob << "<span class='warning'>You start seeing rainbows.</span>"
|
|
||||||
if(3)
|
|
||||||
if(prob(10)) affected_mob << "<span class='warning'>Your thoughts are interrupted by a loud <b>HONK!</b></span>"
|
|
||||||
if(4)
|
|
||||||
if(prob(5)) affected_mob.say( pick( list("HONK!", "Honk!", "Honk.", "Honk?", "Honk!!", "Honk?!", "Honk...") ) )
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
/datum/disease/plasmatoid
|
|
||||||
name = "Plasmatoid"
|
|
||||||
max_stages = 4
|
|
||||||
cure = "None"
|
|
||||||
affected_species = list("Monkey", "Human")
|
|
||||||
@@ -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 << "<span class='notice'>You feel better.</span>"
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
*/
|
|
||||||
if(affected_mob.lying && prob(30)) //changed FROM prob(20) until sleeping is fixed
|
|
||||||
affected_mob << "<span class='notice'>You feel better.</span>"
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
if (prob(8))
|
|
||||||
affected_mob << "<span class='warning'>Your head hurts.</span>"
|
|
||||||
if (prob(9))
|
|
||||||
affected_mob << "<span class='warning'>You feel a tingling sensation in your chest.</span>"
|
|
||||||
if (prob(9))
|
|
||||||
affected_mob << "<span class='warning'>You feel angry.</span>"
|
|
||||||
if(2)
|
|
||||||
if(restcure)
|
|
||||||
/*
|
|
||||||
if(affected_mob.sleeping && prob(20)) //removed until sleeping is fixed
|
|
||||||
affected_mob << "<span class='notice'>You feel better.</span>"
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
*/
|
|
||||||
if(affected_mob.lying && prob(20)) //changed FROM prob(10) until sleeping is fixed
|
|
||||||
affected_mob << "<span class='notice'>You feel better.</span>"
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
if (prob(8))
|
|
||||||
affected_mob << "<span class='warning'>Your skin feels loose.</span>"
|
|
||||||
if (prob(10))
|
|
||||||
affected_mob << "<span class='warning'>You feel very strange.</span>"
|
|
||||||
if (prob(4))
|
|
||||||
affected_mob << "<span class='warning'>You feel a stabbing pain in your head!</span>"
|
|
||||||
affected_mob.Paralyse(2)
|
|
||||||
if (prob(4))
|
|
||||||
affected_mob << "<span class='warning'>Your stomach churns.</span>"
|
|
||||||
if(3)
|
|
||||||
if(restcure)
|
|
||||||
/*
|
|
||||||
if(affected_mob.sleeping && prob(20)) //removed until sleeping is fixed
|
|
||||||
affected_mob << "<span class='notice'>You feel better.</span>"
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
*/
|
|
||||||
if(affected_mob.lying && prob(20)) //changed FROM prob(10) until sleeping is fixed
|
|
||||||
affected_mob << "<span class='notice'>You feel better.</span>"
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
if (prob(10))
|
|
||||||
affected_mob << "<span class='warning'>Your entire body vibrates.</span>"
|
|
||||||
|
|
||||||
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 << "<span class='notice'>You feel better.</span>"
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
*/
|
|
||||||
if(affected_mob.lying && prob(5)) //changed FROM prob(5) until sleeping is fixed
|
|
||||||
affected_mob << "<span class='notice'>You feel better.</span>"
|
|
||||||
cure()
|
|
||||||
return
|
|
||||||
if (prob(60))
|
|
||||||
if(prob(50))
|
|
||||||
scramble(1, affected_mob, rand(50,75))
|
|
||||||
else
|
|
||||||
scramble(0, affected_mob, rand(50,75))
|
|
||||||
@@ -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("phoron")
|
|
||||||
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 << "<span class='warning'>You feel strange...</span>"
|
|
||||||
if(3)
|
|
||||||
if(affected_mob.ckey == "rosham")
|
|
||||||
src.cure()
|
|
||||||
if(prob(5))
|
|
||||||
affected_mob << "<span class='warning'>You feel the urge to dance...</span>"
|
|
||||||
else if(prob(5))
|
|
||||||
affected_mob.emote("gasp")
|
|
||||||
else if(prob(10))
|
|
||||||
affected_mob << "<span class='warning'>You feel the need to chick chicky boom...</span>"
|
|
||||||
if(4)
|
|
||||||
if(affected_mob.ckey == "rosham")
|
|
||||||
src.cure()
|
|
||||||
if(prob(10))
|
|
||||||
affected_mob.emote("gasp")
|
|
||||||
affected_mob << "<span class='warning'>You feel a burning beat inside...</span>"
|
|
||||||
if(prob(20))
|
|
||||||
affected_mob.adjustToxLoss(5)
|
|
||||||
affected_mob.updatehealth()
|
|
||||||
if(5)
|
|
||||||
if(affected_mob.ckey == "rosham")
|
|
||||||
src.cure()
|
|
||||||
affected_mob << "<span class='warning'>Your body is unable to contain the Rhumba Beat...</span>"
|
|
||||||
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 << "<span class='warning'>Your joints feel stiff.</span>"
|
|
||||||
affected_mob.take_organ_damage(1)
|
|
||||||
if (prob(9))
|
|
||||||
affected_mob << "<span class='warning'>Beep...boop..</span>"
|
|
||||||
if (prob(9))
|
|
||||||
affected_mob << "<span class='warning'>Bop...beeep...</span>"
|
|
||||||
if(3)
|
|
||||||
if (prob(8))
|
|
||||||
affected_mob << "<span class='warning'>Your joints feel very stiff.</span>"
|
|
||||||
affected_mob.take_organ_damage(1)
|
|
||||||
if (prob(8))
|
|
||||||
affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop"))
|
|
||||||
if (prob(10))
|
|
||||||
affected_mob << "<span class='warning'>Your skin feels loose.</span>"
|
|
||||||
affected_mob.take_organ_damage(5)
|
|
||||||
if (prob(4))
|
|
||||||
affected_mob << "<span class='warning'>You feel a stabbing pain in your head.</span>"
|
|
||||||
affected_mob.Paralyse(2)
|
|
||||||
if (prob(4))
|
|
||||||
affected_mob << "<span class='warning'>You can feel something move...inside.</span>"
|
|
||||||
if(4)
|
|
||||||
if (prob(10))
|
|
||||||
affected_mob << "<span class='warning'>Your skin feels very loose.</span>"
|
|
||||||
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 << "<span class='warning'>You can feel... something...inside you.</span>"
|
|
||||||
if(5)
|
|
||||||
affected_mob <<"<span class='warning'>Your skin feels as if it's about to burst off...</span>"
|
|
||||||
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)
|
|
||||||
src.cure(0)
|
|
||||||
gibbed = 1
|
|
||||||
var/mob/living/carbon/human/H = affected_mob
|
|
||||||
if(istype(H) && !jobban_isbanned(affected_mob, "Cyborg"))
|
|
||||||
H.Robotize()
|
|
||||||
else
|
|
||||||
affected_mob.death(1)
|
|
||||||
|
|
||||||
@@ -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 << "<span class='warning'>You feel [pick("that you don't have enough mana.", "that the winds of magic are gone.", "an urge to summon familiar.")]</span>"
|
|
||||||
|
|
||||||
|
|
||||||
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 << "<span class='warning'>You feel [pick("the magic bubbling in your veins.","that this location gives you a +1 to INT.","an urge to summon familiar.")]</span>"
|
|
||||||
|
|
||||||
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 << "<span class='warning'>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.")]</span>"
|
|
||||||
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 << "<span class='warning'>Your throat feels scratchy.</span>"
|
|
||||||
affected_mob.take_organ_damage(1)
|
|
||||||
if (prob(9))
|
|
||||||
affected_mob << "<span class='warning'>Kill...</span>"
|
|
||||||
if (prob(9))
|
|
||||||
affected_mob << "<span class='warning'>Kill...</span>"
|
|
||||||
if(3)
|
|
||||||
if (prob(8))
|
|
||||||
affected_mob << "<span class='warning'>Your throat feels very scratchy.</span>"
|
|
||||||
affected_mob.take_organ_damage(1)
|
|
||||||
/*
|
|
||||||
if (prob(8))
|
|
||||||
affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop"))
|
|
||||||
*/
|
|
||||||
if (prob(10))
|
|
||||||
affected_mob << "<span class='warning'>Your skin feels tight.</span>"
|
|
||||||
affected_mob.take_organ_damage(5)
|
|
||||||
if (prob(4))
|
|
||||||
affected_mob << "<span class='warning'>You feel a stabbing pain in your head.</span>"
|
|
||||||
affected_mob.Paralyse(2)
|
|
||||||
if (prob(4))
|
|
||||||
affected_mob << "<span class='warning'>You can feel something move...inside.</span>"
|
|
||||||
if(4)
|
|
||||||
if (prob(10))
|
|
||||||
affected_mob << pick("<span class='warning'>Your skin feels very tight.</span>", "<span class='warning'>Your blood boils!</span>")
|
|
||||||
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 << "<span class='warning'>You can feel... something...inside you.</span>"
|
|
||||||
if(5)
|
|
||||||
affected_mob <<"<span class='warning'>Your skin feels impossibly calloused...</span>"
|
|
||||||
affected_mob.adjustToxLoss(10)
|
|
||||||
affected_mob.updatehealth()
|
|
||||||
if(prob(40))
|
|
||||||
if(gibbed != 0) return 0
|
|
||||||
var/turf/T = find_loc(affected_mob)
|
|
||||||
gibs(T)
|
|
||||||
src.cure(0)
|
|
||||||
gibbed = 1
|
|
||||||
affected_mob:Alienize()
|
|
||||||
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
// Notes towards a monkey mode to reduce snowflakes for downstream. Will not compile.
|
|
||||||
|
|
||||||
/datum/antagonist/monkey
|
|
||||||
role_text = "Rabid Monkey"
|
|
||||||
role_text_plural = "Rabid Monkeys"
|
|
||||||
mob_type = /mob/living/carbon/monkey
|
|
||||||
id = MODE_MONKEY
|
|
||||||
flags = ANTAG_OVERRIDE_JOB | ANTAG_OVERRIDE_MOB
|
|
||||||
|
|
||||||
/datum/antagonist/monkey/apply(var/datum/mind/player)
|
|
||||||
|
|
||||||
for(var/datum/disease/D in M.viruses)
|
|
||||||
if(istype(D, /datum/disease/jungle_fever))
|
|
||||||
if (ticker.mode.config_tag == "monkey")
|
|
||||||
return 2
|
|
||||||
return 1
|
|
||||||
@@ -52,13 +52,6 @@
|
|||||||
O.suiciding = M.suiciding
|
O.suiciding = M.suiciding
|
||||||
M.suiciding = null
|
M.suiciding = null
|
||||||
|
|
||||||
|
|
||||||
for(var/datum/disease/D in M.viruses)
|
|
||||||
O.viruses += D
|
|
||||||
D.affected_mob = O
|
|
||||||
M.viruses -= D
|
|
||||||
|
|
||||||
|
|
||||||
for(var/obj/T in (M.contents-implants))
|
for(var/obj/T in (M.contents-implants))
|
||||||
qdel(T)
|
qdel(T)
|
||||||
|
|
||||||
@@ -130,11 +123,6 @@
|
|||||||
O.suiciding = M.suiciding
|
O.suiciding = M.suiciding
|
||||||
M.suiciding = null
|
M.suiciding = null
|
||||||
|
|
||||||
for(var/datum/disease/D in M.viruses)
|
|
||||||
O.viruses += D
|
|
||||||
D.affected_mob = O
|
|
||||||
M.viruses -= D
|
|
||||||
|
|
||||||
//for(var/obj/T in M)
|
//for(var/obj/T in M)
|
||||||
// qdel(T)
|
// qdel(T)
|
||||||
|
|
||||||
|
|||||||
@@ -19,9 +19,6 @@
|
|||||||
|
|
||||||
src << "<span class='notice'>We cleanse impurities from our form.</span>"
|
src << "<span class='notice'>We cleanse impurities from our form.</span>"
|
||||||
|
|
||||||
for(var/datum/disease/D in src.viruses)
|
|
||||||
D.cure()
|
|
||||||
|
|
||||||
var/mob/living/carbon/human/C = src
|
var/mob/living/carbon/human/C = src
|
||||||
|
|
||||||
C.radiation = 0
|
C.radiation = 0
|
||||||
|
|||||||
@@ -106,81 +106,9 @@ var/eventchance = 10 // Percent chance per 5 minutes.
|
|||||||
var/hadevent = 0
|
var/hadevent = 0
|
||||||
|
|
||||||
/proc/appendicitis()
|
/proc/appendicitis()
|
||||||
for(var/mob/living/carbon/human/H in living_mob_list)
|
|
||||||
var/foundAlready = 0 // don't infect someone that already has the virus
|
|
||||||
for(var/datum/disease/D in H.viruses)
|
|
||||||
foundAlready = 1
|
|
||||||
if(H.stat == 2 || foundAlready)
|
|
||||||
continue
|
|
||||||
|
|
||||||
var/datum/disease/D = new /datum/disease/appendicitis
|
|
||||||
D.holder = H
|
|
||||||
D.affected_mob = H
|
|
||||||
H.viruses += D
|
|
||||||
break
|
|
||||||
|
|
||||||
/proc/viral_outbreak(var/virus = null)
|
|
||||||
// command_alert("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
|
|
||||||
// world << sound('sound/AI/outbreak7.ogg')
|
|
||||||
var/virus_type
|
|
||||||
if(!virus)
|
|
||||||
virus_type = pick(/datum/disease/dnaspread,/datum/disease/advance/flu,/datum/disease/advance/cold,/datum/disease/brainrot,/datum/disease/magnitis,/datum/disease/pierrot_throat)
|
|
||||||
else
|
|
||||||
switch(virus)
|
|
||||||
if("fake gbs")
|
|
||||||
virus_type = /datum/disease/fake_gbs
|
|
||||||
if("gbs")
|
|
||||||
virus_type = /datum/disease/gbs
|
|
||||||
if("magnitis")
|
|
||||||
virus_type = /datum/disease/magnitis
|
|
||||||
if("rhumba beat")
|
|
||||||
virus_type = /datum/disease/rhumba_beat
|
|
||||||
if("brain rot")
|
|
||||||
virus_type = /datum/disease/brainrot
|
|
||||||
if("cold")
|
|
||||||
virus_type = /datum/disease/advance/cold
|
|
||||||
if("retrovirus")
|
|
||||||
virus_type = /datum/disease/dnaspread
|
|
||||||
if("flu")
|
|
||||||
virus_type = /datum/disease/advance/flu
|
|
||||||
// if("t-virus")
|
|
||||||
// virus_type = /datum/disease/t_virus
|
|
||||||
if("pierrot's throat")
|
|
||||||
virus_type = /datum/disease/pierrot_throat
|
|
||||||
for(var/mob/living/carbon/human/H in shuffle(living_mob_list))
|
for(var/mob/living/carbon/human/H in shuffle(living_mob_list))
|
||||||
|
if(H.client && H.appendicitis())
|
||||||
var/foundAlready = 0 // don't infect someone that already has the virus
|
|
||||||
var/turf/T = get_turf(H)
|
|
||||||
if(!T)
|
|
||||||
continue
|
|
||||||
if(isNotStationLevel(T.z))
|
|
||||||
continue
|
|
||||||
for(var/datum/disease/D in H.viruses)
|
|
||||||
foundAlready = 1
|
|
||||||
if(H.stat == 2 || foundAlready)
|
|
||||||
continue
|
|
||||||
|
|
||||||
if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work.
|
|
||||||
if((!H.dna) || (H.sdisabilities & BLIND)) //A blindness disease would be the worst.
|
|
||||||
continue
|
|
||||||
var/datum/disease/dnaspread/D = new
|
|
||||||
D.strain_data["name"] = H.real_name
|
|
||||||
D.strain_data["UI"] = H.dna.uni_identity
|
|
||||||
D.strain_data["SE"] = H.dna.struc_enzymes
|
|
||||||
D.carrier = 1
|
|
||||||
D.holder = H
|
|
||||||
D.affected_mob = H
|
|
||||||
H.viruses += D
|
|
||||||
break
|
break
|
||||||
else
|
|
||||||
var/datum/disease/D = new virus_type
|
|
||||||
D.carrier = 1
|
|
||||||
D.holder = H
|
|
||||||
D.affected_mob = H
|
|
||||||
H.viruses += D
|
|
||||||
break
|
|
||||||
spawn(rand(1500, 3000)) //Delayed announcements to keep the crew on their toes.
|
|
||||||
command_announcement.Announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", new_sound = 'sound/AI/outbreak7.ogg')
|
|
||||||
|
|
||||||
/proc/alien_infestation(var/spawncount = 1) // -- TLE
|
/proc/alien_infestation(var/spawncount = 1) // -- TLE
|
||||||
//command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert")
|
//command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert")
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:04
|
|
||||||
|
|
||||||
/datum/event/viralinfection
|
|
||||||
var/virus_type
|
|
||||||
var/virus
|
|
||||||
var/virus2 = 0
|
|
||||||
|
|
||||||
Announce()
|
|
||||||
if(!virus)
|
|
||||||
for(var/mob/living/carbon/human/H in world)
|
|
||||||
if((H.virus2.len) || (H.stat == 2) || prob(30))
|
|
||||||
continue
|
|
||||||
if(prob(100)) // no lethal diseases outside virus mode!
|
|
||||||
infect_mob_random_lesser(H)
|
|
||||||
if(prob(20))//don't want people to know that the virus alert = greater virus
|
|
||||||
command_alert("Probable outbreak of level [rand(1,6)] viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Virus Alert")
|
|
||||||
else
|
|
||||||
infect_mob_random_greater(H)
|
|
||||||
if(prob(80))
|
|
||||||
command_alert("Probable outbreak of level [rand(2,9)] viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Virus Alert")
|
|
||||||
break
|
|
||||||
//overall virus alert happens 26% of the time, might need to be higher
|
|
||||||
else
|
|
||||||
if(!virus)
|
|
||||||
virus_type = pick(/datum/disease/dnaspread,/datum/disease/flu,/datum/disease/cold,/datum/disease/brainrot,/datum/disease/magnitis,/datum/disease/pierrot_throat)
|
|
||||||
else
|
|
||||||
switch(virus)
|
|
||||||
if("fake gbs")
|
|
||||||
virus_type = /datum/disease/fake_gbs
|
|
||||||
if("gbs")
|
|
||||||
virus_type = /datum/disease/gbs
|
|
||||||
if("magnitis")
|
|
||||||
virus_type = /datum/disease/magnitis
|
|
||||||
if("rhumba beat")
|
|
||||||
virus_type = /datum/disease/rhumba_beat
|
|
||||||
if("brain rot")
|
|
||||||
virus_type = /datum/disease/brainrot
|
|
||||||
if("cold")
|
|
||||||
virus_type = /datum/disease/cold
|
|
||||||
if("retrovirus")
|
|
||||||
virus_type = /datum/disease/dnaspread
|
|
||||||
if("flu")
|
|
||||||
virus_type = /datum/disease/flu
|
|
||||||
// if("t-virus")
|
|
||||||
// virus_type = /datum/disease/t_virus
|
|
||||||
if("pierrot's throat")
|
|
||||||
virus_type = /datum/disease/pierrot_throat
|
|
||||||
for(var/mob/living/carbon/human/H in world)
|
|
||||||
|
|
||||||
var/foundAlready = 0 // don't infect someone that already has the virus
|
|
||||||
for(var/datum/disease/D in H.viruses)
|
|
||||||
foundAlready = 1
|
|
||||||
if(H.stat == 2 || foundAlready)
|
|
||||||
continue
|
|
||||||
|
|
||||||
if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work.
|
|
||||||
if((!H.dna) || (H.disabilities & 128)) //A blindness disease would be the worst.
|
|
||||||
continue
|
|
||||||
var/datum/disease/dnaspread/D = new
|
|
||||||
D.strain_data["name"] = H.real_name
|
|
||||||
D.strain_data["UI"] = H.dna.uni_identity
|
|
||||||
D.strain_data["SE"] = H.dna.struc_enzymes
|
|
||||||
D.carrier = 1
|
|
||||||
D.holder = H
|
|
||||||
D.affected_mob = H
|
|
||||||
H.viruses += D
|
|
||||||
break
|
|
||||||
else
|
|
||||||
var/datum/disease/D = new virus_type
|
|
||||||
D.carrier = 1
|
|
||||||
D.holder = H
|
|
||||||
D.affected_mob = H
|
|
||||||
H.viruses += D
|
|
||||||
break
|
|
||||||
spawn(rand(3000, 6000)) //Delayed announcements to keep the crew on their toes.
|
|
||||||
command_alert("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
|
|
||||||
world << sound('sound/AI/outbreak7.ogg')
|
|
||||||
Tick()
|
|
||||||
ActiveFor = Lifetime //killme
|
|
||||||
|
|
||||||
@@ -275,7 +275,6 @@
|
|||||||
"dermaline_amount" = H.reagents.get_reagent_amount("dermaline"),
|
"dermaline_amount" = H.reagents.get_reagent_amount("dermaline"),
|
||||||
"blood_amount" = H.vessel.get_reagent_amount("blood"),
|
"blood_amount" = H.vessel.get_reagent_amount("blood"),
|
||||||
"disabilities" = H.sdisabilities,
|
"disabilities" = H.sdisabilities,
|
||||||
"tg_diseases_list" = H.viruses.Copy(),
|
|
||||||
"lung_ruptured" = H.is_lung_ruptured(),
|
"lung_ruptured" = H.is_lung_ruptured(),
|
||||||
"external_organs" = H.organs.Copy(),
|
"external_organs" = H.organs.Copy(),
|
||||||
"internal_organs" = H.internal_organs.Copy(),
|
"internal_organs" = H.internal_organs.Copy(),
|
||||||
@@ -320,10 +319,6 @@
|
|||||||
dat += text("[]\tBicaridine: [] units</font><BR>", ("<font color='[occ["bicaridine_amount"] < 30 ? "black" : "red"]'>"), occ["bicaridine_amount"])
|
dat += text("[]\tBicaridine: [] units</font><BR>", ("<font color='[occ["bicaridine_amount"] < 30 ? "black" : "red"]'>"), occ["bicaridine_amount"])
|
||||||
dat += text("[]\tDexalin: [] units</font><BR>", ("<font color='[occ["dexalin_amount"] < 30 ? "black" : "red"]'>"), occ["dexalin_amount"])
|
dat += text("[]\tDexalin: [] units</font><BR>", ("<font color='[occ["dexalin_amount"] < 30 ? "black" : "red"]'>"), occ["dexalin_amount"])
|
||||||
|
|
||||||
for(var/datum/disease/D in occ["tg_diseases_list"])
|
|
||||||
if(!D.hidden[SCANNER])
|
|
||||||
dat += text("<font color='red'><B>Warning: [D.form] Detected</B>\nName: [D.name].\nType: [D.spread].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure]</FONT><BR>")
|
|
||||||
|
|
||||||
dat += "<HR><table border='1'>"
|
dat += "<HR><table border='1'>"
|
||||||
dat += "<tr>"
|
dat += "<tr>"
|
||||||
dat += "<th>Organ</th>"
|
dat += "<th>Organ</th>"
|
||||||
|
|||||||
@@ -107,15 +107,6 @@
|
|||||||
dat += text("\n<A href='?src=\ref[];print_p=1'>Print Record</A><BR>\n<A href='?src=\ref[];screen=2'>Back</A><BR>", src, src)
|
dat += text("\n<A href='?src=\ref[];print_p=1'>Print Record</A><BR>\n<A href='?src=\ref[];screen=2'>Back</A><BR>", src, src)
|
||||||
if(5.0)
|
if(5.0)
|
||||||
dat += "<CENTER><B>Virus Database</B></CENTER>"
|
dat += "<CENTER><B>Virus Database</B></CENTER>"
|
||||||
/* Advanced diseases is weak! Feeble! Glory to virus2!
|
|
||||||
for(var/Dt in typesof(/datum/disease/))
|
|
||||||
var/datum/disease/Dis = new Dt(0)
|
|
||||||
if(istype(Dis, /datum/disease/advance))
|
|
||||||
continue // TODO (tm): Add advance diseases to the virus database which no one uses.
|
|
||||||
if(!Dis.desc)
|
|
||||||
continue
|
|
||||||
dat += "<br><a href='?src=\ref[src];vir=[Dt]'>[Dis.name]</a>"
|
|
||||||
*/
|
|
||||||
for (var/ID in virusDB)
|
for (var/ID in virusDB)
|
||||||
var/datum/data/record/v = virusDB[ID]
|
var/datum/data/record/v = virusDB[ID]
|
||||||
dat += "<br><a href='?src=\ref[src];vir=\ref[v]'>[v.fields["name"]]</a>"
|
dat += "<br><a href='?src=\ref[src];vir=\ref[v]'>[v.fields["name"]]</a>"
|
||||||
|
|||||||
@@ -117,15 +117,6 @@
|
|||||||
dat += text("\n<A href='?src=\ref[];print_p=1'>Print Record</A><BR>\n<A href='?src=\ref[];screen=2'>Back</A><BR>", src, src)
|
dat += text("\n<A href='?src=\ref[];print_p=1'>Print Record</A><BR>\n<A href='?src=\ref[];screen=2'>Back</A><BR>", src, src)
|
||||||
if(5.0)
|
if(5.0)
|
||||||
dat += "<CENTER><B>Virus Database</B></CENTER>"
|
dat += "<CENTER><B>Virus Database</B></CENTER>"
|
||||||
/* Advanced diseases is weak! Feeble! Glory to virus2!
|
|
||||||
for(var/Dt in typesof(/datum/disease/))
|
|
||||||
var/datum/disease/Dis = new Dt(0)
|
|
||||||
if(istype(Dis, /datum/disease/advance))
|
|
||||||
continue // TODO (tm): Add advance diseases to the virus database which no one uses.
|
|
||||||
if(!Dis.desc)
|
|
||||||
continue
|
|
||||||
dat += "<br><a href='?src=\ref[src];vir=[Dt]'>[Dis.name]</a>"
|
|
||||||
*/
|
|
||||||
for (var/ID in virusDB)
|
for (var/ID in virusDB)
|
||||||
var/datum/data/record/v = virusDB[ID]
|
var/datum/data/record/v = virusDB[ID]
|
||||||
dat += "<br><a href='?src=\ref[src];vir=\ref[v]'>[v.fields["name"]]</a>"
|
dat += "<br><a href='?src=\ref[src];vir=\ref[v]'>[v.fields["name"]]</a>"
|
||||||
|
|||||||
@@ -903,7 +903,6 @@
|
|||||||
vend_reply = "Have an enchanted evening!"
|
vend_reply = "Have an enchanted evening!"
|
||||||
product_ads = "FJKLFJSD;AJKFLBJAKL;1234 LOONIES LOL!;>MFW;Kill them fuckers!;GET DAT FUKKEN DISK;HONK!;EI NATH;Destroy the station!;Admin conspiracies since forever!;Space-time bending hardware!"
|
product_ads = "FJKLFJSD;AJKFLBJAKL;1234 LOONIES LOL!;>MFW;Kill them fuckers!;GET DAT FUKKEN DISK;HONK!;EI NATH;Destroy the station!;Admin conspiracies since forever!;Space-time bending hardware!"
|
||||||
products = list(/obj/item/clothing/head/wizard = 1,/obj/item/clothing/suit/wizrobe = 1,/obj/item/clothing/head/wizard/red = 1,/obj/item/clothing/suit/wizrobe/red = 1,/obj/item/clothing/shoes/sandal = 1,/obj/item/weapon/staff = 2)
|
products = list(/obj/item/clothing/head/wizard = 1,/obj/item/clothing/suit/wizrobe = 1,/obj/item/clothing/head/wizard/red = 1,/obj/item/clothing/suit/wizrobe/red = 1,/obj/item/clothing/shoes/sandal = 1,/obj/item/weapon/staff = 2)
|
||||||
contraband = list(/obj/item/weapon/reagent_containers/glass/bottle/wizarditis = 1) //No one can get to the machine to hack it anyways; for the lulz - Microwave
|
|
||||||
|
|
||||||
/obj/machinery/vending/dinnerware
|
/obj/machinery/vending/dinnerware
|
||||||
name = "Dinnerware"
|
name = "Dinnerware"
|
||||||
|
|||||||
@@ -84,9 +84,6 @@
|
|||||||
if(M.see_invisible < patient.invisibility)
|
if(M.see_invisible < patient.invisibility)
|
||||||
continue
|
continue
|
||||||
var/foundVirus = 0
|
var/foundVirus = 0
|
||||||
for(var/datum/disease/D in patient.viruses)
|
|
||||||
if(!D.hidden[SCANNER])
|
|
||||||
foundVirus++
|
|
||||||
|
|
||||||
for (var/ID in patient.virus2)
|
for (var/ID in patient.virus2)
|
||||||
if (ID in virusDB)
|
if (ID in virusDB)
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ var/global/list/image/splatter_cache=list()
|
|||||||
icon_state = "mfloor1"
|
icon_state = "mfloor1"
|
||||||
random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7")
|
random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7")
|
||||||
var/base_icon = 'icons/effects/blood.dmi'
|
var/base_icon = 'icons/effects/blood.dmi'
|
||||||
var/list/viruses = list()
|
|
||||||
blood_DNA = list()
|
blood_DNA = list()
|
||||||
var/basecolor="#A10808" // Color when wet.
|
var/basecolor="#A10808" // Color when wet.
|
||||||
var/list/datum/disease2/disease/virus2 = list()
|
var/list/datum/disease2/disease/virus2 = list()
|
||||||
@@ -37,8 +36,6 @@ var/global/list/image/splatter_cache=list()
|
|||||||
..(ignore=1)
|
..(ignore=1)
|
||||||
|
|
||||||
/obj/effect/decal/cleanable/blood/Destroy()
|
/obj/effect/decal/cleanable/blood/Destroy()
|
||||||
for(var/datum/disease/D in viruses)
|
|
||||||
D.cure(0)
|
|
||||||
processing_objects -= src
|
processing_objects -= src
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
@@ -227,10 +224,6 @@ var/global/list/image/splatter_cache=list()
|
|||||||
var/obj/effect/decal/cleanable/blood/b = PoolOrNew(/obj/effect/decal/cleanable/blood/splatter, src.loc)
|
var/obj/effect/decal/cleanable/blood/b = PoolOrNew(/obj/effect/decal/cleanable/blood/splatter, src.loc)
|
||||||
b.basecolor = src.basecolor
|
b.basecolor = src.basecolor
|
||||||
b.update_icon()
|
b.update_icon()
|
||||||
for(var/datum/disease/D in src.viruses)
|
|
||||||
var/datum/disease/ND = D.Copy(1)
|
|
||||||
b.viruses += ND
|
|
||||||
ND.holder = b
|
|
||||||
|
|
||||||
if (step_to(src, get_step(src, direction), 0))
|
if (step_to(src, get_step(src, direction), 0))
|
||||||
break
|
break
|
||||||
|
|||||||
@@ -100,12 +100,6 @@
|
|||||||
icon = 'icons/effects/blood.dmi'
|
icon = 'icons/effects/blood.dmi'
|
||||||
icon_state = "vomit_1"
|
icon_state = "vomit_1"
|
||||||
random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
|
random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
|
||||||
var/list/viruses = list()
|
|
||||||
|
|
||||||
/obj/effect/decal/cleanable/vomit/Destroy()
|
|
||||||
for(var/datum/disease/D in viruses)
|
|
||||||
D.cure(0)
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
/obj/effect/decal/cleanable/tomato_smudge
|
/obj/effect/decal/cleanable/tomato_smudge
|
||||||
name = "tomato smudge"
|
name = "tomato smudge"
|
||||||
|
|||||||
@@ -1,31 +1,27 @@
|
|||||||
/proc/gibs(atom/location, var/list/viruses, var/datum/dna/MobDNA, gibber_type = /obj/effect/gibspawner/generic, var/fleshcolor, var/bloodcolor)
|
/proc/gibs(atom/location, var/datum/dna/MobDNA, gibber_type = /obj/effect/gibspawner/generic, var/fleshcolor, var/bloodcolor)
|
||||||
new gibber_type(location,viruses,MobDNA,fleshcolor,bloodcolor)
|
new gibber_type(location,MobDNA,fleshcolor,bloodcolor)
|
||||||
|
|
||||||
/obj/effect/gibspawner
|
/obj/effect/gibspawner
|
||||||
var/sparks = 0 //whether sparks spread on Gib()
|
var/sparks = 0 //whether sparks spread on Gib()
|
||||||
var/virusProb = 20 //the chance for viruses to spread on the gibs
|
|
||||||
var/list/gibtypes = list()
|
var/list/gibtypes = list()
|
||||||
var/list/gibamounts = list()
|
var/list/gibamounts = list()
|
||||||
var/list/gibdirections = list() //of lists
|
var/list/gibdirections = list() //of lists
|
||||||
var/fleshcolor //Used for gibbed humans.
|
var/fleshcolor //Used for gibbed humans.
|
||||||
var/bloodcolor //Used for gibbed humans.
|
var/bloodcolor //Used for gibbed humans.
|
||||||
|
|
||||||
New(location, var/list/viruses, var/datum/dna/MobDNA, var/fleshcolor, var/bloodcolor)
|
New(location, var/datum/dna/MobDNA, var/fleshcolor, var/bloodcolor)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
if(fleshcolor) src.fleshcolor = fleshcolor
|
if(fleshcolor) src.fleshcolor = fleshcolor
|
||||||
if(bloodcolor) src.bloodcolor = bloodcolor
|
if(bloodcolor) src.bloodcolor = bloodcolor
|
||||||
Gib(loc,viruses,MobDNA)
|
Gib(loc,MobDNA)
|
||||||
|
|
||||||
proc/Gib(atom/location, var/list/viruses = list(), var/datum/dna/MobDNA = null)
|
proc/Gib(atom/location, var/datum/dna/MobDNA = null)
|
||||||
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
|
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
|
||||||
world << "<span class='warning'>Gib list length mismatch!</span>"
|
world << "<span class='warning'>Gib list length mismatch!</span>"
|
||||||
return
|
return
|
||||||
|
|
||||||
var/obj/effect/decal/cleanable/blood/gibs/gib = null
|
var/obj/effect/decal/cleanable/blood/gibs/gib = null
|
||||||
for(var/datum/disease/D in viruses)
|
|
||||||
if(D.spread_type == SPECIAL)
|
|
||||||
qdel(D)
|
|
||||||
|
|
||||||
if(sparks)
|
if(sparks)
|
||||||
var/datum/effect/effect/system/spark_spread/s = PoolOrNew(/datum/effect/effect/system/spark_spread)
|
var/datum/effect/effect/system/spark_spread/s = PoolOrNew(/datum/effect/effect/system/spark_spread)
|
||||||
@@ -46,13 +42,6 @@
|
|||||||
|
|
||||||
gib.update_icon()
|
gib.update_icon()
|
||||||
|
|
||||||
if(viruses.len > 0)
|
|
||||||
for(var/datum/disease/D in viruses)
|
|
||||||
if(prob(virusProb))
|
|
||||||
var/datum/disease/viruus = D.Copy(1)
|
|
||||||
gib.viruses += viruus
|
|
||||||
viruus.holder = gib
|
|
||||||
|
|
||||||
gib.blood_DNA = list()
|
gib.blood_DNA = list()
|
||||||
if(MobDNA)
|
if(MobDNA)
|
||||||
gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.b_type
|
gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.b_type
|
||||||
|
|||||||
@@ -1246,10 +1246,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
else
|
else
|
||||||
user.show_message("<span class='notice'> Limbs are OK.</span>",1)
|
user.show_message("<span class='notice'> Limbs are OK.</span>",1)
|
||||||
|
|
||||||
for(var/datum/disease/D in C.viruses)
|
|
||||||
if(!D.hidden[SCANNER])
|
|
||||||
user.show_message("<span class='warning'><b>Warning: [D.form] Detected</b>\nName: [D.name].\nType: [D.spread].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure]</span>")
|
|
||||||
|
|
||||||
if(2)
|
if(2)
|
||||||
if (!istype(C:dna, /datum/dna))
|
if (!istype(C:dna, /datum/dna))
|
||||||
user << "<span class='notice'>No fingerprints found on [C]</span>"
|
user << "<span class='notice'>No fingerprints found on [C]</span>"
|
||||||
|
|||||||
@@ -123,9 +123,6 @@ REAGENT SCANNER
|
|||||||
// user.show_message(text("<span class='warning'>Warning: Unknown pathogen detected in subject's blood.</span>"))
|
// user.show_message(text("<span class='warning'>Warning: Unknown pathogen detected in subject's blood.</span>"))
|
||||||
if (M.getCloneLoss())
|
if (M.getCloneLoss())
|
||||||
user.show_message("<span class='warning'>Subject appears to have been imperfectly cloned.</span>")
|
user.show_message("<span class='warning'>Subject appears to have been imperfectly cloned.</span>")
|
||||||
for(var/datum/disease/D in M.viruses)
|
|
||||||
if(!D.hidden[SCANNER])
|
|
||||||
user.show_message(text("<span class='danger'>Warning: [D.form] Detected</span><span class='warning'>\nName: [D.name].\nType: [D.spread].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure]</span>"))
|
|
||||||
// if (M.reagents && M.reagents.get_reagent_amount("inaprovaline"))
|
// if (M.reagents && M.reagents.get_reagent_amount("inaprovaline"))
|
||||||
// user.show_message("<span class='notice'>Bloodstream Analysis located [M.reagents:get_reagent_amount("inaprovaline")] units of rejuvenation chemicals.</span>")
|
// user.show_message("<span class='notice'>Bloodstream Analysis located [M.reagents:get_reagent_amount("inaprovaline")] units of rejuvenation chemicals.</span>")
|
||||||
if (M.has_brain_worms())
|
if (M.has_brain_worms())
|
||||||
|
|||||||
@@ -21,11 +21,6 @@
|
|||||||
name = T_BOARD("medical records console")
|
name = T_BOARD("medical records console")
|
||||||
build_path = /obj/machinery/computer/med_data
|
build_path = /obj/machinery/computer/med_data
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/pandemic
|
|
||||||
name = T_BOARD("PanD.E.M.I.C. 2200")
|
|
||||||
build_path = /obj/machinery/computer/pandemic
|
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_BIO = 2)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/scan_consolenew
|
/obj/item/weapon/circuitboard/scan_consolenew
|
||||||
name = T_BOARD("DNA machine")
|
name = T_BOARD("DNA machine")
|
||||||
build_path = /obj/machinery/computer/scan_consolenew
|
build_path = /obj/machinery/computer/scan_consolenew
|
||||||
|
|||||||
@@ -605,22 +605,6 @@ var/list/admin_verbs_mentor = list(
|
|||||||
message_admins("\blue [ckey] creating an admin explosion at [epicenter.loc].")
|
message_admins("\blue [ckey] creating an admin explosion at [epicenter.loc].")
|
||||||
feedback_add_details("admin_verb","DB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","DB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
/client/proc/give_disease(mob/T as mob in mob_list) // -- Giacom
|
|
||||||
set category = "Fun"
|
|
||||||
set name = "Give Disease (old)"
|
|
||||||
set desc = "Gives a (tg-style) Disease to a mob."
|
|
||||||
var/list/disease_names = list()
|
|
||||||
for(var/v in diseases)
|
|
||||||
// "/datum/disease/" 15 symbols ~Intercross
|
|
||||||
disease_names.Add(copytext("[v]", 16, 0))
|
|
||||||
var/datum/disease/D = input("Choose the disease to give to that guy", "ACHOO") as null|anything in disease_names
|
|
||||||
if(!D) return
|
|
||||||
var/path = text2path("/datum/disease/[D]")
|
|
||||||
T.contract_disease(new path, 1)
|
|
||||||
feedback_add_details("admin_verb","GD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
|
||||||
log_admin("[key_name(usr)] gave [key_name(T)] the disease [D].")
|
|
||||||
message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] the disease [D].", 1)
|
|
||||||
|
|
||||||
/client/proc/give_disease2(mob/T as mob in mob_list) // -- Giacom
|
/client/proc/give_disease2(mob/T as mob in mob_list) // -- Giacom
|
||||||
set category = "Fun"
|
set category = "Fun"
|
||||||
set name = "Give Disease"
|
set name = "Give Disease"
|
||||||
|
|||||||
@@ -627,7 +627,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
|||||||
message_admins("[key_name_admin(usr)] has gibbed [key_name_admin(M)]", 1)
|
message_admins("[key_name_admin(usr)] has gibbed [key_name_admin(M)]", 1)
|
||||||
|
|
||||||
if(istype(M, /mob/dead/observer))
|
if(istype(M, /mob/dead/observer))
|
||||||
gibs(M.loc, M.viruses)
|
gibs(M.loc)
|
||||||
return
|
return
|
||||||
|
|
||||||
M.gib()
|
M.gib()
|
||||||
|
|||||||
@@ -74,17 +74,6 @@
|
|||||||
src.give_spell(M)
|
src.give_spell(M)
|
||||||
href_list["datumrefresh"] = href_list["give_spell"]
|
href_list["datumrefresh"] = href_list["give_spell"]
|
||||||
|
|
||||||
else if(href_list["give_disease"])
|
|
||||||
if(!check_rights(R_ADMIN|R_FUN)) return
|
|
||||||
|
|
||||||
var/mob/M = locate(href_list["give_disease"])
|
|
||||||
if(!istype(M))
|
|
||||||
usr << "This can only be used on instances of type /mob"
|
|
||||||
return
|
|
||||||
|
|
||||||
src.give_disease(M)
|
|
||||||
href_list["datumrefresh"] = href_list["give_spell"]
|
|
||||||
|
|
||||||
else if(href_list["give_disease2"])
|
else if(href_list["give_disease2"])
|
||||||
if(!check_rights(R_ADMIN|R_FUN)) return
|
if(!check_rights(R_ADMIN|R_FUN)) return
|
||||||
|
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
/datum/event/disease_outbreak
|
|
||||||
announceWhen = 15
|
|
||||||
|
|
||||||
|
|
||||||
/datum/event/disease_outbreak/announce()
|
|
||||||
command_announcement.Announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", new_sound = 'sound/AI/outbreak7.ogg')
|
|
||||||
|
|
||||||
/datum/event/disease_outbreak/setup()
|
|
||||||
announceWhen = rand(15, 30)
|
|
||||||
|
|
||||||
/datum/event/disease_outbreak/start()
|
|
||||||
var/virus_type = pick(/datum/disease/dnaspread, /datum/disease/advance/flu, /datum/disease/advance/cold, /datum/disease/brainrot, /datum/disease/magnitis)
|
|
||||||
|
|
||||||
for(var/mob/living/carbon/human/H in shuffle(living_mob_list))
|
|
||||||
var/foundAlready = 0 // don't infect someone that already has the virus
|
|
||||||
var/turf/T = get_turf(H)
|
|
||||||
if(!T)
|
|
||||||
continue
|
|
||||||
if(isNotStationLevel(T.z))
|
|
||||||
continue
|
|
||||||
for(var/datum/disease/D in H.viruses)
|
|
||||||
foundAlready = 1
|
|
||||||
if(H.stat == 2 || foundAlready)
|
|
||||||
continue
|
|
||||||
|
|
||||||
if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work.
|
|
||||||
if((!H.dna) || (H.sdisabilities & BLIND)) //A blindness disease would be the worst.
|
|
||||||
continue
|
|
||||||
var/datum/disease/dnaspread/D = new
|
|
||||||
D.strain_data["name"] = H.real_name
|
|
||||||
D.strain_data["UI"] = H.dna.UI.Copy()
|
|
||||||
D.strain_data["SE"] = H.dna.SE.Copy()
|
|
||||||
D.carrier = 1
|
|
||||||
D.holder = H
|
|
||||||
D.affected_mob = H
|
|
||||||
H.viruses += D
|
|
||||||
break
|
|
||||||
else
|
|
||||||
var/datum/disease/D = new virus_type
|
|
||||||
D.carrier = 1
|
|
||||||
D.holder = H
|
|
||||||
D.affected_mob = H
|
|
||||||
H.viruses += D
|
|
||||||
break
|
|
||||||
@@ -1,13 +1,4 @@
|
|||||||
/datum/event/spontaneous_appendicitis/start()
|
/datum/event/spontaneous_appendicitis/start()
|
||||||
for(var/mob/living/carbon/human/H in shuffle(living_mob_list)) if(H.client && H.stat != DEAD)
|
for(var/mob/living/carbon/human/H in shuffle(living_mob_list))
|
||||||
var/foundAlready = 0 //don't infect someone that already has the virus
|
if(H.client && H.appendicitis())
|
||||||
for(var/datum/disease/D in H.viruses)
|
|
||||||
foundAlready = 1
|
|
||||||
if(H.stat == 2 || foundAlready)
|
|
||||||
continue
|
|
||||||
|
|
||||||
var/datum/disease/D = new /datum/disease/appendicitis
|
|
||||||
D.holder = H
|
|
||||||
D.affected_mob = H
|
|
||||||
H.viruses += D
|
|
||||||
break
|
break
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
animation.master = src
|
animation.master = src
|
||||||
|
|
||||||
flick(anim, animation)
|
flick(anim, animation)
|
||||||
if(do_gibs) gibs(loc, viruses, dna)
|
if(do_gibs) gibs(loc, dna)
|
||||||
|
|
||||||
spawn(15)
|
spawn(15)
|
||||||
if(animation) qdel(animation)
|
if(animation) qdel(animation)
|
||||||
|
|||||||
@@ -287,10 +287,6 @@
|
|||||||
if((H.getToxLoss() >= heal_threshold) && (!H.reagents.has_reagent(treatment_tox)))
|
if((H.getToxLoss() >= heal_threshold) && (!H.reagents.has_reagent(treatment_tox)))
|
||||||
return treatment_tox
|
return treatment_tox
|
||||||
|
|
||||||
for(var/datum/disease/D in H.viruses)
|
|
||||||
if (!H.reagents.has_reagent(treatment_virus))
|
|
||||||
return treatment_virus // STOP DISEASE FOREVER
|
|
||||||
|
|
||||||
/* Construction */
|
/* Construction */
|
||||||
|
|
||||||
/obj/item/weapon/storage/firstaid/attackby(var/obj/item/robot_parts/S, mob/user as mob)
|
/obj/item/weapon/storage/firstaid/attackby(var/obj/item/robot_parts/S, mob/user as mob)
|
||||||
|
|||||||
@@ -93,18 +93,6 @@
|
|||||||
H << "\red You can't use your [temp.name]"
|
H << "\red You can't use your [temp.name]"
|
||||||
return
|
return
|
||||||
|
|
||||||
for(var/datum/disease/D in viruses)
|
|
||||||
|
|
||||||
if(D.spread_by_touch())
|
|
||||||
|
|
||||||
M.contract_disease(D, 0, 1, CONTACT_HANDS)
|
|
||||||
|
|
||||||
for(var/datum/disease/D in M.viruses)
|
|
||||||
|
|
||||||
if(D.spread_by_touch())
|
|
||||||
|
|
||||||
contract_disease(D, 0, 1, CONTACT_HANDS)
|
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null)
|
/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null)
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
I.throw_at(get_edge_target_turf(src,pick(alldirs)), rand(1,3), round(30/I.w_class))
|
I.throw_at(get_edge_target_turf(src,pick(alldirs)), rand(1,3), round(30/I.w_class))
|
||||||
|
|
||||||
..(species.gibbed_anim)
|
..(species.gibbed_anim)
|
||||||
gibs(loc, viruses, dna, null, species.get_flesh_colour(src), species.get_blood_colour(src))
|
gibs(loc, dna, null, species.get_flesh_colour(src), species.get_blood_colour(src))
|
||||||
|
|
||||||
/mob/living/carbon/human/dust()
|
/mob/living/carbon/human/dust()
|
||||||
if(species)
|
if(species)
|
||||||
|
|||||||
@@ -909,9 +909,6 @@
|
|||||||
H.brainmob.mind.transfer_to(src)
|
H.brainmob.mind.transfer_to(src)
|
||||||
qdel(H)
|
qdel(H)
|
||||||
|
|
||||||
for (var/datum/disease/virus in viruses)
|
|
||||||
virus.cure()
|
|
||||||
|
|
||||||
for (var/ID in virus2)
|
for (var/ID in virus2)
|
||||||
var/datum/disease2/disease/V = virus2[ID]
|
var/datum/disease2/disease/V = virus2[ID]
|
||||||
V.cure(src)
|
V.cure(src)
|
||||||
|
|||||||
@@ -1628,9 +1628,6 @@
|
|||||||
|
|
||||||
if (BITTEST(hud_updateflag, STATUS_HUD))
|
if (BITTEST(hud_updateflag, STATUS_HUD))
|
||||||
var/foundVirus = 0
|
var/foundVirus = 0
|
||||||
for(var/datum/disease/D in viruses)
|
|
||||||
if(!D.hidden[SCANNER])
|
|
||||||
foundVirus++
|
|
||||||
for (var/ID in virus2)
|
for (var/ID in virus2)
|
||||||
if (ID in virusDB)
|
if (ID in virusDB)
|
||||||
foundVirus = 1
|
foundVirus = 1
|
||||||
|
|||||||
@@ -161,7 +161,6 @@ var/const/MAX_ACTIVE_TIME = 400
|
|||||||
return
|
return
|
||||||
|
|
||||||
if(!sterile)
|
if(!sterile)
|
||||||
//target.contract_disease(new /datum/disease/alien_embryo(0)) //so infection chance is same as virus infection chance
|
|
||||||
new /obj/item/alien_embryo(target)
|
new /obj/item/alien_embryo(target)
|
||||||
target.status_flags |= XENO_HOST
|
target.status_flags |= XENO_HOST
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
if(status_flags & GODMODE) return 0 //godmode
|
if(status_flags & GODMODE) return 0 //godmode
|
||||||
|
|
||||||
if(bodytemperature > 406)
|
if(bodytemperature > 406)
|
||||||
for(var/datum/disease/D in viruses)
|
|
||||||
D.cure()
|
|
||||||
for (var/ID in virus2)
|
for (var/ID in virus2)
|
||||||
var/datum/disease2/disease/V = virus2[ID]
|
var/datum/disease2/disease/V = virus2[ID]
|
||||||
V.cure(src)
|
V.cure(src)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/mob/living/silicon/gib()
|
/mob/living/silicon/gib()
|
||||||
..("gibbed-r")
|
..("gibbed-r")
|
||||||
gibs(loc, viruses, null, /obj/effect/gibspawner/robot)
|
gibs(loc, null, /obj/effect/gibspawner/robot)
|
||||||
|
|
||||||
/mob/living/silicon/dust()
|
/mob/living/silicon/dust()
|
||||||
..("dust-r", /obj/effect/decal/remains/robot)
|
..("dust-r", /obj/effect/decal/remains/robot)
|
||||||
|
|||||||
@@ -204,7 +204,7 @@
|
|||||||
held_item.loc = src.loc
|
held_item.loc = src.loc
|
||||||
held_item = null
|
held_item = null
|
||||||
|
|
||||||
gibs(loc, viruses, null, null, /obj/effect/gibspawner/robot) //TODO: use gib() or refactor spiderbots into synthetics.
|
gibs(loc, null, null, /obj/effect/gibspawner/robot) //TODO: use gib() or refactor spiderbots into synthetics.
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -13,8 +13,6 @@
|
|||||||
client.screen = list()
|
client.screen = list()
|
||||||
if(mind && mind.current == src)
|
if(mind && mind.current == src)
|
||||||
spellremove(src)
|
spellremove(src)
|
||||||
for(var/infection in viruses)
|
|
||||||
qdel(infection)
|
|
||||||
ghostize()
|
ghostize()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
|||||||
@@ -1,199 +0,0 @@
|
|||||||
//Methods that need to be cleaned.
|
|
||||||
/* INFORMATION
|
|
||||||
Put (mob/proc)s here that are in dire need of a code cleanup.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/mob/proc/has_disease(var/datum/disease/virus)
|
|
||||||
for(var/datum/disease/D in viruses)
|
|
||||||
if(D.IsSame(virus))
|
|
||||||
//error("[D.name]/[D.type] is the same as [virus.name]/[virus.type]")
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
// This proc has some procs that should be extracted from it. I believe we can develop some helper procs from it - Rockdtben
|
|
||||||
/mob/proc/contract_disease(var/datum/disease/virus, var/skip_this = 0, var/force_species_check=1, var/spread_type = -5)
|
|
||||||
//world << "Contract_disease called by [src] with virus [virus]"
|
|
||||||
if(stat >=2)
|
|
||||||
//world << "He's dead jim."
|
|
||||||
return
|
|
||||||
if(istype(virus, /datum/disease/advance))
|
|
||||||
//world << "It's an advance virus."
|
|
||||||
var/datum/disease/advance/A = virus
|
|
||||||
if(A.GetDiseaseID() in resistances)
|
|
||||||
//world << "It resisted us!"
|
|
||||||
return
|
|
||||||
if(count_by_type(viruses, /datum/disease/advance) >= 3)
|
|
||||||
return
|
|
||||||
|
|
||||||
else
|
|
||||||
if(src.resistances.Find(virus.type))
|
|
||||||
//world << "Normal virus and resisted"
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
if(has_disease(virus))
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
if(force_species_check)
|
|
||||||
var/fail = 1
|
|
||||||
for(var/name in virus.affected_species)
|
|
||||||
var/mob_type = text2path("/mob/living/carbon/[lowertext(name)]")
|
|
||||||
if(mob_type && istype(src, mob_type))
|
|
||||||
fail = 0
|
|
||||||
break
|
|
||||||
if(fail) return
|
|
||||||
|
|
||||||
if(skip_this == 1)
|
|
||||||
//world << "infectin"
|
|
||||||
//if(src.virus) < -- this used to replace the current disease. Not anymore!
|
|
||||||
//src.virus.cure(0)
|
|
||||||
var/datum/disease/v = new virus.type(1, virus, 0)
|
|
||||||
src.viruses += v
|
|
||||||
v.affected_mob = src
|
|
||||||
v.strain_data = v.strain_data.Copy()
|
|
||||||
v.holder = src
|
|
||||||
if(v.can_carry && prob(5))
|
|
||||||
v.carrier = 1
|
|
||||||
return
|
|
||||||
//world << "Not skipping."
|
|
||||||
//if(src.virus) //
|
|
||||||
//return //
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
var/list/clothing_areas = list()
|
|
||||||
var/list/covers = list(UPPER_TORSO,LOWER_TORSO,LEGS,FEET,ARMS,HANDS)
|
|
||||||
for(var/Covers in covers)
|
|
||||||
clothing_areas[Covers] = list()
|
|
||||||
|
|
||||||
for(var/obj/item/clothing/Clothing in src)
|
|
||||||
if(Clothing)
|
|
||||||
for(var/Covers in covers)
|
|
||||||
if(Clothing&Covers)
|
|
||||||
clothing_areas[Covers] += Clothing
|
|
||||||
|
|
||||||
*/
|
|
||||||
if(prob(15/virus.permeability_mod)) return //the power of immunity compels this disease! but then you forgot resistances
|
|
||||||
//world << "past prob()"
|
|
||||||
var/obj/item/clothing/Cl = null
|
|
||||||
var/passed = 1
|
|
||||||
|
|
||||||
//chances to target this zone
|
|
||||||
var/head_ch
|
|
||||||
var/body_ch
|
|
||||||
var/hands_ch
|
|
||||||
var/feet_ch
|
|
||||||
|
|
||||||
if(spread_type == -5)
|
|
||||||
spread_type = virus.spread_type
|
|
||||||
|
|
||||||
switch(spread_type)
|
|
||||||
if(CONTACT_HANDS)
|
|
||||||
head_ch = 0
|
|
||||||
body_ch = 0
|
|
||||||
hands_ch = 100
|
|
||||||
feet_ch = 0
|
|
||||||
if(CONTACT_FEET)
|
|
||||||
head_ch = 0
|
|
||||||
body_ch = 0
|
|
||||||
hands_ch = 0
|
|
||||||
feet_ch = 100
|
|
||||||
else
|
|
||||||
head_ch = 100
|
|
||||||
body_ch = 100
|
|
||||||
hands_ch = 25
|
|
||||||
feet_ch = 25
|
|
||||||
|
|
||||||
|
|
||||||
var/target_zone = pick(head_ch;1,body_ch;2,hands_ch;3,feet_ch;4)//1 - head, 2 - body, 3 - hands, 4- feet
|
|
||||||
|
|
||||||
if(istype(src, /mob/living/carbon/human))
|
|
||||||
var/mob/living/carbon/human/H = src
|
|
||||||
|
|
||||||
switch(target_zone)
|
|
||||||
if(1)
|
|
||||||
if(isobj(H.head) && !istype(H.head, /obj/item/weapon/paper))
|
|
||||||
Cl = H.head
|
|
||||||
passed = prob((Cl.permeability_coefficient*100) - 1)
|
|
||||||
if(passed && isobj(H.wear_mask))
|
|
||||||
Cl = H.wear_mask
|
|
||||||
passed = prob((Cl.permeability_coefficient*100) - 1)
|
|
||||||
if(2)//arms and legs included
|
|
||||||
if(isobj(H.wear_suit))
|
|
||||||
Cl = H.wear_suit
|
|
||||||
passed = prob((Cl.permeability_coefficient*100) - 1)
|
|
||||||
if(passed && isobj(slot_w_uniform))
|
|
||||||
Cl = slot_w_uniform
|
|
||||||
passed = prob((Cl.permeability_coefficient*100) - 1)
|
|
||||||
if(3)
|
|
||||||
if(isobj(H.wear_suit) && H.wear_suit.body_parts_covered&HANDS)
|
|
||||||
Cl = H.wear_suit
|
|
||||||
passed = prob((Cl.permeability_coefficient*100) - 1)
|
|
||||||
|
|
||||||
if(passed && isobj(H.gloves))
|
|
||||||
Cl = H.gloves
|
|
||||||
passed = prob((Cl.permeability_coefficient*100) - 1)
|
|
||||||
if(4)
|
|
||||||
if(isobj(H.wear_suit) && H.wear_suit.body_parts_covered&FEET)
|
|
||||||
Cl = H.wear_suit
|
|
||||||
passed = prob((Cl.permeability_coefficient*100) - 1)
|
|
||||||
|
|
||||||
if(passed && isobj(H.shoes))
|
|
||||||
Cl = H.shoes
|
|
||||||
passed = prob((Cl.permeability_coefficient*100) - 1)
|
|
||||||
else
|
|
||||||
src << "Something strange's going on, something's wrong."
|
|
||||||
|
|
||||||
/*if("feet")
|
|
||||||
if(H.shoes && istype(H.shoes, /obj/item/clothing/))
|
|
||||||
Cl = H.shoes
|
|
||||||
passed = prob(Cl.permeability_coefficient*100)
|
|
||||||
//
|
|
||||||
world << "Shoes pass [passed]"
|
|
||||||
*/ //
|
|
||||||
|
|
||||||
if(!passed && spread_type == AIRBORNE && !internals)
|
|
||||||
passed = (prob((50*virus.permeability_mod) - 1))
|
|
||||||
|
|
||||||
if(passed)
|
|
||||||
//world << "Infection in the mob [src]. YAY"
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
var/score = 0
|
|
||||||
if(istype(src, /mob/living/carbon/human))
|
|
||||||
if(src:gloves) score += 5
|
|
||||||
if(istype(src:wear_suit, /obj/item/clothing/suit/space)) score += 10
|
|
||||||
if(istype(src:wear_suit, /obj/item/clothing/suit/bio_suit)) score += 10
|
|
||||||
if(istype(src:head, /obj/item/clothing/head/helmet/space)) score += 5
|
|
||||||
if(istype(src:head, /obj/item/clothing/head/bio_hood)) score += 5
|
|
||||||
if(wear_mask)
|
|
||||||
score += 5
|
|
||||||
if((istype(src:wear_mask, /obj/item/clothing/mask) || istype(src:wear_mask, /obj/item/clothing/mask/surgical)) && !internal)
|
|
||||||
score += 5
|
|
||||||
if(internal)
|
|
||||||
score += 5
|
|
||||||
if(score > 20)
|
|
||||||
return
|
|
||||||
else if(score == 20 && prob(95))
|
|
||||||
return
|
|
||||||
else if(score >= 15 && prob(75))
|
|
||||||
return
|
|
||||||
else if(score >= 10 && prob(55))
|
|
||||||
return
|
|
||||||
else if(score >= 5 && prob(35))
|
|
||||||
return
|
|
||||||
else if(prob(15))
|
|
||||||
return
|
|
||||||
else*/
|
|
||||||
|
|
||||||
var/datum/disease/v = new virus.type(1, virus, 0)
|
|
||||||
src.viruses += v
|
|
||||||
v.affected_mob = src
|
|
||||||
v.strain_data = v.strain_data.Copy()
|
|
||||||
v.holder = src
|
|
||||||
if(v.can_carry && prob(5))
|
|
||||||
v.carrier = 1
|
|
||||||
return
|
|
||||||
return
|
|
||||||
@@ -185,14 +185,6 @@
|
|||||||
//Changlings, but can be used in other modes
|
//Changlings, but can be used in other modes
|
||||||
// var/obj/effect/proc_holder/changpower/list/power_list = list()
|
// var/obj/effect/proc_holder/changpower/list/power_list = list()
|
||||||
|
|
||||||
//List of active diseases
|
|
||||||
|
|
||||||
var/list/viruses = list() // replaces var/datum/disease/virus
|
|
||||||
|
|
||||||
//Monkey/infected mode
|
|
||||||
var/list/resistances = list()
|
|
||||||
var/datum/disease/virus = null
|
|
||||||
|
|
||||||
mouse_drag_pointer = MOUSE_ACTIVE_POINTER
|
mouse_drag_pointer = MOUSE_ACTIVE_POINTER
|
||||||
|
|
||||||
var/update_icon = 1 //Set to 1 to trigger update_icons() at the next life() call
|
var/update_icon = 1 //Set to 1 to trigger update_icons() at the next life() call
|
||||||
|
|||||||
@@ -165,11 +165,6 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
|||||||
B.data["virus2"] |= virus_copylist(src.virus2)
|
B.data["virus2"] |= virus_copylist(src.virus2)
|
||||||
B.data["antibodies"] = src.antibodies
|
B.data["antibodies"] = src.antibodies
|
||||||
B.data["blood_DNA"] = copytext(src.dna.unique_enzymes,1,0)
|
B.data["blood_DNA"] = copytext(src.dna.unique_enzymes,1,0)
|
||||||
if(src.resistances && src.resistances.len)
|
|
||||||
if(B.data["resistances"])
|
|
||||||
B.data["resistances"] |= src.resistances.Copy()
|
|
||||||
else
|
|
||||||
B.data["resistances"] = src.resistances.Copy()
|
|
||||||
B.data["blood_type"] = copytext(src.dna.b_type,1,0)
|
B.data["blood_type"] = copytext(src.dna.b_type,1,0)
|
||||||
|
|
||||||
// Putting this here due to return shenanigans.
|
// Putting this here due to return shenanigans.
|
||||||
|
|||||||
@@ -205,14 +205,50 @@
|
|||||||
icon_state = "appendix"
|
icon_state = "appendix"
|
||||||
parent_organ = BP_GROIN
|
parent_organ = BP_GROIN
|
||||||
organ_tag = "appendix"
|
organ_tag = "appendix"
|
||||||
|
var/inflamed = 0
|
||||||
|
var/inflame_progress = 0
|
||||||
|
|
||||||
|
/mob/living/carbon/human/proc/appendicitis()
|
||||||
|
if(stat == DEAD)
|
||||||
|
return 0
|
||||||
|
var/obj/item/organ/internal/appendix/A = internal_organs_by_name[O_APPENDIX]
|
||||||
|
if(istype(A) && !A.inflamed)
|
||||||
|
A.inflamed = 1
|
||||||
|
return 1
|
||||||
|
return 0
|
||||||
|
|
||||||
|
/obj/item/organ/internal/appendix/process()
|
||||||
|
if(!inflamed || !owner)
|
||||||
|
return
|
||||||
|
|
||||||
|
if(++inflame_progress > 200)
|
||||||
|
++inflamed
|
||||||
|
inflame_progress = 0
|
||||||
|
|
||||||
|
if(inflamed == 1)
|
||||||
|
if(prob(5))
|
||||||
|
owner << "<span class='warning'>You feel a stinging pain in your abdomen!</span>"
|
||||||
|
owner.emote("me", 1, "winces slightly.")
|
||||||
|
if(inflamed > 1)
|
||||||
|
if(prob(3))
|
||||||
|
owner << "<span class='warning'>You feel a stabbing pain in your abdomen!</span>"
|
||||||
|
owner.emote("me", 1, "winces painfully.")
|
||||||
|
owner.adjustToxLoss(1)
|
||||||
|
if(inflamed > 2)
|
||||||
|
if(prob(1))
|
||||||
|
owner.vomit()
|
||||||
|
if(inflamed > 3)
|
||||||
|
if(prob(1))
|
||||||
|
owner << "<span class='danger'>Your abdomen is a world of pain!</span>"
|
||||||
|
owner.Weaken(10)
|
||||||
|
|
||||||
|
var/obj/item/organ/external/groin = owner.get_organ(BP_GROIN)
|
||||||
|
var/datum/wound/W = new /datum/wound/internal_bleeding(20)
|
||||||
|
owner.adjustToxLoss(25)
|
||||||
|
groin.wounds += W
|
||||||
|
inflamed = 0
|
||||||
|
|
||||||
/obj/item/organ/internal/appendix/removed()
|
/obj/item/organ/internal/appendix/removed()
|
||||||
if(owner)
|
|
||||||
var/inflamed = 0
|
|
||||||
for(var/datum/disease/appendicitis/appendicitis in owner.viruses)
|
|
||||||
inflamed = 1
|
|
||||||
appendicitis.cure()
|
|
||||||
owner.resistances += appendicitis
|
|
||||||
if(inflamed)
|
if(inflamed)
|
||||||
icon_state = "appendixinflamed"
|
icon_state = "appendixinflamed"
|
||||||
name = "inflamed appendix"
|
name = "inflamed appendix"
|
||||||
|
|||||||
@@ -303,258 +303,6 @@
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
/obj/machinery/computer/pandemic
|
|
||||||
name = "PanD.E.M.I.C 2200"
|
|
||||||
density = 1
|
|
||||||
anchored = 1
|
|
||||||
icon = 'icons/obj/chemical.dmi'
|
|
||||||
icon_state = "mixer0"
|
|
||||||
circuit = /obj/item/weapon/circuitboard/pandemic
|
|
||||||
//use_power = 1
|
|
||||||
//idle_power_usage = 20 //defaults make more sense.
|
|
||||||
var/temphtml = ""
|
|
||||||
var/wait = null
|
|
||||||
var/obj/item/weapon/reagent_containers/glass/beaker = null
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/pandemic/set_broken()
|
|
||||||
icon_state = (src.beaker?"mixer1_b":"mixer0_b")
|
|
||||||
stat |= BROKEN
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/pandemic/power_change()
|
|
||||||
..()
|
|
||||||
if(stat & BROKEN)
|
|
||||||
icon_state = (src.beaker?"mixer1_b":"mixer0_b")
|
|
||||||
|
|
||||||
else if(!(stat & NOPOWER))
|
|
||||||
icon_state = (src.beaker?"mixer1":"mixer0")
|
|
||||||
|
|
||||||
else
|
|
||||||
spawn(rand(0, 15))
|
|
||||||
src.icon_state = (src.beaker?"mixer1_nopower":"mixer0_nopower")
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/pandemic/Topic(href, href_list)
|
|
||||||
if(stat & (NOPOWER|BROKEN)) return
|
|
||||||
if(usr.stat || usr.restrained()) return
|
|
||||||
if(!in_range(src, usr)) return
|
|
||||||
|
|
||||||
usr.set_machine(src)
|
|
||||||
if(!beaker) return
|
|
||||||
|
|
||||||
if (href_list["create_vaccine"])
|
|
||||||
if(!src.wait)
|
|
||||||
var/obj/item/weapon/reagent_containers/glass/bottle/B = new/obj/item/weapon/reagent_containers/glass/bottle(src.loc)
|
|
||||||
if(B)
|
|
||||||
var/path = href_list["create_vaccine"]
|
|
||||||
var/vaccine_type = text2path(path)
|
|
||||||
var/datum/disease/D = null
|
|
||||||
|
|
||||||
if(!vaccine_type)
|
|
||||||
D = archive_diseases[path]
|
|
||||||
vaccine_type = path
|
|
||||||
else
|
|
||||||
if(vaccine_type in diseases)
|
|
||||||
D = new vaccine_type(0, null)
|
|
||||||
|
|
||||||
if(D)
|
|
||||||
B.name = "[D.name] vaccine bottle"
|
|
||||||
B.reagents.add_reagent("vaccine",15,vaccine_type)
|
|
||||||
wait = 1
|
|
||||||
var/datum/reagents/R = beaker.reagents
|
|
||||||
var/datum/reagent/blood/Blood = null
|
|
||||||
for(var/datum/reagent/blood/L in R.reagent_list)
|
|
||||||
if(L)
|
|
||||||
Blood = L
|
|
||||||
break
|
|
||||||
var/list/res = Blood.data["resistances"]
|
|
||||||
spawn(res.len*200)
|
|
||||||
src.wait = null
|
|
||||||
else
|
|
||||||
src.temphtml = "The replicator is not ready yet."
|
|
||||||
src.updateUsrDialog()
|
|
||||||
return
|
|
||||||
else if (href_list["create_virus_culture"])
|
|
||||||
if(!wait)
|
|
||||||
var/obj/item/weapon/reagent_containers/glass/bottle/B = new/obj/item/weapon/reagent_containers/glass/bottle(src.loc)
|
|
||||||
B.icon_state = "bottle-1"
|
|
||||||
var/type = text2path(href_list["create_virus_culture"])//the path is received as string - converting
|
|
||||||
var/datum/disease/D = null
|
|
||||||
if(!type)
|
|
||||||
var/datum/disease/advance/A = archive_diseases[href_list["create_virus_culture"]]
|
|
||||||
if(A)
|
|
||||||
D = new A.type(0, A)
|
|
||||||
else
|
|
||||||
if(type in diseases) // Make sure this is a disease
|
|
||||||
D = new type(0, null)
|
|
||||||
var/list/data = list("viruses"=list(D))
|
|
||||||
var/name = sanitizeSafe(input(usr,"Name:","Name the culture",D.name), MAX_NAME_LEN)
|
|
||||||
if(!name || name == " ") name = D.name
|
|
||||||
B.name = "[name] culture bottle"
|
|
||||||
B.desc = "A small bottle. Contains [D.agent] culture in synthblood medium."
|
|
||||||
B.reagents.add_reagent("blood",20,data)
|
|
||||||
B.update_icon()
|
|
||||||
src.updateUsrDialog()
|
|
||||||
wait = 1
|
|
||||||
spawn(1000)
|
|
||||||
src.wait = null
|
|
||||||
else
|
|
||||||
src.temphtml = "The replicator is not ready yet."
|
|
||||||
src.updateUsrDialog()
|
|
||||||
return
|
|
||||||
else if (href_list["empty_beaker"])
|
|
||||||
beaker.reagents.clear_reagents()
|
|
||||||
src.updateUsrDialog()
|
|
||||||
return
|
|
||||||
else if (href_list["eject"])
|
|
||||||
beaker:loc = src.loc
|
|
||||||
beaker = null
|
|
||||||
icon_state = "mixer0"
|
|
||||||
src.updateUsrDialog()
|
|
||||||
return
|
|
||||||
else if(href_list["clear"])
|
|
||||||
src.temphtml = ""
|
|
||||||
src.updateUsrDialog()
|
|
||||||
return
|
|
||||||
else if(href_list["name_disease"])
|
|
||||||
var/new_name = sanitizeSafe(input(usr, "Name the Disease", "New Name", ""), MAX_NAME_LEN)
|
|
||||||
if(stat & (NOPOWER|BROKEN)) return
|
|
||||||
if(usr.stat || usr.restrained()) return
|
|
||||||
if(!in_range(src, usr)) return
|
|
||||||
var/id = href_list["name_disease"]
|
|
||||||
if(archive_diseases[id])
|
|
||||||
var/datum/disease/advance/A = archive_diseases[id]
|
|
||||||
A.AssignName(new_name)
|
|
||||||
for(var/datum/disease/advance/AD in active_diseases)
|
|
||||||
AD.Refresh()
|
|
||||||
src.updateUsrDialog()
|
|
||||||
|
|
||||||
|
|
||||||
else
|
|
||||||
usr << browse(null, "window=pandemic")
|
|
||||||
src.updateUsrDialog()
|
|
||||||
return
|
|
||||||
|
|
||||||
src.add_fingerprint(usr)
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/pandemic/attack_ai(mob/user as mob)
|
|
||||||
return src.attack_hand(user)
|
|
||||||
|
|
||||||
/obj/machinery/computer/pandemic/attack_hand(mob/user as mob)
|
|
||||||
if(stat & (NOPOWER|BROKEN))
|
|
||||||
return
|
|
||||||
user.set_machine(src)
|
|
||||||
var/dat = ""
|
|
||||||
if(src.temphtml)
|
|
||||||
dat = "[src.temphtml]<BR><BR><A href='?src=\ref[src];clear=1'>Main Menu</A>"
|
|
||||||
else if(!beaker)
|
|
||||||
dat += "Please insert beaker.<BR>"
|
|
||||||
dat += "<A href='?src=\ref[user];mach_close=pandemic'>Close</A>"
|
|
||||||
else
|
|
||||||
var/datum/reagents/R = beaker.reagents
|
|
||||||
var/datum/reagent/blood/Blood = null
|
|
||||||
for(var/datum/reagent/blood/B in R.reagent_list)
|
|
||||||
if(B)
|
|
||||||
Blood = B
|
|
||||||
break
|
|
||||||
if(!R.total_volume||!R.reagent_list.len)
|
|
||||||
dat += "The beaker is empty<BR>"
|
|
||||||
else if(!Blood)
|
|
||||||
dat += "No blood sample found in beaker"
|
|
||||||
else if(!Blood.data)
|
|
||||||
dat += "No blood data found in beaker."
|
|
||||||
else
|
|
||||||
dat += "<h3>Blood sample data:</h3>"
|
|
||||||
dat += "<b>Blood DNA:</b> [(Blood.data["blood_DNA"]||"none")]<BR>"
|
|
||||||
dat += "<b>Blood Type:</b> [(Blood.data["blood_type"]||"none")]<BR>"
|
|
||||||
|
|
||||||
|
|
||||||
if(Blood.data["viruses"])
|
|
||||||
var/list/vir = Blood.data["viruses"]
|
|
||||||
if(vir.len)
|
|
||||||
for(var/datum/disease/D in Blood.data["viruses"])
|
|
||||||
if(!D.hidden[PANDEMIC])
|
|
||||||
|
|
||||||
|
|
||||||
var/disease_creation = D.type
|
|
||||||
if(istype(D, /datum/disease/advance))
|
|
||||||
|
|
||||||
var/datum/disease/advance/A = D
|
|
||||||
D = archive_diseases[A.GetDiseaseID()]
|
|
||||||
disease_creation = A.GetDiseaseID()
|
|
||||||
if(D.name == "Unknown")
|
|
||||||
dat += "<b><a href='?src=\ref[src];name_disease=[A.GetDiseaseID()]'>Name Disease</a></b><BR>"
|
|
||||||
|
|
||||||
if(!D)
|
|
||||||
CRASH("We weren't able to get the advance disease from the archive.")
|
|
||||||
|
|
||||||
dat += "<b>Disease Agent:</b> [D?"[D.agent] - <A href='?src=\ref[src];create_virus_culture=[disease_creation]'>Create virus culture bottle</A>":"none"]<BR>"
|
|
||||||
dat += "<b>Common name:</b> [(D.name||"none")]<BR>"
|
|
||||||
dat += "<b>Description: </b> [(D.desc||"none")]<BR>"
|
|
||||||
dat += "<b>Spread:</b> [(D.spread||"none")]<BR>"
|
|
||||||
dat += "<b>Possible cure:</b> [(D.cure||"none")]<BR><BR>"
|
|
||||||
|
|
||||||
if(istype(D, /datum/disease/advance))
|
|
||||||
var/datum/disease/advance/A = D
|
|
||||||
dat += "<b>Symptoms:</b> "
|
|
||||||
var/english_symptoms = list()
|
|
||||||
for(var/datum/symptom/S in A.symptoms)
|
|
||||||
english_symptoms += S.name
|
|
||||||
dat += english_list(english_symptoms)
|
|
||||||
|
|
||||||
|
|
||||||
dat += "<BR><b>Contains antibodies to:</b> "
|
|
||||||
if(Blood.data["resistances"])
|
|
||||||
var/list/res = Blood.data["resistances"]
|
|
||||||
if(res.len)
|
|
||||||
dat += "<ul>"
|
|
||||||
for(var/type in Blood.data["resistances"])
|
|
||||||
var/disease_name = "Unknown"
|
|
||||||
|
|
||||||
if(!ispath(type))
|
|
||||||
var/datum/disease/advance/A = archive_diseases[type]
|
|
||||||
if(A)
|
|
||||||
disease_name = A.name
|
|
||||||
else
|
|
||||||
var/datum/disease/D = new type(0, null)
|
|
||||||
disease_name = D.name
|
|
||||||
|
|
||||||
dat += "<li>[disease_name] - <A href='?src=\ref[src];create_vaccine=[type]'>Create vaccine bottle</A></li>"
|
|
||||||
dat += "</ul><BR>"
|
|
||||||
else
|
|
||||||
dat += "nothing<BR>"
|
|
||||||
else
|
|
||||||
dat += "nothing<BR>"
|
|
||||||
dat += "<BR><A href='?src=\ref[src];eject=1'>Eject beaker</A>[((R.total_volume&&R.reagent_list.len) ? "-- <A href='?src=\ref[src];empty_beaker=1'>Empty beaker</A>":"")]<BR>"
|
|
||||||
dat += "<A href='?src=\ref[user];mach_close=pandemic'>Close</A>"
|
|
||||||
|
|
||||||
user << browse("<TITLE>[src.name]</TITLE><BR>[dat]", "window=pandemic;size=575x400")
|
|
||||||
onclose(user, "pandemic")
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/pandemic/attackby(var/obj/I as obj, var/mob/user as mob)
|
|
||||||
if(istype(I, /obj/item/weapon/reagent_containers/glass))
|
|
||||||
if(stat & (NOPOWER|BROKEN)) return
|
|
||||||
if(src.beaker)
|
|
||||||
user << "A beaker is already loaded into the machine."
|
|
||||||
return
|
|
||||||
|
|
||||||
src.beaker = I
|
|
||||||
user.drop_item()
|
|
||||||
I.loc = src
|
|
||||||
user << "You add the beaker to the machine!"
|
|
||||||
src.updateUsrDialog()
|
|
||||||
icon_state = "mixer1"
|
|
||||||
|
|
||||||
else
|
|
||||||
..()
|
|
||||||
return
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
|
||||||
/obj/machinery/reagentgrinder
|
/obj/machinery/reagentgrinder
|
||||||
|
|
||||||
name = "All-In-One Grinder"
|
name = "All-In-One Grinder"
|
||||||
|
|||||||
@@ -23,23 +23,6 @@
|
|||||||
t["virus2"] = v.Copy()
|
t["virus2"] = v.Copy()
|
||||||
return t
|
return t
|
||||||
|
|
||||||
/datum/reagent/blood/mix_data(var/newdata, var/newamount) // You have a reagent with data, and new reagent with its own data get added, how do you deal with that?
|
|
||||||
if(data["viruses"] || newdata["viruses"])
|
|
||||||
var/list/mix1 = data["viruses"]
|
|
||||||
var/list/mix2 = newdata["viruses"]
|
|
||||||
var/list/to_mix = list() // Stop issues with the list changing during mixing.
|
|
||||||
for(var/datum/disease/advance/AD in mix1)
|
|
||||||
to_mix += AD
|
|
||||||
for(var/datum/disease/advance/AD in mix2)
|
|
||||||
to_mix += AD
|
|
||||||
var/datum/disease/advance/AD = Advance_Mix(to_mix)
|
|
||||||
if(AD)
|
|
||||||
var/list/preserve = list(AD)
|
|
||||||
for(var/D in data["viruses"])
|
|
||||||
if(!istype(D, /datum/disease/advance))
|
|
||||||
preserve += D
|
|
||||||
data["viruses"] = preserve
|
|
||||||
|
|
||||||
/datum/reagent/blood/touch_turf(var/turf/simulated/T)
|
/datum/reagent/blood/touch_turf(var/turf/simulated/T)
|
||||||
if(!istype(T) || volume < 3)
|
if(!istype(T) || volume < 3)
|
||||||
return
|
return
|
||||||
@@ -55,12 +38,6 @@
|
|||||||
M.adjustToxLoss(removed)
|
M.adjustToxLoss(removed)
|
||||||
if(dose > 15)
|
if(dose > 15)
|
||||||
M.adjustToxLoss(removed)
|
M.adjustToxLoss(removed)
|
||||||
if(data && data["viruses"])
|
|
||||||
for(var/datum/disease/D in data["viruses"])
|
|
||||||
if(D.spread_type == SPECIAL || D.spread_type == NON_CONTAGIOUS)
|
|
||||||
continue
|
|
||||||
if(D.spread_type in list(CONTACT_FEET, CONTACT_HANDS, CONTACT_GENERAL))
|
|
||||||
M.contract_disease(D)
|
|
||||||
if(data && data["virus2"])
|
if(data && data["virus2"])
|
||||||
var/list/vlist = data["virus2"]
|
var/list/vlist = data["virus2"]
|
||||||
if(vlist.len)
|
if(vlist.len)
|
||||||
@@ -74,12 +51,6 @@
|
|||||||
var/mob/living/carbon/human/H = M
|
var/mob/living/carbon/human/H = M
|
||||||
if(H.isSynthetic())
|
if(H.isSynthetic())
|
||||||
return
|
return
|
||||||
if(data && data["viruses"])
|
|
||||||
for(var/datum/disease/D in data["viruses"])
|
|
||||||
if(D.spread_type == SPECIAL || D.spread_type == NON_CONTAGIOUS)
|
|
||||||
continue
|
|
||||||
if(D.spread_type in list(CONTACT_FEET, CONTACT_HANDS, CONTACT_GENERAL))
|
|
||||||
M.contract_disease(D)
|
|
||||||
if(data && data["virus2"])
|
if(data && data["virus2"])
|
||||||
var/list/vlist = data["virus2"]
|
var/list/vlist = data["virus2"]
|
||||||
if(vlist.len)
|
if(vlist.len)
|
||||||
@@ -94,26 +65,6 @@
|
|||||||
M.inject_blood(src, volume)
|
M.inject_blood(src, volume)
|
||||||
remove_self(volume)
|
remove_self(volume)
|
||||||
|
|
||||||
/datum/reagent/vaccine
|
|
||||||
name = "Vaccine"
|
|
||||||
id = "vaccine"
|
|
||||||
reagent_state = LIQUID
|
|
||||||
color = "#C81040"
|
|
||||||
|
|
||||||
/datum/reagent/vaccine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
||||||
if(data)
|
|
||||||
for(var/datum/disease/D in M.viruses)
|
|
||||||
if(istype(D, /datum/disease/advance))
|
|
||||||
var/datum/disease/advance/A = D
|
|
||||||
if(A.GetDiseaseID() == data)
|
|
||||||
D.cure()
|
|
||||||
else
|
|
||||||
if(D.type == data)
|
|
||||||
D.cure()
|
|
||||||
|
|
||||||
M.resistances += data
|
|
||||||
return
|
|
||||||
|
|
||||||
// pure concentrated antibodies
|
// pure concentrated antibodies
|
||||||
/datum/reagent/antibodies
|
/datum/reagent/antibodies
|
||||||
data = list("antibodies"=list())
|
data = list("antibodies"=list())
|
||||||
|
|||||||
@@ -141,11 +141,6 @@
|
|||||||
M.confused = 0
|
M.confused = 0
|
||||||
M.sleeping = 0
|
M.sleeping = 0
|
||||||
M.jitteriness = 0
|
M.jitteriness = 0
|
||||||
for(var/datum/disease/D in M.viruses)
|
|
||||||
D.spread = "Remissive"
|
|
||||||
D.stage--
|
|
||||||
if(D.stage < 1)
|
|
||||||
D.cure()
|
|
||||||
|
|
||||||
/datum/reagent/gold
|
/datum/reagent/gold
|
||||||
name = "Gold"
|
name = "Gold"
|
||||||
|
|||||||
@@ -500,31 +500,3 @@
|
|||||||
else
|
else
|
||||||
new_mob.key = M.key
|
new_mob.key = M.key
|
||||||
qdel(M)
|
qdel(M)
|
||||||
|
|
||||||
/datum/reagent/nanites
|
|
||||||
name = "Nanomachines"
|
|
||||||
id = "nanites"
|
|
||||||
description = "Microscopic construction robots."
|
|
||||||
reagent_state = LIQUID
|
|
||||||
color = "#535E66"
|
|
||||||
|
|
||||||
/datum/reagent/nanites/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
|
||||||
if(prob(10))
|
|
||||||
M.contract_disease(new /datum/disease/robotic_transformation(0), 1) //What
|
|
||||||
|
|
||||||
/datum/reagent/nanites/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
||||||
M.contract_disease(new /datum/disease/robotic_transformation(0), 1)
|
|
||||||
|
|
||||||
/datum/reagent/xenomicrobes
|
|
||||||
name = "Xenomicrobes"
|
|
||||||
id = "xenomicrobes"
|
|
||||||
description = "Microbes with an entirely alien cellular structure."
|
|
||||||
reagent_state = LIQUID
|
|
||||||
color = "#535E66"
|
|
||||||
|
|
||||||
/datum/reagent/xenomicrobes/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
|
||||||
if(prob(10))
|
|
||||||
M.contract_disease(new /datum/disease/xeno_transformation(0), 1)
|
|
||||||
|
|
||||||
/datum/reagent/xenomicrobes/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
||||||
M.contract_disease(new /datum/disease/xeno_transformation(0), 1)
|
|
||||||
|
|||||||
@@ -825,8 +825,6 @@
|
|||||||
New()
|
New()
|
||||||
..()
|
..()
|
||||||
reagents.add_reagent("nutriment", 2)
|
reagents.add_reagent("nutriment", 2)
|
||||||
if(prob(5))
|
|
||||||
reagents.add_reagent("nanites", 2)
|
|
||||||
bitesize = 2
|
bitesize = 2
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/roburgerbig
|
/obj/item/weapon/reagent_containers/food/snacks/roburgerbig
|
||||||
@@ -838,7 +836,6 @@
|
|||||||
|
|
||||||
New()
|
New()
|
||||||
..()
|
..()
|
||||||
reagents.add_reagent("nanites", 100)
|
|
||||||
bitesize = 0.1
|
bitesize = 0.1
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/xenoburger
|
/obj/item/weapon/reagent_containers/food/snacks/xenoburger
|
||||||
|
|||||||
@@ -30,7 +30,6 @@
|
|||||||
/obj/machinery/dna_scannernew,
|
/obj/machinery/dna_scannernew,
|
||||||
/obj/item/weapon/grenade/chem_grenade,
|
/obj/item/weapon/grenade/chem_grenade,
|
||||||
/mob/living/bot/medbot,
|
/mob/living/bot/medbot,
|
||||||
/obj/machinery/computer/pandemic,
|
|
||||||
/obj/item/weapon/storage/secure/safe,
|
/obj/item/weapon/storage/secure/safe,
|
||||||
/obj/machinery/iv_drip,
|
/obj/machinery/iv_drip,
|
||||||
/obj/machinery/disease2/incubator,
|
/obj/machinery/disease2/incubator,
|
||||||
|
|||||||
@@ -154,184 +154,6 @@
|
|||||||
reagents.add_reagent("diethylamine", 60)
|
reagents.add_reagent("diethylamine", 60)
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/glass/bottle/flu_virion
|
|
||||||
name = "Flu virion culture bottle"
|
|
||||||
desc = "A small bottle. Contains H13N1 flu virion culture in synthblood medium."
|
|
||||||
icon = 'icons/obj/chemical.dmi'
|
|
||||||
icon_state = "bottle-4"
|
|
||||||
New()
|
|
||||||
..()
|
|
||||||
var/datum/disease/F = new /datum/disease/advance/flu(0)
|
|
||||||
var/list/data = list("viruses"= list(F))
|
|
||||||
reagents.add_reagent("blood", 20, data)
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/glass/bottle/epiglottis_virion
|
|
||||||
name = "Epiglottis virion culture bottle"
|
|
||||||
desc = "A small bottle. Contains Epiglottis virion culture in synthblood medium."
|
|
||||||
icon = 'icons/obj/chemical.dmi'
|
|
||||||
icon_state = "bottle-4"
|
|
||||||
New()
|
|
||||||
..()
|
|
||||||
var/datum/disease/F = new /datum/disease/advance/voice_change(0)
|
|
||||||
var/list/data = list("viruses"= list(F))
|
|
||||||
reagents.add_reagent("blood", 20, data)
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/glass/bottle/liver_enhance_virion
|
|
||||||
name = "Liver enhancement virion culture bottle"
|
|
||||||
desc = "A small bottle. Contains liver enhancement virion culture in synthblood medium."
|
|
||||||
icon = 'icons/obj/chemical.dmi'
|
|
||||||
icon_state = "bottle-4"
|
|
||||||
New()
|
|
||||||
..()
|
|
||||||
var/datum/disease/F = new /datum/disease/advance/heal(0)
|
|
||||||
var/list/data = list("viruses"= list(F))
|
|
||||||
reagents.add_reagent("blood", 20, data)
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/glass/bottle/hullucigen_virion
|
|
||||||
name = "Hullucigen virion culture bottle"
|
|
||||||
desc = "A small bottle. Contains hullucigen virion culture in synthblood medium."
|
|
||||||
icon = 'icons/obj/chemical.dmi'
|
|
||||||
icon_state = "bottle-4"
|
|
||||||
New()
|
|
||||||
..()
|
|
||||||
var/datum/disease/F = new /datum/disease/advance/hullucigen(0)
|
|
||||||
var/list/data = list("viruses"= list(F))
|
|
||||||
reagents.add_reagent("blood", 20, data)
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/glass/bottle/pierrot_throat
|
|
||||||
name = "Pierrot's Throat culture bottle"
|
|
||||||
desc = "A small bottle. Contains H0NI<42 virion culture in synthblood medium."
|
|
||||||
icon = 'icons/obj/chemical.dmi'
|
|
||||||
icon_state = "bottle-4"
|
|
||||||
New()
|
|
||||||
..()
|
|
||||||
var/datum/disease/F = new /datum/disease/pierrot_throat(0)
|
|
||||||
var/list/data = list("viruses"= list(F))
|
|
||||||
reagents.add_reagent("blood", 20, data)
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/glass/bottle/cold
|
|
||||||
name = "Rhinovirus culture bottle"
|
|
||||||
desc = "A small bottle. Contains XY-rhinovirus culture in synthblood medium."
|
|
||||||
icon = 'icons/obj/chemical.dmi'
|
|
||||||
icon_state = "bottle-4"
|
|
||||||
New()
|
|
||||||
..()
|
|
||||||
var/datum/disease/advance/F = new /datum/disease/advance/cold(0)
|
|
||||||
var/list/data = list("viruses"= list(F))
|
|
||||||
reagents.add_reagent("blood", 20, data)
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/glass/bottle/random
|
|
||||||
name = "Random culture bottle"
|
|
||||||
desc = "A small bottle. Contains a random disease."
|
|
||||||
icon = 'icons/obj/chemical.dmi'
|
|
||||||
icon_state = "bottle-4"
|
|
||||||
New()
|
|
||||||
..()
|
|
||||||
var/datum/disease/advance/F = new(0)
|
|
||||||
var/list/data = list("viruses"= list(F))
|
|
||||||
reagents.add_reagent("blood", 20, data)
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/glass/bottle/retrovirus
|
|
||||||
name = "Retrovirus culture bottle"
|
|
||||||
desc = "A small bottle. Contains a retrovirus culture in a synthblood medium."
|
|
||||||
icon = 'icons/obj/chemical.dmi'
|
|
||||||
icon_state = "bottle-4"
|
|
||||||
New()
|
|
||||||
..()
|
|
||||||
var/datum/disease/F = new /datum/disease/dna_retrovirus(0)
|
|
||||||
var/list/data = list("viruses"= list(F))
|
|
||||||
reagents.add_reagent("blood", 20, data)
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/glass/bottle/gbs
|
|
||||||
name = "GBS culture bottle"
|
|
||||||
desc = "A small bottle. Contains Gravitokinetic Bipotential SADS+ culture in synthblood medium."//Or simply - General BullShit
|
|
||||||
icon = 'icons/obj/chemical.dmi'
|
|
||||||
icon_state = "bottle-4"
|
|
||||||
amount_per_transfer_from_this = 5
|
|
||||||
|
|
||||||
New()
|
|
||||||
var/datum/reagents/R = new/datum/reagents(20)
|
|
||||||
reagents = R
|
|
||||||
R.my_atom = src
|
|
||||||
var/datum/disease/F = new /datum/disease/gbs
|
|
||||||
var/list/data = list("virus"= F)
|
|
||||||
R.add_reagent("blood", 20, data)
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/glass/bottle/fake_gbs
|
|
||||||
name = "GBS culture bottle"
|
|
||||||
desc = "A small bottle. Contains Gravitokinetic Bipotential SADS- culture in synthblood medium."//Or simply - General BullShit
|
|
||||||
icon = 'icons/obj/chemical.dmi'
|
|
||||||
icon_state = "bottle-4"
|
|
||||||
New()
|
|
||||||
..()
|
|
||||||
var/datum/disease/F = new /datum/disease/fake_gbs(0)
|
|
||||||
var/list/data = list("viruses"= list(F))
|
|
||||||
reagents.add_reagent("blood", 20, data)
|
|
||||||
update_icon()
|
|
||||||
/*
|
|
||||||
/obj/item/weapon/reagent_containers/glass/bottle/rhumba_beat
|
|
||||||
name = "Rhumba Beat culture bottle"
|
|
||||||
desc = "A small bottle. Contains The Rhumba Beat culture in synthblood medium."//Or simply - General BullShit
|
|
||||||
icon = 'icons/obj/chemical.dmi'
|
|
||||||
icon_state = "bottle-4"
|
|
||||||
amount_per_transfer_from_this = 5
|
|
||||||
|
|
||||||
New()
|
|
||||||
var/datum/reagents/R = new/datum/reagents(20)
|
|
||||||
reagents = R
|
|
||||||
R.my_atom = src
|
|
||||||
var/datum/disease/F = new /datum/disease/rhumba_beat
|
|
||||||
var/list/data = list("virus"= F)
|
|
||||||
R.add_reagent("blood", 20, data)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/glass/bottle/brainrot
|
|
||||||
name = "Brainrot culture bottle"
|
|
||||||
desc = "A small bottle. Contains Cryptococcus Cosmosis culture in synthblood medium."
|
|
||||||
icon = 'icons/obj/chemical.dmi'
|
|
||||||
icon_state = "bottle-4"
|
|
||||||
New()
|
|
||||||
..()
|
|
||||||
var/datum/disease/F = new /datum/disease/brainrot(0)
|
|
||||||
var/list/data = list("viruses"= list(F))
|
|
||||||
reagents.add_reagent("blood", 20, data)
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/glass/bottle/magnitis
|
|
||||||
name = "Magnitis culture bottle"
|
|
||||||
desc = "A small bottle. Contains a small dosage of Fukkos Miracos."
|
|
||||||
icon = 'icons/obj/chemical.dmi'
|
|
||||||
icon_state = "bottle-4"
|
|
||||||
New()
|
|
||||||
..()
|
|
||||||
var/datum/disease/F = new /datum/disease/magnitis(0)
|
|
||||||
var/list/data = list("viruses"= list(F))
|
|
||||||
reagents.add_reagent("blood", 20, data)
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/glass/bottle/wizarditis
|
|
||||||
name = "Wizarditis culture bottle"
|
|
||||||
desc = "A small bottle. Contains a sample of Rincewindus Vulgaris."
|
|
||||||
icon = 'icons/obj/chemical.dmi'
|
|
||||||
icon_state = "bottle-4"
|
|
||||||
New()
|
|
||||||
..()
|
|
||||||
var/datum/disease/F = new /datum/disease/wizarditis(0)
|
|
||||||
var/list/data = list("viruses"= list(F))
|
|
||||||
reagents.add_reagent("blood", 20, data)
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/glass/bottle/pacid
|
/obj/item/weapon/reagent_containers/glass/bottle/pacid
|
||||||
name = "Polytrinic Acid Bottle"
|
name = "Polytrinic Acid Bottle"
|
||||||
desc = "A small bottle. Contains a small amount of Polytrinic Acid"
|
desc = "A small bottle. Contains a small amount of Polytrinic Acid"
|
||||||
|
|||||||
@@ -779,12 +779,6 @@ CIRCUITS BELOW
|
|||||||
build_path = /obj/item/weapon/circuitboard/operating
|
build_path = /obj/item/weapon/circuitboard/operating
|
||||||
sort_string = "FACAA"
|
sort_string = "FACAA"
|
||||||
|
|
||||||
/datum/design/circuit/pandemic
|
|
||||||
name = "PanD.E.M.I.C. 2200"
|
|
||||||
id = "pandemic"
|
|
||||||
build_path = /obj/item/weapon/circuitboard/pandemic
|
|
||||||
sort_string = "FAEAA"
|
|
||||||
|
|
||||||
/datum/design/circuit/scan_console
|
/datum/design/circuit/scan_console
|
||||||
name = "DNA machine"
|
name = "DNA machine"
|
||||||
id = "scan_console"
|
id = "scan_console"
|
||||||
|
|||||||
@@ -5998,7 +5998,7 @@
|
|||||||
"clr" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor,/area/storage/tech)
|
"clr" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor,/area/storage/tech)
|
||||||
"cls" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/cloning{pixel_x = 0},/obj/item/weapon/circuitboard/clonescanner,/obj/item/weapon/circuitboard/clonepod,/obj/item/weapon/circuitboard/scan_consolenew,/obj/item/weapon/circuitboard/med_data{pixel_x = 3; pixel_y = -3},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/storage/tech)
|
"cls" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/cloning{pixel_x = 0},/obj/item/weapon/circuitboard/clonescanner,/obj/item/weapon/circuitboard/clonepod,/obj/item/weapon/circuitboard/scan_consolenew,/obj/item/weapon/circuitboard/med_data{pixel_x = 3; pixel_y = -3},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/storage/tech)
|
||||||
"clt" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/storage/tech)
|
"clt" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/storage/tech)
|
||||||
"clu" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/pandemic{pixel_x = -3; pixel_y = 3},/obj/item/weapon/circuitboard/rdconsole,/obj/item/weapon/circuitboard/destructive_analyzer,/obj/item/weapon/circuitboard/protolathe,/obj/item/weapon/circuitboard/rdserver{pixel_x = 3; pixel_y = -3},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/tech)
|
"clu" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/rdconsole,/obj/item/weapon/circuitboard/destructive_analyzer,/obj/item/weapon/circuitboard/protolathe,/obj/item/weapon/circuitboard/rdserver{pixel_x = 3; pixel_y = -3},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/tech)
|
||||||
"clv" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/storage/tech)
|
"clv" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/storage/tech)
|
||||||
"clw" = (/obj/machinery/requests_console{department = "Tech storage"; pixel_x = 28; pixel_y = 0},/turf/simulated/floor,/area/storage/tech)
|
"clw" = (/obj/machinery/requests_console{department = "Tech storage"; pixel_x = 28; pixel_y = 0},/turf/simulated/floor,/area/storage/tech)
|
||||||
"clx" = (/obj/structure/bed/chair,/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_four)
|
"clx" = (/obj/structure/bed/chair,/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_four)
|
||||||
|
|||||||
38
polaris.dme
38
polaris.dme
@@ -150,7 +150,6 @@
|
|||||||
#include "code\datums\computerfiles.dm"
|
#include "code\datums\computerfiles.dm"
|
||||||
#include "code\datums\crew.dm"
|
#include "code\datums\crew.dm"
|
||||||
#include "code\datums\datacore.dm"
|
#include "code\datums\datacore.dm"
|
||||||
#include "code\datums\disease.dm"
|
|
||||||
#include "code\datums\EPv2.dm"
|
#include "code\datums\EPv2.dm"
|
||||||
#include "code\datums\mind.dm"
|
#include "code\datums\mind.dm"
|
||||||
#include "code\datums\mixed.dm"
|
#include "code\datums\mixed.dm"
|
||||||
@@ -159,42 +158,6 @@
|
|||||||
#include "code\datums\recipe.dm"
|
#include "code\datums\recipe.dm"
|
||||||
#include "code\datums\sun.dm"
|
#include "code\datums\sun.dm"
|
||||||
#include "code\datums\supplypacks.dm"
|
#include "code\datums\supplypacks.dm"
|
||||||
#include "code\datums\diseases\appendicitis.dm"
|
|
||||||
#include "code\datums\diseases\beesease.dm"
|
|
||||||
#include "code\datums\diseases\brainrot.dm"
|
|
||||||
#include "code\datums\diseases\cold.dm"
|
|
||||||
#include "code\datums\diseases\cold9.dm"
|
|
||||||
#include "code\datums\diseases\dna_spread.dm"
|
|
||||||
#include "code\datums\diseases\fake_gbs.dm"
|
|
||||||
#include "code\datums\diseases\flu.dm"
|
|
||||||
#include "code\datums\diseases\fluspanish.dm"
|
|
||||||
#include "code\datums\diseases\gbs.dm"
|
|
||||||
#include "code\datums\diseases\jungle_fever.dm"
|
|
||||||
#include "code\datums\diseases\magnitis.dm"
|
|
||||||
#include "code\datums\diseases\pierrot_throat.dm"
|
|
||||||
#include "code\datums\diseases\plasmatoid.dm"
|
|
||||||
#include "code\datums\diseases\retrovirus.dm"
|
|
||||||
#include "code\datums\diseases\rhumba_beat.dm"
|
|
||||||
#include "code\datums\diseases\robotic_transformation.dm"
|
|
||||||
#include "code\datums\diseases\wizarditis.dm"
|
|
||||||
#include "code\datums\diseases\xeno_transformation.dm"
|
|
||||||
#include "code\datums\diseases\advance\advance.dm"
|
|
||||||
#include "code\datums\diseases\advance\presets.dm"
|
|
||||||
#include "code\datums\diseases\advance\symptoms\confusion.dm"
|
|
||||||
#include "code\datums\diseases\advance\symptoms\cough.dm"
|
|
||||||
#include "code\datums\diseases\advance\symptoms\damage_converter.dm"
|
|
||||||
#include "code\datums\diseases\advance\symptoms\dizzy.dm"
|
|
||||||
#include "code\datums\diseases\advance\symptoms\fever.dm"
|
|
||||||
#include "code\datums\diseases\advance\symptoms\hallucigen.dm"
|
|
||||||
#include "code\datums\diseases\advance\symptoms\headache.dm"
|
|
||||||
#include "code\datums\diseases\advance\symptoms\heal.dm"
|
|
||||||
#include "code\datums\diseases\advance\symptoms\itching.dm"
|
|
||||||
#include "code\datums\diseases\advance\symptoms\shivering.dm"
|
|
||||||
#include "code\datums\diseases\advance\symptoms\sneeze.dm"
|
|
||||||
#include "code\datums\diseases\advance\symptoms\symptoms.dm"
|
|
||||||
#include "code\datums\diseases\advance\symptoms\voice_change.dm"
|
|
||||||
#include "code\datums\diseases\advance\symptoms\vomit.dm"
|
|
||||||
#include "code\datums\diseases\advance\symptoms\weight.dm"
|
|
||||||
#include "code\datums\helper_datums\construction_datum.dm"
|
#include "code\datums\helper_datums\construction_datum.dm"
|
||||||
#include "code\datums\helper_datums\events.dm"
|
#include "code\datums\helper_datums\events.dm"
|
||||||
#include "code\datums\helper_datums\getrev.dm"
|
#include "code\datums\helper_datums\getrev.dm"
|
||||||
@@ -1254,7 +1217,6 @@
|
|||||||
#include "code\modules\mob\login.dm"
|
#include "code\modules\mob\login.dm"
|
||||||
#include "code\modules\mob\logout.dm"
|
#include "code\modules\mob\logout.dm"
|
||||||
#include "code\modules\mob\mob.dm"
|
#include "code\modules\mob\mob.dm"
|
||||||
#include "code\modules\mob\mob_cleanup.dm"
|
|
||||||
#include "code\modules\mob\mob_defines.dm"
|
#include "code\modules\mob\mob_defines.dm"
|
||||||
#include "code\modules\mob\mob_grab.dm"
|
#include "code\modules\mob\mob_grab.dm"
|
||||||
#include "code\modules\mob\mob_grab_specials.dm"
|
#include "code\modules\mob\mob_grab_specials.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user