diff --git a/code/modules/response_team/ert.dm b/code/modules/response_team/ert.dm index 0a3784e212c2..fcf87416b445 100644 --- a/code/modules/response_team/ert.dm +++ b/code/modules/response_team/ert.dm @@ -95,8 +95,8 @@ GLOBAL_LIST_EMPTY(ert_request_messages) A.close() var/list/ert_species_prefs = list() for(var/mob/M in GLOB.response_team_members) - ert_species_prefs.Add(input_async(M, "Please select a species (10 seconds):", list("Human", "Tajaran", "Skrell", "Unathi", "Diona", "Vulpkanin", "Nian", "Drask", "Kidan", "Grey", "Random"))) - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(get_ert_role_prefs), GLOB.response_team_members, ert_gender_prefs, ert_species_prefs), 10 SECONDS) + ert_species_prefs.Add(input_async(M, "Please select a species (10 seconds):", list("Human"))) // SS220 EDIT - Human only ERT + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(get_ert_role_prefs), GLOB.response_team_members, ert_gender_prefs, ert_species_prefs), 0 SECONDS) // SS220 EDIT - Human only ERT /proc/get_ert_role_prefs(list/response_team_members, list/ert_gender_prefs, list/ert_species_prefs) // Why the FUCK is this variable the EXACT SAME as the global one var/list/ert_role_prefs = list() diff --git a/modular_ss220/clothing/_clothing.dme b/modular_ss220/clothing/_clothing.dme index a70b69054c10..7d41d6f1a1d2 100644 --- a/modular_ss220/clothing/_clothing.dme +++ b/modular_ss220/clothing/_clothing.dme @@ -11,4 +11,3 @@ #include "code/shoes.dm" #include "code/suits.dm" #include "code/under.dm" -#include "code/mod.dm" diff --git a/modular_ss220/clothing/code/mod.dm b/modular_ss220/clothing/code/mod.dm deleted file mode 100644 index b0cbf5f3daa1..000000000000 --- a/modular_ss220/clothing/code/mod.dm +++ /dev/null @@ -1,317 +0,0 @@ -// MARK: MODsuit clothes -/obj/item/clothing/head/mod/exclusive - icon = 'modular_ss220/clothing/icons/object/mod_clothing.dmi' - item_state = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' - icon_override = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' - sprite_sheets = list( - "Skrell" = 'modular_ss220/clothing/icons/mob/species/skrell/mod_clothing.dmi', - "Grey" = 'modular_ss220/clothing/icons/mob/species/grey/mod_clothing.dmi', - "Vulpkanin" = 'modular_ss220/clothing/icons/mob/species/vulpkanin/mod_clothing.dmi', - "Tajaran" = 'modular_ss220/clothing/icons/mob/species/tajaran/mod_clothing.dmi', - "Unathi" = 'modular_ss220/clothing/icons/mob/species/unathi/mod_clothing.dmi', - "Vox" = 'modular_ss220/clothing/icons/mob/species/vox/mod_clothing.dmi', - ) - -/obj/item/clothing/suit/mod/exclusive - icon = 'modular_ss220/clothing/icons/object/mod_clothing.dmi' - item_state = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' - icon_override = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' - sprite_sheets = list( - "Skrell" = 'modular_ss220/clothing/icons/mob/species/skrell/mod_clothing.dmi', - "Grey" = 'modular_ss220/clothing/icons/mob/species/grey/mod_clothing.dmi', - "Vulpkanin" = 'modular_ss220/clothing/icons/mob/species/vulpkanin/mod_clothing.dmi', - "Tajaran" = 'modular_ss220/clothing/icons/mob/species/tajaran/mod_clothing.dmi', - "Unathi" = 'modular_ss220/clothing/icons/mob/species/unathi/mod_clothing.dmi', - "Vox" = 'modular_ss220/clothing/icons/mob/species/vox/mod_clothing.dmi', - ) - -/obj/item/clothing/gloves/mod/exclusive - icon = 'modular_ss220/clothing/icons/object/mod_clothing.dmi' - item_state = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' - icon_override = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' - sprite_sheets = list( - "Skrell" = 'modular_ss220/clothing/icons/mob/species/skrell/mod_clothing.dmi', - "Grey" = 'modular_ss220/clothing/icons/mob/species/grey/mod_clothing.dmi', - "Vulpkanin" = 'modular_ss220/clothing/icons/mob/species/vulpkanin/mod_clothing.dmi', - "Tajaran" = 'modular_ss220/clothing/icons/mob/species/tajaran/mod_clothing.dmi', - "Unathi" = 'modular_ss220/clothing/icons/mob/species/unathi/mod_clothing.dmi', - "Vox" = 'modular_ss220/clothing/icons/mob/species/vox/mod_clothing.dmi', - ) - -/obj/item/clothing/shoes/mod/exclusive - icon = 'modular_ss220/clothing/icons/object/mod_clothing.dmi' - item_state = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' - icon_override = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' - sprite_sheets = list( - "Skrell" = 'modular_ss220/clothing/icons/mob/species/skrell/mod_clothing.dmi', - "Grey" = 'modular_ss220/clothing/icons/mob/species/grey/mod_clothing.dmi', - "Vulpkanin" = 'modular_ss220/clothing/icons/mob/species/vulpkanin/mod_clothing.dmi', - "Tajaran" = 'modular_ss220/clothing/icons/mob/species/tajaran/mod_clothing.dmi', - "Unathi" = 'modular_ss220/clothing/icons/mob/species/unathi/mod_clothing.dmi', - "Vox" = 'modular_ss220/clothing/icons/mob/species/vox/mod_clothing.dmi', - ) - -// MARK: MODsuit control -/obj/item/mod/control/proc/build_head() - return new /obj/item/clothing/head/mod(src) - -/obj/item/mod/control/proc/build_suit() - return new /obj/item/clothing/suit/mod(src) - -/obj/item/mod/control/proc/build_gloves() - return new /obj/item/clothing/gloves/mod(src) - -/obj/item/mod/control/proc/build_shoes() - return new /obj/item/clothing/shoes/mod(src) - -/obj/item/mod/control/proc/is_any_part_deployed() - for(var/obj/item/part as anything in mod_parts) - if(part.loc != src) - return TRUE - return FALSE - -// This is kinda sick but we need to retract it before the actual species change. -/obj/item/mod/control/proc/pre_species_gain(datum/species/new_species) - if(!wearer) - return - if(is_any_part_deployed() && !theme.is_species_allowed(new_species)) - // Deactivate MODsuit to respect the species allowed. - to_chat(wearer, span_warning("Ошибка видовой принадлежности! Деактивация.")) - if(active) - var/old_activation_step_time = activation_step_time - activation_step_time = 0.1 SECONDS // gotta go fast - toggle_activate(wearer, force_deactivate = TRUE) - activation_step_time = old_activation_step_time - quick_deploy(wearer) - -/obj/item/mod/control/quick_deploy(mob/user) - user = user || loc // why the fuck this is nullable - if(!is_any_part_deployed() && !theme.is_species_allowed(user.dna.species)) - to_chat(user, span_warning("Ошибка видовой принадлежности! Развертывание недоступно.")) - playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) - return FALSE - return ..() - -/obj/item/mod/control/deploy(mob/user, obj/item/part, mass) - user = user || loc // why the fuck this is nullable - if(!mass && part.loc != user && !theme.is_species_allowed(user.dna.species)) - to_chat(user, span_warning("Ошибка видовой принадлежности! Развертывание недоступно.")) - playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) - return FALSE - return ..() - -/obj/item/mod/control/pre_equipped/exclusive - icon = 'modular_ss220/clothing/icons/object/mod_clothing.dmi' - icon_override = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' - -/obj/item/mod/control/pre_equipped/exclusive/build_head() - return new /obj/item/clothing/head/mod/exclusive(src) - -/obj/item/mod/control/pre_equipped/exclusive/build_suit() - return new /obj/item/clothing/suit/mod/exclusive(src) - -/obj/item/mod/control/pre_equipped/exclusive/build_gloves() - return new /obj/item/clothing/gloves/mod/exclusive(src) - -/obj/item/mod/control/pre_equipped/exclusive/build_shoes() - return new /obj/item/clothing/shoes/mod/exclusive(src) - -// MARK: MODsuit Theme -/datum/mod_theme - /// Which species are allowed to deploy MODsuit. Consider empty list as no restriction. - var/list/species_allowed = list() - -/datum/mod_theme/proc/is_species_allowed(datum/species/species) - if(!length(species_allowed)) - return TRUE - if(!(species.name in species_allowed)) - return FALSE - return TRUE - -/mob/living/carbon/human/change_dna(datum/dna/new_dna, include_species_change) - if(istype(back, /obj/item/mod/control)) - INVOKE_ASYNC(back, TYPE_PROC_REF(/obj/item/mod/control, pre_species_gain), new_dna.species) - return ..() - -/mob/living/carbon/human/set_species(datum/species/new_species, use_default_color = FALSE, delay_icon_update = FALSE, skip_same_check = FALSE, retain_damage = FALSE, transformation = FALSE, keep_missing_bodyparts = FALSE) - if(istype(back, /obj/item/mod/control)) - INVOKE_ASYNC(back, TYPE_PROC_REF(/obj/item/mod/control, pre_species_gain), new_species) - return ..() - -// MARK: Skrell elite MODsuit - Raskinta -/datum/mod_theme/skrell_raskinta - name = "\improper raskinta" - desc = "Боевая броня с функцией костюма для ВКД, созданная для воинов Раскинта Ме'керр-Кэтиш." - extended_desc = "Массивный бронекостюм, выполненный в черно-синих цветах, является отличительной чертой \ - военных формирований Раскинта-Кэтиш. Защитные пластины состоят из укрепленной керамики, в то время как \ - каркасные пластины выполнены из сплавов вороной пластали, позволяющей эффективно поглощать и рассеивать энергию \ - через радиаторные отводы на \"хвостовых\" окончаниях шлема. \ - Этот костюм является самым часто встречаемым в штурмовых отрядах Оборонительных Сил Скреллов." - default_skin = "skrell_elite" - armor_type_1 = /obj/item/mod/armor/mod_theme_skrell_raskinta - flag_2_flags = RAD_PROTECT_CONTENTS_2 - max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT - siemens_coefficient = 0 - slowdown_inactive = 1 - slowdown_active = 0.25 - complexity_max = DEFAULT_MAX_COMPLEXITY + 5 - allowed_suit_storage = list( - /obj/item/ammo_box, - /obj/item/ammo_casing, - /obj/item/restraints/handcuffs, - /obj/item/flash, - /obj/item/melee/baton, - /obj/item/gun, - /obj/item/melee/vibroblade, - ) - species_allowed = list("Skrell") - skins = list( - "skrell_elite" = list( - MOD_ICON_OVERRIDE = 'modular_ss220/clothing/icons/object/mod_clothing.dmi', - HELMET_FLAGS = list( - UNSEALED_LAYER = COLLAR_LAYER, - - SEALED_CLOTHING = THICKMATERIAL | STOPSPRESSUREDMAGE | BLOCK_GAS_SMOKE_EFFECT | BLOCKHAIR, - UNSEALED_INVISIBILITY = HIDEFACE, - SEALED_INVISIBILITY = HIDEMASK | HIDEEYES | HIDEEARS | HIDEFACE, - SEALED_COVER = HEADCOVERSMOUTH | HEADCOVERSEYES, - ), - CHESTPLATE_FLAGS = list( - UNSEALED_CLOTHING = THICKMATERIAL, - SEALED_CLOTHING = STOPSPRESSUREDMAGE, - SEALED_INVISIBILITY = HIDEJUMPSUIT | HIDETAIL, - ), - GAUNTLETS_FLAGS = list( - UNSEALED_CLOTHING = THICKMATERIAL, - SEALED_CLOTHING = STOPSPRESSUREDMAGE, - CAN_OVERSLOT = TRUE, - ), - BOOTS_FLAGS = list( - UNSEALED_CLOTHING = THICKMATERIAL, - SEALED_CLOTHING = STOPSPRESSUREDMAGE, - CAN_OVERSLOT = TRUE, - ), - ), - ) - -/obj/item/mod/armor/mod_theme_skrell_raskinta - armor = list(MELEE = 40, BULLET = 25, LASER = 25, ENERGY = 20, BOMB = 25, RAD = INFINITY, FIRE = 200, ACID = 200) - -/obj/item/mod/control/pre_equipped/exclusive/skrell_raskinta - theme = /datum/mod_theme/skrell_raskinta - applied_cell = /obj/item/stock_parts/cell/super - applied_modules = list( - /obj/item/mod/module/storage/syndicate, - /obj/item/mod/module/emp_shield, - /obj/item/mod/module/status_readout, - /obj/item/mod/module/flashlight, - /obj/item/mod/module/magboot/advanced, - /obj/item/mod/module/jetpack/advanced, - ) - default_pins = list( - /obj/item/mod/module/jetpack/advanced, - /obj/item/mod/module/magboot/advanced, - ) - -// MARK: Skrell elite MODsuit - Sardaukars -/datum/mod_theme/skrell_sardaukars - name = "\improper emperor guard" - desc = "Элитная боевая броня гвардейцев Скреллианской империи." - extended_desc = "Благодаря высшим технологическим достижениям скреллов этот костюм сочетает в себе \ - невероятные показатели защищенности и мобильности, являясь незаменимой вещью на вооружении свирепых Куи'кверр-Кэтиш. \ - Носящие его воины являются личной гвардией Императора и выполняют самые сложные задачи по его воле. \ - Кроваво-белоснежные цвета, отождествляющие кровь врагов и власть Его Величества, скорее всего последнее \ - что вы увидите в своей жизни." - default_skin = "skrell_white" - armor_type_1 = /obj/item/mod/armor/mod_theme_skrell_sardaukars - resistance_flags = FIRE_PROOF - flag_2_flags = RAD_PROTECT_CONTENTS_2 - max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT - siemens_coefficient = 0 - slowdown_inactive = 0.5 - slowdown_active = 0 - complexity_max = DEFAULT_MAX_COMPLEXITY + 10 - allowed_suit_storage = list( - /obj/item/ammo_box, - /obj/item/ammo_casing, - /obj/item/restraints/handcuffs, - /obj/item/flash, - /obj/item/melee/baton, - /obj/item/gun, - /obj/item/melee/vibroblade, - ) - species_allowed = list("Skrell") - skins = list( - "skrell_white" = list( - MOD_ICON_OVERRIDE = 'modular_ss220/clothing/icons/object/mod_clothing.dmi', - HELMET_FLAGS = list( - UNSEALED_LAYER = COLLAR_LAYER, - - SEALED_CLOTHING = THICKMATERIAL | STOPSPRESSUREDMAGE | BLOCK_GAS_SMOKE_EFFECT | BLOCKHAIR, - UNSEALED_INVISIBILITY = HIDEFACE, - SEALED_INVISIBILITY = HIDEMASK | HIDEEYES | HIDEEARS | HIDEFACE, - SEALED_COVER = HEADCOVERSMOUTH | HEADCOVERSEYES, - ), - CHESTPLATE_FLAGS = list( - UNSEALED_CLOTHING = THICKMATERIAL, - SEALED_CLOTHING = STOPSPRESSUREDMAGE, - SEALED_INVISIBILITY = HIDEJUMPSUIT | HIDETAIL, - ), - GAUNTLETS_FLAGS = list( - UNSEALED_CLOTHING = THICKMATERIAL, - SEALED_CLOTHING = STOPSPRESSUREDMAGE, - CAN_OVERSLOT = TRUE, - ), - BOOTS_FLAGS = list( - UNSEALED_CLOTHING = THICKMATERIAL, - SEALED_CLOTHING = STOPSPRESSUREDMAGE, - CAN_OVERSLOT = TRUE, - ), - ), - ) - -/obj/item/mod/armor/mod_theme_skrell_sardaukars - armor = list(MELEE = 120, BULLET = 120, LASER = 100, ENERGY = 50, BOMB = 100, RAD = INFINITY, FIRE = INFINITY, ACID = INFINITY) - -/obj/item/mod/control/pre_equipped/exclusive/skrell_sardaukars - theme = /datum/mod_theme/skrell_sardaukars - applied_cell = /obj/item/stock_parts/cell/bluespace - applied_modules = list( - /obj/item/mod/module/storage/bluespace, - /obj/item/mod/module/emp_shield, - /obj/item/mod/module/flashlight, - /obj/item/mod/module/jetpack/advanced, - /obj/item/mod/module/status_readout, - /obj/item/mod/module/magboot/advanced, - /obj/item/mod/module/visor/thermal - ) - default_pins = list( - /obj/item/mod/module/jetpack/advanced, - /obj/item/mod/module/magboot/advanced, - /obj/item/mod/module/visor/thermal - ) - -/obj/item/mod/control/pre_equipped/exclusive/skrell_sardaukars/Initialize(mapload, new_theme, new_skin, new_core, new_access) - . = ..() - ADD_TRAIT(chestplate, TRAIT_RSG_IMMUNE, ROUNDSTART_TRAIT) - -// MARK: Corporate MODsuit -/obj/item/mod/control/pre_equipped/corporate - icon = 'modular_ss220/clothing/icons/object/mod_clothing.dmi' - icon_override = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' - -/datum/mod_theme/corporate/New() - . = ..() - skins["corporate"][MOD_ICON_OVERRIDE] = 'modular_ss220/clothing/icons/object/mod_clothing.dmi' - -/obj/item/mod/control/pre_equipped/corporate/build_head() - return new /obj/item/clothing/head/mod/exclusive(src) - -/obj/item/mod/control/pre_equipped/corporate/build_suit() - return new /obj/item/clothing/suit/mod/exclusive(src) - -/obj/item/mod/control/pre_equipped/corporate/build_gloves() - return new /obj/item/clothing/gloves/mod/exclusive(src) - -/obj/item/mod/control/pre_equipped/corporate/build_shoes() - return new /obj/item/clothing/shoes/mod/exclusive(src) diff --git a/modular_ss220/clothing/icons/mob/mod_clothing.dmi b/modular_ss220/clothing/icons/mob/mod_clothing.dmi index cc7d72e6d5d1..61c711ef595f 100644 Binary files a/modular_ss220/clothing/icons/mob/mod_clothing.dmi and b/modular_ss220/clothing/icons/mob/mod_clothing.dmi differ diff --git a/modular_ss220/clothing/icons/object/mod_clothing.dmi b/modular_ss220/clothing/icons/object/mod_clothing.dmi index d1b91725df35..1018abdd4a1c 100644 Binary files a/modular_ss220/clothing/icons/object/mod_clothing.dmi and b/modular_ss220/clothing/icons/object/mod_clothing.dmi differ diff --git a/modular_ss220/mod/_mods.dm b/modular_ss220/mod/_mods.dm new file mode 100644 index 000000000000..b3fb7fe7c853 --- /dev/null +++ b/modular_ss220/mod/_mods.dm @@ -0,0 +1,4 @@ +/datum/modpack/mods + name = "МОДсьюты" + desc = "Неочевидная штука - там внутри МОДсьюты" + author = "Konushi, Kar4es" diff --git a/modular_ss220/mod/_mods.dme b/modular_ss220/mod/_mods.dme new file mode 100644 index 000000000000..23a6c3dfed3c --- /dev/null +++ b/modular_ss220/mod/_mods.dme @@ -0,0 +1,7 @@ +#include "_mods.dm" + +#include "code/mod_control.dm" +#include "code/mod_modules.dm" +#include "code/mod_theme.dm" +#include "code/mod_clothes.dm" +#include "code/mod_types.dm" diff --git a/modular_ss220/mod/code/mod_clothes.dm b/modular_ss220/mod/code/mod_clothes.dm new file mode 100644 index 000000000000..03828eef35d9 --- /dev/null +++ b/modular_ss220/mod/code/mod_clothes.dm @@ -0,0 +1,53 @@ +// MARK: MODsuit clothes +/obj/item/clothing/head/mod/exclusive + icon = 'modular_ss220/mod/icons/object/mod_clothing.dmi' + item_state = 'modular_ss220/mod/icons/mob/mod_clothing.dmi' + icon_override = 'modular_ss220/mod/icons/mob/mod_clothing.dmi' + sprite_sheets = list( + "Skrell" = 'modular_ss220/mod/icons/mob/species/skrell/mod_clothing.dmi', + "Grey" = 'modular_ss220/mod/icons/mob/species/grey/mod_clothing.dmi', + "Vulpkanin" = 'modular_ss220/mod/icons/mob/species/vulpkanin/mod_clothing.dmi', + "Tajaran" = 'modular_ss220/mod/icons/mob/species/tajaran/mod_clothing.dmi', + "Unathi" = 'modular_ss220/mod/icons/mob/species/unathi/mod_clothing.dmi', + "Vox" = 'modular_ss220/mod/icons/mob/species/vox/mod_clothing.dmi', + ) + +/obj/item/clothing/suit/mod/exclusive + icon = 'modular_ss220/mod/icons/object/mod_clothing.dmi' + item_state = 'modular_ss220/mod/icons/mob/mod_clothing.dmi' + icon_override = 'modular_ss220/mod/icons/mob/mod_clothing.dmi' + sprite_sheets = list( + "Skrell" = 'modular_ss220/mod/icons/mob/species/skrell/mod_clothing.dmi', + "Grey" = 'modular_ss220/mod/icons/mob/species/grey/mod_clothing.dmi', + "Vulpkanin" = 'modular_ss220/mod/icons/mob/species/vulpkanin/mod_clothing.dmi', + "Tajaran" = 'modular_ss220/mod/icons/mob/species/tajaran/mod_clothing.dmi', + "Unathi" = 'modular_ss220/mod/icons/mob/species/unathi/mod_clothing.dmi', + "Vox" = 'modular_ss220/mod/icons/mob/species/vox/mod_clothing.dmi', + ) + +/obj/item/clothing/gloves/mod/exclusive + icon = 'modular_ss220/mod/icons/object/mod_clothing.dmi' + item_state = 'modular_ss220/mod/icons/mob/mod_clothing.dmi' + icon_override = 'modular_ss220/mod/icons/mob/mod_clothing.dmi' + sprite_sheets = list( + "Skrell" = 'modular_ss220/mod/icons/mob/species/skrell/mod_clothing.dmi', + "Grey" = 'modular_ss220/mod/icons/mob/species/grey/mod_clothing.dmi', + "Vulpkanin" = 'modular_ss220/mod/icons/mob/species/vulpkanin/mod_clothing.dmi', + "Tajaran" = 'modular_ss220/mod/icons/mob/species/tajaran/mod_clothing.dmi', + "Unathi" = 'modular_ss220/mod/icons/mob/species/unathi/mod_clothing.dmi', + "Vox" = 'modular_ss220/mod/icons/mob/species/vox/mod_clothing.dmi', + ) + +/obj/item/clothing/shoes/mod/exclusive + icon = 'modular_ss220/mod/icons/object/mod_clothing.dmi' + item_state = 'modular_ss220/mod/icons/mob/mod_clothing.dmi' + icon_override = 'modular_ss220/mod/icons/mob/mod_clothing.dmi' + sprite_sheets = list( + "Skrell" = 'modular_ss220/mod/icons/mob/species/skrell/mod_clothing.dmi', + "Grey" = 'modular_ss220/mod/icons/mob/species/grey/mod_clothing.dmi', + "Vulpkanin" = 'modular_ss220/mod/icons/mob/species/vulpkanin/mod_clothing.dmi', + "Tajaran" = 'modular_ss220/mod/icons/mob/species/tajaran/mod_clothing.dmi', + "Unathi" = 'modular_ss220/mod/icons/mob/species/unathi/mod_clothing.dmi', + "Vox" = 'modular_ss220/mod/icons/mob/species/vox/mod_clothing.dmi', + ) + diff --git a/modular_ss220/mod/code/mod_control.dm b/modular_ss220/mod/code/mod_control.dm new file mode 100644 index 000000000000..770b5a1b9901 --- /dev/null +++ b/modular_ss220/mod/code/mod_control.dm @@ -0,0 +1,90 @@ +// MARK: MODsuit control +/obj/item/mod/control/proc/build_head() + return new /obj/item/clothing/head/mod(src) + +/obj/item/mod/control/proc/build_suit() + return new /obj/item/clothing/suit/mod(src) + +/obj/item/mod/control/proc/build_gloves() + return new /obj/item/clothing/gloves/mod(src) + +/obj/item/mod/control/proc/build_shoes() + return new /obj/item/clothing/shoes/mod(src) + +/obj/item/mod/control/proc/is_any_part_deployed() + for(var/obj/item/part as anything in mod_parts) + if(part.loc != src) + return TRUE + return FALSE + +// This is kinda sick but we need to retract it before the actual species change. +/obj/item/mod/control/proc/pre_species_gain(datum/species/new_species) + if(!wearer) + return + if(is_any_part_deployed() && !theme.is_species_allowed(new_species)) + // Deactivate MODsuit to respect the species allowed. + to_chat(wearer, span_warning("Ошибка видовой принадлежности! Деактивация.")) + if(active) + var/old_activation_step_time = activation_step_time + activation_step_time = 0.1 SECONDS // gotta go fast + toggle_activate(wearer, force_deactivate = TRUE) + activation_step_time = old_activation_step_time + quick_deploy(wearer) + +/obj/item/mod/control/quick_deploy(mob/user) + user = user || loc // why the fuck this is nullable + if(!is_any_part_deployed() && !theme.is_species_allowed(user.dna.species)) + to_chat(user, span_warning("Ошибка видовой принадлежности! Развертывание недоступно.")) + playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) + return FALSE + return ..() + +/obj/item/mod/control/deploy(mob/user, obj/item/part, mass) + user = user || loc // why the fuck this is nullable + if(!mass && part.loc != user && !theme.is_species_allowed(user.dna.species)) + to_chat(user, span_warning("Ошибка видовой принадлежности! Развертывание недоступно.")) + playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) + return FALSE + return ..() + +/obj/item/mod/control/pre_equipped/exclusive + icon = 'modular_ss220/mod/icons/object/mod_clothing.dmi' + icon_override = 'modular_ss220/mod/icons/mob/mod_clothing.dmi' + +/obj/item/mod/control/pre_equipped/exclusive/build_head() + return new /obj/item/clothing/head/mod/exclusive(src) + +/obj/item/mod/control/pre_equipped/exclusive/build_suit() + return new /obj/item/clothing/suit/mod/exclusive(src) + +/obj/item/mod/control/pre_equipped/exclusive/build_gloves() + return new /obj/item/clothing/gloves/mod/exclusive(src) + +/obj/item/mod/control/pre_equipped/exclusive/build_shoes() + return new /obj/item/clothing/shoes/mod/exclusive(src) + +//MARK: Corporate +/obj/item/mod/control/pre_equipped/corporate/build_head() + return new /obj/item/clothing/head/mod/exclusive(src) + +/obj/item/mod/control/pre_equipped/corporate/build_suit() + return new /obj/item/clothing/suit/mod/exclusive(src) + +/obj/item/mod/control/pre_equipped/corporate/build_gloves() + return new /obj/item/clothing/gloves/mod/exclusive(src) + +/obj/item/mod/control/pre_equipped/corporate/build_shoes() + return new /obj/item/clothing/shoes/mod/exclusive(src) + +//MARK: ERT Red +/obj/item/mod/control/pre_equipped/responsory/red/build_head() + return new /obj/item/clothing/head/mod/exclusive(src) + +/obj/item/mod/control/pre_equipped/responsory/red/build_suit() + return new /obj/item/clothing/suit/mod/exclusive(src) + +/obj/item/mod/control/pre_equipped/responsory/red/build_gloves() + return new /obj/item/clothing/gloves/mod/exclusive(src) + +/obj/item/mod/control/pre_equipped/responsory/red/build_shoes() + return new /obj/item/clothing/shoes/mod/exclusive(src) diff --git a/modular_ss220/mod/code/mod_modules.dm b/modular_ss220/mod/code/mod_modules.dm new file mode 100644 index 000000000000..8b94a6a3f523 --- /dev/null +++ b/modular_ss220/mod/code/mod_modules.dm @@ -0,0 +1,23 @@ +/obj/item/mod/module/insignia/red + overlay_icon_file = 'modular_ss220/mod/icons/mob/mod_modules.dmi' + +/obj/item/mod/module/insignia/red/commander + color = "#4980a5" + +/obj/item/mod/module/insignia/red/security + color = "#b30d1e" + +/obj/item/mod/module/insignia/red/engineer + color = "#e9c80e" + +/obj/item/mod/module/insignia/red/medic + color = "#ebebf5" + +/obj/item/mod/module/insignia/red/janitor + color = "#7925c7" + +/obj/item/mod/module/insignia/red/clown + color = "#ff1fc7" + +/obj/item/mod/module/insignia/red/chaplain + color = "#f0a00c" diff --git a/modular_ss220/mod/code/mod_theme.dm b/modular_ss220/mod/code/mod_theme.dm new file mode 100644 index 000000000000..ee79402128de --- /dev/null +++ b/modular_ss220/mod/code/mod_theme.dm @@ -0,0 +1,228 @@ +// MARK: MODsuit Theme +/datum/mod_theme + /// Which species are allowed to deploy MODsuit. Consider empty list as no restriction. + var/list/species_allowed = list() + +/datum/mod_theme/proc/is_species_allowed(datum/species/species) + if(!length(species_allowed)) + return TRUE + if(!(species.name in species_allowed)) + return FALSE + return TRUE + +/mob/living/carbon/human/change_dna(datum/dna/new_dna, include_species_change) + if(istype(back, /obj/item/mod/control)) + INVOKE_ASYNC(back, TYPE_PROC_REF(/obj/item/mod/control, pre_species_gain), new_dna.species) + return ..() + +/mob/living/carbon/human/set_species(datum/species/new_species, use_default_color = FALSE, delay_icon_update = FALSE, skip_same_check = FALSE, retain_damage = FALSE, transformation = FALSE, keep_missing_bodyparts = FALSE) + if(istype(back, /obj/item/mod/control)) + INVOKE_ASYNC(back, TYPE_PROC_REF(/obj/item/mod/control, pre_species_gain), new_species) + return ..() + +// MARK: Skrell elite MODsuit - Raskinta +/datum/mod_theme/skrell_raskinta + name = "\improper raskinta" + desc = "Боевая броня с функцией костюма для ВКД, созданная для воинов Раскинта Ме'керр-Кэтиш." + extended_desc = "Массивный бронекостюм, выполненный в черно-синих цветах, является отличительной чертой \ + военных формирований Раскинта-Кэтиш. Защитные пластины состоят из укрепленной керамики, в то время как \ + каркасные пластины выполнены из сплавов вороной пластали, позволяющей эффективно поглощать и рассеивать энергию \ + через радиаторные отводы на \"хвостовых\" окончаниях шлема. \ + Этот костюм является самым часто встречаемым в штурмовых отрядах Оборонительных Сил Скреллов." + default_skin = "skrell_elite" + armor_type_1 = /obj/item/mod/armor/mod_theme_skrell_raskinta + flag_2_flags = RAD_PROTECT_CONTENTS_2 + max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT + siemens_coefficient = 0 + slowdown_inactive = 1 + slowdown_active = 0.25 + complexity_max = DEFAULT_MAX_COMPLEXITY + 5 + allowed_suit_storage = list( + /obj/item/ammo_box, + /obj/item/ammo_casing, + /obj/item/restraints/handcuffs, + /obj/item/flash, + /obj/item/melee/baton, + /obj/item/gun, + /obj/item/melee/vibroblade, + ) + species_allowed = list("Skrell") + skins = list( + "skrell_elite" = list( + MOD_ICON_OVERRIDE = 'modular_ss220/mod/icons/object/mod_clothing.dmi', + HELMET_FLAGS = list( + UNSEALED_LAYER = COLLAR_LAYER, + + SEALED_CLOTHING = THICKMATERIAL | STOPSPRESSUREDMAGE | BLOCK_GAS_SMOKE_EFFECT | BLOCKHAIR, + UNSEALED_INVISIBILITY = HIDEFACE, + SEALED_INVISIBILITY = HIDEMASK | HIDEEYES | HIDEEARS | HIDEFACE, + SEALED_COVER = HEADCOVERSMOUTH | HEADCOVERSEYES, + ), + CHESTPLATE_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + SEALED_INVISIBILITY = HIDEJUMPSUIT | HIDETAIL, + ), + GAUNTLETS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + CAN_OVERSLOT = TRUE, + ), + BOOTS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + CAN_OVERSLOT = TRUE, + ), + ), + ) + +/obj/item/mod/armor/mod_theme_skrell_raskinta + armor = list(MELEE = 40, BULLET = 25, LASER = 25, ENERGY = 20, BOMB = 25, RAD = INFINITY, FIRE = 200, ACID = 200) + +// MARK: Skrell elite MODsuit - Sardaukars +/datum/mod_theme/skrell_sardaukars + name = "\improper emperor guard" + desc = "Элитная боевая броня гвардейцев Скреллианской империи." + extended_desc = "Благодаря высшим технологическим достижениям скреллов этот костюм сочетает в себе \ + невероятные показатели защищенности и мобильности, являясь незаменимой вещью на вооружении свирепых Куи'кверр-Кэтиш. \ + Носящие его воины являются личной гвардией Императора и выполняют самые сложные задачи по его воле. \ + Кроваво-белоснежные цвета, отождествляющие кровь врагов и власть Его Величества, скорее всего последнее \ + что вы увидите в своей жизни." + default_skin = "skrell_white" + armor_type_1 = /obj/item/mod/armor/mod_theme_skrell_sardaukars + resistance_flags = FIRE_PROOF + flag_2_flags = RAD_PROTECT_CONTENTS_2 + max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT + siemens_coefficient = 0 + slowdown_inactive = 0.5 + slowdown_active = 0 + complexity_max = DEFAULT_MAX_COMPLEXITY + 10 + allowed_suit_storage = list( + /obj/item/ammo_box, + /obj/item/ammo_casing, + /obj/item/restraints/handcuffs, + /obj/item/flash, + /obj/item/melee/baton, + /obj/item/gun, + /obj/item/melee/vibroblade, + ) + species_allowed = list("Skrell") + skins = list( + "skrell_white" = list( + MOD_ICON_OVERRIDE = 'modular_ss220/mod/icons/object/mod_clothing.dmi', + HELMET_FLAGS = list( + UNSEALED_LAYER = COLLAR_LAYER, + + SEALED_CLOTHING = THICKMATERIAL | STOPSPRESSUREDMAGE | BLOCK_GAS_SMOKE_EFFECT | BLOCKHAIR, + UNSEALED_INVISIBILITY = HIDEFACE, + SEALED_INVISIBILITY = HIDEMASK | HIDEEYES | HIDEEARS | HIDEFACE, + SEALED_COVER = HEADCOVERSMOUTH | HEADCOVERSEYES, + ), + CHESTPLATE_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + SEALED_INVISIBILITY = HIDEJUMPSUIT | HIDETAIL, + ), + GAUNTLETS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + CAN_OVERSLOT = TRUE, + ), + BOOTS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + CAN_OVERSLOT = TRUE, + ), + ), + ) + +/obj/item/mod/armor/mod_theme_skrell_sardaukars + armor = list(MELEE = 120, BULLET = 120, LASER = 100, ENERGY = 50, BOMB = 100, RAD = INFINITY, FIRE = INFINITY, ACID = INFINITY) + +//MARK: Corporate MODsuit +/datum/mod_theme/corporate/New() + . = ..() + skins["corporate"][MOD_ICON_OVERRIDE] = 'modular_ss220/mod/icons/object/mod_clothing.dmi' + +//MARK: ERT Red MODsuit +/datum/mod_theme/responsory/red + name = "\improper 'Rhino' responsory" + desc = "Высокотехнологичный боевой MODsuit 'Носорог', разработанный и произведенный Нанотрейзен. Хорошо бронированный, герметичный и оснащенный всевозможными полезными приспособлениями. \ + Лучшее корпоративное оборудование для обеспечения безопасности." + extended_desc = "Костюм быстрого реагирования NS-20 'Носорог' - один из самых лучших в категории 'цена и качество' из всех боевых костюмов на рынке. \ + Внутри NS-20 установлена система NTOS-11, что позволяет использовать несравненные возможности настройки в сочетании с \ + необычайно щедрыми техническими характеристиками 'Носорога'. NS-20 можно встретить только в отряде быстрого реагирования Нанотрейзен." + default_skin = "rhino" + armor_type_1 = /obj/item/mod/armor/mod_theme_responsory/red + resistance_flags = FIRE_PROOF + flag_2_flags = RAD_PROTECT_CONTENTS_2 + max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT + siemens_coefficient = 0 + slowdown_inactive = 0.5 + slowdown_active = 0 + complexity_max = DEFAULT_MAX_COMPLEXITY + 5 + allowed_suit_storage = list( + /obj/item/ammo_box, + /obj/item/ammo_casing, + /obj/item/restraints/handcuffs, + /obj/item/flash, + /obj/item/melee/baton, + /obj/item/gun, + ) + species_allowed = list("Human") + skins = list( + "rhino" = list( + MOD_ICON_OVERRIDE = 'modular_ss220/mod/icons/object/mod_clothing.dmi', + HELMET_FLAGS = list( + UNSEALED_LAYER = COLLAR_LAYER, + + SEALED_CLOTHING = THICKMATERIAL | STOPSPRESSUREDMAGE | BLOCK_GAS_SMOKE_EFFECT | BLOCKHAIR, + UNSEALED_INVISIBILITY = HIDEFACE, + SEALED_INVISIBILITY = HIDEMASK | HIDEEYES | HIDEEARS | HIDEFACE, + SEALED_COVER = HEADCOVERSMOUTH | HEADCOVERSEYES, + ), + CHESTPLATE_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + SEALED_INVISIBILITY = HIDEJUMPSUIT | HIDETAIL, + ), + GAUNTLETS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + CAN_OVERSLOT = TRUE, + ), + BOOTS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + CAN_OVERSLOT = TRUE, + ), + ), + "inquisitory" = list( + HELMET_FLAGS = list( + UNSEALED_LAYER = null, + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE | BLOCK_GAS_SMOKE_EFFECT | BLOCKHAIR, + UNSEALED_INVISIBILITY = HIDEFACE | HIDEMASK | HIDEEARS | HIDEEYES, + UNSEALED_COVER = HEADCOVERSMOUTH | HEADCOVERSEYES, + ), + CHESTPLATE_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + SEALED_INVISIBILITY = HIDEJUMPSUIT | HIDETAIL, + ), + GAUNTLETS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + CAN_OVERSLOT = TRUE, + ), + BOOTS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + CAN_OVERSLOT = TRUE, + ), + ), + ) + +/obj/item/mod/armor/mod_theme_responsory/red + armor = list(MELEE = 30, BULLET = 25, LASER = 25, ENERGY = 15, BOMB = 40, RAD = 25, FIRE = INFINITY, ACID = 150) + diff --git a/modular_ss220/mod/code/mod_types.dm b/modular_ss220/mod/code/mod_types.dm new file mode 100644 index 000000000000..de4250b308bc --- /dev/null +++ b/modular_ss220/mod/code/mod_types.dm @@ -0,0 +1,90 @@ +// MARK: Skrell elite MODsuit - Raskinta +/obj/item/mod/control/pre_equipped/exclusive/skrell_raskinta + theme = /datum/mod_theme/skrell_raskinta + applied_cell = /obj/item/stock_parts/cell/super + applied_modules = list( + /obj/item/mod/module/storage/syndicate, + /obj/item/mod/module/emp_shield, + /obj/item/mod/module/status_readout, + /obj/item/mod/module/flashlight, + /obj/item/mod/module/magboot/advanced, + /obj/item/mod/module/jetpack/advanced, + ) + default_pins = list( + /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/magboot/advanced, + ) + +// MARK: Skrell elite MODsuit - Sardaukars +/obj/item/mod/control/pre_equipped/exclusive/skrell_sardaukars + theme = /datum/mod_theme/skrell_sardaukars + applied_cell = /obj/item/stock_parts/cell/bluespace + applied_modules = list( + /obj/item/mod/module/storage/bluespace, + /obj/item/mod/module/emp_shield, + /obj/item/mod/module/flashlight, + /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/status_readout, + /obj/item/mod/module/magboot/advanced, + /obj/item/mod/module/visor/thermal + ) + default_pins = list( + /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/magboot/advanced, + /obj/item/mod/module/visor/thermal + ) + +/obj/item/mod/control/pre_equipped/exclusive/skrell_sardaukars/Initialize(mapload, new_theme, new_skin, new_core, new_access) + . = ..() + ADD_TRAIT(chestplate, TRAIT_RSG_IMMUNE, ROUNDSTART_TRAIT) + +// MARK: Corporate MODsuit +/obj/item/mod/control/pre_equipped/corporate + icon = 'modular_ss220/mod/icons/object/mod_clothing.dmi' + icon_override = 'modular_ss220/mod/icons/mob/mod_clothing.dmi' + +// MARK: ERT RED MODsuit +/obj/item/mod/control/pre_equipped/responsory/red + icon = 'modular_ss220/mod/icons/object/mod_clothing.dmi' + icon_override = 'modular_ss220/mod/icons/mob/mod_clothing.dmi' + theme = /datum/mod_theme/responsory/red + req_access = list(ACCESS_CENT_GENERAL) + applied_modules = list( + /obj/item/mod/module/storage/syndicate, + /obj/item/mod/module/welding, + /obj/item/mod/module/emp_shield, + /obj/item/mod/module/status_readout, + /obj/item/mod/module/flashlight, + /obj/item/mod/module/magboot, + /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/ert_camera, + ) + insignia_type = /obj/item/mod/module/insignia/red + +/obj/item/mod/control/pre_equipped/responsory/red/commander + insignia_type = /obj/item/mod/module/insignia/red/commander + +/obj/item/mod/control/pre_equipped/responsory/red/security + insignia_type = /obj/item/mod/module/insignia/red/security + +/obj/item/mod/control/pre_equipped/responsory/red/engineer + insignia_type = /obj/item/mod/module/insignia/red/engineer + +/obj/item/mod/control/pre_equipped/responsory/red/medic + insignia_type = /obj/item/mod/module/insignia/red/medic + +/obj/item/mod/control/pre_equipped/responsory/red/medic/Initialize(mapload, new_theme, new_skin, new_core, new_access) + . = ..() + ADD_TRAIT(chestplate, TRAIT_RSG_IMMUNE, ROUNDSTART_TRAIT) + +/obj/item/mod/control/pre_equipped/responsory/red/janitor + insignia_type = /obj/item/mod/module/insignia/red/janitor + +/obj/item/mod/control/pre_equipped/responsory/red/clown + insignia_type = /obj/item/mod/module/insignia/red/clown + +/obj/item/mod/control/pre_equipped/responsory/red/chaplain + insignia_type = /obj/item/mod/module/insignia/red/chaplain + +/obj/item/mod/control/pre_equipped/responsory/red/inquisitory + applied_skin = "inquisitory" diff --git a/modular_ss220/mod/icons/mob/mod_clothing.dmi b/modular_ss220/mod/icons/mob/mod_clothing.dmi new file mode 100644 index 000000000000..e00e724a7049 Binary files /dev/null and b/modular_ss220/mod/icons/mob/mod_clothing.dmi differ diff --git a/modular_ss220/mod/icons/mob/mod_modules.dmi b/modular_ss220/mod/icons/mob/mod_modules.dmi new file mode 100644 index 000000000000..27cd854bdb14 Binary files /dev/null and b/modular_ss220/mod/icons/mob/mod_modules.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/grey/mod_clothing.dmi b/modular_ss220/mod/icons/mob/species/grey/mod_clothing.dmi similarity index 100% rename from modular_ss220/clothing/icons/mob/species/grey/mod_clothing.dmi rename to modular_ss220/mod/icons/mob/species/grey/mod_clothing.dmi diff --git a/modular_ss220/clothing/icons/mob/species/skrell/mod_clothing.dmi b/modular_ss220/mod/icons/mob/species/skrell/mod_clothing.dmi similarity index 100% rename from modular_ss220/clothing/icons/mob/species/skrell/mod_clothing.dmi rename to modular_ss220/mod/icons/mob/species/skrell/mod_clothing.dmi diff --git a/modular_ss220/clothing/icons/mob/species/tajaran/mod_clothing.dmi b/modular_ss220/mod/icons/mob/species/tajaran/mod_clothing.dmi similarity index 100% rename from modular_ss220/clothing/icons/mob/species/tajaran/mod_clothing.dmi rename to modular_ss220/mod/icons/mob/species/tajaran/mod_clothing.dmi diff --git a/modular_ss220/clothing/icons/mob/species/unathi/mod_clothing.dmi b/modular_ss220/mod/icons/mob/species/unathi/mod_clothing.dmi similarity index 100% rename from modular_ss220/clothing/icons/mob/species/unathi/mod_clothing.dmi rename to modular_ss220/mod/icons/mob/species/unathi/mod_clothing.dmi diff --git a/modular_ss220/clothing/icons/mob/species/vox/mod_clothing.dmi b/modular_ss220/mod/icons/mob/species/vox/mod_clothing.dmi similarity index 100% rename from modular_ss220/clothing/icons/mob/species/vox/mod_clothing.dmi rename to modular_ss220/mod/icons/mob/species/vox/mod_clothing.dmi diff --git a/modular_ss220/clothing/icons/mob/species/vulpkanin/mod_clothing.dmi b/modular_ss220/mod/icons/mob/species/vulpkanin/mod_clothing.dmi similarity index 100% rename from modular_ss220/clothing/icons/mob/species/vulpkanin/mod_clothing.dmi rename to modular_ss220/mod/icons/mob/species/vulpkanin/mod_clothing.dmi diff --git a/modular_ss220/mod/icons/object/mod_clothing.dmi b/modular_ss220/mod/icons/object/mod_clothing.dmi new file mode 100644 index 000000000000..31f1b0c88ea5 Binary files /dev/null and b/modular_ss220/mod/icons/object/mod_clothing.dmi differ diff --git a/modular_ss220/modular_ss220.dme b/modular_ss220/modular_ss220.dme index e80023eb857f..8f5123e22cb1 100644 --- a/modular_ss220/modular_ss220.dme +++ b/modular_ss220/modular_ss220.dme @@ -69,6 +69,7 @@ #include "logs/_logs.dme" #include "mecha_skins/mecha_skins.dme" #include "mobs/_mobs.dme" +#include "mod/_mods.dme" #include "outfits/_outfits.dme" #include "phrases/_phrases.dme" #include "pixel_shift/_pixel_shift.dme" diff --git a/modular_ss220/outfits/code/outfits.dm b/modular_ss220/outfits/code/outfits.dm index e3b3fc8e5ce7..28dc6c2accba 100644 --- a/modular_ss220/outfits/code/outfits.dm +++ b/modular_ss220/outfits/code/outfits.dm @@ -312,11 +312,117 @@ /datum/outfit/job/centcom/response_team/commander/amber glasses = /obj/item/clothing/glasses/hud/security/sunglasses +/datum/outfit/job/response_team/commander/red + name = "RT Commander (Red)" + shoes = /obj/item/clothing/shoes/combat + back = /obj/item/mod/control/pre_equipped/responsory/red/commander + suit = null + glasses = /obj/item/clothing/glasses/sunglasses + mask = /obj/item/clothing/mask/gas/sechailer/swat + belt = /obj/item/gun/energy/gun/blueshield/pdw9 + + backpack_contents = list( + /obj/item/camera_bug/ert = 1, + /obj/item/door_remote/omni = 1, + /obj/item/restraints/handcuffs = 1, + /obj/item/clothing/shoes/magboots = 1, + /obj/item/storage/box/mindshield = 1 + ) + +/* Security */ +/datum/outfit/job/response_team/security/red + name = "RT Security (Red)" + shoes = /obj/item/clothing/shoes/combat + back = /obj/item/mod/control/pre_equipped/responsory/red/security + suit = null + suit_store = /obj/item/gun/energy/gun/blueshield/pdw9 + glasses = /obj/item/clothing/glasses/sunglasses + mask = /obj/item/clothing/mask/gas/sechailer + l_hand = /obj/item/gun/projectile/automatic/lasercarbine + + backpack_contents = list( + /obj/item/clothing/shoes/magboots = 1, + /obj/item/storage/box/handcuffs = 1, + /obj/item/grenade/flashbang = 2, + /obj/item/ammo_box/magazine/laser/ert = 2 + ) + /* Engineer */ /datum/outfit/job/centcom/response_team/engineer/amber suit = /obj/item/clothing/suit/space/ert_engineer head = /obj/item/clothing/head/helmet/space/ert_engineer +/datum/outfit/job/response_team/engineer/red + name = "RT Engineer (Red)" + shoes = /obj/item/clothing/shoes/magboots/advance + back = /obj/item/mod/control/pre_equipped/responsory/red/engineer + suit = null + suit_store = /obj/item/tank/internals/emergency_oxygen/double + glasses = /obj/item/clothing/glasses/meson/engine + mask = /obj/item/clothing/mask/gas + l_pocket = /obj/item/t_scanner + r_pocket = /obj/item/melee/classic_baton/telescopic + + backpack_contents = list( + /obj/item/rcd/preloaded = 1, + /obj/item/rcd_ammo = 3, + /obj/item/gun/energy/gun = 1, + /obj/item/rpd/bluespace = 1, + /obj/item/storage/bag/construction = 1 + ) + +/* Medic */ +/datum/outfit/job/response_team/medic/red + name = "RT Medic (Red)" + rt_mob_job = "ERT Medical" + shoes = /obj/item/clothing/shoes/magboots + back = /obj/item/mod/control/pre_equipped/responsory/red/medic + suit = null + glasses = /obj/item/clothing/glasses/hud/health/sunglasses + suit_store = /obj/item/gun/energy/gun + belt = /obj/item/defibrillator/compact/advanced/loaded + l_pocket = /obj/item/reagent_containers/hypospray/safety/ert + r_pocket = /obj/item/melee/classic_baton/telescopic + + backpack_contents = list( + /obj/item/clothing/mask/surgical = 1, + /obj/item/storage/firstaid/ert = 1, + /obj/item/storage/box/autoinjectors = 1, + /obj/item/roller/holo = 1, + /obj/item/bodyanalyzer = 1, + /obj/item/handheld_defibrillator = 1, + /obj/item/storage/pill_bottle/ert_red = 1, + /obj/item/storage/pill_bottle/patch_pack/ert = 1, + /obj/item/soap/nanotrasen = 1 + ) + +/* Paranormal */ +/datum/outfit/job/response_team/paranormal/red + name = "RT Paranormal (Red)" + back = /obj/item/mod/control/pre_equipped/responsory/red/chaplain + suit = null + suit_store = /obj/item/gun/energy/gun + r_pocket = /obj/item/nullrod/ert + glasses = /obj/item/clothing/glasses/sunglasses + + backpack_contents = list( + /obj/item/clothing/shoes/magboots = 1, + /obj/item/storage/box/zipties = 1, + /obj/item/flashlight/seclite = 1, + /obj/item/storage/bible = 1 + ) + +/* Janitor */ +/datum/outfit/job/response_team/janitorial/red + name = "RT Janitor (Red)" + back = /obj/item/mod/control/pre_equipped/responsory/red/janitor + suit = null + glasses = /obj/item/clothing/glasses/hud/janitor/sunglasses + shoes = /obj/item/clothing/shoes/galoshes/dry/lightweight + r_pocket = /obj/item/scythe/tele + suit_store = /obj/item/gun/energy/gun + + // MARK: Skrell /datum/outfit/admin/sdtf name = "Skrellian Defence Task Forces Marine"