From 2cefee12823ece3b5c96b5b92c725f20cff5461a Mon Sep 17 00:00:00 2001 From: "giacomand@gmail.com" Date: Wed, 31 Oct 2012 18:04:04 +0000 Subject: [PATCH] -Added advance diseases! Virology can create and mutate advance with different symptoms and effects. Read my comments if you're interested in each symptom. This isn't done, I still need to add more symptoms and a way for virology to identify and name them. -Metroids will die in space again. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4987 316c924e-a436-60f5-8080-3fe189b3f50e --- code/__HELPERS/type2type.dm | 23 ++ code/datums/disease.dm | 44 ++- code/datums/diseases/advance/advance.dm | 309 ++++++++++++++++++ code/datums/diseases/advance/cold.dm | 4 + code/datums/diseases/advance/flu.dm | 4 + .../diseases/advance/symptoms/confusion.dm | 35 ++ .../datums/diseases/advance/symptoms/cough.dm | 34 ++ .../advance/symptoms/damage_converter.dm | 40 +++ .../datums/diseases/advance/symptoms/dizzy.dm | 34 ++ .../diseases/advance/symptoms/headache.dm | 30 ++ .../diseases/advance/symptoms/sneeze.dm | 35 ++ .../diseases/advance/symptoms/symptoms.dm | 29 ++ .../datums/diseases/advance/symptoms/vomit.dm | 89 +++++ code/datums/diseases/alien_embryo.dm | 2 +- code/datums/sun.dm | 21 -- code/game/machinery/kitchen/processor.dm | 2 +- .../modules/mob/living/carbon/metroid/life.dm | 6 +- code/modules/mob/mob_cleanup.dm | 25 +- code/modules/reagents/Chemistry-Holder.dm | 22 +- code/modules/reagents/Chemistry-Reagents.dm | 8 +- code/modules/reagents/Chemistry-Recipes.dm | 30 ++ .../reagent_containers/glass/bottle.dm | 15 +- .../reagents/reagent_containers/syringes.dm | 2 +- html/changelog.html | 8 + tgstation.dme | 294 +++++++++++++++++ 25 files changed, 1075 insertions(+), 70 deletions(-) create mode 100644 code/datums/diseases/advance/advance.dm create mode 100644 code/datums/diseases/advance/cold.dm create mode 100644 code/datums/diseases/advance/flu.dm create mode 100644 code/datums/diseases/advance/symptoms/confusion.dm create mode 100644 code/datums/diseases/advance/symptoms/cough.dm create mode 100644 code/datums/diseases/advance/symptoms/damage_converter.dm create mode 100644 code/datums/diseases/advance/symptoms/dizzy.dm create mode 100644 code/datums/diseases/advance/symptoms/headache.dm create mode 100644 code/datums/diseases/advance/symptoms/sneeze.dm create mode 100644 code/datums/diseases/advance/symptoms/symptoms.dm create mode 100644 code/datums/diseases/advance/symptoms/vomit.dm diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 10ba3344163..6e9b9912215 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -220,6 +220,29 @@ proc/tg_list2text(list/list, glue=",") if(degree < 315) return WEST return NORTH|WEST +//returns the north-zero clockwise angle in degrees, given a direction + +/proc/dir2angle(var/D) + switch(D) + if(1) + return 0 + if(2) + return 180 + if(4) + return 90 + if(8) + return 270 + if(5) + return 45 + if(6) + return 135 + if(9) + return 315 + if(10) + return 225 + else + return null + //Returns the angle in english /proc/angle2text(var/degree) return dir2text(angle2dir(degree)) diff --git a/code/datums/disease.dm b/code/datums/disease.dm index 918bdb535ff..e8a74e99900 100644 --- a/code/datums/disease.dm +++ b/code/datums/disease.dm @@ -1,10 +1,10 @@ -#define NON_CONTAGIOUS -1 -#define SPECIAL 0 -#define CONTACT_GENERAL 1 -#define CONTACT_HANDS 2 -#define CONTACT_FEET 3 -#define AIRBORNE 4 -#define BLOOD 5 +#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 @@ -17,7 +17,7 @@ to null does not delete the object itself. Thank you. */ -var/list/diseases = typesof(/datum/disease) - /datum/disease +var/list/diseases = typesof(/datum/disease) - /datum/disease - /datum/disease/advance /datum/disease @@ -94,10 +94,15 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease return result -/datum/disease/proc/spread(var/atom/source=null) +/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(spread_type == SPECIAL || spread_type == NON_CONTAGIOUS)//does not spread + // 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)//does not spread return if(stage < contagious_period) //the disease is not contagious at this stage @@ -110,26 +115,28 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease return - var/check_range = AIRBORNE//defaults to airborne - range 4 + var/check_range = airborne_range//defaults to airborne - range 2 - if(spread_type != AIRBORNE && spread_type != SPECIAL) + if(how_spread != AIRBORNE && how_spread != SPECIAL) check_range = 0 // everything else, like infect-on-contact things, only infect things on top of it - for(var/mob/living/carbon/M in oview(check_range, source)) //I have no idea why oview works when oviewers doesn't. -Pete + for(var/mob/living/carbon/M in oview(check_range, source)) M.contract_disease(src) return /datum/disease/proc/process() - if(!holder) return + 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(istype(src, D.type)) + if(IsSame(D)) del(D) // if there are somehow two viruses of the same kind in the system, delete the other one if(holder == affected_mob) @@ -159,11 +166,16 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease return -/datum/disease/New(var/process=1)//process = 1 - adding the object to global list. List is processed by master controller. +/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 +/datum/disease/proc/IsSame(var/datum/disease/D) + if(istype(src, D.type)) + return 1 + return 0 + /* /datum/disease/Del() active_diseases.Remove(src) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm new file mode 100644 index 00000000000..4c40a49db7d --- /dev/null +++ b/code/datums/diseases/advance/advance.dm @@ -0,0 +1,309 @@ +/* + + 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 + +/* + + 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 + + + // NEW VARS + + var/alpha_level = 0 // To determine if the advanced disease will overwrite another advance disease. + var/list/symptoms = list() // The symptoms of the disease. + +/* + + OLD PROCS + + */ + +/datum/disease/advance/New(var/process = 1, var/datum/disease/advance/D) + 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 + symptoms = D.symptoms + Refresh() // Refresh our properties and cure. + ..(process, D) + return + +// Randomly pick a symptom to activate. +/datum/disease/advance/stage_act() + ..() + if(symptoms && symptoms.len) + 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] = /datum/disease/advance + affected_mob.viruses -= src //remove the datum from the list + del(src) //delete the datum to stop it processing + return + + +/* + + 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) + +// 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) && !(S in symptoms)) + possible_symptoms += S + + // Random chance to get more than one symptom + var/number_of = amount_get + if(!amount_get) + number_of = 1 + while(prob(10)) + number_of += 1 + + for(var/i = 0; number_of >= i; i++) + var/datum/symptom/S = pick(possible_symptoms) + generated += S + possible_symptoms -= S + + return generated + +/datum/disease/advance/proc/Refresh() + //world << "[src.name] \ref[src] - REFRESH!" + var/list/properties = GenerateProperties() + AssignProperties(properties) + +//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" = 0, "stealth" = 0, "stage_rate" = 0, "tansmittable" = 0, "severity" = 0) + + for(var/datum/symptom/S in symptoms) + + properties["resistance"] += S.resistance + properties["stealth"] += S.stealth + properties["stage_rate"] += S.stage_speed + properties["tansmittable"] += 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(max(BLOOD, min(properties["tansmittable"] - symptoms.len, AIRBORNE))) + permeability_mod = 0.5 * properties["transmittable"] + stage_prob = max(properties["stage_rate"], 1) + SetSeverity(properties["severity"]) + GenerateCure(properties) + + +// Assign the spread type and give it the correct description. +/datum/disease/advance/proc/SetSpread(var/spread_id) + //world << "Setting spread type to [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 + +/datum/disease/advance/proc/SetSeverity(var/level_sev) + + switch(level_sev) + + if(0) + severity = "Non-Threat" + if(1) + severity = "Minor" + if(2) + severity = "Medium" + if(3) + severity = "Harmful" + if(4) + severity = "Dangerous!" + if(5) + 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 = max(properties["resistance"] - symptoms.len, 1) + //world << "Res = [res]" + switch(res) + // Due to complications, I cannot randomly generate cures or randomly give cures. + if(0) + cure_id = "nutriment" + + if(1) + cure_id = "sodiumchloride" + + if(2) + cure_id = "orangejuice" + + if(3) + cure_id = "spaceacillin" + + if(4) + cure_id = "ethanol" + + if(5) + cure_id = "ethylredoxrazine" + + if(6) + cure_id = "silver" + + if(7) + cure_id = "gold" + + if(8) + cure_id = "plasma" + + // 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) + AddSymptom(pick(GenerateSymptoms(level, 1))) + Refresh() + return + +// Name the disease. +/datum/disease/advance/proc/AssignName(var/name = "Unknown") + src.name = name + return + +/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. + return dd_list2text(L, ":") + +// 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) + + for(var/datum/symptom/symp in symptoms) + if(S.id == symp.id) + return + + if(symptoms.len < 4 + rand(-1, 1)) + symptoms += S + else + RemoveSymptom(pick(symptoms)) + symptoms += S + return + +// Simply removes the symptom at the moment. +/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) + + var/list/diseases = list() + for(var/datum/disease/advance/A in D_list) + diseases += A + 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 + D_list -= 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 + var/datum/disease/advance/to_return = pick(diseases) + to_return.Refresh() + return to_return + + +#undef RANDOM_STARTING_LEVEL \ No newline at end of file diff --git a/code/datums/diseases/advance/cold.dm b/code/datums/diseases/advance/cold.dm new file mode 100644 index 00000000000..66ff503d93a --- /dev/null +++ b/code/datums/diseases/advance/cold.dm @@ -0,0 +1,4 @@ +/datum/disease/advance/cold/New(var/process = 1, var/datum/disease/advance/D) + name = "Cold" + symptoms = list(new/datum/symptom/sneeze) + ..(process, D) diff --git a/code/datums/diseases/advance/flu.dm b/code/datums/diseases/advance/flu.dm new file mode 100644 index 00000000000..8fe45c3b342 --- /dev/null +++ b/code/datums/diseases/advance/flu.dm @@ -0,0 +1,4 @@ +/datum/disease/advance/flu/New(var/process = 1, var/datum/disease/advance/D) + name = "Flu" + symptoms = list(new/datum/symptom/cough) + ..(process, D) diff --git a/code/datums/diseases/advance/symptoms/confusion.dm b/code/datums/diseases/advance/symptoms/confusion.dm new file mode 100644 index 00000000000..accd461d2ca --- /dev/null +++ b/code/datums/diseases/advance/symptoms/confusion.dm @@ -0,0 +1,35 @@ +/* +////////////////////////////////////// + +Confusion + + Little bit hidden. + Lowers resistance. + Decreases stage speed. + Intense Level. + +Bonus + Makes the affected mob be confused for short periods of time. + +////////////////////////////////////// +*/ + +/datum/symptom/confusion + + stealth = 1 + resistance = -1 + stage_speed = -3 + 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 << "[pick("You feel confused.", "You forgot what you were thinking about.")]" + else + M << "You are unable to think straight!" + M.confused = min(100, M.confused + 2) + + return diff --git a/code/datums/diseases/advance/symptoms/cough.dm b/code/datums/diseases/advance/symptoms/cough.dm new file mode 100644 index 00000000000..c17636a1607 --- /dev/null +++ b/code/datums/diseases/advance/symptoms/cough.dm @@ -0,0 +1,34 @@ +/* +////////////////////////////////////// + +Coughing + + Noticable. + No Resistance. + Doesn't increase stage speed.. + Low Level. + +BONUS + Will force the affected mob to drop items! + +////////////////////////////////////// +*/ + +/datum/symptom/cough + + stealth = -1 + resistance = 0 + stage_speed = 0 + 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 << "[pick("You swallow excess mucus.", "You lightly cough .")]" + else + M.emote("cough") + M.drop_item() + return \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/damage_converter.dm b/code/datums/diseases/advance/symptoms/damage_converter.dm new file mode 100644 index 00000000000..02cbb6a69e5 --- /dev/null +++ b/code/datums/diseases/advance/symptoms/damage_converter.dm @@ -0,0 +1,40 @@ +/* +////////////////////////////////////// + +Damage Converter + + Little bit hidden. + Lowers resistance tremendously. + Decreases stage speed tremendously. + Intense Level. + +Bonus + Slowly converts brute/fire damage to toxin. + +////////////////////////////////////// +*/ + +/datum/symptom/damage_converter // Not the egg + + stealth = 1 + resistance = -5 + stage_speed = -5 + 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(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 * 2) + return 1 \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/dizzy.dm b/code/datums/diseases/advance/symptoms/dizzy.dm new file mode 100644 index 00000000000..a0b0481fc06 --- /dev/null +++ b/code/datums/diseases/advance/symptoms/dizzy.dm @@ -0,0 +1,34 @@ +/* +////////////////////////////////////// + +Dizziness + + Little bit hidden. + Lowers resistance considerably. + Decreases stage speed. + Intense Level. + +Bonus + Shakes the affected mob's screen for short periods. + +////////////////////////////////////// +*/ + +/datum/symptom/dizzy // Not the egg + + stealth = 1 + resistance = -2 + stage_speed = -3 + 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 << "[pick("You feel dizzy.", "Your head starts spinning.")]" + else + M << "You are unable to look straight!" + M.make_dizzy(5) + return \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/headache.dm b/code/datums/diseases/advance/symptoms/headache.dm new file mode 100644 index 00000000000..98277ffc0db --- /dev/null +++ b/code/datums/diseases/advance/symptoms/headache.dm @@ -0,0 +1,30 @@ +/* +////////////////////////////////////// + +Headache + + Noticable. + Highly resistant. + Doesn't increase stage speed.. + Low Level. + +BONUS + Displays an annoying message! + Should be used for buffing your disease. + +////////////////////////////////////// +*/ + +/datum/symptom/cough + + stealth = -1 + resistance = 4 + stage_speed = 0 + level = 1 + +/datum/symptom/cough/Activate(var/datum/disease/advance/A) + ..() + if(prob(SYMPTOM_ACTIVATION_PROB)) + var/mob/living/M = A.affected_mob + M << "[pick("Your head hurts.", "Your head starts pounding.")]" + return \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/sneeze.dm b/code/datums/diseases/advance/symptoms/sneeze.dm new file mode 100644 index 00000000000..e894fc3b178 --- /dev/null +++ b/code/datums/diseases/advance/symptoms/sneeze.dm @@ -0,0 +1,35 @@ +/* +////////////////////////////////////// + +Sneezing + + Very Noticable. + Decreases resistance. + Doesn't increase stage speed. + Low Level. + +Bonus + Forces a spread type of AIRBORNE + with extra range! + +////////////////////////////////////// +*/ + +/datum/symptom/sneeze + + stealth = -2 + resistance = -1 + stage_speed = 0 + level = 1 + +/datum/symptom/sneeze/Activate(var/datum/disease/advance/A) + ..() + if(prob(SYMPTOM_ACTIVATION_PROB + (A.stage * 2))) + var/mob/living/M = A.affected_mob + switch(A.stage) + if(1, 2, 3, 4) + M.emote("sniffs") + else + M.emote("sneeze") + A.spread(A.holder, 4, AIRBORNE) + return \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/symptoms.dm b/code/datums/diseases/advance/symptoms/symptoms.dm new file mode 100644 index 00000000000..0015591f6a9 --- /dev/null +++ b/code/datums/diseases/advance/symptoms/symptoms.dm @@ -0,0 +1,29 @@ +// Symptoms are the effects that engineered advanced diseases do. + +var/list/list_symptoms = typesof(/datum/symptom) - /datum/symptom + +var/global/const/SYMPTOM_ACTIVATION_PROB = 1 + +/datum/symptom + // Buffs/Debuffs the symptom has to the overall engineered disease. + 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!") + + +/datum/symptom/proc/Activate(var/mob/living/M, var/stage) + return + diff --git a/code/datums/diseases/advance/symptoms/vomit.dm b/code/datums/diseases/advance/symptoms/vomit.dm new file mode 100644 index 00000000000..b574a97a2b0 --- /dev/null +++ b/code/datums/diseases/advance/symptoms/vomit.dm @@ -0,0 +1,89 @@ +/* +////////////////////////////////////// + +Vomiting + + Very Very Noticable. + Decreases resistance. + Doesn't increase stage speed. + 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 + + stealth = -2 + resistance = -1 + stage_speed = 0 + level = 3 + +/datum/symptom/vomit/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 << "[pick("You feel nauseous.", "You feel like you're going to throw up!")]" + else + Vomit(M) + + return + +/datum/symptom/vomit/proc/Vomit(var/mob/living/M) + + M.Stun(5) + M.emote("vomits on the floor") + + M.nutrition -= 20 + M.adjustToxLoss(-3) + + var/turf/pos = get_turf(M) + pos.add_vomit_floor(M) + playsound(pos, 'sound/effects/splat.ogg', 50, 1) +/* +////////////////////////////////////// + +Vomiting Blood + + Very Very Noticable. + Decreases resistance. + Decreases stage speed. + 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 + + stealth = -2 + resistance = -1 + stage_speed = -1 + level = 4 + +/datum/symptom/vomit/blood/Vomit(var/mob/living/M) + + M.Stun(5) + M.emote("vomits on the floor") + + // They lose blood and health. + var/brute_dam = M.getBruteLoss() + if(brute_dam >= 50) + M.adjustBruteLoss(3) + + var/turf/pos = get_turf(M) + pos.add_vomit_floor(M) + playsound(pos, 'sound/effects/splat.ogg', 50, 1) \ No newline at end of file diff --git a/code/datums/diseases/alien_embryo.dm b/code/datums/diseases/alien_embryo.dm index a6c2c50fd2e..1da982aa550 100644 --- a/code/datums/diseases/alien_embryo.dm +++ b/code/datums/diseases/alien_embryo.dm @@ -33,7 +33,7 @@ spread = "None" spread_type = SPECIAL cure = "Unknown" - cure_id = list("lexorin","toxin","gargleblaster", "cyanide") + cure_id = list("lexorin","toxin","gargleblaster") cure_chance = 50 affected_species = list("Human", "Monkey") permeability_mod = 15//likely to infect diff --git a/code/datums/sun.dm b/code/datums/sun.dm index 693cd69c156..e26517c8810 100644 --- a/code/datums/sun.dm +++ b/code/datums/sun.dm @@ -73,26 +73,5 @@ S.update_solar_exposure() -//returns the north-zero clockwise angle in degrees, given a direction -/proc/dir2angle(var/D) - switch(D) - if(1) - return 0 - if(2) - return 180 - if(4) - return 90 - if(8) - return 270 - if(5) - return 45 - if(6) - return 135 - if(9) - return 315 - if(10) - return 225 - else - return null diff --git a/code/game/machinery/kitchen/processor.dm b/code/game/machinery/kitchen/processor.dm index 62c61fcddfd..db1cfc52fc9 100644 --- a/code/game/machinery/kitchen/processor.dm +++ b/code/game/machinery/kitchen/processor.dm @@ -82,7 +82,7 @@ for(var/datum/disease/D in O.viruses) if(D.spread_type != SPECIAL) - B.data["viruses"] = new D.type(0) + B.data["viruses"] = new D.type(0, D) B.data["blood_DNA"] = copytext(O.dna.unique_enzymes,1,0) if(O.resistances&&O.resistances.len) diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 894a96224eb..95c1f517093 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -155,7 +155,7 @@ /mob/living/carbon/metroid/proc/handle_environment(datum/gas_mixture/environment) if(!environment) - adjustFireLoss(rand(10,20)) + adjustToxLoss(rand(10,20)) return //var/environment_heat_capacity = environment.heat_capacity() @@ -199,9 +199,9 @@ if(bodytemperature <= (T0C - 50)) // hurt temperature if(bodytemperature <= 50) // sqrting negative numbers is bad - adjustFireLoss(200) + adjustToxLoss(200) else - adjustFireLoss(round(sqrt(bodytemperature)) * 2) + adjustToxLoss(round(sqrt(bodytemperature)) * 2) else Tempstun = 0 diff --git a/code/modules/mob/mob_cleanup.dm b/code/modules/mob/mob_cleanup.dm index b52c61043f5..65aa4f714ff 100644 --- a/code/modules/mob/mob_cleanup.dm +++ b/code/modules/mob/mob_cleanup.dm @@ -3,25 +3,28 @@ Put (mob/proc)s here that are in dire need of a code cleanup. */ -/mob/living/proc/has_disease(var/datum/disease/virus) +/mob/proc/has_disease(var/datum/disease/virus) for(var/datum/disease/D in viruses) - if(istype(D, virus)) + if(D.IsSame(virus)) 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) // world << "Contract_disease called by [src] with virus [virus]" - if(stat >=2 || src.resistances.Find(virus.type)) return + if(stat >=2) + return + if(istype(virus, /datum/disease/advance)) + var/datum/disease/advance/A = virus + if(A.GetDiseaseID() in resistances) + return + else + if(src.resistances.Find(virus.type)) + return -//This gives a chance to re-infect cured/vaccinated mobs -// if(virus.type in resistances) -// if(prob(99.9)) return -// resistances.Remove(virus.type)//the resistance is futile - for(var/datum/disease/D in viruses) - if(istype(D, virus.type)) - return // two viruses of the same kind can't infect a body at once!! + if(has_disease(virus)) + return if(force_species_check) @@ -37,7 +40,7 @@ Put (mob/proc)s here that are in dire need of a code cleanup. //if(src.virus) < -- this used to replace the current disease. Not anymore! //src.virus.cure(0) - var/datum/disease/v = new virus.type + var/datum/disease/v = new virus.type(D = virus) src.viruses += v v.affected_mob = src v.strain_data = v.strain_data.Copy() diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 42e3d21501a..b9810e882af 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -349,17 +349,19 @@ datum // mix dem viruses if(R.id == "blood" && reagent == "blood") if(R.data && data) - if(R.data && R.data["viruses"] || data && data["viruses"]) - var/list/this = R.data["viruses"] - var/list/that = data["viruses"] - this += that // combine the two + if((R.data && R.data["viruses"]) || (data && data["viruses"])) + + R.data["viruses"] |= data["viruses"] + var/datum/disease/advance/AD = Advance_Mix(R.data["viruses"]) + + if(AD) + for(var/datum/disease/advance/D in R.data["viruses"]) + R.data["viruses"] -= D + + R.data["viruses"] |= new/datum/disease/advance(0, AD) + + - /* -- Turns out this code was buggy and unnecessary ---- Doohl - for(var/datum/disease/D in this) // makes sure no two viruses are in the reagent at the same time - for(var/datum/disease/d in this)//Something in here can cause an inf loop and I am tired so someone else will have to fix it. - if(d != D) - D.cure(0) - */ handle_reactions() return 0 diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index b389175df3e..15d1a4e05ca 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -100,7 +100,7 @@ datum var/datum/reagent/blood/self = src src = null for(var/datum/disease/D in self.data["viruses"]) - var/datum/disease/virus = new D.type + var/datum/disease/virus = new D.type(D) // We don't spread. if(virus.spread_type == SPECIAL || virus.spread_type == NON_CONTAGIOUS) continue @@ -135,7 +135,7 @@ datum blood_prop.blood_DNA[self.data["blood_DNA"]] = self.data["blood_type"] for(var/datum/disease/D in self.data["viruses"]) - var/datum/disease/newVirus = new D.type + var/datum/disease/newVirus = new D.type(D) blood_prop.viruses += newVirus newVirus.holder = blood_prop @@ -146,7 +146,7 @@ datum blood_prop = new(T) blood_prop.blood_DNA["Non-Human DNA"] = "A+" for(var/datum/disease/D in self.data["viruses"]) - var/datum/disease/newVirus = new D.type + var/datum/disease/newVirus = new D.type(D) blood_prop.viruses += newVirus newVirus.holder = blood_prop @@ -163,7 +163,7 @@ datum blood_prop = new(T) blood_prop.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*" for(var/datum/disease/D in self.data["viruses"]) - var/datum/disease/newVirus = new D.type + var/datum/disease/newVirus = new D.type(D) blood_prop.viruses += newVirus newVirus.holder = blood_prop /* diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index c7f4d5050b9..efd0e0e69e8 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -448,6 +448,36 @@ datum new /obj/item/stack/sheet/plasma(location) return + virus_food + name = "Virus Food" + id = "virusfood" + result = "virusfood" + required_reagents = list("water" = 5, "milk" = 5, "oxygen" = 5) + result_amount = 15 + + mix_virus + name = "Mix Virus" + id = "mixvirus" + result = "blood" + required_reagents = list("blood" = 5, "virusfood" = 5) + result_amount = 5 + var/level = 2 + + on_reaction(var/datum/reagents/holder, var/created_volume) + + var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list + if(B && B.data) + var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] + if(D) + D.Evolve(level - rand(0, 1)) + + holder.del_reagent(id) + + mix_virus_2 + + required_reagents = list("blood" = 5, "mutagen" = 5) + level = 4 + /////////////////////////////////////////////////////////////////////////////////// // foam and foam precursor diff --git a/code/modules/reagents/reagent_containers/glass/bottle.dm b/code/modules/reagents/reagent_containers/glass/bottle.dm index 3ba689303b5..07aa9ed79e2 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle.dm +++ b/code/modules/reagents/reagent_containers/glass/bottle.dm @@ -104,7 +104,7 @@ icon_state = "bottle3" New() ..() - var/datum/disease/F = new /datum/disease/flu(0) + var/datum/disease/F = new /datum/disease/advance/flu(0) var/list/data = list("viruses"= list(F)) reagents.add_reagent("blood", 20, data) @@ -126,7 +126,18 @@ icon_state = "bottle3" New() ..() - var/datum/disease/F = new /datum/disease/cold(0) + var/datum/disease/advance/F = new /datum/disease/advance/cold(0) + var/list/data = list("viruses"= list(F)) + reagents.add_reagent("blood", 20, data) + +/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 = "bottle3" + New() + ..() + var/datum/disease/advance/F = new(0) var/list/data = list("viruses"= list(F)) reagents.add_reagent("blood", 20, data) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 3e0d85d766a..a1f2edf4320 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -91,7 +91,7 @@ B.data["viruses"] = list() - B.data["viruses"] += new D.type + B.data["viruses"] += new D.type(D) B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0) diff --git a/html/changelog.html b/html/changelog.html index deb7d045684..435242f9058 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -49,6 +49,14 @@ should be listed in the changelog upon commit tho. Thanks. --> +
+

31 October 2012

+

Giacom updated:

+ +
+

28 October 2012

Errorage updated:

diff --git a/tgstation.dme b/tgstation.dme index 00619875dab..cf1b4ab8e72 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6,6 +6,266 @@ // BEGIN_FILE_DIR #define FILE_DIR . +#define FILE_DIR ".svn" +#define FILE_DIR ".svn/pristine" +#define FILE_DIR ".svn/pristine/00" +#define FILE_DIR ".svn/pristine/01" +#define FILE_DIR ".svn/pristine/02" +#define FILE_DIR ".svn/pristine/03" +#define FILE_DIR ".svn/pristine/04" +#define FILE_DIR ".svn/pristine/05" +#define FILE_DIR ".svn/pristine/06" +#define FILE_DIR ".svn/pristine/07" +#define FILE_DIR ".svn/pristine/08" +#define FILE_DIR ".svn/pristine/09" +#define FILE_DIR ".svn/pristine/0a" +#define FILE_DIR ".svn/pristine/0b" +#define FILE_DIR ".svn/pristine/0c" +#define FILE_DIR ".svn/pristine/0d" +#define FILE_DIR ".svn/pristine/0e" +#define FILE_DIR ".svn/pristine/0f" +#define FILE_DIR ".svn/pristine/10" +#define FILE_DIR ".svn/pristine/11" +#define FILE_DIR ".svn/pristine/12" +#define FILE_DIR ".svn/pristine/13" +#define FILE_DIR ".svn/pristine/14" +#define FILE_DIR ".svn/pristine/15" +#define FILE_DIR ".svn/pristine/16" +#define FILE_DIR ".svn/pristine/17" +#define FILE_DIR ".svn/pristine/18" +#define FILE_DIR ".svn/pristine/19" +#define FILE_DIR ".svn/pristine/1a" +#define FILE_DIR ".svn/pristine/1b" +#define FILE_DIR ".svn/pristine/1c" +#define FILE_DIR ".svn/pristine/1d" +#define FILE_DIR ".svn/pristine/1e" +#define FILE_DIR ".svn/pristine/1f" +#define FILE_DIR ".svn/pristine/20" +#define FILE_DIR ".svn/pristine/21" +#define FILE_DIR ".svn/pristine/22" +#define FILE_DIR ".svn/pristine/23" +#define FILE_DIR ".svn/pristine/24" +#define FILE_DIR ".svn/pristine/25" +#define FILE_DIR ".svn/pristine/26" +#define FILE_DIR ".svn/pristine/27" +#define FILE_DIR ".svn/pristine/28" +#define FILE_DIR ".svn/pristine/29" +#define FILE_DIR ".svn/pristine/2a" +#define FILE_DIR ".svn/pristine/2b" +#define FILE_DIR ".svn/pristine/2c" +#define FILE_DIR ".svn/pristine/2d" +#define FILE_DIR ".svn/pristine/2e" +#define FILE_DIR ".svn/pristine/2f" +#define FILE_DIR ".svn/pristine/30" +#define FILE_DIR ".svn/pristine/31" +#define FILE_DIR ".svn/pristine/32" +#define FILE_DIR ".svn/pristine/33" +#define FILE_DIR ".svn/pristine/34" +#define FILE_DIR ".svn/pristine/35" +#define FILE_DIR ".svn/pristine/36" +#define FILE_DIR ".svn/pristine/37" +#define FILE_DIR ".svn/pristine/38" +#define FILE_DIR ".svn/pristine/39" +#define FILE_DIR ".svn/pristine/3a" +#define FILE_DIR ".svn/pristine/3b" +#define FILE_DIR ".svn/pristine/3c" +#define FILE_DIR ".svn/pristine/3d" +#define FILE_DIR ".svn/pristine/3e" +#define FILE_DIR ".svn/pristine/3f" +#define FILE_DIR ".svn/pristine/40" +#define FILE_DIR ".svn/pristine/41" +#define FILE_DIR ".svn/pristine/42" +#define FILE_DIR ".svn/pristine/43" +#define FILE_DIR ".svn/pristine/44" +#define FILE_DIR ".svn/pristine/45" +#define FILE_DIR ".svn/pristine/46" +#define FILE_DIR ".svn/pristine/47" +#define FILE_DIR ".svn/pristine/48" +#define FILE_DIR ".svn/pristine/49" +#define FILE_DIR ".svn/pristine/4a" +#define FILE_DIR ".svn/pristine/4b" +#define FILE_DIR ".svn/pristine/4c" +#define FILE_DIR ".svn/pristine/4d" +#define FILE_DIR ".svn/pristine/4e" +#define FILE_DIR ".svn/pristine/4f" +#define FILE_DIR ".svn/pristine/50" +#define FILE_DIR ".svn/pristine/51" +#define FILE_DIR ".svn/pristine/52" +#define FILE_DIR ".svn/pristine/53" +#define FILE_DIR ".svn/pristine/54" +#define FILE_DIR ".svn/pristine/55" +#define FILE_DIR ".svn/pristine/56" +#define FILE_DIR ".svn/pristine/57" +#define FILE_DIR ".svn/pristine/58" +#define FILE_DIR ".svn/pristine/59" +#define FILE_DIR ".svn/pristine/5a" +#define FILE_DIR ".svn/pristine/5b" +#define FILE_DIR ".svn/pristine/5c" +#define FILE_DIR ".svn/pristine/5d" +#define FILE_DIR ".svn/pristine/5e" +#define FILE_DIR ".svn/pristine/5f" +#define FILE_DIR ".svn/pristine/60" +#define FILE_DIR ".svn/pristine/61" +#define FILE_DIR ".svn/pristine/62" +#define FILE_DIR ".svn/pristine/63" +#define FILE_DIR ".svn/pristine/64" +#define FILE_DIR ".svn/pristine/65" +#define FILE_DIR ".svn/pristine/66" +#define FILE_DIR ".svn/pristine/67" +#define FILE_DIR ".svn/pristine/68" +#define FILE_DIR ".svn/pristine/69" +#define FILE_DIR ".svn/pristine/6a" +#define FILE_DIR ".svn/pristine/6b" +#define FILE_DIR ".svn/pristine/6c" +#define FILE_DIR ".svn/pristine/6d" +#define FILE_DIR ".svn/pristine/6e" +#define FILE_DIR ".svn/pristine/6f" +#define FILE_DIR ".svn/pristine/70" +#define FILE_DIR ".svn/pristine/71" +#define FILE_DIR ".svn/pristine/72" +#define FILE_DIR ".svn/pristine/73" +#define FILE_DIR ".svn/pristine/74" +#define FILE_DIR ".svn/pristine/75" +#define FILE_DIR ".svn/pristine/76" +#define FILE_DIR ".svn/pristine/77" +#define FILE_DIR ".svn/pristine/78" +#define FILE_DIR ".svn/pristine/79" +#define FILE_DIR ".svn/pristine/7a" +#define FILE_DIR ".svn/pristine/7b" +#define FILE_DIR ".svn/pristine/7c" +#define FILE_DIR ".svn/pristine/7d" +#define FILE_DIR ".svn/pristine/7e" +#define FILE_DIR ".svn/pristine/7f" +#define FILE_DIR ".svn/pristine/80" +#define FILE_DIR ".svn/pristine/81" +#define FILE_DIR ".svn/pristine/82" +#define FILE_DIR ".svn/pristine/83" +#define FILE_DIR ".svn/pristine/84" +#define FILE_DIR ".svn/pristine/85" +#define FILE_DIR ".svn/pristine/86" +#define FILE_DIR ".svn/pristine/87" +#define FILE_DIR ".svn/pristine/88" +#define FILE_DIR ".svn/pristine/89" +#define FILE_DIR ".svn/pristine/8a" +#define FILE_DIR ".svn/pristine/8b" +#define FILE_DIR ".svn/pristine/8c" +#define FILE_DIR ".svn/pristine/8d" +#define FILE_DIR ".svn/pristine/8e" +#define FILE_DIR ".svn/pristine/8f" +#define FILE_DIR ".svn/pristine/90" +#define FILE_DIR ".svn/pristine/91" +#define FILE_DIR ".svn/pristine/92" +#define FILE_DIR ".svn/pristine/93" +#define FILE_DIR ".svn/pristine/94" +#define FILE_DIR ".svn/pristine/95" +#define FILE_DIR ".svn/pristine/96" +#define FILE_DIR ".svn/pristine/97" +#define FILE_DIR ".svn/pristine/98" +#define FILE_DIR ".svn/pristine/99" +#define FILE_DIR ".svn/pristine/9a" +#define FILE_DIR ".svn/pristine/9b" +#define FILE_DIR ".svn/pristine/9c" +#define FILE_DIR ".svn/pristine/9d" +#define FILE_DIR ".svn/pristine/9e" +#define FILE_DIR ".svn/pristine/9f" +#define FILE_DIR ".svn/pristine/a0" +#define FILE_DIR ".svn/pristine/a1" +#define FILE_DIR ".svn/pristine/a2" +#define FILE_DIR ".svn/pristine/a3" +#define FILE_DIR ".svn/pristine/a4" +#define FILE_DIR ".svn/pristine/a5" +#define FILE_DIR ".svn/pristine/a6" +#define FILE_DIR ".svn/pristine/a7" +#define FILE_DIR ".svn/pristine/a8" +#define FILE_DIR ".svn/pristine/a9" +#define FILE_DIR ".svn/pristine/aa" +#define FILE_DIR ".svn/pristine/ab" +#define FILE_DIR ".svn/pristine/ac" +#define FILE_DIR ".svn/pristine/ad" +#define FILE_DIR ".svn/pristine/ae" +#define FILE_DIR ".svn/pristine/af" +#define FILE_DIR ".svn/pristine/b0" +#define FILE_DIR ".svn/pristine/b1" +#define FILE_DIR ".svn/pristine/b2" +#define FILE_DIR ".svn/pristine/b3" +#define FILE_DIR ".svn/pristine/b4" +#define FILE_DIR ".svn/pristine/b5" +#define FILE_DIR ".svn/pristine/b6" +#define FILE_DIR ".svn/pristine/b7" +#define FILE_DIR ".svn/pristine/b8" +#define FILE_DIR ".svn/pristine/b9" +#define FILE_DIR ".svn/pristine/ba" +#define FILE_DIR ".svn/pristine/bb" +#define FILE_DIR ".svn/pristine/bc" +#define FILE_DIR ".svn/pristine/bd" +#define FILE_DIR ".svn/pristine/be" +#define FILE_DIR ".svn/pristine/bf" +#define FILE_DIR ".svn/pristine/c0" +#define FILE_DIR ".svn/pristine/c1" +#define FILE_DIR ".svn/pristine/c2" +#define FILE_DIR ".svn/pristine/c3" +#define FILE_DIR ".svn/pristine/c4" +#define FILE_DIR ".svn/pristine/c5" +#define FILE_DIR ".svn/pristine/c6" +#define FILE_DIR ".svn/pristine/c7" +#define FILE_DIR ".svn/pristine/c8" +#define FILE_DIR ".svn/pristine/c9" +#define FILE_DIR ".svn/pristine/ca" +#define FILE_DIR ".svn/pristine/cb" +#define FILE_DIR ".svn/pristine/cc" +#define FILE_DIR ".svn/pristine/cd" +#define FILE_DIR ".svn/pristine/ce" +#define FILE_DIR ".svn/pristine/cf" +#define FILE_DIR ".svn/pristine/d0" +#define FILE_DIR ".svn/pristine/d1" +#define FILE_DIR ".svn/pristine/d2" +#define FILE_DIR ".svn/pristine/d3" +#define FILE_DIR ".svn/pristine/d4" +#define FILE_DIR ".svn/pristine/d5" +#define FILE_DIR ".svn/pristine/d6" +#define FILE_DIR ".svn/pristine/d7" +#define FILE_DIR ".svn/pristine/d8" +#define FILE_DIR ".svn/pristine/d9" +#define FILE_DIR ".svn/pristine/da" +#define FILE_DIR ".svn/pristine/db" +#define FILE_DIR ".svn/pristine/dc" +#define FILE_DIR ".svn/pristine/dd" +#define FILE_DIR ".svn/pristine/de" +#define FILE_DIR ".svn/pristine/df" +#define FILE_DIR ".svn/pristine/e0" +#define FILE_DIR ".svn/pristine/e1" +#define FILE_DIR ".svn/pristine/e2" +#define FILE_DIR ".svn/pristine/e3" +#define FILE_DIR ".svn/pristine/e4" +#define FILE_DIR ".svn/pristine/e5" +#define FILE_DIR ".svn/pristine/e6" +#define FILE_DIR ".svn/pristine/e7" +#define FILE_DIR ".svn/pristine/e8" +#define FILE_DIR ".svn/pristine/e9" +#define FILE_DIR ".svn/pristine/ea" +#define FILE_DIR ".svn/pristine/eb" +#define FILE_DIR ".svn/pristine/ec" +#define FILE_DIR ".svn/pristine/ed" +#define FILE_DIR ".svn/pristine/ee" +#define FILE_DIR ".svn/pristine/ef" +#define FILE_DIR ".svn/pristine/f0" +#define FILE_DIR ".svn/pristine/f1" +#define FILE_DIR ".svn/pristine/f2" +#define FILE_DIR ".svn/pristine/f3" +#define FILE_DIR ".svn/pristine/f4" +#define FILE_DIR ".svn/pristine/f5" +#define FILE_DIR ".svn/pristine/f6" +#define FILE_DIR ".svn/pristine/f7" +#define FILE_DIR ".svn/pristine/f8" +#define FILE_DIR ".svn/pristine/f9" +#define FILE_DIR ".svn/pristine/fa" +#define FILE_DIR ".svn/pristine/fb" +#define FILE_DIR ".svn/pristine/fc" +#define FILE_DIR ".svn/pristine/fd" +#define FILE_DIR ".svn/pristine/fe" +#define FILE_DIR ".svn/pristine/ff" +#define FILE_DIR "bot" +#define FILE_DIR "bot/Marakov" #define FILE_DIR "code" #define FILE_DIR "code/__HELPERS" #define FILE_DIR "code/ATMOSPHERICS" @@ -16,6 +276,8 @@ #define FILE_DIR "code/controllers" #define FILE_DIR "code/datums" #define FILE_DIR "code/datums/diseases" +#define FILE_DIR "code/datums/diseases/advance" +#define FILE_DIR "code/datums/diseases/advance/symptoms" #define FILE_DIR "code/datums/helper_datums" #define FILE_DIR "code/datums/organs" #define FILE_DIR "code/datums/spells" @@ -188,6 +450,15 @@ #define FILE_DIR "code/WorkInProgress/mapload" #define FILE_DIR "code/WorkInProgress/organs" #define FILE_DIR "code/WorkInProgress/virus2" +#define FILE_DIR "config" +#define FILE_DIR "config/names" +#define FILE_DIR "data" +#define FILE_DIR "data/logs" +#define FILE_DIR "data/logs/2012" +#define FILE_DIR "data/logs/2012/10-October" +#define FILE_DIR "data/player_saves" +#define FILE_DIR "data/player_saves/g" +#define FILE_DIR "data/player_saves/g/giacomand" #define FILE_DIR "html" #define FILE_DIR "icons" #define FILE_DIR "icons/effects" @@ -202,6 +473,7 @@ #define FILE_DIR "icons/obj/machines" #define FILE_DIR "icons/obj/pipes" #define FILE_DIR "icons/pda_icons" +#define FILE_DIR "icons/PSD files" #define FILE_DIR "icons/spideros_icons" #define FILE_DIR "icons/Testing" #define FILE_DIR "icons/turf" @@ -210,6 +482,7 @@ #define FILE_DIR "interface" #define FILE_DIR "maps" #define FILE_DIR "maps/RandomZLevels" +#define FILE_DIR "music" #define FILE_DIR "sound" #define FILE_DIR "sound/AI" #define FILE_DIR "sound/ambience" @@ -223,8 +496,18 @@ #define FILE_DIR "sound/violin" #define FILE_DIR "sound/voice" #define FILE_DIR "sound/weapons" +#define FILE_DIR "SQL" #define FILE_DIR "tools" #define FILE_DIR "tools/Redirector" +#define FILE_DIR "tools/Runtime Condenser" +#define FILE_DIR "tools/UnstandardnessTestForDM" +#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM" +#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/bin" +#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/bin/Debug" +#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj" +#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86" +#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86/Debug" +#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/Properties" // END_FILE_DIR // BEGIN_PREFERENCES @@ -314,6 +597,17 @@ #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\cold.dm" +#include "code\datums\diseases\advance\flu.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\headache.dm" +#include "code\datums\diseases\advance\symptoms\sneeze.dm" +#include "code\datums\diseases\advance\symptoms\symptoms.dm" +#include "code\datums\diseases\advance\symptoms\vomit.dm" #include "code\datums\helper_datums\construction_datum.dm" #include "code\datums\helper_datums\events.dm" #include "code\datums\helper_datums\getrev.dm"