diff --git a/code/modules/mod/mod_activation.dm b/code/modules/mod/mod_activation.dm index 1e5e508a2ec..658937ff806 100644 --- a/code/modules/mod/mod_activation.dm +++ b/code/modules/mod/mod_activation.dm @@ -19,7 +19,7 @@ var/obj/item/part = locate(part_reference) in mod_parts if(!istype(part) || user.incapacitated()) return - if((active && part != helmet) || activating) // SKYRAT EDIT - Let the hair flow - ORIGINAL: if(active || activating) + if(activating) // SKYRAT EDIT - RETRACTABLE EVERYTHING balloon_alert(user, "deactivate the suit first!") playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return @@ -41,7 +41,7 @@ /// Quickly deploys all parts (or retracts if all are on the wearer) /obj/item/mod/control/proc/quick_deploy(mob/user) - if(active || activating) + if(activating) // SKYRAT EDIT - RETRACTABLE EVERYTHING balloon_alert(user, "deactivate the suit first!") playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE @@ -70,6 +70,16 @@ if(piece == boots && wearer.shoes) boots.overslot = wearer.shoes wearer.transferItemToLoc(boots.overslot, boots, force = TRUE) + + // SKYRAT EDIT START - DEPLOYABLE EVERYTHING OVER EVERYTHING + if(piece == helmet && wearer.head) + helmet.overslot = wearer.head + wearer.transferItemToLoc(helmet.overslot, helmet, force = TRUE) + if(piece == chestplate && wearer.wear_suit) + chestplate.overslot = wearer.wear_suit + wearer.transferItemToLoc(chestplate.overslot, chestplate, force = TRUE) + // SKYRAT EDIT STOP + if(wearer.equip_to_slot_if_possible(piece, piece.slot_flags, qdel_on_fail = FALSE, disable_warning = TRUE)) ADD_TRAIT(piece, TRAIT_NODROP, MOD_TRAIT) if(!user) @@ -100,6 +110,16 @@ gauntlets.show_overslot() if(piece == boots) boots.show_overslot() + //SKYRAT EDIT START - DEPLOYABLE EVERYTHING OVER EVERYTHING + if(piece == helmet) + helmet.show_overslot() + if(piece == chestplate) + for(var/obj/item/mod/module/module as anything in modules) + if(!module.active) + continue + module.on_deactivation(display_message = FALSE) + chestplate.show_overslot() + //SKYRAT EDIT END if(!user) return wearer.visible_message(span_notice("[wearer]'s [piece.name] retract[piece.p_s()] back into [src] with a mechanical hiss."), diff --git a/code/modules/mod/mod_clothes.dm b/code/modules/mod/mod_clothes.dm index a2880d27d93..5044f40983f 100644 --- a/code/modules/mod/mod_clothes.dm +++ b/code/modules/mod/mod_clothes.dm @@ -12,6 +12,7 @@ obj_flags = IMMUTABLE_SLOW var/alternate_layer = NECK_LAYER var/obj/item/mod/control/mod + var/obj/item/clothing/overslot //SKYRAT EDIT - DEPLOYABLE EVERYTHING OVER EVERYTHING /obj/item/clothing/head/mod/Destroy() if(!QDELETED(mod)) @@ -23,6 +24,16 @@ /obj/item/clothing/head/mod/atom_destruction(damage_flag) return mod.atom_destruction(damage_flag) +//SKYRAT EDIT START - DEPLOYABLE EVERYTHING OVER EVERYTHING + +/obj/item/clothing/head/mod/proc/show_overslot() + if(!overslot) + return + if(!mod.wearer.equip_to_slot_if_possible(overslot, overslot.slot_flags, qdel_on_fail = FALSE, disable_warning = TRUE)) + mod.wearer.dropItemToGround(overslot, force = TRUE, silent = TRUE) + overslot = null + +//SKYRAT EDIT END /obj/item/clothing/suit/mod name = "MOD chestplate" desc = "A chestplate for a MODsuit." @@ -36,6 +47,7 @@ cold_protection = CHEST|GROIN obj_flags = IMMUTABLE_SLOW var/obj/item/mod/control/mod + var/obj/item/clothing/overslot //SKYRAT EDIT - DEPLOYABLE EVERYTHING OVER EVERYTHING /obj/item/clothing/suit/mod/Destroy() if(!QDELETED(mod)) @@ -47,6 +59,17 @@ /obj/item/clothing/suit/mod/atom_destruction(damage_flag) return mod.atom_destruction(damage_flag) +//SKYRAT EDIT START - DEPLOYABLE EVERYTHING OVER EVERYTHING + +/obj/item/clothing/suit/mod/proc/show_overslot() + if(!overslot) + return + if(!mod.wearer.equip_to_slot_if_possible(overslot, overslot.slot_flags, qdel_on_fail = FALSE, disable_warning = TRUE)) + mod.wearer.dropItemToGround(overslot, force = TRUE, silent = TRUE) + overslot = null + +//SKYRAT EDIT END + /obj/item/clothing/gloves/mod name = "MOD gauntlets" desc = "A pair of gauntlets for a MODsuit." diff --git a/code/modules/mod/mod_theme.dm b/code/modules/mod/mod_theme.dm index c17bf2f0166..8c6b7b3e008 100644 --- a/code/modules/mod/mod_theme.dm +++ b/code/modules/mod/mod_theme.dm @@ -597,6 +597,7 @@ slowdown_inactive = 1 slowdown_active = 0.5 allowed_suit_storage = list( + /obj/item/gun, // SKYRAT EDIT - GUN IN SUIT SLOT /obj/item/flashlight, /obj/item/tank/internals, /obj/item/ammo_box, @@ -651,6 +652,7 @@ slowdown_inactive = 0.75 slowdown_active = 0.25 allowed_suit_storage = list( + /obj/item/gun, // SKYRAT EDIT - GUN IN SUIT SLOT /obj/item/flashlight, /obj/item/tank/internals, /obj/item/ammo_box, @@ -707,6 +709,7 @@ slowdown_inactive = 0.75 slowdown_active = 0.25 allowed_suit_storage = list( + /obj/item/gun, // SKYRAT EDIT - GUN IN SUIT SLOT /obj/item/flashlight, /obj/item/tank/internals, /obj/item/ammo_box, @@ -809,6 +812,7 @@ ui_theme = "syndicate" inbuilt_modules = list(/obj/item/mod/module/armor_booster) allowed_suit_storage = list( + /obj/item/gun, // SKYRAT EDIT - GUN IN SUIT SLOT /obj/item/flashlight, /obj/item/tank/internals, /obj/item/ammo_box, @@ -886,6 +890,7 @@ ui_theme = "syndicate" inbuilt_modules = list(/obj/item/mod/module/armor_booster) allowed_suit_storage = list( + /obj/item/gun, // SKYRAT EDIT - GUN IN SUIT SLOT /obj/item/flashlight, /obj/item/tank/internals, /obj/item/ammo_box, @@ -1043,6 +1048,7 @@ slowdown_inactive = 0.5 slowdown_active = 0 allowed_suit_storage = list( + /obj/item/gun, // SKYRAT EDIT - GUN IN SUIT SLOT /obj/item/flashlight, /obj/item/tank/internals, /obj/item/ammo_box, @@ -1116,6 +1122,7 @@ siemens_coefficient = 0 complexity_max = DEFAULT_MAX_COMPLEXITY + 10 allowed_suit_storage = list( + /obj/item/gun, // SKYRAT EDIT - GUN IN SUIT SLOT /obj/item/flashlight, /obj/item/tank/internals, /obj/item/ammo_box, @@ -1169,6 +1176,7 @@ slowdown_inactive = 0.5 slowdown_active = 0 allowed_suit_storage = list( + /obj/item/gun, // SKYRAT EDIT - GUN IN SUIT SLOT /obj/item/flashlight, /obj/item/tank/internals, /obj/item/ammo_box, diff --git a/code/modules/mod/modules/_module.dm b/code/modules/mod/modules/_module.dm index 2ec7b5226ad..2acc51a37d5 100644 --- a/code/modules/mod/modules/_module.dm +++ b/code/modules/mod/modules/_module.dm @@ -98,6 +98,11 @@ if(mod.wearer) balloon_alert(mod.wearer, "not active!") return + // SKYRAT EDIT START - DEPLOYABLE EVERYTHING OVER EVERYTHING + if(mod.wearer.wear_suit != mod.chestplate) + balloon_alert(mod.wearer, "chestplate retracted!") + return + // SKYRAT EDIT END if(module_type != MODULE_USABLE) if(active) on_deactivation()