From 70765344b33017560e167edcf9db229d9c2b2f31 Mon Sep 17 00:00:00 2001 From: Guti <32563288+TheCaramelion@users.noreply.github.com> Date: Thu, 21 Mar 2024 13:59:39 +0100 Subject: [PATCH] Allows samples to be taken from mucus (#8022) --- .../effects/decals/Cleanable/humans.dm | 1 + .../objects/items/weapons/storage/bags.dm | 2 +- .../effects/decals/Cleanable/humans.dm | 46 +++++++++++++++++++ .../code/modules/event/infectedroom.dm | 2 +- .../code/modules/virus2/item_devices.dm | 4 ++ vorestation.dme | 2 + 6 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 modular_chomp/code/game/objects/effects/decals/Cleanable/humans.dm create mode 100644 modular_chomp/code/modules/virus2/item_devices.dm diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 1e3393c857..88b147b816 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -237,6 +237,7 @@ var/global/list/image/splatter_cache=list() var/list/datum/disease2/disease/virus2 = list() var/dry = 0 // Keeps the lag down + var/sampled = FALSE /obj/effect/decal/cleanable/mucus/Initialize() . = ..() diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 3d26e518a1..dbdf1ed12a 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -427,7 +427,7 @@ max_storage_space = 200 w_class = ITEMSIZE_LARGE slowdown = 3 - can_hold = list(/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle) + can_hold = list(/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/reagent_containers/hypospray/autoinjector/) // CHOMPEdit - Adds autoinjectors to the bag // ----------------------------- // Xeno Bag diff --git a/modular_chomp/code/game/objects/effects/decals/Cleanable/humans.dm b/modular_chomp/code/game/objects/effects/decals/Cleanable/humans.dm new file mode 100644 index 0000000000..7e6cc10878 --- /dev/null +++ b/modular_chomp/code/game/objects/effects/decals/Cleanable/humans.dm @@ -0,0 +1,46 @@ +// Touch dirty, get virus. Stupid. +/obj/effect/decal/cleanable/vomit/attackby(obj/item/I, mob/user) + if(virus2.len) + for(var/datum/disease2/disease/D in virus2) + infect_virus2(user,D) + ..() + +/obj/effect/decal/cleanable/mucus/attackby(obj/item/I, mob/user) + if(virus2.len) + for(var/datum/disease2/disease/D in virus2) + infect_virus2(user,D) + + if(istype(I, /obj/item/weapon/reagent_containers/glass/beaker/vial) && virus2.len && !sampled) + var/obj/item/weapon/virusdish/sample + user.balloon_alert_visible("Takes a virus sample", "Taking a virus sample") + for(var/datum/disease2/disease/D in virus2) + sample = new /obj/item/weapon/virusdish(src.loc) + sample.take_sample(D) + sampled = TRUE + ..() + +/obj/effect/decal/cleanable/vomit/attackby(obj/item/I, mob/user) + if(virus2.len) + for(var/datum/disease2/disease/D in virus2) + infect_virus2(user,D) + ..() + +// "Yeah, let me step on this mucus" Bad. Get virus. + +/obj/effect/decal/cleanable/blood/Crossed(mob/living/carbon/human/perp) + if(virus2.len) + for(var/datum/disease2/disease/D in virus2) + infect_virus2(perp, 2) + ..() + +/obj/effect/decal/cleanable/mucus/Crossed(mob/living/carbon/human/perp) + if(virus2.len) + for(var/datum/disease2/disease/D in virus2) + infect_virus2(perp, 2) + ..() + +/obj/effect/decal/cleanable/vomit/Crossed(mob/living/carbon/human/perp) + if(virus2.len) + for(var/datum/disease2/disease/D in virus2) + infect_virus2(perp, 2) + ..() diff --git a/modular_chomp/code/modules/event/infectedroom.dm b/modular_chomp/code/modules/event/infectedroom.dm index 99629308ea..830cdd82a4 100644 --- a/modular_chomp/code/modules/event/infectedroom.dm +++ b/modular_chomp/code/modules/event/infectedroom.dm @@ -86,7 +86,7 @@ return else log_debug("infectedroom event: [target_area] was chosen. Infecting...") - log_admin("Infected room event started; Virus: [english_list(virus.name())]") + log_admin("Infected room event started; Virus: [virus.name()]") message_admins("Infected room event started; Virus: [virus.name()]") /datum/event/infectedroom/announce() diff --git a/modular_chomp/code/modules/virus2/item_devices.dm b/modular_chomp/code/modules/virus2/item_devices.dm new file mode 100644 index 0000000000..456375f60e --- /dev/null +++ b/modular_chomp/code/modules/virus2/item_devices.dm @@ -0,0 +1,4 @@ +/obj/item/weapon/virusdish/proc/take_sample(datum/disease2/disease/D) + name = "virus sample" + virus2 = D + growth = rand(5, 50) diff --git a/vorestation.dme b/vorestation.dme index fed9bdd5a8..55813a4ae3 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4666,6 +4666,7 @@ #include "modular_chomp\code\game\objects\mob_spawner.dm" #include "modular_chomp\code\game\objects\effects\dark_growth.dm" #include "modular_chomp\code\game\objects\effects\step_triggers.dm" +#include "modular_chomp\code\game\objects\effects\decals\Cleanable\humans.dm" #include "modular_chomp\code\game\objects\items\contraband.dm" #include "modular_chomp\code\game\objects\items\holosign_creator.dm" #include "modular_chomp\code\game\objects\items\petrifier.dm" @@ -4956,6 +4957,7 @@ #include "modular_chomp\code\modules\tickets\tickets_ui.dm" #include "modular_chomp\code\modules\virus2\disease2.dm" #include "modular_chomp\code\modules\virus2\effect.dm" +#include "modular_chomp\code\modules\virus2\item_devices.dm" #include "modular_chomp\code\modules\vore\eating\exportpanel_ch.dm" #include "modular_chomp\code\modules\vore\resizing\resize.dm" #include "modular_chomp\code\modules\weapons\melee.dm"