diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 22cdabb1dd6..31ee8d4305c 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 ab7f5383b31..6b38902b6d9 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 5753d327b7a..41f075817b3 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 @@ -273,11 +275,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_vr.dm b/code/modules/events/spontaneous_appendicitis_vr.dm index 0d5cf212e91..35199719341 100644 --- a/code/modules/events/spontaneous_appendicitis_vr.dm +++ b/code/modules/events/spontaneous_appendicitis_vr.dm @@ -5,7 +5,7 @@ continue if(!(A.z in using_map.station_levels)) continue - if(A.flag_check(RAD_SHIELDED)) + if(A.flag_check(AREA_FORBID_EVENTS)) continue if(isbelly(H.loc)) continue diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index 814ce55adc1..978afd150d8 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -1785,7 +1785,7 @@ /obj/item/reagent_containers/food/snacks/badrecipe/Initialize() . = ..() - reagents.add_reagent("toxin", 1) + reagents.add_reagent("salmonella", 1) reagents.add_reagent("carbon", 3) /obj/item/reagent_containers/food/snacks/meatsteak @@ -2551,7 +2551,7 @@ reagents.add_reagent("water", 10) if(8) reagents.add_reagent("carbon", 10) - reagents.add_reagent("toxin", 10) + reagents.add_reagent("salmonella", 10) if(9) reagents.add_reagent("nutriment", 5, nutriment_desc) reagents.add_reagent("tomatojuice", 10) @@ -3825,6 +3825,7 @@ reagents.add_reagent("protein", 5) reagents.add_reagent("tomatojuice", 6) reagents.add_reagent("mold", 8) + reagents.add_reagent("salmonella", 1) /obj/item/reagent_containers/food/snacks/slice/oldpizza name = "moldy pizza slice" diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 4a11af321f2..6d9e484a0ec 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -505,8 +505,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.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 456f8f157ce..36c380a57cf 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() ..()