diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm index aebf4865daf..cbd299e8b58 100644 --- a/code/modules/mod/mod_control.dm +++ b/code/modules/mod/mod_control.dm @@ -572,6 +572,11 @@ balloon_alert(user, "[new_module] incompatible with [src]'s parts!") playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return + if(!new_module.can_install(src)) + if(user) + balloon_alert(user, "[new_module] cannot be installed into [src]!") + playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) + return new_module.forceMove(src) modules += new_module complexity += new_module.complexity diff --git a/code/modules/mod/mod_theme.dm b/code/modules/mod/mod_theme.dm index 276183eeb92..15dcf4f9bef 100644 --- a/code/modules/mod/mod_theme.dm +++ b/code/modules/mod/mod_theme.dm @@ -199,6 +199,8 @@ UNSEALED_CLOTHING = SNUG_FIT|THICKMATERIAL, UNSEALED_MESSAGE = HELMET_UNSEAL_MESSAGE, SEALED_MESSAGE = HELMET_SEAL_MESSAGE, + UNSEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEEARS|HIDEEYES|HIDEHAIR|HIDESNOUT, + SEALED_COVER = HEADCOVERSEYES, ), /obj/item/clothing/suit/mod = list( UNSEALED_CLOTHING = THICKMATERIAL, diff --git a/code/modules/mod/modules/_module.dm b/code/modules/mod/modules/_module.dm index a9bb181cf6b..551145b5e6d 100644 --- a/code/modules/mod/modules/_module.dm +++ b/code/modules/mod/modules/_module.dm @@ -94,6 +94,10 @@ needed_slots -= needed_slot return !length(needed_slots) +/// Additional checks for whenever a module can be installed into a suit or not +/obj/item/mod/module/proc/can_install(obj/item/mod/control/mod) + return TRUE + /// Called when the module is selected from the TGUI, radial or the action button /obj/item/mod/module/proc/on_select() if(!mod.wearer) diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm index f1b14b0f900..3b7803a517a 100644 --- a/code/modules/mod/modules/modules_general.dm +++ b/code/modules/mod/modules/modules_general.dm @@ -310,6 +310,15 @@ mask.flags_cover &= ~(MASKCOVERSMOUTH |PEPPERPROOF) mask.visor_flags_cover &= ~(MASKCOVERSMOUTH |PEPPERPROOF) +/obj/item/mod/module/mouthhole/can_install(obj/item/mod/control/mod) + var/obj/item/clothing/helmet = mod.get_part_from_slot(ITEM_SLOT_HEAD) + var/obj/item/clothing/mask = mod.get_part_from_slot(ITEM_SLOT_MASK) + if(istype(helmet) && ((helmet.flags_cover|helmet.visor_flags_cover) & (HEADCOVERSMOUTH|PEPPERPROOF))) + return ..() + if(istype(mask) && ((mask.flags_cover|mask.visor_flags_cover) & (MASKCOVERSMOUTH|PEPPERPROOF))) + return ..() + return FALSE + /obj/item/mod/module/mouthhole/on_uninstall(deleting = FALSE) if(deleting) return diff --git a/icons/mob/clothing/modsuit/mod_clothing.dmi b/icons/mob/clothing/modsuit/mod_clothing.dmi index cb2a472c32e..aa9b6feca11 100644 Binary files a/icons/mob/clothing/modsuit/mod_clothing.dmi and b/icons/mob/clothing/modsuit/mod_clothing.dmi differ diff --git a/icons/obj/clothing/modsuit/mod_clothing.dmi b/icons/obj/clothing/modsuit/mod_clothing.dmi index 6ab49417aa5..160606c790a 100644 Binary files a/icons/obj/clothing/modsuit/mod_clothing.dmi and b/icons/obj/clothing/modsuit/mod_clothing.dmi differ