Removes Virology (#8927)

-Almost all aspects of virology and it's related machinery and objects have been purged from the code and map.
-Most of disease code has been purged. Some pieces of it remain as holdovers because they would require extensive rewrite of defines and codes for things like nanite robot transformation and appendicitis (that frankly isn't necessary)
-The outbreak event has been purged, as has the virology malicious code event variant.
-The Virology department has been remapped into the Abandoned Sector.
This commit is contained in:
Kaedwuff
2020-06-05 20:27:46 +03:00
committed by GitHub
parent ed111cdfb6
commit 1529fa44c1
134 changed files with 1305 additions and 7852 deletions
-5
View File
@@ -25,7 +25,6 @@
var/treatment_oxy = "tricordrazine"
var/treatment_fire = "tricordrazine"
var/treatment_tox = "tricordrazine"
var/treatment_virus = "deltamivir"
var/treatment_emag = "toxin"
var/declare_treatment = 0 //When attempting to treat a patient, should it notify everyone wearing medhuds?
@@ -306,10 +305,6 @@
if((H.getToxLoss() >= heal_threshold) && (!H.reagents.has_reagent(treatment_tox)))
return treatment_tox
for(var/datum/disease2/disease/D in H.virus2)
if (!H.reagents.has_reagent(treatment_virus))
return treatment_virus // STOP DISEASE FOREVER
/* Construction */
/obj/item/storage/firstaid/attackby(var/obj/item/robot_parts/S, mob/user as mob)
@@ -202,15 +202,12 @@
if(B.id == "blood")
B.data = list(
"donor" = WEAKREF(src),
"viruses" = null,
"species" = species.name,
"blood_DNA" = name,
"blood_colour" = species.blood_color,
"blood_type" = null,
"resistances" = null,
"trace_chem" = null,
"virus2" = null,
"antibodies" = list()
"trace_chem" = null
)
B.color = B.data["blood_colour"]
-13
View File
@@ -10,8 +10,6 @@
/mob/living/carbon/Life()
..()
handle_viruses()
// Increase germ_level regularly
if(germ_level < GERM_LEVEL_AMBIENT && prob(30)) //if you're just standing there, you shouldn't get more germs beyond an ambient level
germ_level++
@@ -114,15 +112,6 @@
visible_message(span("notice", "[M] [action] [src] waking [t_him] up!"))
sleeping = 0
willfully_sleeping = FALSE
for(var/datum/disease/D in viruses)
if(D.spread_by_touch())
M.contract_disease(D, 0, 1, CONTACT_HANDS)
for(var/datum/disease/D in M.viruses)
if(D.spread_by_touch())
contract_disease(D, 0, 1, CONTACT_HANDS)
return
/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null, var/tesla_shock = 0, var/ground_zero)
@@ -385,8 +374,6 @@
if(now_pushing)
return
. = ..()
if(istype(A, /mob/living/carbon) && prob(10))
src.spread_disease_to(A, "Contact")
/mob/living/carbon/cannot_use_vents()
return
@@ -2,8 +2,6 @@
gender = MALE
var/datum/species/species //Contains icon generation and language information, set during New().
//stomach contents redefined at mob/living level, removed from here
var/list/datum/disease2/disease/virus2 = list()
var/list/antibodies = list()
var/analgesic = 0 // when this is set, the mob isn't affected by shock or pain
// life should decrease this by 1 every tick
@@ -174,10 +174,6 @@
else
B.blood_DNA[source.data["blood_DNA"]] = "O+"
// Update virus information.
if(source.data["virus2"])
B.virus2 = virus_copylist(source.data["virus2"])
B.fluorescent = 0
B.invisibility = 0
@@ -1256,13 +1256,6 @@
H.brainmob.mind.transfer_to(src)
qdel(H)
for (var/datum/disease/virus in viruses)
virus.cure()
for (var/ID in virus2)
var/datum/disease2/disease/V = virus2[ID]
V.cure(src)
losebreath = 0
shock_stage = 0
@@ -100,9 +100,6 @@
return
if(istype(M,/mob/living/carbon))
M.spread_disease_to(src, "Contact")
var/datum/martial_art/attacker_style = H.martial_art
switch(M.a_intent)
@@ -309,14 +309,6 @@
return
..()
/mob/living/carbon/human/handle_post_breath(datum/gas_mixture/breath)
..()
//spread some viruses while we are at it
if(breath && virus2.len > 0 && prob(10))
for(var/mob/living/carbon/M in view(1,src))
src.spread_disease_to(M)
/mob/living/carbon/human/get_breath_from_internal(volume_needed=BREATH_VOLUME)
if(internal)
@@ -1161,22 +1153,11 @@
hud_list[LIFE_HUD] = holder
if (BITTEST(hud_updateflag, STATUS_HUD) && hud_list[STATUS_HUD] && hud_list[STATUS_HUD_OOC])
var/foundVirus = 0
for(var/datum/disease/D in viruses)
if(!D.hidden[SCANNER])
foundVirus++
for (var/ID in virus2)
if (SSrecords.find_record("id", "[ID]", RECORD_VIRUS))
foundVirus = 1
break
var/image/holder = hud_list[STATUS_HUD]
if(stat == DEAD)
holder.icon_state = "huddead"
else if(status_flags & XENO_HOST)
holder.icon_state = "hudxeno"
else if(foundVirus)
holder.icon_state = "hudill"
else
holder.icon_state = "hudhealthy"
@@ -1187,8 +1168,6 @@
holder2.icon_state = "hudxeno"
else if(has_brain_worms())
holder2.icon_state = "hudbrainworm"
else if(virus2.len)
holder2.icon_state = "hudill"
else
holder2.icon_state = "hudhealthy"
-48
View File
@@ -1,48 +0,0 @@
/mob/living/carbon/proc/handle_viruses()
if(status_flags & GODMODE) return 0 //godmode
if(bodytemperature > 406)
for(var/datum/disease/D in viruses)
D.cure()
for (var/ID in virus2)
var/datum/disease2/disease/V = virus2[ID]
V.cure(src)
if(life_tick % 3) //don't spam checks over all objects in view every tick.
for(var/obj/effect/decal/cleanable/O in view(1,src))
if(istype(O,/obj/effect/decal/cleanable/blood))
var/obj/effect/decal/cleanable/blood/B = O
if (B.virus2 && islist(B.virus2))
if(B.virus2.len)
for (var/ID in B.virus2)
var/datum/disease2/disease/V = B.virus2[ID]
infect_virus2(src,V)
else
B.virus2 = list()
else if(istype(O,/obj/effect/decal/cleanable/mucus))
var/obj/effect/decal/cleanable/mucus/M = O
if(M.virus2 && islist(M.virus2) && M.virus2.len)
for (var/ID in M.virus2)
var/datum/disease2/disease/V = M.virus2[ID]
infect_virus2(src,V)
else
M.virus2 = list()
if(virus2 && virus2.len)
for (var/ID in virus2)
var/datum/disease2/disease/V = virus2[ID]
if(isnull(V)) // Trying to figure out a runtime error that keeps repeating
CRASH("virus2 nulled before calling activate()")
else
V.activate(src)
// activate may have deleted the virus
if(!V) continue
// check if we're immune
var/list/common_antibodies = V.antigen & src.antibodies
if(common_antibodies.len)
V.dead = 1
return
@@ -229,7 +229,6 @@
/obj/item/reagent_containers/spray,
/obj/item/storage/pill_bottle,
/obj/item/hand_labeler,
/obj/item/virusdish,
/obj/item/paper,
/obj/item/stack/material/phoron,
/obj/item/reagent_containers/blood,
-133
View File
@@ -1,133 +0,0 @@
//Methods that need to be cleaned.
/* INFORMATION
Put (mob/proc)s here that are in dire need of a code cleanup.
*/
/mob/proc/has_disease(var/datum/disease/virus)
for(var/datum/disease/D in viruses)
if(D.IsSame(virus))
//error("[D.name]/[D.type] is the same as [virus.name]/[virus.type]")
return 1
return 0
// This proc has some procs that should be extracted from it. I believe we can develop some helper procs from it - Rockdtben
/mob/proc/contract_disease(var/datum/disease/virus, var/skip_this = 0, var/force_species_check=1, var/spread_type = -5)
if(stat >=2)
return
if(istype(virus, /datum/disease/advance))
var/datum/disease/advance/A = virus
if(A.GetDiseaseID() in resistances)
return
if(count_by_type(viruses, /datum/disease/advance) >= 3)
return
else
if(src.resistances.Find(virus.type))
return
if(has_disease(virus))
return
if(force_species_check)
var/fail = 1
for(var/name in virus.affected_species)
if(istype(src, /mob/living/carbon))
var/mob/living/carbon/C = src
if(C.species.name == name)
fail = 0
break
if(fail) return
if(skip_this == 1)
var/datum/disease/v = new virus.type(1, virus, 0)
src.viruses += v
v.affected_mob = src
v.strain_data = v.strain_data.Copy()
v.holder = src
if(v.can_carry && prob(5))
v.carrier = 1
return
if(prob(15/virus.permeability_mod)) return //the power of immunity compels this disease! but then you forgot resistances
var/obj/item/clothing/Cl = null
var/passed = 1
//chances to target this zone
var/head_ch
var/body_ch
var/hands_ch
var/feet_ch
if(spread_type == -5)
spread_type = virus.spread_type
switch(spread_type)
if(CONTACT_HANDS)
head_ch = 0
body_ch = 0
hands_ch = 100
feet_ch = 0
if(CONTACT_FEET)
head_ch = 0
body_ch = 0
hands_ch = 0
feet_ch = 100
else
head_ch = 100
body_ch = 100
hands_ch = 25
feet_ch = 25
var/target_zone = pick(head_ch;1,body_ch;2,hands_ch;3,feet_ch;4)//1 - head, 2 - body, 3 - hands, 4- feet
if(istype(src, /mob/living/carbon/human))
var/mob/living/carbon/human/H = src
switch(target_zone)
if(1)
if(isobj(H.head) && !istype(H.head, /obj/item/paper))
Cl = H.head
passed = prob((Cl.permeability_coefficient*100) - 1)
if(passed && isobj(H.wear_mask))
Cl = H.wear_mask
passed = prob((Cl.permeability_coefficient*100) - 1)
if(2)//arms and legs included
if(isobj(H.wear_suit))
Cl = H.wear_suit
passed = prob((Cl.permeability_coefficient*100) - 1)
if(passed && isobj(slot_w_uniform))
Cl = slot_w_uniform
passed = prob((Cl.permeability_coefficient*100) - 1)
if(3)
if(isobj(H.wear_suit) && H.wear_suit.body_parts_covered&HANDS)
Cl = H.wear_suit
passed = prob((Cl.permeability_coefficient*100) - 1)
if(passed && isobj(H.gloves))
Cl = H.gloves
passed = prob((Cl.permeability_coefficient*100) - 1)
if(4)
if(isobj(H.wear_suit) && H.wear_suit.body_parts_covered&FEET)
Cl = H.wear_suit
passed = prob((Cl.permeability_coefficient*100) - 1)
if(passed && isobj(H.shoes))
Cl = H.shoes
passed = prob((Cl.permeability_coefficient*100) - 1)
else
to_chat(src, "Something strange's going on, something's wrong.")
if(!passed && spread_type == AIRBORNE && !internals)
passed = (prob((50*virus.permeability_mod) - 1))
if(passed)
var/datum/disease/v = new virus.type(1, virus, 0)
src.viruses += v
v.affected_mob = src
v.strain_data = v.strain_data.Copy()
v.holder = src
if(v.can_carry && prob(5))
v.carrier = 1
+1 -4
View File
@@ -1038,15 +1038,12 @@ proc/is_blind(A)
if(B.id == "blood")
B.data = list(
"donor" = WEAKREF(src),
"viruses" = null,
"species" = name,
"blood_DNA" = md5("\ref[src]"),
"blood_colour" = "#a10808",
"blood_type" = null,
"resistances" = null,
"trace_chem" = null,
"virus2" = null,
"antibodies" = list()
"trace_chem" = null
)
B.color = B.data["blood_colour"]