From 65b20a4d5cc7855527dce7873c28630150a44ae3 Mon Sep 17 00:00:00 2001 From: CHOMPStation2StaffMirrorBot <94713762+CHOMPStation2StaffMirrorBot@users.noreply.github.com> Date: Thu, 12 Dec 2024 06:08:06 -0700 Subject: [PATCH] [MIRROR] Virology Hotfix #5 (#9620) Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> --- code/datums/diseases/_disease.dm | 13 ++++++-- code/datums/diseases/appendicitis.dm | 2 +- .../effects/decals/Cleanable/humans.dm | 30 ++++++++++++++----- .../events/spontaneous_appendicitis.dm | 9 ++++++ .../events/spontaneous_appendicitis_vr.dm | 13 -------- code/modules/food/food/snacks.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 6 +++- code/modules/organs/internal/appendix.dm | 6 ++-- vorestation.dme | 1 - 9 files changed, 51 insertions(+), 31 deletions(-) delete mode 100644 code/modules/events/spontaneous_appendicitis_vr.dm diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index f5d21ce3ba..f15e61ebe6 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -119,7 +119,7 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease)) var/turf/target = affected_mob.loc if(istype(target)) - for(var/mob/living/carbon/C in oview(spread_range, affected_mob)) + for(var/mob/living/carbon/human/C in oview(spread_range, affected_mob)) var/turf/current = get_turf(C) if(current) while(TRUE) @@ -128,6 +128,8 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease)) break var/direction = get_dir(current, target) var/turf/next = get_step(current, direction) + if(!current.CanZASPass() || !next.CanZASPass(get_turf(turn(direction, 100)))) + break current = next /datum/disease/proc/cure() @@ -153,8 +155,13 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease)) /datum/disease/proc/IsSpreadByTouch() if(spread_flags & CONTACT_FEET || spread_flags & CONTACT_HANDS || spread_flags & CONTACT_GENERAL) - return 1 - return 0 + return TRUE + return FALSE + +/datum/disease/proc/IsSpreadByAir() + if(spread_flags & AIRBORNE) + return TRUE + return FALSE /datum/disease/proc/remove_virus() affected_mob.viruses -= src diff --git a/code/datums/diseases/appendicitis.dm b/code/datums/diseases/appendicitis.dm index ab7f5383b3..6b38902b6d 100644 --- a/code/datums/diseases/appendicitis.dm +++ b/code/datums/diseases/appendicitis.dm @@ -9,7 +9,7 @@ viable_mobtypes = list(/mob/living/carbon/human) desc = "If left untreated the subject will become very weak, and may vomit often." severity = MINOR - disease_flags = CAN_CARRY|CAN_CARRY + disease_flags = CAN_CARRY|CAN_RESIST visibility_flags = HIDDEN_PANDEMIC required_organs = list(/obj/item/organ/internal/appendix) bypasses_immunity = TRUE diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index fda3365ed5..86d32d3610 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -116,7 +116,8 @@ var/global/list/image/splatter_cache=list() if(viruses) for(var/datum/disease/D in viruses) - perp.ContractDisease(D) + if(D.IsSpreadByTouch()) + perp.ContractDisease(D) amount-- @@ -131,10 +132,6 @@ var/global/list/image/splatter_cache=list() if (amount && istype(user)) add_fingerprint(user) - if(viruses) - for(var/datum/disease/D in viruses) - user.ContractDisease(D) - if (user.gloves) return var/taken = rand(1,amount) @@ -148,6 +145,11 @@ var/global/list/image/splatter_cache=list() user.update_inv_gloves(1) add_verb(user, /mob/living/carbon/human/proc/bloody_doodle) + if(viruses) + for(var/datum/disease/D in viruses) + if(D.IsSpreadByTouch()) + user.ContractDisease(D) + /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("mgibbl1", "mgibbl2", "mgibbl3", "mgibbl4", "mgibbl5") amount = 2 @@ -274,11 +276,25 @@ var/global/list/image/splatter_cache=list() /obj/effect/decal/cleanable/mucus/Crossed(mob/living/carbon/human/perp) if(viruses) for(var/datum/disease/D in viruses) - perp.ContractDisease(D) + if(D.IsSpreadByTouch()) + perp.ContractDisease(D) + +/obj/effect/decal/cleanable/mucus/attack_hand(mob/living/carbon/human/perp) + if(viruses) + for(var/datum/disease/D in viruses) + if(D.IsSpreadByTouch()) + perp.ContractDisease(D) /obj/effect/decal/cleanable/vomit/Crossed(mob/living/carbon/human/perp) if(viruses) for(var/datum/disease/D in viruses) - perp.ContractDisease(D) + if(D.IsSpreadByTouch()) + perp.ContractDisease(D) + +/obj/effect/decal/cleanable/vomit/Crossed(mob/living/carbon/human/perp) + if(viruses) + for(var/datum/disease/D in viruses) + if(D.IsSpreadByTouch()) + perp.ContractDisease(D) #undef DRYING_TIME diff --git a/code/modules/events/spontaneous_appendicitis.dm b/code/modules/events/spontaneous_appendicitis.dm index 383a2a0410..81c51215c3 100644 --- a/code/modules/events/spontaneous_appendicitis.dm +++ b/code/modules/events/spontaneous_appendicitis.dm @@ -3,5 +3,14 @@ kill() return for(var/mob/living/carbon/human/H in shuffle(living_mob_list)) + var/area/A = get_area(H) + if(!A) + continue + if(!(A.z in using_map.station_levels)) + continue + if(A.flag_check(AREA_FORBID_EVENTS)) + continue + if(isbelly(H.loc)) + continue if(H.client && H.appendicitis()) break diff --git a/code/modules/events/spontaneous_appendicitis_vr.dm b/code/modules/events/spontaneous_appendicitis_vr.dm deleted file mode 100644 index 0d5cf212e9..0000000000 --- a/code/modules/events/spontaneous_appendicitis_vr.dm +++ /dev/null @@ -1,13 +0,0 @@ -/datum/event/spontaneous_appendicitis/vorestation/start() - for(var/mob/living/carbon/human/H in shuffle(living_mob_list)) - var/area/A = get_area(H) - if(!A) - continue - if(!(A.z in using_map.station_levels)) - continue - if(A.flag_check(RAD_SHIELDED)) - continue - if(isbelly(H.loc)) - continue - if(H.client && H.appendicitis()) - break diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index 4cc061398f..3c04535791 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -1927,7 +1927,7 @@ /obj/item/reagent_containers/food/snacks/badrecipe/Initialize() . = ..() - reagents.add_reagent(REAGENT_ID_TOXIN, 1) + reagents.add_reagent(REAGENT_ID_SALMONELLA, 1) reagents.add_reagent(REAGENT_ID_CARBON, 3) /obj/item/reagent_containers/food/snacks/meatsteak diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index a227b90e6c..5a33b586f0 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -509,8 +509,12 @@ ..() //spread some viruses while we are at it if(breath && !isnull(viruses) && prob(10)) + if((wear_mask && (wear_mask.item_flags & AIRTIGHT)) || (head && (head && (head.item_flags & AIRTIGHT)))) + return + if(wear_mask && wear_mask.permeability_coefficient < 1) + return for(var/datum/disease/D in GetViruses()) - if((D.spread_flags & SPECIAL) || (D.spread_flags & NON_CONTAGIOUS)) + if(!D.IsSpreadByAir()) continue for(var/mob/living/carbon/M in view(1,src)) ContractDisease(D) diff --git a/code/modules/organs/internal/appendix.dm b/code/modules/organs/internal/appendix.dm index 456f8f157c..36c380a57c 100644 --- a/code/modules/organs/internal/appendix.dm +++ b/code/modules/organs/internal/appendix.dm @@ -7,10 +7,8 @@ var/inflame_progress = 0 /mob/living/carbon/human/proc/appendicitis() - if(stat == DEAD) - return 0 - ForceContractDisease(new /datum/disease/appendicitis) - return 0 + return ForceContractDisease(new /datum/disease/appendicitis) + /* /obj/item/organ/internal/appendix/process() ..() diff --git a/vorestation.dme b/vorestation.dme index 0505f54343..350ee2fbc9 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2618,7 +2618,6 @@ #include "code\modules\events\spider_infestation.dm" #include "code\modules\events\spider_migration_yw.dm" #include "code\modules\events\spontaneous_appendicitis.dm" -#include "code\modules\events\spontaneous_appendicitis_vr.dm" #include "code\modules\events\supply_demand_vr.dm" #include "code\modules\events\wallrot.dm" #include "code\modules\events\wormholes.dm"