From bd2a47eae9efc3cefe4f71406c39d38c1e083cd5 Mon Sep 17 00:00:00 2001
From: Luc <89928798+lewcc@users.noreply.github.com>
Date: Thu, 10 Oct 2024 09:43:07 -0400
Subject: [PATCH] Adds some more admin-focused cleaning reagents (#26796)
* Add some bonus cleaning grenades
* clusterbusters too
* blocked chem list
* ignore clusters
* Update code/game/objects/items/weapons/grenades/chem_grenade.dm
Co-authored-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>
Signed-off-by: Luc <89928798+lewcc@users.noreply.github.com>
---------
Signed-off-by: Luc <89928798+lewcc@users.noreply.github.com>
Co-authored-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>
---
code/_globalvars/lists/reagents_lists.dm | 3 +-
.../items/weapons/grenades/chem_grenade.dm | 19 ++++++-
.../items/weapons/grenades/clusterbuster.dm | 11 ++++
.../chemistry/reagents/misc_reagents.dm | 53 +++++++++++++++++++
4 files changed, 84 insertions(+), 2 deletions(-)
diff --git a/code/_globalvars/lists/reagents_lists.dm b/code/_globalvars/lists/reagents_lists.dm
index e25462c1affb..17c8e76bc0d2 100644
--- a/code/_globalvars/lists/reagents_lists.dm
+++ b/code/_globalvars/lists/reagents_lists.dm
@@ -48,5 +48,6 @@ GLOBAL_LIST_INIT(blocked_chems, list("polonium", "initropidril", "concentrated_i
"lavaland_extract", "stable_mutagen", "beer2",
"curare", "gluttonytoxin", "smoke_powder", "stimulative_cling",
"teslium_paste", "omnizine_no_addiction", "zombiecure1",
- "zombiecure2", "zombiecure3", "zombiecure4"
+ "zombiecure2", "zombiecure3", "zombiecure4",
+ "admincleaner_all", "admincleaner_item", "admincleaner_mob",
))
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index 06daebbcfeff..4b67c9867856 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -519,6 +519,8 @@
payload_name = "cleaner"
desc = "BLAM!-brand foaming space cleaner. In a special applicator for rapid cleaning of wide areas."
stage = READY
+ /// The chemical used to clean things
+ var/cleaning_chem = "cleaner"
/obj/item/grenade/chem_grenade/cleaner/Initialize(mapload)
. = ..()
@@ -526,13 +528,28 @@
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
B1.reagents.add_reagent("fluorosurfactant", 40)
- B2.reagents.add_reagent("cleaner", 10)
+ B2.reagents.add_reagent(cleaning_chem, 10)
B2.reagents.add_reagent("water", 40) //when you make pre-designed foam reactions that carry the reagents, always add water last
beakers += B1
beakers += B2
update_icon(UPDATE_ICON_STATE)
+/obj/item/grenade/chem_grenade/cleaner/everything
+ payload_name = "melter"
+ desc = "Inside of this grenade are black-market Syndicate nanites that consume everything they come in cross with. Organs, clothes, consoles, people. Nothing is safe.
Now with a new foaming applicator!"
+ cleaning_chem = "admincleaner_all"
+
+/obj/item/grenade/chem_grenade/cleaner/object
+ payload_name = "object dissolving"
+ desc = "Inside of this grenade are black-market Syndicate nanites that curiously only consume objects, leaving living creatures and larger machinery alone.
Now with a new foaming applicator!"
+ cleaning_chem = "admincleaner_item"
+
+/obj/item/grenade/chem_grenade/cleaner/organic
+ payload_name = "organic dissolving"
+ desc = "Inside of this grenade are black-market Syndicate nanites that have an appetite for living creatures and their organs, be they silicon or organic, dead or alive.
Now with a new foaming applicator!"
+ cleaning_chem = "admincleaner_mob"
+
/obj/item/grenade/chem_grenade/teargas
payload_name = "teargas"
diff --git a/code/game/objects/items/weapons/grenades/clusterbuster.dm b/code/game/objects/items/weapons/grenades/clusterbuster.dm
index 32922e07aff9..054f3f97b7a7 100644
--- a/code/game/objects/items/weapons/grenades/clusterbuster.dm
+++ b/code/game/objects/items/weapons/grenades/clusterbuster.dm
@@ -254,3 +254,14 @@
desc = "Proving once and for all that the maximum bomb explosion radius is just a suggestion."
payload = /obj/item/grenade/clusterbuster/syndieminibomb
+/obj/item/grenade/clusterbuster/admincleaner
+ desc = "For cleaning really big messes."
+ payload = /obj/item/grenade/chem_grenade/cleaner/everything
+
+/obj/item/grenade/clusterbuster/admincleaner/organic
+ desc = "For cleaning remnants of many, many crime scenes."
+ payload = /obj/item/grenade/chem_grenade/cleaner/organic
+
+/obj/item/grenade/clusterbuster/admincleaner/object
+ desc = "For cleaning up after a typical Nanotrasen office party."
+ payload = /obj/item/grenade/chem_grenade/cleaner/object
diff --git a/code/modules/reagents/chemistry/reagents/misc_reagents.dm b/code/modules/reagents/chemistry/reagents/misc_reagents.dm
index 223bd2f1ae7d..3c64adf2b7e5 100644
--- a/code/modules/reagents/chemistry/reagents/misc_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/misc_reagents.dm
@@ -731,3 +731,56 @@
if(H.dna.species.bodyflags & HAS_SKIN_COLOR) //take current alien color and darken it slightly
H.change_skin_color("#9B7653")
+
+/datum/reagent/admin_cleaner
+ name = "WD-2381"
+ color = "#da9eda"
+ description = "Extra-bubbly cleaner designed to clear all objects. Or, well. Anything that isn't bolted down. Or is, for that matter. In other words: if you're seeing this, how'd you get your hands on it?"
+
+/datum/reagent/admin_cleaner/organic
+ name = "WD-2381-MOB"
+ id = "admincleaner_mob"
+ description = "A bottle of strange nanites that instantly devour bodies, both living and dead, as well as organs."
+
+/datum/reagent/admin_cleaner/organic/reaction_mob(mob/living/M, method, volume, show_message)
+ . = ..()
+ if(method == REAGENT_TOUCH)
+ M.dust()
+
+/datum/reagent/admin_cleaner/organic/reaction_obj(obj/O, volume)
+ if(is_organ(O))
+ qdel(O)
+ if(istype(O, /obj/effect/decal/cleanable/blood) || istype(O, /obj/effect/decal/cleanable/vomit))
+ qdel(O)
+ if(istype(O, /obj/item/mmi))
+ qdel(O)
+
+/datum/reagent/admin_cleaner/item
+ name = "WD-2381-ITM"
+ id = "admincleaner_item"
+ description = "A bottle of strange nanites that instantly devour items, while curiously leaving everything else untouched."
+
+/datum/reagent/admin_cleaner/item/reaction_obj(obj/O, volume)
+ if(isitem(O) && !istype(O, /obj/item/grenade/clusterbuster/segment))
+ qdel(O)
+
+/datum/reagent/admin_cleaner/all
+ name = "WD-2381-ALL"
+ id = "admincleaner_all"
+ description = "An incredibly dangerous set of nanites engineered by Syndicate Janitors which devour everything they touch."
+
+/datum/reagent/admin_cleaner/all/reaction_obj(obj/O, volume)
+ if(istype(O, /obj/item/grenade/clusterbuster/segment))
+ // don't clear clusterbang segments
+ // I'm allowed to make this hack because this is admin only anyway
+ return
+ if(!iseffect(O))
+ qdel(O)
+
+/datum/reagent/admin_cleaner/all/reaction_mob(mob/living/M, method, volume, show_message)
+ . = ..()
+ if(method == REAGENT_TOUCH)
+ M.dust()
+
+
+