diff --git a/code/modules/mod/mod_types.dm b/code/modules/mod/mod_types.dm index 626144bf3e1..91fb00c633b 100644 --- a/code/modules/mod/mod_types.dm +++ b/code/modules/mod/mod_types.dm @@ -467,43 +467,43 @@ ) /// The insignia type, insignias show what sort of member of the ERT you're dealing with. var/insignia_type = /obj/item/mod/module/insignia - /// Additional module we add, as a treat. - var/additional_module + /// Additional module (or modules if list) we add, as a treat. + var/additional_modules /obj/item/mod/control/pre_equipped/responsory/Initialize(mapload, new_theme, new_skin, new_core) applied_modules.Insert(1, insignia_type) - if(additional_module) - applied_modules += additional_module - default_pins += additional_module + if(additional_modules) + applied_modules += additional_modules + default_pins += additional_modules return ..() /obj/item/mod/control/pre_equipped/responsory/commander insignia_type = /obj/item/mod/module/insignia/commander - additional_module = /obj/item/mod/module/power_kick + additional_modules = /obj/item/mod/module/power_kick /obj/item/mod/control/pre_equipped/responsory/security insignia_type = /obj/item/mod/module/insignia/security - additional_module = /obj/item/mod/module/pepper_shoulders + additional_modules = /obj/item/mod/module/pepper_shoulders /obj/item/mod/control/pre_equipped/responsory/engineer insignia_type = /obj/item/mod/module/insignia/engineer - additional_module = /obj/item/mod/module/rad_protection + additional_modules = /obj/item/mod/module/rad_protection /obj/item/mod/control/pre_equipped/responsory/medic insignia_type = /obj/item/mod/module/insignia/medic - additional_module = /obj/item/mod/module/quick_carry + additional_modules = /obj/item/mod/module/quick_carry /obj/item/mod/control/pre_equipped/responsory/janitor insignia_type = /obj/item/mod/module/insignia/janitor - additional_module = /obj/item/mod/module/noslip + additional_modules = list(/obj/item/mod/module/noslip, /obj/item/mod/module/mister/cleaner) /obj/item/mod/control/pre_equipped/responsory/clown insignia_type = /obj/item/mod/module/insignia/clown - additional_module = /obj/item/mod/module/bikehorn + additional_modules = /obj/item/mod/module/bikehorn /obj/item/mod/control/pre_equipped/responsory/chaplain insignia_type = /obj/item/mod/module/insignia/chaplain - additional_module = /obj/item/mod/module/injector + additional_modules = /obj/item/mod/module/injector /obj/item/mod/control/pre_equipped/responsory/inquisitory applied_skin = "inquisitory" @@ -538,19 +538,19 @@ /obj/item/mod/control/pre_equipped/responsory/inquisitory/commander insignia_type = /obj/item/mod/module/insignia/commander - additional_module = /obj/item/mod/module/power_kick + additional_modules = /obj/item/mod/module/power_kick /obj/item/mod/control/pre_equipped/responsory/inquisitory/security insignia_type = /obj/item/mod/module/insignia/security - additional_module = /obj/item/mod/module/pepper_shoulders + additional_modules = /obj/item/mod/module/pepper_shoulders /obj/item/mod/control/pre_equipped/responsory/inquisitory/medic insignia_type = /obj/item/mod/module/insignia/medic - additional_module = /obj/item/mod/module/quick_carry + additional_modules = /obj/item/mod/module/quick_carry /obj/item/mod/control/pre_equipped/responsory/inquisitory/chaplain insignia_type = /obj/item/mod/module/insignia/chaplain - additional_module = /obj/item/mod/module/injector + additional_modules = /obj/item/mod/module/injector /obj/item/mod/control/pre_equipped/apocryphal theme = /datum/mod_theme/apocryphal diff --git a/code/modules/mod/modules/modules_service.dm b/code/modules/mod/modules/modules_service.dm index 70c11f069f0..9cf7c4702f7 100644 --- a/code/modules/mod/modules/modules_service.dm +++ b/code/modules/mod/modules/modules_service.dm @@ -91,3 +91,21 @@ REMOVE_TRAIT(mod.wearer, TRAIT_WADDLING, REF(src)) if(is_clown_job(mod.wearer.mind?.assigned_role)) mod.wearer.clear_mood_event("clownshoes") + +// recharging cleaner spray module +/obj/item/mod/module/mister/cleaner + name = "MOD janitorial mister module" + desc = "An space cleaner mister, able to clean up messes quickly. Synthesizes its own supply over time (if active)." + device = /obj/item/reagent_containers/spray/mister/janitor + volume = 100 + active_power_cost = DEFAULT_CHARGE_DRAIN + +/obj/item/mod/module/mister/cleaner/Initialize(mapload) + . = ..() + reagents.flags = AMOUNT_VISIBLE + reagents.add_reagent(/datum/reagent/space_cleaner, volume) + +/obj/item/mod/module/mister/cleaner/on_active_process(seconds_per_tick) + var/refill_add = min(volume - reagents.total_volume, 2 * seconds_per_tick) + if(refill_add > 0) + reagents.add_reagent(/datum/reagent/space_cleaner, refill_add) diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 14a36843e32..c06eb40204e 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -2798,3 +2798,14 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE +/datum/design/module/mister_janitor + name = "Cleaning Mister Module" + id = "mod_mister_janitor" + materials = list( + /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/titanium =HALF_SHEET_MATERIAL_AMOUNT * 1, + ) + build_path = /obj/item/mod/module/mister/cleaner + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SERVICE + ) diff --git a/code/modules/research/techweb/nodes/modsuit_nodes.dm b/code/modules/research/techweb/nodes/modsuit_nodes.dm index cc31a1fc1ef..0ce6eb4b229 100644 --- a/code/modules/research/techweb/nodes/modsuit_nodes.dm +++ b/code/modules/research/techweb/nodes/modsuit_nodes.dm @@ -34,6 +34,7 @@ "mod_longfall", "mod_thermal_regulator", "mod_sign_radio", + "mod_mister_janitor", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) announce_channels = list(RADIO_CHANNEL_SCIENCE)