From dad8e15b4ecc46854361a3fef1674b4506ff68fb Mon Sep 17 00:00:00 2001 From: Guti <32563288+TheCaramelion@users.noreply.github.com> Date: Sun, 28 Dec 2025 04:59:17 +0100 Subject: [PATCH] Allows non-contagious viruses to be picked up with blood (#18948) * Virus :) * This too --- code/game/objects/items/devices/extrapolator.dm | 1 + code/modules/organs/blood.dm | 7 ++----- code/modules/reagents/reagent_containers/syringes.dm | 3 +-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/code/game/objects/items/devices/extrapolator.dm b/code/game/objects/items/devices/extrapolator.dm index 22b93cd7a0..969bce8c55 100644 --- a/code/game/objects/items/devices/extrapolator.dm +++ b/code/game/objects/items/devices/extrapolator.dm @@ -3,6 +3,7 @@ icon = 'icons/obj/device.dmi' icon_state = "extrapolator_scan" desc = "A bulky scanning device, used to extract genetic material of potential pathogens." + description_info = "Use on hand to change between SCAN and EXTRACT mode." item_flags = NOBLUDGEON slot_flags = SLOT_BELT w_class = ITEMSIZE_NORMAL diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 89bf475c70..4b5af764cc 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -313,10 +313,7 @@ BLOOD_VOLUME_SURVIVE = 40 if(!B.data["viruses"]) B.data["viruses"] = list() - for(var/datum/disease/D in GetSpreadableViruses()) - B.data["viruses"] |= D.Copy() - - for(var/datum/disease/D in GetDormantDiseases()) + for(var/datum/disease/D in GetViruses()) B.data["viruses"] |= D.Copy() if(!B.data["resistances"]) @@ -360,7 +357,7 @@ BLOOD_VOLUME_SURVIVE = 40 var/list/sniffles = injected.data["viruses"] for(var/ID in sniffles) var/datum/disease/D = ID - if(D.spread_flags & (DISEASE_SPREAD_SPECIAL | DISEASE_SPREAD_NON_CONTAGIOUS)) // You can't put non-contagius diseases in blood, but just in case + if(D.spread_flags & (DISEASE_SPREAD_SPECIAL | DISEASE_SPREAD_NON_CONTAGIOUS)) // Special/Non-Contagious stay in the blood, but they won't spread continue ContractDisease(D) if (injected.data["resistances"] && prob(5)) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 3af550a591..c7bd9c12a5 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -413,8 +413,7 @@ //Grab any viruses they have if(iscarbon(target) && LAZYLEN(target.IsInfected())) LAZYINITLIST(viruses) - var/datum/disease/virus = pick(target.IsInfected()) - viruses[hash] = virus.Copy() + viruses[hash] = target.GetViruses() //Dirtiness should be very low if you're the first injectee. If you're spam-injecting 4 people in a row around you though, //This gives the last one a 30% chance of infection.