Merge pull request #4707 from Cerebulon/virologyRetoothing

Gives Virology teeth again
This commit is contained in:
Mechoid
2018-02-09 11:49:45 -08:00
committed by GitHub
15 changed files with 414 additions and 249 deletions

View File

@@ -389,6 +389,7 @@
/atom/proc/add_vomit_floor(mob/living/carbon/M as mob, var/toxvomit = 0) /atom/proc/add_vomit_floor(mob/living/carbon/M as mob, var/toxvomit = 0)
if( istype(src, /turf/simulated) ) if( istype(src, /turf/simulated) )
var/obj/effect/decal/cleanable/vomit/this = new /obj/effect/decal/cleanable/vomit(src) var/obj/effect/decal/cleanable/vomit/this = new /obj/effect/decal/cleanable/vomit(src)
this.virus2 = virus_copylist(M.virus2)
// Make toxins vomit look different // Make toxins vomit look different
if(toxvomit) if(toxvomit)

View File

@@ -247,3 +247,9 @@ var/global/list/image/splatter_cache=list()
/obj/effect/decal/cleanable/mucus/New() /obj/effect/decal/cleanable/mucus/New()
spawn(DRYING_TIME * 2) spawn(DRYING_TIME * 2)
dry=1 dry=1
//This version should be used for admin spawns and pre-mapped virus vectors (e.g. in PoIs), this version does not dry
/obj/effect/decal/cleanable/mucus/mapped/New()
...()
virus2 = new /datum/disease2/disease
virus2.makerandom()

View File

@@ -100,6 +100,7 @@
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/datum/disease2/disease/virus2 = list()
/obj/effect/decal/cleanable/tomato_smudge /obj/effect/decal/cleanable/tomato_smudge
name = "tomato smudge" name = "tomato smudge"

View File

@@ -15,6 +15,8 @@
blood_color = "#CCCCCC" blood_color = "#CCCCCC"
flesh_color = "#AAAAAA" flesh_color = "#AAAAAA"
virus_immune = 1
remains_type = /obj/effect/decal/cleanable/ash remains_type = /obj/effect/decal/cleanable/ash
death_message = "dissolves into ash..." death_message = "dissolves into ash..."

View File

@@ -17,6 +17,8 @@
blood_color = "#515573" blood_color = "#515573"
flesh_color = "#137E8F" flesh_color = "#137E8F"
virus_immune = 1
has_organ = list( has_organ = list(
"brain" = /obj/item/organ/internal/brain/golem "brain" = /obj/item/organ/internal/brain/golem
) )

View File

@@ -38,6 +38,8 @@
speech_sounds = list('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg') speech_sounds = list('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg')
speech_chance = 100 speech_chance = 100
virus_immune = 1
breath_type = null breath_type = null
poison_type = null poison_type = null

View File

@@ -23,6 +23,13 @@
var/datum/disease2/disease/V = M.virus2[ID] var/datum/disease2/disease/V = M.virus2[ID]
infect_virus2(src,V) infect_virus2(src,V)
else if(istype(O,/obj/effect/decal/cleanable/vomit))
var/obj/effect/decal/cleanable/vomit/Vom = O
if(Vom.virus2.len)
for (var/ID in Vom.virus2)
var/datum/disease2/disease/V = Vom.virus2[ID]
infect_virus2(src,V)
if(virus2.len) if(virus2.len)
for (var/ID in virus2) for (var/ID in virus2)
var/datum/disease2/disease/V = virus2[ID] var/datum/disease2/disease/V = virus2[ID]

View File

@@ -11,7 +11,7 @@
usr << "Effects:" usr << "Effects:"
for(var/datum/disease2/effectholder/E in effects) for(var/datum/disease2/effectholder/E in effects)
usr << "[E.stage]: [E.effect.name]; chance=[E.chance]; multiplier=[E.multiplier]" usr << "[E.stage]: [E.effect.name]; chance=[E.chance]; multiplier=[E.multiplier]"
usr << "Antigens: [antigens2string(antigen)]" usr << "Antigens: [antigens2string(antigen)]; Resistance: [resistance]"
return 1 return 1
@@ -46,6 +46,7 @@
var/spreadtype = "Contact" var/spreadtype = "Contact"
var/list/antigens = list() var/list/antigens = list()
var/speed = 1 var/speed = 1
var/resistance = 10
var/mob/living/carbon/infectee = null var/mob/living/carbon/infectee = null
// this holds spawned viruses so that the "Info" links work after the proc exits // this holds spawned viruses so that the "Info" links work after the proc exits
@@ -98,6 +99,7 @@
<b>Infection Chance:</b> <a href="?src=\ref[src];what=ichance">[infectionchance]</a><br /> <b>Infection Chance:</b> <a href="?src=\ref[src];what=ichance">[infectionchance]</a><br />
<b>Spread Type:</b> <a href="?src=\ref[src];what=stype">[spreadtype]</a><br /> <b>Spread Type:</b> <a href="?src=\ref[src];what=stype">[spreadtype]</a><br />
<b>Speed:</b> <a href="?src=\ref[src];what=speed">[speed]</a><br /> <b>Speed:</b> <a href="?src=\ref[src];what=speed">[speed]</a><br />
<b>Resistance:</b> <a href="?src=\ref[src];what=resistance">[resistance]</a><br />
<br /> <br />
"} "}
f = 1 f = 1
@@ -153,8 +155,8 @@
if(!I) return if(!I) return
infectionchance = I infectionchance = I
if("stype") if("stype")
var/S = alert("Which spread type?", "Spread Type", "Cancel", "Contact", "Airborne") var/S = alert("Which spread type?", "Spread Type", "Contact", "Airborne", "Blood")
if(!S || S == "Cancel") return if(!S) return
spreadtype = S spreadtype = S
if("speed") if("speed")
var/S = input("Input speed", "Speed", speed) as null|num var/S = input("Input speed", "Speed", speed) as null|num
@@ -170,6 +172,10 @@
antigens |= T antigens |= T
else if(href_list["reset"]) else if(href_list["reset"])
antigens = list() antigens = list()
if("resistance")
var/S = input("Input % resistance to antibiotics", "Resistance", resistance) as null|num
if(!S) return
resistance = S
if("infectee") if("infectee")
var/list/candidates = list() var/list/candidates = list()
for(var/mob/living/carbon/G in living_mob_list) for(var/mob/living/carbon/G in living_mob_list)
@@ -195,6 +201,7 @@
D.antigen = antigens D.antigen = antigens
D.affected_species = species D.affected_species = species
D.speed = speed D.speed = speed
D.resistance = resistance
for(var/i in 1 to 4) for(var/i in 1 to 4)
var/datum/disease2/effectholder/E = new var/datum/disease2/effectholder/E = new
var/Etype = s[i] var/Etype = s[i]

View File

@@ -1,7 +1,7 @@
/datum/disease2/disease /datum/disease2/disease
var/infectionchance = 70 var/infectionchance = 70
var/speed = 1 var/speed = 1
var/spreadtype = "Contact" // Can also be "Airborne" var/spreadtype = "Blood" // Can also be "Contact" or "Airborne"
var/stage = 1 var/stage = 1
var/stageprob = 10 var/stageprob = 10
var/dead = 0 var/dead = 0
@@ -11,6 +11,7 @@
var/antigen = list() // 16 bits describing the antigens, when one bit is set, a cure with that bit can dock here var/antigen = list() // 16 bits describing the antigens, when one bit is set, a cure with that bit can dock here
var/max_stage = 4 var/max_stage = 4
var/list/affected_species = list("Human","Unathi","Skrell","Tajara") var/list/affected_species = list("Human","Unathi","Skrell","Tajara")
var/resistance = 10 // % chance a disease will resist cure, up to 100
/datum/disease2/disease/New() /datum/disease2/disease/New()
uniqueID = rand(0,10000) uniqueID = rand(0,10000)
@@ -36,6 +37,7 @@
antigen = list(pick(ALL_ANTIGENS)) antigen = list(pick(ALL_ANTIGENS))
antigen |= pick(ALL_ANTIGENS) antigen |= pick(ALL_ANTIGENS)
spreadtype = prob(70) ? "Airborne" : "Contact" spreadtype = prob(70) ? "Airborne" : "Contact"
resistance = rand(15,70)
if(all_species.len) if(all_species.len)
affected_species = get_infectable_species() affected_species = get_infectable_species()
@@ -79,11 +81,17 @@
if(prob(1)) if(prob(1))
majormutate() majormutate()
//Space antibiotics stop disease completely //Space antibiotics have a good chance to stop disease completely
if(mob.reagents.has_reagent("spaceacillin")) if(mob.reagents.has_reagent("spaceacillin"))
if(stage == 1 && prob(20)) if(stage == 1 && prob(70-resistance))
src.cure(mob) src.cure(mob)
return else
resistance += rand(1,9)
//Resistance is capped at 90 without being manually set to 100
if(resistance > 90 && resistance < 100)
resistance = 90
//Virus food speeds up disease progress //Virus food speeds up disease progress
if(mob.reagents.has_reagent("virusfood")) if(mob.reagents.has_reagent("virusfood"))
@@ -96,7 +104,7 @@
//Moving to the next stage //Moving to the next stage
if(clicks > max(stage*100, 200) && prob(10)) if(clicks > max(stage*100, 200) && prob(10))
if((stage <= max_stage) && prob(20)) // ~60% of viruses will be cured by the end of S4 with this if((stage <= max_stage) && prob(5)) // ~20% of viruses will be cured by the end of S4 with this
src.cure(mob) src.cure(mob)
mob.antibodies |= src.antigen mob.antibodies |= src.antigen
stage++ stage++
@@ -137,11 +145,15 @@
if(D != holder) if(D != holder)
exclude += D.effect.type exclude += D.effect.type
holder.majormutate(exclude) holder.majormutate(exclude)
if (prob(5)) if (prob(5) && prob(100-resistance)) // The more resistant the disease,the lower the chance of randomly developing the antibodies
antigen = list(pick(ALL_ANTIGENS)) antigen = list(pick(ALL_ANTIGENS))
antigen |= pick(ALL_ANTIGENS) antigen |= pick(ALL_ANTIGENS)
if (prob(5) && all_species.len) if (prob(5) && all_species.len)
affected_species = get_infectable_species() affected_species = get_infectable_species()
if (prob(10))
resistance += rand(1,9)
if(resistance > 90 && resistance < 100)
resistance = 90
/datum/disease2/disease/proc/getcopy() /datum/disease2/disease/proc/getcopy()
var/datum/disease2/disease/disease = new /datum/disease2/disease var/datum/disease2/disease/disease = new /datum/disease2/disease
@@ -210,6 +222,7 @@ var/global/list/virusDB = list()
<u>Antigen:</u> [antigens2string(antigen)]<br> <u>Antigen:</u> [antigens2string(antigen)]<br>
<u>Transmitted By:</u> [spreadtype]<br> <u>Transmitted By:</u> [spreadtype]<br>
<u>Rate of Progression:</u> [stageprob * 10]<br> <u>Rate of Progression:</u> [stageprob * 10]<br>
<u>Antibiotic Resistance</u> [resistance]% <br>
<u>Species Affected:</u> [jointext(affected_species, ", ")]<br> <u>Species Affected:</u> [jointext(affected_species, ", ")]<br>
"} "}
@@ -217,7 +230,7 @@ var/global/list/virusDB = list()
for(var/datum/disease2/effectholder/E in effects) for(var/datum/disease2/effectholder/E in effects)
r += "([E.stage]) [E.effect.name] " r += "([E.stage]) [E.effect.name] "
r += "<small><u>Strength:</u> [E.multiplier >= 3 ? "Severe" : E.multiplier > 1 ? "Above Average" : "Average"] " r += "<small><u>Strength:</u> [E.multiplier >= 3 ? "Severe" : E.multiplier > 1 ? "Above Average" : "Average"] "
r += "<u>Verosity:</u> [E.chance * 15]</small><br>" r += "<u>Aggressiveness:</u> [E.chance * 15]</small><br>"
return r return r

View File

@@ -131,9 +131,6 @@
if(foodsupply < 100 && beaker.reagents.remove_reagent("virusfood",5)) if(foodsupply < 100 && beaker.reagents.remove_reagent("virusfood",5))
if(foodsupply + 10 <= 100) if(foodsupply + 10 <= 100)
foodsupply += 10 foodsupply += 10
else
beaker.reagents.add_reagent("virusfood",(100 - foodsupply)/2)
foodsupply = 100
nanomanager.update_uis(src) nanomanager.update_uis(src)
if (locate(/datum/reagent/toxin) in beaker.reagents.reagent_list && toxins < 100) if (locate(/datum/reagent/toxin) in beaker.reagents.reagent_list && toxins < 100)

View File

@@ -58,7 +58,9 @@
/datum/disease2/effect/invisible /datum/disease2/effect/invisible
name = "Waiting Syndrome" name = "Waiting Syndrome"
stage = 1 stage = 1
activate(var/mob/living/carbon/mob,var/multiplier) badness = 3
/datum/disease2/effect/invisible/activate(var/mob/living/carbon/mob,var/multiplier)
return return
////////////////////////STAGE 4///////////////////////////////// ////////////////////////STAGE 4/////////////////////////////////
@@ -70,10 +72,11 @@
chance_maxm = 0 chance_maxm = 0
/datum/disease2/effect/gibbingtons /datum/disease2/effect/gibbingtons
name = "Gibbingtons Syndrome" name = "Gibbington's Syndrome"
stage = 4 stage = 4
badness = 3 badness = 3
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/gibbingtons/activate(var/mob/living/carbon/mob,var/multiplier)
// Probabilities have been tweaked to kill in ~2-3 minutes, giving 5-10 messages. // Probabilities have been tweaked to kill in ~2-3 minutes, giving 5-10 messages.
// Probably needs more balancing, but it's better than LOL U GIBBED NOW, especially now that viruses can potentially have no signs up until Gibbingtons. // Probably needs more balancing, but it's better than LOL U GIBBED NOW, especially now that viruses can potentially have no signs up until Gibbingtons.
mob.adjustBruteLoss(10*multiplier) mob.adjustBruteLoss(10*multiplier)
@@ -97,30 +100,34 @@
stage = 4 stage = 4
maxm = 3 maxm = 3
badness = 2 badness = 2
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/radian/activate(var/mob/living/carbon/mob,var/multiplier)
mob.apply_effect(2*multiplier, IRRADIATE, check_protection = 0) mob.apply_effect(2*multiplier, IRRADIATE, check_protection = 0)
/datum/disease2/effect/deaf /datum/disease2/effect/deaf
name = "Dead Ear Syndrome" name = "Deafness"
stage = 4 stage = 4
badness = 2 badness = 2
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/deaf/activate(var/mob/living/carbon/mob,var/multiplier)
mob.ear_deaf += 20 mob.ear_deaf += 20
/datum/disease2/effect/monkey /datum/disease2/effect/monkey
name = "Monkism Syndrome" name = "Genome Regression"
stage = 4 stage = 4
badness = 3 badness = 3
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/monkey/activate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob,/mob/living/carbon/human)) if(istype(mob,/mob/living/carbon/human))
var/mob/living/carbon/human/h = mob var/mob/living/carbon/human/h = mob
h.monkeyize() h.monkeyize()
/datum/disease2/effect/suicide /datum/disease2/effect/suicide
name = "Suicidal Syndrome" name = "Windpipe Contraction"
stage = 4 stage = 4
badness = 3 badness = 3
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/suicide/activate(var/mob/living/carbon/mob,var/multiplier)
var/datum/gender/TM = gender_datums[mob.get_visible_gender()] var/datum/gender/TM = gender_datums[mob.get_visible_gender()]
mob.suiciding = 30 mob.suiciding = 30
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while //instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
@@ -129,29 +136,32 @@
mob.updatehealth() mob.updatehealth()
/datum/disease2/effect/killertoxins /datum/disease2/effect/killertoxins
name = "Toxification Syndrome" name = "Autoimmune Reponse"
stage = 4 stage = 4
badness = 2 badness = 2
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/killertoxins/activate(var/mob/living/carbon/mob,var/multiplier)
mob.adjustToxLoss(15*multiplier) mob.adjustToxLoss(15*multiplier)
/datum/disease2/effect/dna /datum/disease2/effect/dna
name = "Reverse Pattern Syndrome" name = "Catastrophic DNA Degeneration"
stage = 4 stage = 4
badness = 2 badness = 2
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/dna/activate(var/mob/living/carbon/mob,var/multiplier)
mob.bodytemperature = max(mob.bodytemperature, 350) mob.bodytemperature = max(mob.bodytemperature, 350)
scramble(0,mob,10) scramble(0,mob,10)
mob.apply_damage(10, CLONE) mob.apply_damage(10, CLONE)
/datum/disease2/effect/organs /datum/disease2/effect/organs
name = "Shutdown Syndrome" name = "Limb Paralysis"
stage = 4 stage = 4
badness = 2 badness = 2
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/organs/activate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob, /mob/living/carbon/human)) if(istype(mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = mob var/mob/living/carbon/human/H = mob
var/organ = pick(list("r_arm","l_arm","r_leg","r_leg")) var/organ = pick(list("r_arm","l_arm","r_leg","l_leg"))
var/obj/item/organ/external/E = H.organs_by_name[organ] var/obj/item/organ/external/E = H.organs_by_name[organ]
if (!(E.status & ORGAN_DEAD)) if (!(E.status & ORGAN_DEAD))
E.status |= ORGAN_DEAD E.status |= ORGAN_DEAD
@@ -161,7 +171,7 @@
H.update_icons_body() H.update_icons_body()
mob.adjustToxLoss(15*multiplier) mob.adjustToxLoss(15*multiplier)
deactivate(var/mob/living/carbon/mob,var/multiplier) /datum/disease2/effect/organs/deactivate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob, /mob/living/carbon/human)) if(istype(mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = mob var/mob/living/carbon/human/H = mob
for (var/obj/item/organ/external/E in H.organs) for (var/obj/item/organ/external/E in H.organs)
@@ -170,11 +180,26 @@
C.status &= ~ORGAN_DEAD C.status &= ~ORGAN_DEAD
H.update_icons_body() H.update_icons_body()
/datum/disease2/effect/immortal /datum/disease2/effect/internalorgan
name = "Longevity Syndrome" name = "Organ Shutdown"
stage = 4 stage = 4
badness = 2 badness = 2
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/internalorgan/activate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = mob
var/organ = pick(list("heart","kidney","liver", "lungs"))
var/obj/item/organ/internal/O = H.organs_by_name[organ]
if (!(O.robotic = ORGAN_ROBOT))
O.damage += (5*multiplier)
H << "<span class='notice'>You feel a cramp in your guts.</span>"
/datum/disease2/effect/immortal
name = "Hyperaccelerated Aging"
stage = 4
badness = 2
/datum/disease2/effect/immortal/activate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob, /mob/living/carbon/human)) if(istype(mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = mob var/mob/living/carbon/human/H = mob
for (var/obj/item/organ/external/E in H.organs) for (var/obj/item/organ/external/E in H.organs)
@@ -183,7 +208,7 @@
var/heal_amt = -5*multiplier var/heal_amt = -5*multiplier
mob.apply_damages(heal_amt,heal_amt,heal_amt,heal_amt) mob.apply_damages(heal_amt,heal_amt,heal_amt,heal_amt)
deactivate(var/mob/living/carbon/mob,var/multiplier) /datum/disease2/effect/immortal/deactivate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob, /mob/living/carbon/human)) if(istype(mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = mob var/mob/living/carbon/human/H = mob
H << "<span class='notice'>You suddenly feel hurt and old...</span>" H << "<span class='notice'>You suddenly feel hurt and old...</span>"
@@ -192,48 +217,70 @@
mob.apply_damages(backlash_amt,backlash_amt,backlash_amt,backlash_amt) mob.apply_damages(backlash_amt,backlash_amt,backlash_amt,backlash_amt)
/datum/disease2/effect/bones /datum/disease2/effect/bones
name = "Fragile Bones Syndrome" name = "Brittle Bones"
stage = 4 stage = 4
badness = 2 badness = 2
activate(var/mob/living/carbon/mob,var/multiplier) /datum/disease2/effect/bones/activate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob, /mob/living/carbon/human)) if(istype(mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = mob var/mob/living/carbon/human/H = mob
for (var/obj/item/organ/external/E in H.organs) for (var/obj/item/organ/external/E in H.organs)
E.min_broken_damage = max(5, E.min_broken_damage - 30) E.min_broken_damage = max(5, E.min_broken_damage - 30)
deactivate(var/mob/living/carbon/mob,var/multiplier) /datum/disease2/effect/bones/deactivate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob, /mob/living/carbon/human)) if(istype(mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = mob var/mob/living/carbon/human/H = mob
for (var/obj/item/organ/external/E in H.organs) for (var/obj/item/organ/external/E in H.organs)
E.min_broken_damage = initial(E.min_broken_damage) E.min_broken_damage = initial(E.min_broken_damage)
/datum/disease2/effect/combustion
name = "Organic Ignition"
stage = 4
badness = 3
/datum/disease2/effect/combustion/activate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = mob
var/obj/item/organ/external/O = pick(H.organs)
if(prob(25))
mob << "<span class='warning'>It feels like your [O.name] is on fire and your blood is boiling!</span>"
H.adjust_fire_stacks(1)
if(prob(10))
mob << "<span class='warning'>Flames erupt from your skin, your entire body is burning!</span>"
H.adjust_fire_stacks(2)
H.IgniteMob()
////////////////////////STAGE 3///////////////////////////////// ////////////////////////STAGE 3/////////////////////////////////
/datum/disease2/effect/toxins /datum/disease2/effect/toxins
name = "Hyperacidity" name = "Hyperacidity"
stage = 3 stage = 3
maxm = 3 maxm = 3
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/toxins/activate(var/mob/living/carbon/mob,var/multiplier)
mob.adjustToxLoss((2*multiplier)) mob.adjustToxLoss((2*multiplier))
/datum/disease2/effect/shakey /datum/disease2/effect/shakey
name = "World Shaking Syndrome" name = "Nervous Motor Instability"
stage = 3 stage = 3
maxm = 3 maxm = 3
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/shakey/activate(var/mob/living/carbon/mob,var/multiplier)
shake_camera(mob,5*multiplier) shake_camera(mob,5*multiplier)
/datum/disease2/effect/telepathic /datum/disease2/effect/telepathic
name = "Telepathy Syndrome" name = "Pineal Gland Decalcification"
stage = 3 stage = 3
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/telepathic/activate(var/mob/living/carbon/mob,var/multiplier)
mob.dna.SetSEState(REMOTETALKBLOCK,1) mob.dna.SetSEState(REMOTETALKBLOCK,1)
domutcheck(mob, null, MUTCHK_FORCED) domutcheck(mob, null, MUTCHK_FORCED)
/datum/disease2/effect/mind /datum/disease2/effect/mind
name = "Lazy Mind Syndrome" name = "Neurodegeneration"
stage = 3 stage = 3
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/mind/activate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob, /mob/living/carbon/human)) if(istype(mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = mob var/mob/living/carbon/human/H = mob
var/obj/item/organ/internal/brain/B = H.internal_organs_by_name["brain"] var/obj/item/organ/internal/brain/B = H.internal_organs_by_name["brain"]
@@ -243,41 +290,47 @@
mob.setBrainLoss(10) mob.setBrainLoss(10)
/datum/disease2/effect/hallucinations /datum/disease2/effect/hallucinations
name = "Hallucinational Syndrome" name = "Hallucination"
stage = 3 stage = 3
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/hallucinations/activate(var/mob/living/carbon/mob,var/multiplier)
mob.hallucination += 25 mob.hallucination += 25
/datum/disease2/effect/deaf /datum/disease2/effect/minordeaf
name = "Hard of Hearing Syndrome" name = "Hearing Loss"
stage = 3 stage = 3
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/minordeaf/activate(var/mob/living/carbon/mob,var/multiplier)
mob.ear_deaf = 5 mob.ear_deaf = 5
/datum/disease2/effect/giggle /datum/disease2/effect/giggle
name = "Uncontrolled Laughter Effect" name = "Uncontrolled Laughter"
stage = 3 stage = 3
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/giggle/activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*giggle") mob.say("*giggle")
/datum/disease2/effect/confusion /datum/disease2/effect/confusion
name = "Topographical Cretinism" name = "Topographical Cretinism"
stage = 3 stage = 3
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/confusion/activate(var/mob/living/carbon/mob,var/multiplier)
mob << "<span class='notice'>You have trouble telling right and left apart all of a sudden.</span>" mob << "<span class='notice'>You have trouble telling right and left apart all of a sudden.</span>"
mob.Confuse(10) mob.Confuse(10)
/datum/disease2/effect/mutation /datum/disease2/effect/mutation
name = "DNA Degradation" name = "DNA Degradation"
stage = 3 stage = 3
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/mutation/activate(var/mob/living/carbon/mob,var/multiplier)
mob.apply_damage(2, CLONE) mob.apply_damage(2, CLONE)
/datum/disease2/effect/groan /datum/disease2/effect/groan
name = "Groaning Syndrome" name = "Phantom Aches"
stage = 3 stage = 3
chance_maxm = 25 chance_maxm = 25
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/groan/activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*groan") mob.say("*groan")
/datum/disease2/effect/chem_synthesis /datum/disease2/effect/chem_synthesis
@@ -285,7 +338,7 @@
stage = 3 stage = 3
chance_maxm = 25 chance_maxm = 25
generate(c_data) /datum/disease2/effect/chem_synthesis/generate(c_data)
if(c_data) if(c_data)
data = c_data data = c_data
else else
@@ -295,63 +348,84 @@
var/datum/reagent/R = chemical_reagents_list[data] var/datum/reagent/R = chemical_reagents_list[data]
name = "[initial(name)] ([initial(R.name)])" name = "[initial(name)] ([initial(R.name)])"
activate(var/mob/living/carbon/mob,var/multiplier) /datum/disease2/effect/chem_synthesis/activate(var/mob/living/carbon/mob,var/multiplier)
if (mob.reagents.get_reagent_amount(data) < 5) if (mob.reagents.get_reagent_amount(data) < 5)
mob.reagents.add_reagent(data, 2) mob.reagents.add_reagent(data, 2)
/datum/disease2/effect/nonrejection
name = "Genetic Chameleonism"
stage = 3
/datum/disease2/effect/nonrejection/activate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = mob
var/obj/item/organ/internal/O = H.organs_by_name
for (var/organ in H.organs_by_name)
if (!(O.robotic = ORGAN_ROBOT))
O.rejecting = 0
////////////////////////STAGE 2///////////////////////////////// ////////////////////////STAGE 2/////////////////////////////////
/datum/disease2/effect/scream /datum/disease2/effect/scream
name = "Loudness Syndrome" name = "Involuntary Vocalization"
stage = 2 stage = 2
chance_maxm = 25 chance_maxm = 25
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/scream/activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*scream") mob.say("*scream")
/datum/disease2/effect/drowsness /datum/disease2/effect/drowsness
name = "Automated Sleeping Syndrome" name = "Excessive Sleepiness"
stage = 2 stage = 2
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/drowsness/activate(var/mob/living/carbon/mob,var/multiplier)
mob.drowsyness += 10 mob.drowsyness += 10
/datum/disease2/effect/sleepy /datum/disease2/effect/sleepy
name = "Resting Syndrome" name = "Narcolepsy"
stage = 2 stage = 2
chance_maxm = 15 chance_maxm = 15
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/sleepy/activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*collapse") mob.say("*collapse")
/datum/disease2/effect/blind /datum/disease2/effect/blind
name = "Blackout Syndrome" name = "Vision Loss"
stage = 2 stage = 2
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/blind/activate(var/mob/living/carbon/mob,var/multiplier)
mob.eye_blind = max(mob.eye_blind, 4) mob.eye_blind = max(mob.eye_blind, 4)
/datum/disease2/effect/cough /datum/disease2/effect/cough
name = "Anima Syndrome" name = "Severe Cough"
stage = 2 stage = 2
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/cough/activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*cough") mob.say("*cough")
for(var/mob/living/carbon/M in oview(2,mob)) for(var/mob/living/carbon/M in oview(2,mob))
mob.spread_disease_to(M) mob.spread_disease_to(M)
/datum/disease2/effect/hungry /datum/disease2/effect/hungry
name = "Appetiser Effect" name = "Digestive Inefficiency"
stage = 2 stage = 2
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/hungry/activate(var/mob/living/carbon/mob,var/multiplier)
mob.nutrition = max(0, mob.nutrition - 200) mob.nutrition = max(0, mob.nutrition - 200)
/datum/disease2/effect/fridge /datum/disease2/effect/fridge
name = "Refridgerator Syndrome" name = "Reduced Circulation"
stage = 2 stage = 2
chance_maxm = 25 chance_maxm = 25
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/fridge/activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*shiver") mob.say("*shiver")
/datum/disease2/effect/hair /datum/disease2/effect/hair
name = "Hair Loss" name = "Hair Loss"
stage = 2 stage = 2
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/hair/activate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob, /mob/living/carbon/human)) if(istype(mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = mob var/mob/living/carbon/human/H = mob
if(H.species.name == "Human" && !(H.h_style == "Bald") && !(H.h_style == "Balding Hair")) if(H.species.name == "Human" && !(H.h_style == "Bald") && !(H.h_style == "Balding Hair"))
@@ -361,21 +435,44 @@
H.update_hair() H.update_hair()
/datum/disease2/effect/stimulant /datum/disease2/effect/stimulant
name = "Adrenaline Extra" name = "Overactive Adrenal Gland"
stage = 2 stage = 2
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/stimulant/activate(var/mob/living/carbon/mob,var/multiplier)
mob << "<span class='notice'>You feel a rush of energy inside you!</span>" mob << "<span class='notice'>You feel a rush of energy inside you!</span>"
if (mob.reagents.get_reagent_amount("hyperzine") < 10) if (mob.reagents.get_reagent_amount("hyperzine") < 10)
mob.reagents.add_reagent("hyperzine", 4) mob.reagents.add_reagent("hyperzine", 4)
if (prob(30)) if (prob(30))
mob.jitteriness += 10 mob.jitteriness += 10
/datum/disease2/effect/ringing
name = "Tinnitus"
stage = 2
chance_maxm = 25
/datum/disease2/effect/ringing/activate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = mob
H << "<span class='notice'>You hear an awful ringing in your ears.</span>"
H << 'sound/weapons/flash.ogg'
/datum/disease2/effect/vomiting
name = "Vomiting"
stage = 2
chance_maxm = 20
/datum/disease2/effect/vomiting/activate(var/mob/living/carbon/mob,var/multiplier)
mob << "<span class='notice'>Your stomach churns!</span>"
if (prob(50))
mob.say("*vomit")
////////////////////////STAGE 1///////////////////////////////// ////////////////////////STAGE 1/////////////////////////////////
/datum/disease2/effect/sneeze /datum/disease2/effect/sneeze
name = "Coldingtons Effect" name = "Sneezing"
stage = 1 stage = 1
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/sneeze/activate(var/mob/living/carbon/mob,var/multiplier)
if (prob(30)) if (prob(30))
mob << "<span class='warning'>You feel like you are about to sneeze!</span>" mob << "<span class='warning'>You feel like you are about to sneeze!</span>"
sleep(5) sleep(5)
@@ -387,27 +484,34 @@
M.virus2 = virus_copylist(mob.virus2) M.virus2 = virus_copylist(mob.virus2)
/datum/disease2/effect/gunck /datum/disease2/effect/gunck
name = "Flemmingtons" name = "Mucus Buildup"
stage = 1 stage = 1
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/gunck/activate(var/mob/living/carbon/mob,var/multiplier)
mob << "<span class='warning'>Mucous runs down the back of your throat.</span>" mob << "<span class='warning'>Mucous runs down the back of your throat.</span>"
/datum/disease2/effect/drool /datum/disease2/effect/drool
name = "Saliva Effect" name = "Salivary Gland Stimulation"
stage = 1 stage = 1
chance_maxm = 25 chance_maxm = 25
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/drool/activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*drool") mob.say("*drool")
if (prob(30))
var/obj/effect/decal/cleanable/mucus/M = new(get_turf(mob))
M.virus2 = virus_copylist(mob.virus2)
/datum/disease2/effect/twitch /datum/disease2/effect/twitch
name = "Twitcher" name = "Involuntary Twitching"
stage = 1 stage = 1
chance_maxm = 25 chance_maxm = 25
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/twitch/activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*twitch") mob.say("*twitch")
/datum/disease2/effect/headache /datum/disease2/effect/headache
name = "Headache" name = "Headache"
stage = 1 stage = 1
activate(var/mob/living/carbon/mob,var/multiplier)
/datum/disease2/effect/headache/activate(var/mob/living/carbon/mob,var/multiplier)
mob << "<span class='warning'>Your head hurts a bit.</span>" mob << "<span class='warning'>Your head hurts a bit.</span>"

View File

@@ -82,7 +82,15 @@ proc/airborne_can_reach(turf/source, turf/target)
if(antibodies_in_common.len) if(antibodies_in_common.len)
return return
if(M.reagents.has_reagent("spaceacillin")) if(M.reagents.has_reagent("spaceacillin"))
return if(prob(disease.resistance))
var/datum/disease2/disease/D = disease.getcopy()
D.minormutate()
D.resistance += rand(1,9)
// log_debug("Adding virus")
M.virus2["[D.uniqueID]"] = D
BITSET(M.hud_updateflag, STATUS_HUD)
else
return //Virus prevented by antibiotics
if(!disease.affected_species.len) if(!disease.affected_species.len)
return return

View File

@@ -0,0 +1,14 @@
author: Cerebulon
delete-after: True
changes:
- rscadd: "Adds antibiotic resistance chance to viruses, capped at 90% without admin edits."
- rscadd: "Adds adminspawned non-transmittable viruses"
- rscadd: "Adds several new disease symptoms"
- tweak: "Vomit is now a disease vector"
- tweak: "Viruses have a lower chance of curing themselves without medical intervention"
- bugfix: "Virus food no longer infinitely generates in incubator beakers"
- bugfix: "Xenomorphs and supernatural begins can no longer catch the flu"

View File

@@ -86,35 +86,36 @@
"bH" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) "bH" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle)
"bI" = (/obj/machinery/door/airlock{name = "Charge Station"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) "bI" = (/obj/machinery/door/airlock{name = "Charge Station"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle)
"bJ" = (/obj/item/trash/tastybread,/obj/item/weapon/material/butterfly/boxcutter,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{tag = "icon-floor_white"; icon_state = "floor_white"},/area/submap/cave/qShuttle) "bJ" = (/obj/item/trash/tastybread,/obj/item/weapon/material/butterfly/boxcutter,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{tag = "icon-floor_white"; icon_state = "floor_white"},/area/submap/cave/qShuttle)
"bK" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{tag = "icon-floor_white"; icon_state = "floor_white"},/area/submap/cave/qShuttle) "bK" = (/obj/effect/decal/cleanable/vomit,/obj/effect/decal/cleanable/mucus/mapped,/turf/simulated/shuttle/floor{tag = "icon-floor_white"; icon_state = "floor_white"},/area/submap/cave/qShuttle)
"bL" = (/obj/structure/bed/chair{dir = 1},/obj/item/weapon/card/id/external{desc = "An identification card of some sort. Looks like this one was issued by the Vir Independent Mining Corp."; name = "VIMC identification card"; rank = "Miner"; registered_name = "Nadia Chu"},/turf/simulated/shuttle/floor{tag = "icon-floor_white"; icon_state = "floor_white"},/area/submap/cave/qShuttle) "bL" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{tag = "icon-floor_white"; icon_state = "floor_white"},/area/submap/cave/qShuttle)
"bM" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/shuttle/floor{tag = "icon-floor_white"; icon_state = "floor_white"},/area/submap/cave/qShuttle) "bM" = (/obj/structure/bed/chair{dir = 1},/obj/item/weapon/card/id/external{desc = "An identification card of some sort. Looks like this one was issued by the Vir Independent Mining Corp."; name = "VIMC identification card"; rank = "Miner"; registered_name = "Nadia Chu"},/turf/simulated/shuttle/floor{tag = "icon-floor_white"; icon_state = "floor_white"},/area/submap/cave/qShuttle)
"bN" = (/obj/structure/table/rack,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{tag = "icon-floor_white"; icon_state = "floor_white"},/area/submap/cave/qShuttle) "bN" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/shuttle/floor{tag = "icon-floor_white"; icon_state = "floor_white"},/area/submap/cave/qShuttle)
"bO" = (/obj/structure/ore_box,/turf/simulated/shuttle/floor{tag = "icon-floor_yellow"; icon_state = "floor_yellow"},/area/submap/cave/qShuttle) "bO" = (/obj/structure/table/rack,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{tag = "icon-floor_white"; icon_state = "floor_white"},/area/submap/cave/qShuttle)
"bP" = (/obj/item/weapon/contraband/poster,/turf/simulated/shuttle/floor{tag = "icon-floor_yellow"; icon_state = "floor_yellow"},/area/submap/cave/qShuttle) "bP" = (/obj/structure/ore_box,/turf/simulated/shuttle/floor{tag = "icon-floor_yellow"; icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
"bQ" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor{tag = "icon-floor_yellow"; icon_state = "floor_yellow"},/area/submap/cave/qShuttle) "bQ" = (/obj/item/weapon/contraband/poster,/turf/simulated/shuttle/floor{tag = "icon-floor_yellow"; icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
"bR" = (/obj/structure/sign/biohazard,/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) "bR" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor{tag = "icon-floor_yellow"; icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
"bS" = (/obj/item/tape/medical{icon_state = "tape_v_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "bS" = (/obj/structure/sign/biohazard,/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle)
"bT" = (/obj/item/taperoll/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "bT" = (/obj/item/tape/medical{icon_state = "tape_v_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"bU" = (/obj/item/tape/medical{dir = 1; icon_state = "tape_dir_0"},/obj/item/tape/medical{dir = 4; icon_state = "tape_dir_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "bU" = (/obj/item/taperoll/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"bV" = (/obj/item/tape/medical{icon_state = "tape_h_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "bV" = (/obj/item/tape/medical{dir = 1; icon_state = "tape_dir_0"},/obj/item/tape/medical{dir = 4; icon_state = "tape_dir_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"bW" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "bW" = (/obj/item/tape/medical{icon_state = "tape_h_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"bX" = (/obj/structure/sign/warning/secure_area,/turf/simulated/wall/iron,/area/submap/cave/qShuttle) "bX" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"bY" = (/obj/structure/sign/kiddieplaque{desc = "By order of the S.D.D.C, this site or craft is to be buried and not disturbed until such time that sterility can be confirmed. Dated: 20/12/2491 "; name = "\improper Sif Department of Disease Control notice"},/turf/simulated/wall/iron,/area/submap/cave/qShuttle) "bY" = (/obj/structure/sign/warning/secure_area,/turf/simulated/wall/iron,/area/submap/cave/qShuttle)
"bZ" = (/obj/structure/sign/warning,/turf/simulated/wall/iron,/area/submap/cave/qShuttle) "bZ" = (/obj/structure/sign/kiddieplaque{desc = "By order of the S.D.D.C, this site or craft is to be buried and not disturbed until such time that sterility can be confirmed. Dated: 20/12/2491 "; name = "\improper Sif Department of Disease Control notice"},/turf/simulated/wall/iron,/area/submap/cave/qShuttle)
"ca" = (/obj/item/bodybag,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "ca" = (/obj/structure/sign/warning,/turf/simulated/wall/iron,/area/submap/cave/qShuttle)
"cb" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/bodybags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "cb" = (/obj/item/bodybag,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"cc" = (/obj/structure/table/steel,/obj/item/clothing/suit/bio_suit,/obj/random/medical/lite,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "cc" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/bodybags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"cd" = (/obj/structure/closet/l3closet/virology,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "cd" = (/obj/structure/table/steel,/obj/item/clothing/suit/bio_suit,/obj/random/medical/lite,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"ce" = (/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "ce" = (/obj/structure/closet/l3closet/virology,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"cf" = (/obj/structure/dispenser/oxygen,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "cf" = (/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"cg" = (/obj/structure/table/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "cg" = (/obj/structure/dispenser/oxygen,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"ch" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "ch" = (/obj/structure/table/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"ci" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "ci" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"cj" = (/obj/structure/table/steel,/obj/item/weapon/crowbar/power,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "cj" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"ck" = (/obj/structure/table/rack,/obj/item/clothing/head/bio_hood,/obj/item/clothing/suit/bio_suit,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "ck" = (/obj/structure/table/steel,/obj/item/weapon/crowbar/power,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"cl" = (/obj/item/weapon/weldingtool/largetank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "cl" = (/obj/structure/table/rack,/obj/item/clothing/head/bio_hood,/obj/item/clothing/suit/bio_suit,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"cm" = (/obj/structure/closet/crate/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) "cm" = (/obj/item/weapon/weldingtool/largetank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"cn" = (/obj/structure/closet/crate/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
(1,1,1) = {" (1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -131,13 +132,13 @@ aaaaaiaJaKaLadaMaNaOaPaQaQaRaSaTaUaVaAaWaXaAaYabaa
aaabaiaZbababbbcbdadbebfbgadbhbiadbjaAbkaAblaYabaa aaabaiaZbababbbcbdadbebfbgadbhbiadbjaAbkaAblaYabaa
aaabaiaJbmbnadbobpbqbrbsbtbqaNbuaUbvaAbwaVbxaYabaa aaabaiaJbmbnadbobpbqbrbsbtbqaNbuaUbvaAbwaVbxaYabaa
aaabadadadadadaDbyaAbzaAbAbBbCbDadbEaGbFadadbGabaa aaabadadadadadaDbyaAbzaAbAbBbCbDadbEaGbFadadbGabaa
aaababadadbHbIbJaoadbKaQbLadbMbNadbObPbQadagahabaa aaababadadbHbIbJbKadbLaQbMadbNbOadbPbQbRadagahabaa
ababacabadaiajakakbRaiadaiadadadadadadadadadadaaaa ababacabadaiajakakbSaiadaiadadadadadadadadadadaaaa
ababababbSabaeaeafaeababababbTabababababadagahaaaa ababababbTabaeaeafaeababababbUabababababadagahaaaa
aaabababbUbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVadadadaaaa aaabababbVbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWadadadaaaa
aaaaababababababababbWbXbYbZcacacaabcbcccdabceaaaa aaaaababababababababbXbYbZcacbcbcbabcccdceabcfaaaa
aaaaacababcfcgchcicjckababclabcacaababababababaaaa aaaaacababcgchcicjckclababcmabcbcbababababababaaaa
aaaaaaababcmcgababababababababaaaaaaaaaaababacaaaa aaaaaaababcnchababababababababaaaaaaaaaaababacaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa